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

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

[elpa] externals/beardbolt 0a55783f33 029/323: Add skeleton for font-loc


From: ELPA Syncer
Subject: [elpa] externals/beardbolt 0a55783f33 029/323: Add skeleton for font-lock
Date: Thu, 9 Mar 2023 10:57:56 -0500 (EST)

branch: externals/beardbolt
commit 0a55783f335baab66e172811a2f126916654b020
Author: Jay Kamat <jaygkamat@gmail.com>
Commit: Jay Kamat <jaygkamat@gmail.com>

    Add skeleton for font-lock
---
 rmsbolt.el | 78 +++++++++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 49 insertions(+), 29 deletions(-)

diff --git a/rmsbolt.el b/rmsbolt.el
index 24a7d1f93c..60f2acc723 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -68,6 +68,12 @@
   :safe 'booleanp
   :group 'rmsbolt)
 
+;;;; Faces
+
+(defface rmsbolt-current-line-face
+  '((t (:weight bold)))
+  "Face to fontify the current line for showing matches."
+  :group 'fic-mode)
 
 ;;;; Variables:
 (defvar rmsbolt-temp-dir nil
@@ -148,7 +154,6 @@
                                 (group (1+ digit)) ",0,"
                                 (group (1+ digit)) "," (0+ any)))
 
-
 ;;;; Classes
 
 (cl-defstruct (rmsbolt-lang
@@ -524,6 +529,7 @@ int main() {
                  (insert
                   (mapconcat 'identity lines "\n"))
                  (asm-mode)
+                 (rmsbolt-mode 1)
                  (display-buffer (current-buffer)))))
             (t
              ;; Display compilation output
@@ -551,33 +557,36 @@ int main() {
   (interactive)
   (save-some-buffers nil (lambda () rmsbolt-mode))
   (rmsbolt--parse-options)
-  (let* ((src-buffer (current-buffer))
-         (lang (rmsbolt--get-lang))
-         (func (rmsbolt-l-compile-cmd-function lang))
-         (cmd (funcall func src-buffer)))
-
-    (when (buffer-local-value 'rmsbolt-dissasemble src-buffer)
-      (pcase
-          (rmsbolt-l-objdumper lang)
-        ('objdump
-         (setq cmd
-               (mapconcat 'identity
-                          (list cmd
-                                "&&"
-                                "objdump" "-d" (rmsbolt-output-filename 
src-buffer)
-                                "-C" "--insn-width=16" "-l"
-                                "-M" (if (buffer-local-value 
'rmsbolt-intel-x86 src-buffer)
-                                         "intel"
-                                       "att")
-                                ">" (rmsbolt-output-filename src-buffer t))
-                          " ")))
-        (_
-         (error "Objdumper not recognized"))))
-    (rmsbolt-with-display-buffer-no-window
-     (with-current-buffer (compilation-start cmd)
-       (add-hook 'compilation-finish-functions
-                 #'rmsbolt--handle-finish-compile nil t)
-       (setq-local rmsbolt-src-buffer src-buffer)))))
+  (if (eq major-mode 'asm-mode)
+      ;; We cannot compile asm-mode files
+      (message "Cannot compile this file. Are you sure you are not in the 
output buffer?")
+    (let* ((src-buffer (current-buffer))
+           (lang (rmsbolt--get-lang))
+           (func (rmsbolt-l-compile-cmd-function lang))
+           (cmd (funcall func src-buffer)))
+
+      (when (buffer-local-value 'rmsbolt-dissasemble src-buffer)
+        (pcase
+            (rmsbolt-l-objdumper lang)
+          ('objdump
+           (setq cmd
+                 (mapconcat 'identity
+                            (list cmd
+                                  "&&"
+                                  "objdump" "-d" (rmsbolt-output-filename 
src-buffer)
+                                  "-C" "--insn-width=16" "-l"
+                                  "-M" (if (buffer-local-value 
'rmsbolt-intel-x86 src-buffer)
+                                           "intel"
+                                         "att")
+                                  ">" (rmsbolt-output-filename src-buffer t))
+                            " ")))
+          (_
+           (error "Objdumper not recognized"))))
+      (rmsbolt-with-display-buffer-no-window
+       (with-current-buffer (compilation-start cmd)
+         (add-hook 'compilation-finish-functions
+                   #'rmsbolt--handle-finish-compile nil t)
+         (setq-local rmsbolt-src-buffer src-buffer))))))
 
 ;;;; Keymap
 (defvar rmsbolt-mode-map nil "Keymap for `rmsbolt-mode'.")
@@ -611,6 +620,11 @@ int main() {
 (rmsbolt-defstarter "c" 'c-mode)
 (rmsbolt-defstarter "c++" 'c++-mode)
 
+;;;; Font lock matcher
+(defun rmsbolt-search-for-keyword (limit)
+  ;; TODO implement me
+  )
+
 ;;;; Mode Definition:
 
 ;;;###autoload
@@ -618,6 +632,12 @@ int main() {
 (define-minor-mode rmsbolt-mode
   "RMSbolt"
   nil "RMSBolt" rmsbolt-mode-map
+  (if rmsbolt-mode
+      (font-lock-add-keywords
+       nil '((rmsbolt-search-for-keyword
+              (0 rmsbolt-current-line-face))))
+    )
+
   (unless (and rmsbolt-temp-dir
                (file-exists-p rmsbolt-temp-dir))
     (setq rmsbolt-temp-dir
@@ -626,7 +646,7 @@ int main() {
               (lambda ()
                 (when (and (boundp 'rmsbolt-temp-dir)
                            rmsbolt-temp-dir
-                           (file-directory-p rmsbolt-temp-dir) )
+                           (file-directory-p rmsbolt-temp-dir))
                   (delete-directory rmsbolt-temp-dir t))
                 (setq rmsbolt-temp-dir nil)))))
 



reply via email to

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