emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/nasm-mode b5efa92 07/67: Allow for NASM's crazy label poss


From: ELPA Syncer
Subject: [nongnu] elpa/nasm-mode b5efa92 07/67: Allow for NASM's crazy label possibilities.
Date: Sun, 29 Aug 2021 11:23:42 -0400 (EDT)

branch: elpa/nasm-mode
commit b5efa926420094d881dfbf752373388ea9ac5221
Author: Christopher Wellons <wellons@nullprogram.com>
Commit: Christopher Wellons <wellons@nullprogram.com>

    Allow for NASM's crazy label possibilities.
    
    Instruction names can now be labels when followed by a colon.
---
 nasm-mode.el | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/nasm-mode.el b/nasm-mode.el
index 200579a..bd736a1 100644
--- a/nasm-mode.el
+++ b/nasm-mode.el
@@ -384,17 +384,18 @@
     "NASM preprocessor directives (pptok.c) for `nasm-mode'."))
 
 (defconst nasm-label-regexp
-  "^\\s-*[a-zA-Z0-9_.?][a-zA-Z0-9_$#@~.?]*:?\\>"
+  "\\s-*[a-zA-Z0-9_.?][a-zA-Z0-9_$#@~.?]*\\>"
   "Regexp for `nasm-mode'.")
 
 (defconst nasm-font-lock-keywords
   `(("\\<\\.[a-zA-Z0-9_$#@~.?]+\\>" . font-lock-type-face)
     (,(regexp-opt nasm-registers 'words) . font-lock-variable-name-face)
-    (,(regexp-opt nasm-instructions 'words) . font-lock-keyword-face)
     (,(regexp-opt nasm-prefix 'words) . font-lock-keyword-face)
     (,(regexp-opt nasm-directives 'words) . font-lock-builtin-face)
     (,(regexp-opt nasm-pp-directives 'words) . font-lock-preprocessor-face)
-    (,nasm-label-regexp . font-lock-function-name-face))
+    (,(concat "^" nasm-label-regexp "\\s-*:") . font-lock-function-name-face)
+    (,(regexp-opt nasm-instructions 'words) . font-lock-keyword-face)
+    (,(concat "^" nasm-label-regexp) . font-lock-function-name-face))
   "Keywords for `nasm-mode'.")
 
 (defconst nasm-mode-syntax-table
@@ -412,16 +413,17 @@
 (defmacro nasm--opt (keywords)
   "Prepare KEYWORDS for `looking-at'."
   `(eval-when-compile
-     (concat "\\s-*" (regexp-opt ,keywords 'words))))
+     (regexp-opt ,keywords 'words)))
 
 (defun nasm-indent-line ()
   "Indent current line as NASM assembly code."
   (interactive)
   (let ((orig (- (point-max) (point))))
-    (beginning-of-line)
+    (back-to-indentation)
     (if (or (looking-at (nasm--opt nasm-directives))
             (looking-at (nasm--opt nasm-pp-directives))
-            (looking-at "^\\s-*[[;]")
+            (looking-at "[[;]")
+            (looking-at (concat nasm-label-regexp "\\s-*:"))
             (and (looking-at nasm-label-regexp)
                  (not (looking-at (nasm--opt nasm-instructions)))
                  (not (looking-at (nasm--opt nasm-prefix)))))



reply via email to

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