diff options
| -rw-r--r-- | lisp/progmodes/vhdl-mode.el | 48 |
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 | ||