From 8468f78b663a9252729e8e77ad85436037977016 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sat, 6 Nov 2010 00:54:19 -0700 Subject: [PATCH] * progmodes/verilog-mode.el (verilog-insert-one-definition) (verilog-read-decls, verilog-read-sub-decls-sig): Fix AUTOWIRE and AUTOINOUT for SV style multidimensional arrays, bug294. Reported by Eric Mastromarchi. (verilog-preprocess): Use with-current-buffer and font-lock-fontify-buffer to cleanup style issues. --- lisp/ChangeLog | 9 +++++++ lisp/progmodes/verilog-mode.el | 43 ++++++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 554fe267d49..48bd9c2f8a9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2010-11-07 Wilson Snyder + + * progmodes/verilog-mode.el (verilog-insert-one-definition) + (verilog-read-decls, verilog-read-sub-decls-sig): Fix AUTOWIRE and + AUTOINOUT for SV style multidimensional arrays, bug294. Reported + by Eric Mastromarchi. + (verilog-preprocess): Use with-current-buffer and + font-lock-fontify-buffer to cleanup style issues. + 2010-11-05 Michael Albinus * net/trampver.el: Update release number. diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index 2b7cb97c7c4..a75ed1b47d3 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -124,9 +124,9 @@ ;;; Code: ;; This variable will always hold the version number of the mode -(defconst verilog-mode-version "647" +(defconst verilog-mode-version "650" "Version of this Verilog mode.") -(defconst verilog-mode-release-date "2010-10-20-GNU" +(defconst verilog-mode-release-date "2010-11-05-GNU" "Release date of this Verilog mode.") (defconst verilog-mode-release-emacs t "If non-nil, this version of Verilog mode was released with Emacs itself.") @@ -4562,16 +4562,18 @@ FILENAME or defaults to `buffer-file-name`." default nil nil 'verilog-preprocess-history default))))) (unless command (setq command (verilog-expand-command verilog-preprocessor))) - (let* ((dir (file-name-directory (or filename buffer-file-name))) + (let* ((fontlocked (and (boundp 'font-lock-mode) font-lock-mode)) + (dir (file-name-directory (or filename buffer-file-name))) (file (file-name-nondirectory (or filename buffer-file-name))) (cmd (concat "cd " dir "; " command " " file))) (with-output-to-temp-buffer "*Verilog-Preprocessed*" - (save-excursion - (set-buffer "*Verilog-Preprocessed*") + (with-current-buffer (get-buffer "*Verilog-Preprocessed*") (insert (concat "// " cmd "\n")) (shell-command cmd "*Verilog-Preprocessed*") (verilog-mode) - (font-lock-mode))))) + ;; Without this force, it takes a few idle seconds + ;; to get the color, which is very jarring + (when fontlocked (font-lock-fontify-buffer)))))) ;; @@ -7277,7 +7279,10 @@ Return a array of [outputs inouts inputs wire reg assign const]." ((looking-at "\\s-*\\(\\[[^]]+\\]\\)") (goto-char (match-end 0)) (cond (newsig ; Memory, not just width. Patch last signal added's memory (nth 3) - (setcar (cdr (cdr (cdr newsig))) (match-string 1))) + (setcar (cdr (cdr (cdr newsig))) + (if (verilog-sig-memory newsig) + (concat (verilog-sig-memory newsig) (match-string 1)) + (match-string 1)))) (vec ;; Multidimensional (setq multidim (cons vec multidim)) (setq vec (verilog-string-replace-matches @@ -7415,7 +7420,9 @@ Return a array of [outputs inouts inputs wire reg assign const]." (cons (verilog-sig-new sig (if dotname (verilog-sig-bits portdata) vec) - (concat "To/From " comment) nil nil + (concat "To/From " comment) + (verilog-sig-memory portdata) + nil (verilog-sig-signed portdata) (verilog-sig-type portdata) multidim nil) @@ -7426,7 +7433,9 @@ Return a array of [outputs inouts inputs wire reg assign const]." (cons (verilog-sig-new sig (if dotname (verilog-sig-bits portdata) vec) - (concat "From " comment) nil nil + (concat "From " comment) + (verilog-sig-memory portdata) + nil (verilog-sig-signed portdata) (verilog-sig-type portdata) multidim nil) @@ -7437,7 +7446,9 @@ Return a array of [outputs inouts inputs wire reg assign const]." (cons (verilog-sig-new sig (if dotname (verilog-sig-bits portdata) vec) - (concat "To " comment) nil nil + (concat "To " comment) + (verilog-sig-memory portdata) + nil (verilog-sig-signed portdata) (verilog-sig-type portdata) multidim nil) @@ -7447,7 +7458,9 @@ Return a array of [outputs inouts inputs wire reg assign const]." (cons (verilog-sig-new sig (if dotname (verilog-sig-bits portdata) vec) - (concat "To/From " comment) nil nil + (concat "To/From " comment) + (verilog-sig-memory portdata) + nil (verilog-sig-signed portdata) (verilog-sig-type portdata) multidim nil) @@ -7459,7 +7472,9 @@ Return a array of [outputs inouts inputs wire reg assign const]." (cons (verilog-sig-new sig (if dotname (verilog-sig-bits portdata) vec) - (concat "To/From " comment) nil nil + (concat "To/From " comment) + (verilog-sig-memory portdata) + nil (verilog-sig-signed portdata) (verilog-sig-type portdata) multidim nil) @@ -8874,7 +8889,9 @@ with appropriate INDENT-PT indentation." (indent-to (max 24 (+ indent-pt 16))) (unless (= (char-syntax (preceding-char)) ?\ ) (insert " ")) ; Need space between "]name" if indent-to did nothing - (insert (verilog-sig-name sig))) + (insert (verilog-sig-name sig)) + (when (verilog-sig-memory sig) + (insert " " (verilog-sig-memory sig)))) (defun verilog-insert-definition (sigs direction indent-pt v2k &optional dont-sort) "Print out a definition for a list of SIGS of the given DIRECTION, -- 2.39.2