aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/progmodes/vhdl-mode.el48
1 files changed, 25 insertions, 23 deletions
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 13d0cfa67e8..9eedbf9cbc9 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -126,13 +126,15 @@
126 126
127;;; Code: 127;;; Code:
128 128
129(eval-when-compile (require 'cl)) 129(eval-when-compile
130(eval-and-compile 130 (condition-case nil (require 'cl-lib) (file-missing (require 'cl)))
131 ;; Before Emacs-24.4, `pushnew' expands to runtime calls to `cl-adjoin' 131 (defalias 'vhdl--pushnew (if (fboundp 'cl-pushnew) 'cl-pushnew 'pushnew)))
132 ;; even for relatively simple cases such as used here. We only test <25 132
133 ;; because it's easier and sufficient. 133;; Before Emacs-24.4, `pushnew' expands to runtime calls to `cl-adjoin'
134 (when (or (featurep 'xemacs) (< emacs-major-version 25)) 134;; even for relatively simple cases such as used here. We only test <25
135 (require 'cl))) 135;; because it's easier and sufficient.
136(when (< emacs-major-version 25)
137 (condition-case nil (require 'cl-lib) (file-missing (require 'cl))))
136 138
137;; Emacs 21+ handling 139;; Emacs 21+ handling
138(defconst vhdl-emacs-21 (and (<= 21 emacs-major-version) (not (featurep 'xemacs))) 140(defconst vhdl-emacs-21 (and (<= 21 emacs-major-version) (not (featurep 'xemacs)))
@@ -14315,7 +14317,7 @@ of PROJECT."
14315 (vhdl-scan-directory-contents dir-name project nil 14317 (vhdl-scan-directory-contents dir-name project nil
14316 (format "(%s/%s) " act-dir num-dir) 14318 (format "(%s/%s) " act-dir num-dir)
14317 (cdr dir-list)) 14319 (cdr dir-list))
14318 (pushnew (file-name-directory dir-name) dir-list-tmp :test #'equal) 14320 (vhdl--pushnew (file-name-directory dir-name) dir-list-tmp :test #'equal)
14319 (setq dir-list (cdr dir-list) 14321 (setq dir-list (cdr dir-list)
14320 act-dir (1+ act-dir))) 14322 act-dir (1+ act-dir)))
14321 (vhdl-aput 'vhdl-directory-alist project (list (nreverse dir-list-tmp))) 14323 (vhdl-aput 'vhdl-directory-alist project (list (nreverse dir-list-tmp)))
@@ -16407,8 +16409,8 @@ component instantiation."
16407 (if (or (member constant-name single-list) 16409 (if (or (member constant-name single-list)
16408 (member constant-name multi-list)) 16410 (member constant-name multi-list))
16409 (progn (setq single-list (delete constant-name single-list)) 16411 (progn (setq single-list (delete constant-name single-list))
16410 (pushnew constant-name multi-list :test #'equal)) 16412 (vhdl--pushnew constant-name multi-list :test #'equal))
16411 (pushnew constant-name single-list :test #'equal)) 16413 (vhdl--pushnew constant-name single-list :test #'equal))
16412 (unless (match-string 1) 16414 (unless (match-string 1)
16413 (setq generic-alist (cdr generic-alist))) 16415 (setq generic-alist (cdr generic-alist)))
16414 (vhdl-forward-syntactic-ws)) 16416 (vhdl-forward-syntactic-ws))
@@ -16434,12 +16436,12 @@ component instantiation."
16434 (member signal-name multi-out-list)) 16436 (member signal-name multi-out-list))
16435 (setq single-out-list (delete signal-name single-out-list)) 16437 (setq single-out-list (delete signal-name single-out-list))
16436 (setq multi-out-list (delete signal-name multi-out-list)) 16438 (setq multi-out-list (delete signal-name multi-out-list))
16437 (pushnew signal-name local-list :test #'equal)) 16439 (vhdl--pushnew signal-name local-list :test #'equal))
16438 ((member signal-name single-in-list) 16440 ((member signal-name single-in-list)
16439 (setq single-in-list (delete signal-name single-in-list)) 16441 (setq single-in-list (delete signal-name single-in-list))
16440 (pushnew signal-name multi-in-list :test #'equal)) 16442 (vhdl--pushnew signal-name multi-in-list :test #'equal))
16441 ((not (member signal-name multi-in-list)) 16443 ((not (member signal-name multi-in-list))
16442 (pushnew signal-name single-in-list :test #'equal))) 16444 (vhdl--pushnew signal-name single-in-list :test #'equal)))
16443 ;; output signal 16445 ;; output signal
16444 (cond 16446 (cond
16445 ((member signal-name local-list) 16447 ((member signal-name local-list)
@@ -16448,12 +16450,12 @@ component instantiation."
16448 (member signal-name multi-in-list)) 16450 (member signal-name multi-in-list))
16449 (setq single-in-list (delete signal-name single-in-list)) 16451 (setq single-in-list (delete signal-name single-in-list))
16450 (setq multi-in-list (delete signal-name multi-in-list)) 16452 (setq multi-in-list (delete signal-name multi-in-list))
16451 (pushnew signal-name local-list :test #'equal)) 16453 (vhdl--pushnew signal-name local-list :test #'equal))
16452 ((member signal-name single-out-list) 16454 ((member signal-name single-out-list)
16453 (setq single-out-list (delete signal-name single-out-list)) 16455 (setq single-out-list (delete signal-name single-out-list))
16454 (pushnew signal-name multi-out-list :test #'equal)) 16456 (vhdl--pushnew signal-name multi-out-list :test #'equal))
16455 ((not (member signal-name multi-out-list)) 16457 ((not (member signal-name multi-out-list))
16456 (pushnew signal-name single-out-list :test #'equal)))) 16458 (vhdl--pushnew signal-name single-out-list :test #'equal))))
16457 (unless (match-string 1) 16459 (unless (match-string 1)
16458 (setq port-alist (cdr port-alist))) 16460 (setq port-alist (cdr port-alist)))
16459 (vhdl-forward-syntactic-ws)) 16461 (vhdl-forward-syntactic-ws))
@@ -16536,14 +16538,14 @@ component instantiation."
16536 generic-end-pos 16538 generic-end-pos
16537 (vhdl-compose-insert-generic constant-entry))) 16539 (vhdl-compose-insert-generic constant-entry)))
16538 (setq generic-pos (point-marker)) 16540 (setq generic-pos (point-marker))
16539 (pushnew constant-name written-list :test #'equal)) 16541 (vhdl--pushnew constant-name written-list :test #'equal))
16540 (t 16542 (t
16541 (vhdl-goto-marker 16543 (vhdl-goto-marker
16542 (vhdl-max-marker generic-inst-pos generic-pos)) 16544 (vhdl-max-marker generic-inst-pos generic-pos))
16543 (setq generic-end-pos 16545 (setq generic-end-pos
16544 (vhdl-compose-insert-generic constant-entry)) 16546 (vhdl-compose-insert-generic constant-entry))
16545 (setq generic-inst-pos (point-marker)) 16547 (setq generic-inst-pos (point-marker))
16546 (pushnew constant-name written-list :test #'equal)))) 16548 (vhdl--pushnew constant-name written-list :test #'equal))))
16547 (setq constant-alist (cdr constant-alist))) 16549 (setq constant-alist (cdr constant-alist)))
16548 (when (/= constant-temp-pos generic-inst-pos) 16550 (when (/= constant-temp-pos generic-inst-pos)
16549 (vhdl-goto-marker (vhdl-max-marker constant-temp-pos generic-pos)) 16551 (vhdl-goto-marker (vhdl-max-marker constant-temp-pos generic-pos))
@@ -16562,14 +16564,14 @@ component instantiation."
16562 (vhdl-max-marker 16564 (vhdl-max-marker
16563 port-end-pos (vhdl-compose-insert-port signal-entry))) 16565 port-end-pos (vhdl-compose-insert-port signal-entry)))
16564 (setq port-in-pos (point-marker)) 16566 (setq port-in-pos (point-marker))
16565 (pushnew signal-name written-list :test #'equal)) 16567 (vhdl--pushnew signal-name written-list :test #'equal))
16566 ((member signal-name multi-out-list) 16568 ((member signal-name multi-out-list)
16567 (vhdl-goto-marker (vhdl-max-marker port-out-pos port-in-pos)) 16569 (vhdl-goto-marker (vhdl-max-marker port-out-pos port-in-pos))
16568 (setq port-end-pos 16570 (setq port-end-pos
16569 (vhdl-max-marker 16571 (vhdl-max-marker
16570 port-end-pos (vhdl-compose-insert-port signal-entry))) 16572 port-end-pos (vhdl-compose-insert-port signal-entry)))
16571 (setq port-out-pos (point-marker)) 16573 (setq port-out-pos (point-marker))
16572 (pushnew signal-name written-list :test #'equal)) 16574 (vhdl--pushnew signal-name written-list :test #'equal))
16573 ((or (member signal-name single-in-list) 16575 ((or (member signal-name single-in-list)
16574 (member signal-name single-out-list)) 16576 (member signal-name single-out-list))
16575 (vhdl-goto-marker 16577 (vhdl-goto-marker
@@ -16578,12 +16580,12 @@ component instantiation."
16578 (vhdl-max-marker port-out-pos port-in-pos))) 16580 (vhdl-max-marker port-out-pos port-in-pos)))
16579 (setq port-end-pos (vhdl-compose-insert-port signal-entry)) 16581 (setq port-end-pos (vhdl-compose-insert-port signal-entry))
16580 (setq port-inst-pos (point-marker)) 16582 (setq port-inst-pos (point-marker))
16581 (pushnew signal-name written-list :test #'equal)) 16583 (vhdl--pushnew signal-name written-list :test #'equal))
16582 ((equal (upcase (nth 2 signal-entry)) "OUT") 16584 ((equal (upcase (nth 2 signal-entry)) "OUT")
16583 (vhdl-goto-marker signal-pos) 16585 (vhdl-goto-marker signal-pos)
16584 (vhdl-compose-insert-signal signal-entry) 16586 (vhdl-compose-insert-signal signal-entry)
16585 (setq signal-pos (point-marker)) 16587 (setq signal-pos (point-marker))
16586 (pushnew signal-name written-list :test #'equal))) 16588 (vhdl--pushnew signal-name written-list :test #'equal)))
16587 (setq signal-alist (cdr signal-alist))) 16589 (setq signal-alist (cdr signal-alist)))
16588 (when (/= port-temp-pos port-inst-pos) 16590 (when (/= port-temp-pos port-inst-pos)
16589 (vhdl-goto-marker 16591 (vhdl-goto-marker
@@ -16934,7 +16936,7 @@ no project is defined."
16934 "Remove duplicate elements from IN-LIST." 16936 "Remove duplicate elements from IN-LIST."
16935 (let (out-list) 16937 (let (out-list)
16936 (while in-list 16938 (while in-list
16937 (pushnew (car in-list) out-list :test #'equal) 16939 (vhdl--pushnew (car in-list) out-list :test #'equal)
16938 (setq in-list (cdr in-list))) 16940 (setq in-list (cdr in-list)))
16939 out-list)) 16941 out-list))
16940 16942