emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog progmodes/verilog-mode.el


From: Dan Nicolaescu
Subject: [Emacs-diffs] emacs/lisp ChangeLog progmodes/verilog-mode.el
Date: Thu, 26 Nov 2009 03:18:35 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Dan Nicolaescu <dann>   09/11/26 03:18:34

Modified files:
        lisp           : ChangeLog 
        lisp/progmodes : verilog-mode.el 

Log message:
        * verilog-mode.el (verilog-at-struct-p): Support "signed" and
        "unsigned" structs.
        
        (verilog-leap-to-head, verilog-backward-token): Handle "disable
        fork" statement better.
        
        * verilog-mode.el (verilog-auto-insert-lisp, verilog-delete-auto)
        (verilog-delete-empty-auto-pair, verilog-library-filenames): Fix
        AUTOINSERTLISP to support insert-file.  Reported by Clay Douglass.
        
        (verilog-auto-inst, verilog-auto-star-safe)
        (verilog-delete-auto-star-implicit, verilog-read-sub-decls): Fix
        removing "// Interfaces" when saving .* expansions.  Reported by
        Pierre-David Pfister.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16745&r2=1.16746
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/progmodes/verilog-mode.el?cvsroot=emacs&r1=1.36&r2=1.37

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16745
retrieving revision 1.16746
diff -u -b -r1.16745 -r1.16746
--- ChangeLog   26 Nov 2009 03:09:58 -0000      1.16745
+++ ChangeLog   26 Nov 2009 03:18:31 -0000      1.16746
@@ -1,3 +1,22 @@
+2009-11-26  Michael McNamara  <address@hidden>
+
+       * verilog-mode.el (verilog-at-struct-p): Support "signed" and
+       "unsigned" structs.
+
+       (verilog-leap-to-head, verilog-backward-token): Handle "disable
+       fork" statement better.
+
+2009-11-26  Wilson Snyder  <address@hidden>
+
+       * verilog-mode.el (verilog-auto-insert-lisp, verilog-delete-auto)
+       (verilog-delete-empty-auto-pair, verilog-library-filenames): Fix
+       AUTOINSERTLISP to support insert-file.  Reported by Clay Douglass.
+
+       (verilog-auto-inst, verilog-auto-star-safe)
+       (verilog-delete-auto-star-implicit, verilog-read-sub-decls): Fix
+       removing "// Interfaces" when saving .* expansions.  Reported by
+       Pierre-David Pfister.
+
 2009-11-26  Glenn Morris  <address@hidden>
 
        * eshell/em-dirs.el (eshell/cd): Don't throw to a tag outside the scope.

Index: progmodes/verilog-mode.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/verilog-mode.el,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- progmodes/verilog-mode.el   5 Nov 2009 20:54:37 -0000       1.36
+++ progmodes/verilog-mode.el   26 Nov 2009 03:18:34 -0000      1.37
@@ -118,9 +118,9 @@
 ;;; Code:
 
 ;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "547"
+(defconst verilog-mode-version "552"
   "Version of this Verilog mode.")
-(defconst verilog-mode-release-date "2009-11-05-GNU"
+(defconst verilog-mode-release-date "2009-11-25-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.")
@@ -4640,7 +4640,13 @@
                (while (verilog-re-search-backward reg nil 'move)
                  (cond
                   ((match-end 1) ; begin
-                   (setq nest (1- nest))
+                   (if (looking-at "fork")
+                       (let ((here (point)))
+                         (verilog-beg-of-statement)
+                         (unless (looking-at verilog-disable-fork-re)
+                           (goto-char here)
+                           (setq nest (1- nest))))
+                     (setq nest (1- nest)))
                    (if (= 0 nest)
                        ;; Now previous line describes syntax
                        (throw 'skip 1))
@@ -4760,6 +4766,8 @@
    (;-- any of begin|initial|while are complete statements; 'begin : foo' is 
also complete
     t
     (forward-word -1)
+    (while (= (preceding-char) ?\_)
+      (forward-word -1))
     (cond
      ((looking-at "\\<else\\>")
       t)
@@ -4971,7 +4979,7 @@
   (save-excursion
     (if (and (equal (char-after) ?\{)
              (verilog-backward-token))
-        (looking-at "\\<struct\\|union\\|packed\\>")
+        (looking-at "\\<struct\\|union\\|packed\\|\\(un\\)?signed\\>")
       nil)))
 
 (defun verilog-parenthesis-depth ()
@@ -5388,7 +5396,7 @@
           (unless quiet (message ""))))))
 
 (defun verilog-pretty-expr (&optional quiet myre)
-  "Line up expressions around point, or optional regexp MYRE."
+  "Line up expressions around point, optionally QUIET with regexp MYRE."
   (interactive "sRegular Expression: ((<|:)?=) ")
   (save-excursion
     (if (or (eq myre nil)
@@ -5661,13 +5669,13 @@
     "triand" "trior" "trireg" "wand" "wire" "wor" "xnor" "xor"
     )
   "*Keywords for types used when completing a word in a declaration or 
parmlist.
-\(Eg. integer, real, reg...)")
+\(integer, real, reg...)")
 
 (defvar verilog-cpp-keywords
   '("module" "macromodule" "primitive" "timescale" "define" "ifdef" "ifndef" 
"else"
     "endif")
   "*Keywords to complete when at first word of a line in declarative scope.
-\(Eg. initial, always, begin, assign.)
+\(initial, always, begin, assign...)
 The procedures and variables defined within the Verilog program
 will be completed at runtime and should not be added to this list.")
 
@@ -5681,7 +5689,7 @@
      )
    verilog-type-keywords)
   "*Keywords to complete when at first word of a line in declarative scope.
-\(Eg. initial, always, begin, assign.)
+\(initial, always, begin, assign...)
 The procedures and variables defined within the Verilog program
 will be completed at runtime and should not be added to this list.")
 
@@ -5692,28 +5700,28 @@
     "for" "fork" "if" "join" "join_any" "join_none" "repeat" "return"
     "while")
   "*Keywords to complete when at first word of a line in behavioral scope.
-\(Eg. begin, if, then, else, for, fork.)
+\(begin, if, then, else, for, fork...)
 The procedures and variables defined within the Verilog program
 will be completed at runtime and should not be added to this list.")
 
 (defvar verilog-tf-keywords
   '("begin" "break" "fork" "join" "join_any" "join_none" "case" "end" 
"endtask" "endfunction" "if" "else" "for" "while" "repeat")
   "*Keywords to complete when at first word of a line in a task or function.
-\(Eg. begin, if, then, else, for, fork.)
+\(begin, if, then, else, for, fork.)
 The procedures and variables defined within the Verilog program
 will be completed at runtime and should not be added to this list.")
 
 (defvar verilog-case-keywords
   '("begin" "fork" "join" "join_any" "join_none" "case" "end" "endcase" "if" 
"else" "for" "repeat")
   "*Keywords to complete when at first word of a line in case scope.
-\(Eg. begin, if, then, else, for, fork.)
+\(begin, if, then, else, for, fork...)
 The procedures and variables defined within the Verilog program
 will be completed at runtime and should not be added to this list.")
 
 (defvar verilog-separator-keywords
   '("else" "then" "begin")
   "*Keywords to complete when NOT standing at the first word of a statement.
-\(Eg. else, then.)
+\(else, then, begin...)
 Variables and function names defined within the Verilog program
 will be completed at runtime and should not be added to this list.")
 
@@ -6927,10 +6935,10 @@
                (while (re-search-forward "\\s *(?\\s *// Outputs" 
end-inst-point t)
                  (verilog-read-sub-decls-line submoddecls comment)) ;; 
Modifies sigs-out
                (goto-char st-point)
-               (while (re-search-forward "\\s *// Inouts" end-inst-point t)
+               (while (re-search-forward "\\s *(?\\s *// Inouts" 
end-inst-point t)
                  (verilog-read-sub-decls-line submoddecls comment)) ;; 
Modifies sigs-inout
                (goto-char st-point)
-               (while (re-search-forward "\\s *// Inputs" end-inst-point t)
+               (while (re-search-forward "\\s *(?\\s *// Inputs" 
end-inst-point t)
                  (verilog-read-sub-decls-line submoddecls comment)) ;; 
Modifies sigs-in
                )))))
       ;; Combine duplicate bits
@@ -7730,11 +7738,13 @@
     dirlist))
 ;;(verilog-expand-dirnames (list "." ".." "nonexist" "../*" 
"/home/wsnyder/*/v"))
 
-(defun verilog-library-filenames (filename current &optional check-ext)
+(defun verilog-library-filenames (filename &optional current check-ext)
   "Return a search path to find the given FILENAME or module name.
-Uses the CURRENT filename, `verilog-library-directories' and
-`verilog-library-extensions' variables to build the path.
-With optional CHECK-EXT also check `verilog-library-extensions'."
+Uses the optional CURRENT filename or buffer-file-name, plus
+`verilog-library-directories' and `verilog-library-extensions'
+variables to build the path.  With optional CHECK-EXT also check
+`verilog-library-extensions'."
+  (unless current (setq current (buffer-file-name)))
   (unless verilog-dir-cache-preserving
     (setq verilog-dir-cache-lib-filenames nil))
   (let* ((cache-key (list filename current check-ext))
@@ -7987,7 +7997,7 @@
       (nreverse out-list))))
 
 (defun verilog-signals-matching-dir-re (in-list decl-type regexp)
-  "Return all signals in IN-LIST matching the given directional REGEXP,
+  "Return all signals in IN-LIST matching the given DECL-TYPE and REGEXP,
 if non-nil."
   (if (or (not regexp) (equal regexp ""))
       in-list
@@ -8221,6 +8231,13 @@
       (delete-region pt (point))
       (forward-line 1))))
 
+(defun verilog-delete-empty-auto-pair ()
+  "Delete begin/end auto pair at point, if empty."
+  (forward-line 0)
+  (when (looking-at (concat "\\s-*// Beginning of automatic.*\n"
+                           "\\s-*// End of automatics\n"))
+    (delete-region (point) (save-excursion (forward-line 2) (point)))))
+
 (defun verilog-forward-close-paren ()
   "Find the close parenthesis that match the current point.
 Ignore other close parenthesis with matching open parens."
@@ -8271,7 +8288,7 @@
   "Return if a .* AUTOINST is safe to delete or expand.
 It was created by the AUTOS themselves, or by the user."
   (and verilog-auto-star-expand
-       (looking-at "[ \t\n\f,]*\\([)]\\|// 
\\(Outputs\\|Inouts\\|Inputs\\)\\)")))
+       (looking-at "[ \t\n\f,]*\\([)]\\|// 
\\(Outputs\\|Inouts\\|Inputs\\|Interfaces\\)\\)")))
 
 (defun verilog-delete-auto-star-all ()
   "Delete a .* AUTOINST, if it is safe."
@@ -8303,7 +8320,7 @@
          (save-excursion
            (while (progn
                     (forward-line -1)
-                    (looking-at "\\s *//\\s 
*\\(Outputs\\|Inouts\\|Inputs\\)\n"))
+                    (looking-at "\\s *//\\s 
*\\(Outputs\\|Inouts\\|Inputs\\|Interfaces\\)\n"))
              (delete-region (match-beginning 0) (match-end 0))))
          ;; If it is simple, we can put the ); on the same line as the last 
text
          (let ((rtn-pt (point)))
@@ -8343,7 +8360,7 @@
                  "AUTOREG" "AUTOREGINPUT" "AUTORESET" "AUTOTIEOFF"
                  "AUTOUNUSED" "AUTOWIRE")))
             ;; Optional parens or quoted parameter or .* for (((...)))
-            "\\(\\|([^)]*)\\|(\"[^\"]*\")\\|.*?\\)"
+            "\\(\\|([^)]*)\\|(\"[^\"]*\")\\).*?"
             "\\*/")
      'verilog-delete-autos-lined)
     ;; Remove those that are in parenthesis
@@ -8995,8 +9012,11 @@
   quotes will be evaluated as a Lisp expression, with @ replaced by the
   instantiation number.  The MAPVALIDP1X example above would put @+1 modulo
   4 into the brackets.  Quote all double-quotes inside the expression with
-  a leading backslash (\\\").  There are special variables defined that are
-  useful in these Lisp functions:
+  a leading backslash (\\\"...\\\"); or if the Lisp template is also a
+  regexp template backslash the backslash quote (\\\\\"...\\\\\").
+
+  There are special variables defined that are useful in these
+  Lisp functions:
 
        vl-name        Name portion of the input/output port.
        vl-bits        Bus bits portion of the input/output port ('[2:0]').
@@ -9024,7 +9044,10 @@
   `number-to-string' and `string-to-number'.
 
   After the evaluation is completed, @ substitution and [] substitution
-  occur."
+  occur.
+
+For more information see the \\[verilog-faq] and forums at URL
+`http://www.veripool.org'."
   (save-excursion
     ;; Find beginning
     (let* ((pt (point))
@@ -9917,17 +9940,14 @@
                                       (point))) ;; Beginning paren
           (cmd (buffer-substring-no-properties cmd-beg-pt cmd-end-pt)))
       (forward-line 1)
-      (let ((pre-eval-pt (point)))
-       ;;Debug: (insert cmd)
-       ;; Don't use eval-region as Xemacs has a bug where it goto-char's 
begin-pt
+      ;; Some commands don't move point (like insert-file) so we always
+      ;; add the begin/end comments, then delete it if not needed
+      (verilog-insert-indent "// Beginning of automatic insert lisp\n")
+      (verilog-insert-indent "// End of automatics\n")
+      (forward-line -1)
        (eval (read cmd))
-       ;; If inserted something add the begin/end blocks
-       (when (not (equal pre-eval-pt (point)))
-         (when (not (bolp)) (insert "\n"))  ;; If user forgot final newline, 
add it
-         (save-excursion
-           (goto-char pre-eval-pt)
-           (verilog-insert-indent "// Beginning of automatic insert lisp\n"))
-         (verilog-insert-indent "// End of automatics\n"))))))
+      (forward-line -1)
+      (verilog-delete-empty-auto-pair))))
 
 (defun verilog-auto-sense-sigs (moddecls presense-sigs)
   "Return list of signals for current AUTOSENSE block."




reply via email to

[Prev in Thread] Current Thread [Next in Thread]