diff lisp/progmodes/verilog-mode.el @ 111449:132f2dfd549f

Merge from emacs-23
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 09 Nov 2010 15:07:10 -0500
parents 810cef5c0eee 33be1f38d8b9
children b47e85affa59
line wrap: on
line diff
--- a/lisp/progmodes/verilog-mode.el	Tue Nov 09 10:29:37 2010 +0000
+++ b/lisp/progmodes/verilog-mode.el	Tue Nov 09 15:07:10 2010 -0500
@@ -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.")
@@ -4551,16 +4551,18 @@
 				 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))))))
 
 
 ;;
@@ -7266,7 +7268,10 @@
 	 ((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
@@ -7404,7 +7409,9 @@
 		     (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)
@@ -7415,7 +7422,9 @@
 		     (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)
@@ -7426,7 +7435,9 @@
 		     (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)
@@ -7436,7 +7447,9 @@
 		     (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)
@@ -7448,7 +7461,9 @@
 		     (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)
@@ -8862,7 +8877,9 @@
   (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,