branch: elpa/nasm-mode commit b5efa926420094d881dfbf752373388ea9ac5221 Author: Christopher Wellons <well...@nullprogram.com> Commit: Christopher Wellons <well...@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)))))