 
 (when sw:use-hide-show
   ;(setq hs-minor-mode-map nil)		; Force resetting in case of old version
-  (load-library "hideshow")
+  (require 'hideshow)
   (setq hs-allow-nesting t)
   (add-to-list 'hs-special-modes-alist
 	       `(specware-mode ,(concat "\\(\\s(\\|\\<def\\>\\|"

	(t
	 (switch-to-buffer name)
	 (buffer-disable-undo)
	 ;; #### This is a temporary fix until wid-edit gets fixed right.
	 ;; We don't do everything that widget-button-click does -- i.e.
	 ;; we don't change the link color on button down -- but that's
	 ;; not important.
	 ;; (add-local-hook
	 ;;  'mouse-track-click-hook
	 ;;  #'(lambda (event count)
	 ;;      (cond
	 ;;       ((widget-event-point event)
	 ;;        (let* ((pos (widget-event-point event))
	 ;;               (button (get-char-property pos 'button)))
	 ;;          (when button
	 ;;            (widget-apply-action button event)
	 ;;            t))))))
	 (set-specifier left-margin-width about-left-margin (current-buffer))
	 (set (make-local-variable 'widget-button-face) 'about-specware-link-face)
	 nil)))

(defun about-specware-center (string-or-glyph)
  (let ((n (- (startup-center-spaces string-or-glyph) about-left-margin)))
    (make-string (if (natnump n) n 0) ?\ )))

(defun about-specware-finish-buffer ()
  (widget-insert "\n")
  (widget-create 'link
		 :help-echo "Bury this buffer"
		 :action (lambda (widget event)
			   (if event
			       ;; For some reason,
			       ;; (bury-buffer (event-buffer event))
			       ;; doesn't work.
			       (with-selected-window (event-window event)
				 (bury-buffer))
			     (bury-buffer)))
		 :tag "Bury")
  (widget-insert " this buffer and return to previous.\n")
  (use-local-map (make-sparse-keymap))
  (set-keymap-parent (current-local-map) widget-keymap)
  (local-set-key "q" 'bury-buffer)
  (local-set-key "l" 'bury-buffer)
  (local-set-key " " 'scroll-up)
  (local-set-key [backspace] 'scroll-down)
  (local-set-key "\177" 'scroll-down)
  (widget-setup)
  (goto-char (point-min))
  (read-only-mode)
  (set-buffer-modified-p nil))

				       specware-major-version
				       specware-minor-version
				       specware-patch-number)))
        (insert "\n\n")
        (insert (about-specware-center specware-version))
	(insert specware-version)
        (center-line)
        ;; (insert "\n\n")
        ;; (make-button (prog1 (point) (insert "Specware Release Notes ") (insert specware-version)) (point)
	;; 	     'face 'bold
	;; 	     'help-echo "mouse-2, see Specware Version Release Notes"
	;; 	     'action (lambda (_button) (goto-specware-release-notes))
	;; 	     'follow-link t)
        ;; (center-line)
        ))
    (insert "\n\n")
    (insert-button "Specware"
                   'face 'about-specware-link-face
                   'action 'goto-specware-web-page
                   'follow-link t)
    (insert " is a leading-edge automated software development system 
that allows users to precisely specify the desired functionality of 
their applications and to generate provably correct code based on 
these requirements. At the core of the design process in Specware 
lies stepwise refinement, in which users begin with a simple, abstract 
model of their problem and iteratively refine this model until it 
uniquely and concretely describes their application.")
    (center-line -7)
    (insert "\n")
    (about-specware-finish-buffer)
    (goto-char (point-min))
    (forward-line 1)))
