]> git.eshelyaron.com Git - emacs.git/commitdiff
(vhdl-mode-map-init): Don't override default
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 10 Apr 2005 18:15:43 +0000 (18:15 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 10 Apr 2005 18:15:43 +0000 (18:15 +0000)
TAB binding so tab-always-indent is obeyed.
(vhdl-minibuffer-local-map): Move initialization into declaration.
(vhdl-mode-abbrev-table-init): Mark the abbrevs as `system'.
(vhdl-run-when-idle, vhdl-create-mode-menu, vhdl-character-to-event)
(vhdl-hooked-abbrev): Avoid test for XEmacs.
(vhdl-current-line): Use line-beginning-position.
(vhdl-doc-variable, vhdl-doc-mode): Call help-setup-xref before
with-output-to-temp-buffer, so the current position can be recorded.

lisp/ChangeLog
lisp/progmodes/vhdl-mode.el

index ede4dc3940d9bb73c88c87867706b116c26c0384..97fd84a1bb1d3dc5bd5359e013d3a2c3e718fb0d 100644 (file)
@@ -1,13 +1,25 @@
+2005-04-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/vhdl-mode.el (vhdl-mode-map-init): Don't override default
+       TAB binding so tab-always-indent is obeyed.
+       (vhdl-minibuffer-local-map): Move initialization into declaration.
+       (vhdl-mode-abbrev-table-init): Mark the abbrevs as `system'.
+       (vhdl-run-when-idle, vhdl-create-mode-menu, vhdl-character-to-event)
+       (vhdl-hooked-abbrev): Avoid test for XEmacs.
+       (vhdl-current-line): Use line-beginning-position.
+       (vhdl-doc-variable, vhdl-doc-mode): Call help-setup-xref before
+       with-output-to-temp-buffer, so the current position can be recorded.
+
 2005-04-10  Masatake YAMATO  <jet@gyve.org>
 
-       * progmodes/compile.el (compilation-error-regexp-alist-alist): Add
-       regexp for gcov.
+       * progmodes/compile.el (compilation-error-regexp-alist-alist):
+       Add regexp for gcov.
 
 2005-04-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * calendar/time-date.el (time-to-seconds): Don't use the #xhhhh
+       * calendar/time-date.el (time-to-seconds, seconds-to-time)
+       (days-to-time, time-subtract, time-add): Don't use the #xhhhh
        syntax which Emacs 20 doesn't support.
-       (seconds-to-time, days-to-time, time-subtract, time-add): Ditto.
 
 2005-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
index 914c6725cc77e7a6509293d2c871b7259078dc7b..9f0e63e80a680509e901eb44b74cbd4d7b321451 100644 (file)
@@ -2039,7 +2039,7 @@ Ignore byte-compiler warnings you might see."
 
 (defun vhdl-run-when-idle (secs repeat function)
   "Wait until idle, then run FUNCTION."
-  (if vhdl-xemacs
+  (if (fboundp 'start-itimer)
       (start-itimer "vhdl-mode" function secs repeat t)
 ;    (run-with-idle-timer secs repeat function)))
     ;; explicitely activate timer (necessary when Emacs is already idle)
@@ -2679,7 +2679,9 @@ STRING are replaced by `-' and substrings are converted to lower case."
   (define-key vhdl-mode-map " "            'vhdl-electric-space)
   (if vhdl-intelligent-tab
       (define-key vhdl-mode-map "\t"       'vhdl-electric-tab)
-    (define-key vhdl-mode-map "\t"         'indent-according-to-mode))
+    ;; The default binding of TAB already calls `indent-according-to-mode'.
+    ;; (define-key vhdl-mode-map "\t"         'indent-according-to-mode)
+    )
   (define-key vhdl-mode-map "\r"           'vhdl-electric-return)
   (define-key vhdl-mode-map "-"            'vhdl-electric-dash)
   (define-key vhdl-mode-map "["            'vhdl-electric-open-bracket)
@@ -2696,12 +2698,14 @@ STRING are replaced by `-' and substrings are converted to lower case."
 
 ;; define special minibuffer keymap for enabling word completion in minibuffer
 ;; (useful in template generator prompts)
-(defvar vhdl-minibuffer-local-map (copy-keymap minibuffer-local-map)
+(defvar vhdl-minibuffer-local-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map minibuffer-local-map)
+    (when vhdl-word-completion-in-minibuffer
+      (define-key map "\t" 'vhdl-minibuffer-tab))
+    map)
   "Keymap for minibuffer used in VHDL Mode.")
 
-(when vhdl-word-completion-in-minibuffer
-  (define-key vhdl-minibuffer-local-map "\t" 'vhdl-minibuffer-tab))
-
 ;; set up electric character functions to work with
 ;; `delete-selection-mode' (Emacs) and `pending-delete-mode' (XEmacs)
 (mapcar
@@ -2792,134 +2796,134 @@ STRING are replaced by `-' and substrings are converted to lower case."
      (when (memq 'vhdl vhdl-electric-keywords)
        ;; VHDL'93 keywords
        '(
-        ("--"            "" vhdl-template-display-comment-hook 0)
-        ("abs"           "" vhdl-template-default-hook 0)
-        ("access"        "" vhdl-template-default-hook 0)
-        ("after"         "" vhdl-template-default-hook 0)
-        ("alias"         "" vhdl-template-alias-hook 0)
-        ("all"           "" vhdl-template-default-hook 0)
-        ("and"           "" vhdl-template-default-hook 0)
-        ("arch"          "" vhdl-template-architecture-hook 0)
-        ("architecture"  "" vhdl-template-architecture-hook 0)
-        ("array"         "" vhdl-template-default-hook 0)
-        ("assert"        "" vhdl-template-assert-hook 0)
-        ("attr"          "" vhdl-template-attribute-hook 0)
-        ("attribute"     "" vhdl-template-attribute-hook 0)
-        ("begin"         "" vhdl-template-default-indent-hook 0)
-        ("block"         "" vhdl-template-block-hook 0)
-        ("body"          "" vhdl-template-default-hook 0)
-        ("buffer"        "" vhdl-template-default-hook 0)
-        ("bus"           "" vhdl-template-default-hook 0)
-        ("case"          "" vhdl-template-case-hook 0)
-        ("comp"          "" vhdl-template-component-hook 0)
-        ("component"     "" vhdl-template-component-hook 0)
-        ("cond"          "" vhdl-template-conditional-signal-asst-hook 0)
-        ("conditional"   "" vhdl-template-conditional-signal-asst-hook 0)
-        ("conf"          "" vhdl-template-configuration-hook 0)
-        ("configuration" "" vhdl-template-configuration-hook 0)
-        ("cons"          "" vhdl-template-constant-hook 0)
-        ("constant"      "" vhdl-template-constant-hook 0)
-        ("disconnect"    "" vhdl-template-disconnect-hook 0)
-        ("downto"        "" vhdl-template-default-hook 0)
-        ("else"          "" vhdl-template-else-hook 0)
-        ("elseif"        "" vhdl-template-elsif-hook 0)
-        ("elsif"         "" vhdl-template-elsif-hook 0)
-        ("end"           "" vhdl-template-default-indent-hook 0)
-        ("entity"        "" vhdl-template-entity-hook 0)
-        ("exit"          "" vhdl-template-exit-hook 0)
-        ("file"          "" vhdl-template-file-hook 0)
-        ("for"           "" vhdl-template-for-hook 0)
-        ("func"          "" vhdl-template-function-hook 0)
-        ("function"      "" vhdl-template-function-hook 0)
-        ("generic"       "" vhdl-template-generic-hook 0)
-        ("group"         "" vhdl-template-group-hook 0)
-        ("guarded"       "" vhdl-template-default-hook 0)
-        ("if"            "" vhdl-template-if-hook 0)
-        ("impure"        "" vhdl-template-default-hook 0)
-        ("in"            "" vhdl-template-default-hook 0)
-        ("inertial"      "" vhdl-template-default-hook 0)
-        ("inout"         "" vhdl-template-default-hook 0)
-        ("inst"          "" vhdl-template-instance-hook 0)
-        ("instance"      "" vhdl-template-instance-hook 0)
-        ("is"            "" vhdl-template-default-hook 0)
-        ("label"         "" vhdl-template-default-hook 0)
-        ("library"       "" vhdl-template-library-hook 0)
-        ("linkage"       "" vhdl-template-default-hook 0)
-        ("literal"       "" vhdl-template-default-hook 0)
-        ("loop"          "" vhdl-template-bare-loop-hook 0)
-        ("map"           "" vhdl-template-map-hook 0)
-        ("mod"           "" vhdl-template-default-hook 0)
-        ("nand"          "" vhdl-template-default-hook 0)
-        ("new"           "" vhdl-template-default-hook 0)
-        ("next"          "" vhdl-template-next-hook 0)
-        ("nor"           "" vhdl-template-default-hook 0)
-        ("not"           "" vhdl-template-default-hook 0)
-        ("null"          "" vhdl-template-default-hook 0)
-        ("of"            "" vhdl-template-default-hook 0)
-        ("on"            "" vhdl-template-default-hook 0)
-        ("open"          "" vhdl-template-default-hook 0)
-        ("or"            "" vhdl-template-default-hook 0)
-        ("others"        "" vhdl-template-others-hook 0)
-        ("out"           "" vhdl-template-default-hook 0)
-        ("pack"          "" vhdl-template-package-hook 0)
-        ("package"       "" vhdl-template-package-hook 0)
-        ("port"          "" vhdl-template-port-hook 0)
-        ("postponed"     "" vhdl-template-default-hook 0)
-        ("procedure"     "" vhdl-template-procedure-hook 0)
-        ("process"       "" vhdl-template-process-hook 0)
-        ("pure"          "" vhdl-template-default-hook 0)
-        ("range"         "" vhdl-template-default-hook 0)
-        ("record"        "" vhdl-template-default-hook 0)
-        ("register"      "" vhdl-template-default-hook 0)
-        ("reject"        "" vhdl-template-default-hook 0)
-        ("rem"           "" vhdl-template-default-hook 0)
-        ("report"        "" vhdl-template-report-hook 0)
-        ("return"        "" vhdl-template-return-hook 0)
-        ("rol"           "" vhdl-template-default-hook 0)
-        ("ror"           "" vhdl-template-default-hook 0)
-        ("select"        "" vhdl-template-selected-signal-asst-hook 0)
-        ("severity"      "" vhdl-template-default-hook 0)
-        ("shared"        "" vhdl-template-default-hook 0)
-        ("sig"           "" vhdl-template-signal-hook 0)
-        ("signal"        "" vhdl-template-signal-hook 0)
-        ("sla"           "" vhdl-template-default-hook 0)
-        ("sll"           "" vhdl-template-default-hook 0)
-        ("sra"           "" vhdl-template-default-hook 0)
-        ("srl"           "" vhdl-template-default-hook 0)
-        ("subtype"       "" vhdl-template-subtype-hook 0)
-        ("then"          "" vhdl-template-default-hook 0)
-        ("to"            "" vhdl-template-default-hook 0)
-        ("transport"     "" vhdl-template-default-hook 0)
-        ("type"          "" vhdl-template-type-hook 0)
-        ("unaffected"    "" vhdl-template-default-hook 0)
-        ("units"         "" vhdl-template-default-hook 0)
-        ("until"         "" vhdl-template-default-hook 0)
-        ("use"           "" vhdl-template-use-hook 0)
-        ("var"           "" vhdl-template-variable-hook 0)
-        ("variable"      "" vhdl-template-variable-hook 0)
-        ("wait"          "" vhdl-template-wait-hook 0)
-        ("when"          "" vhdl-template-when-hook 0)
-        ("while"         "" vhdl-template-while-loop-hook 0)
-        ("with"          "" vhdl-template-with-hook 0)
-        ("xnor"          "" vhdl-template-default-hook 0)
-        ("xor"           "" vhdl-template-default-hook 0)
+        ("--"            "" vhdl-template-display-comment-hook 0 t)
+        ("abs"           "" vhdl-template-default-hook 0 t)
+        ("access"        "" vhdl-template-default-hook 0 t)
+        ("after"         "" vhdl-template-default-hook 0 t)
+        ("alias"         "" vhdl-template-alias-hook 0 t)
+        ("all"           "" vhdl-template-default-hook 0 t)
+        ("and"           "" vhdl-template-default-hook 0 t)
+        ("arch"          "" vhdl-template-architecture-hook 0 t)
+        ("architecture"  "" vhdl-template-architecture-hook 0 t)
+        ("array"         "" vhdl-template-default-hook 0 t)
+        ("assert"        "" vhdl-template-assert-hook 0 t)
+        ("attr"          "" vhdl-template-attribute-hook 0 t)
+        ("attribute"     "" vhdl-template-attribute-hook 0 t)
+        ("begin"         "" vhdl-template-default-indent-hook 0 t)
+        ("block"         "" vhdl-template-block-hook 0 t)
+        ("body"          "" vhdl-template-default-hook 0 t)
+        ("buffer"        "" vhdl-template-default-hook 0 t)
+        ("bus"           "" vhdl-template-default-hook 0 t)
+        ("case"          "" vhdl-template-case-hook 0 t)
+        ("comp"          "" vhdl-template-component-hook 0 t)
+        ("component"     "" vhdl-template-component-hook 0 t)
+        ("cond"          "" vhdl-template-conditional-signal-asst-hook 0 t)
+        ("conditional"   "" vhdl-template-conditional-signal-asst-hook 0 t)
+        ("conf"          "" vhdl-template-configuration-hook 0 t)
+        ("configuration" "" vhdl-template-configuration-hook 0 t)
+        ("cons"          "" vhdl-template-constant-hook 0 t)
+        ("constant"      "" vhdl-template-constant-hook 0 t)
+        ("disconnect"    "" vhdl-template-disconnect-hook 0 t)
+        ("downto"        "" vhdl-template-default-hook 0 t)
+        ("else"          "" vhdl-template-else-hook 0 t)
+        ("elseif"        "" vhdl-template-elsif-hook 0 t)
+        ("elsif"         "" vhdl-template-elsif-hook 0 t)
+        ("end"           "" vhdl-template-default-indent-hook 0 t)
+        ("entity"        "" vhdl-template-entity-hook 0 t)
+        ("exit"          "" vhdl-template-exit-hook 0 t)
+        ("file"          "" vhdl-template-file-hook 0 t)
+        ("for"           "" vhdl-template-for-hook 0 t)
+        ("func"          "" vhdl-template-function-hook 0 t)
+        ("function"      "" vhdl-template-function-hook 0 t)
+        ("generic"       "" vhdl-template-generic-hook 0 t)
+        ("group"         "" vhdl-template-group-hook 0 t)
+        ("guarded"       "" vhdl-template-default-hook 0 t)
+        ("if"            "" vhdl-template-if-hook 0 t)
+        ("impure"        "" vhdl-template-default-hook 0 t)
+        ("in"            "" vhdl-template-default-hook 0 t)
+        ("inertial"      "" vhdl-template-default-hook 0 t)
+        ("inout"         "" vhdl-template-default-hook 0 t)
+        ("inst"          "" vhdl-template-instance-hook 0 t)
+        ("instance"      "" vhdl-template-instance-hook 0 t)
+        ("is"            "" vhdl-template-default-hook 0 t)
+        ("label"         "" vhdl-template-default-hook 0 t)
+        ("library"       "" vhdl-template-library-hook 0 t)
+        ("linkage"       "" vhdl-template-default-hook 0 t)
+        ("literal"       "" vhdl-template-default-hook 0 t)
+        ("loop"          "" vhdl-template-bare-loop-hook 0 t)
+        ("map"           "" vhdl-template-map-hook 0 t)
+        ("mod"           "" vhdl-template-default-hook 0 t)
+        ("nand"          "" vhdl-template-default-hook 0 t)
+        ("new"           "" vhdl-template-default-hook 0 t)
+        ("next"          "" vhdl-template-next-hook 0 t)
+        ("nor"           "" vhdl-template-default-hook 0 t)
+        ("not"           "" vhdl-template-default-hook 0 t)
+        ("null"          "" vhdl-template-default-hook 0 t)
+        ("of"            "" vhdl-template-default-hook 0 t)
+        ("on"            "" vhdl-template-default-hook 0 t)
+        ("open"          "" vhdl-template-default-hook 0 t)
+        ("or"            "" vhdl-template-default-hook 0 t)
+        ("others"        "" vhdl-template-others-hook 0 t)
+        ("out"           "" vhdl-template-default-hook 0 t)
+        ("pack"          "" vhdl-template-package-hook 0 t)
+        ("package"       "" vhdl-template-package-hook 0 t)
+        ("port"          "" vhdl-template-port-hook 0 t)
+        ("postponed"     "" vhdl-template-default-hook 0 t)
+        ("procedure"     "" vhdl-template-procedure-hook 0 t)
+        ("process"       "" vhdl-template-process-hook 0 t)
+        ("pure"          "" vhdl-template-default-hook 0 t)
+        ("range"         "" vhdl-template-default-hook 0 t)
+        ("record"        "" vhdl-template-default-hook 0 t)
+        ("register"      "" vhdl-template-default-hook 0 t)
+        ("reject"        "" vhdl-template-default-hook 0 t)
+        ("rem"           "" vhdl-template-default-hook 0 t)
+        ("report"        "" vhdl-template-report-hook 0 t)
+        ("return"        "" vhdl-template-return-hook 0 t)
+        ("rol"           "" vhdl-template-default-hook 0 t)
+        ("ror"           "" vhdl-template-default-hook 0 t)
+        ("select"        "" vhdl-template-selected-signal-asst-hook 0 t)
+        ("severity"      "" vhdl-template-default-hook 0 t)
+        ("shared"        "" vhdl-template-default-hook 0 t)
+        ("sig"           "" vhdl-template-signal-hook 0 t)
+        ("signal"        "" vhdl-template-signal-hook 0 t)
+        ("sla"           "" vhdl-template-default-hook 0 t)
+        ("sll"           "" vhdl-template-default-hook 0 t)
+        ("sra"           "" vhdl-template-default-hook 0 t)
+        ("srl"           "" vhdl-template-default-hook 0 t)
+        ("subtype"       "" vhdl-template-subtype-hook 0 t)
+        ("then"          "" vhdl-template-default-hook 0 t)
+        ("to"            "" vhdl-template-default-hook 0 t)
+        ("transport"     "" vhdl-template-default-hook 0 t)
+        ("type"          "" vhdl-template-type-hook 0 t)
+        ("unaffected"    "" vhdl-template-default-hook 0 t)
+        ("units"         "" vhdl-template-default-hook 0 t)
+        ("until"         "" vhdl-template-default-hook 0 t)
+        ("use"           "" vhdl-template-use-hook 0 t)
+        ("var"           "" vhdl-template-variable-hook 0 t)
+        ("variable"      "" vhdl-template-variable-hook 0 t)
+        ("wait"          "" vhdl-template-wait-hook 0 t)
+        ("when"          "" vhdl-template-when-hook 0 t)
+        ("while"         "" vhdl-template-while-loop-hook 0 t)
+        ("with"          "" vhdl-template-with-hook 0 t)
+        ("xnor"          "" vhdl-template-default-hook 0 t)
+        ("xor"           "" vhdl-template-default-hook 0 t)
         ))
      ;; VHDL-AMS keywords
      (when (and (memq 'vhdl vhdl-electric-keywords) (vhdl-standard-p 'ams))
        '(
-        ("across"     "" vhdl-template-default-hook 0)
-        ("break"      "" vhdl-template-break-hook 0)
-        ("limit"      "" vhdl-template-limit-hook 0)
-        ("nature"     "" vhdl-template-nature-hook 0)
-        ("noise"      "" vhdl-template-default-hook 0)
-        ("procedural" "" vhdl-template-procedural-hook 0)
-        ("quantity"   "" vhdl-template-quantity-hook 0)
-        ("reference"  "" vhdl-template-default-hook 0)
-        ("spectrum"   "" vhdl-template-default-hook 0)
-        ("subnature"  "" vhdl-template-subnature-hook 0)
-        ("terminal"   "" vhdl-template-terminal-hook 0)
-        ("through"    "" vhdl-template-default-hook 0)
-        ("tolerance"  "" vhdl-template-default-hook 0)
+        ("across"     "" vhdl-template-default-hook 0 t)
+        ("break"      "" vhdl-template-break-hook 0 t)
+        ("limit"      "" vhdl-template-limit-hook 0 t)
+        ("nature"     "" vhdl-template-nature-hook 0 t)
+        ("noise"      "" vhdl-template-default-hook 0 t)
+        ("procedural" "" vhdl-template-procedural-hook 0 t)
+        ("quantity"   "" vhdl-template-quantity-hook 0 t)
+        ("reference"  "" vhdl-template-default-hook 0 t)
+        ("spectrum"   "" vhdl-template-default-hook 0 t)
+        ("subnature"  "" vhdl-template-subnature-hook 0 t)
+        ("terminal"   "" vhdl-template-terminal-hook 0 t)
+        ("through"    "" vhdl-template-default-hook 0 t)
+        ("tolerance"  "" vhdl-template-default-hook 0 t)
         ))
      ;; user model keywords
      (when (memq 'user vhdl-electric-keywords)
@@ -2931,7 +2935,7 @@ STRING are replaced by `-' and substrings are converted to lower case."
             (setq abbrev-list
                   (cons (list keyword ""
                               (vhdl-function-name
-                               "vhdl-model" (nth 0 (car alist)) "hook") 0)
+                               "vhdl-model" (nth 0 (car alist)) "hook") 0 t)
                         abbrev-list)))
           (setq alist (cdr alist)))
         abbrev-list)))))
@@ -3746,7 +3750,8 @@ STRING are replaced by `-' and substrings are converted to lower case."
      ("Highlight"
       ["Highlighting On/Off..."
        (customize-option
-       (if vhdl-xemacs 'font-lock-auto-fontify 'global-font-lock-mode)) t]
+       (if (fboundp 'global-font-lock-mode)
+           'global-font-lock-mode 'font-lock-auto-fontify)) t]
       ["Highlight Keywords"
        (progn (customize-set-variable 'vhdl-highlight-keywords
                                      (not vhdl-highlight-keywords))
@@ -7854,7 +7859,7 @@ Used for undoing after template abortion.")
 ;; correct different behavior of function `unread-command-events' in XEmacs
 (defun vhdl-character-to-event (arg))
 (defalias 'vhdl-character-to-event
-  (if vhdl-xemacs 'character-to-event 'identity))
+  (if (fboundp 'character-to-event) 'character-to-event 'identity))
 
 (defun vhdl-work-library ()
   "Return the working library name of the current project or \"work\" if no
@@ -10399,7 +10404,7 @@ but not if inside a comment or quote)."
          (when (stringp caught) (message caught)))
        (when (= invoke-char ?-) (setq abbrev-start-location (point)))
        ;; delete CR which is still in event queue
-       (if vhdl-xemacs
+       (if (fboundp 'enqueue-eval-event)
            (enqueue-eval-event 'delete-char -1)
          (setq unread-command-events   ; push back a delete char
                (list (vhdl-character-to-event ?\177))))))))
@@ -11923,9 +11928,7 @@ options vhdl-upper-case-{keywords,types,attributes,enum-values}."
   "Return the line number of the line containing point."
   (save-restriction
     (widen)
-    (save-excursion
-      (beginning-of-line)
-      (1+ (count-lines 1 (point))))))
+    (1+ (count-lines (point-min) (line-beginning-position)))))
 
 (defun vhdl-line-kill-entire (&optional arg)
   "Delete entire line."
@@ -16559,26 +16562,24 @@ to visually support naming conventions.")
 (defun vhdl-doc-variable (variable)
   "Display VARIABLE's documentation in *Help* buffer."
   (interactive)
-  (with-output-to-temp-buffer "*Help*"
+  (unless vhdl-xemacs
+    (help-setup-xref (list #'vhdl-doc-variable variable) (interactive-p)))
+  (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
     (princ (documentation-property variable 'variable-documentation))
-    (unless vhdl-xemacs
-      (help-setup-xref (list #'vhdl-doc-variable variable) (interactive-p)))
-    (save-excursion
-      (set-buffer standard-output)
+    (with-current-buffer standard-output
       (help-mode))
     (print-help-return-message)))
 
 (defun vhdl-doc-mode ()
   "Display VHDL Mode documentation in *Help* buffer."
   (interactive)
-  (with-output-to-temp-buffer "*Help*"
+  (unless vhdl-xemacs
+    (help-setup-xref (list #'vhdl-doc-mode) (interactive-p)))
+  (with-output-to-temp-buffer (if (fboundp 'help-buffer) (help-buffer) "*Help*")
     (princ mode-name)
     (princ " mode:\n")
     (princ (documentation 'vhdl-mode))
-    (unless vhdl-xemacs
-      (help-setup-xref (list #'vhdl-doc-mode) (interactive-p)))
-    (save-excursion
-      (set-buffer standard-output)
+    (with-current-buffer standard-output
       (help-mode))
     (print-help-return-message)))
 
@@ -16587,5 +16588,5 @@ to visually support naming conventions.")
 
 (provide 'vhdl-mode)
 
-;;; arch-tag: 780d7073-9b5d-4c6c-b0d8-26b28783aba3
+;; arch-tag: 780d7073-9b5d-4c6c-b0d8-26b28783aba3
 ;;; vhdl-mode.el ends here