[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt 2530003c71 020/323: Remove rmsbolt-options
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt 2530003c71 020/323: Remove rmsbolt-options |
Date: |
Thu, 9 Mar 2023 10:57:54 -0500 (EST) |
branch: externals/beardbolt
commit 2530003c7182994c4a48926a26c72716bd23720c
Author: Jay Kamat <jaygkamat@gmail.com>
Commit: Jay Kamat <jaygkamat@gmail.com>
Remove rmsbolt-options
---
rmsbolt.el | 101 ++++++++++++++++++++++++-------------------------------------
1 file changed, 40 insertions(+), 61 deletions(-)
diff --git a/rmsbolt.el b/rmsbolt.el
index d20b062fec..ad9d12050a 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -58,9 +58,9 @@
(defvar rmsbolt-filter-unused-labels t)
(defvar rmsbolt-filter-comment-only t)
(defvar rmsbolt-binary-asm-limit 5000)
-(defun rmsbolt-output-filename (options &optional asm)
+(defun rmsbolt-output-filename (src-buffer &optional asm)
(if (and (not asm)
- (rmsbolt-o-dissasemble options))
+ (buffer-local-value 'rmsbolt-dissasemble src-buffer))
(expand-file-name "rmsbolt.out" rmsbolt-temp-dir)
(expand-file-name "rmsbolt.s" rmsbolt-temp-dir)))
@@ -120,28 +120,8 @@
;;;; Classes
-(cl-defstruct (rmsbolt-options
- (:conc-name rmsbolt-o-))
- (compile-cmd
- ""
- :type 'string
- :documentation "The command used to compile this file")
- (lang
- nil
- :type 'symbol
- :documentation "The major mode language we are compiling in."
- )
- (dissasemble
- nil
- :type 'bool
- :documentation "Whether we should compile to binary and dissasemble that."))
-
(cl-defstruct (rmsbolt-lang
(:conc-name rmsbolt-l-))
- (options
- nil
- :type 'rmsbolt-options
- :documentation "The default options object to use.")
(mode
'fundamental-mode
:type 'symbol
@@ -166,23 +146,27 @@
nil
:type 'string
:documentation "Functions that are hidden when dissasembling.")
+ (compile-cmd
+ nil
+ :type 'string
+ :documentation "Default compilation command to use if none is provided.")
(compile-cmd-function
nil
:type 'function
:documentation "A function which takes in a compile command (could be the
default) and adds needed args to it."))
-(defun rmsbolt--c-compile-cmd (options)
+(defun rmsbolt--c-compile-cmd (src-buffer)
"Process a compile command for gcc/clang."
- (let* ((cmd (rmsbolt-o-compile-cmd options))
+ (let* ((cmd (buffer-local-value 'rmsbolt-command src-buffer))
(cmd (mapconcat 'identity
(list cmd
"-g"
- (if (rmsbolt-o-dissasemble options)
+ (if (buffer-local-value 'rmsbolt-dissasemble
src-buffer)
""
"-S")
(buffer-file-name)
- "-o" (rmsbolt-output-filename options)
+ "-o" (rmsbolt-output-filename src-buffer)
(when rmsbolt-intel-x86
"-masm=intel"))
" ")))
@@ -199,9 +183,7 @@
rmsbolt-languages
`((c-mode
. ,(make-rmsbolt-lang :mode 'c
- :options (make-rmsbolt-options
- :compile-cmd "gcc"
- :lang 'c-mode)
+ :compile-cmd "gcc"
:supports-asm t
:starter-file-name "rmsbolt.c"
:compile-cmd-function #'rmsbolt--c-compile-cmd
@@ -236,9 +218,7 @@ int main() {
))
(c++-mode
. ,(make-rmsbolt-lang :mode 'c++-mode
- :options (make-rmsbolt-options
- :compile-cmd "g++"
- :lang 'c++-mode)
+ :compile-cmd "g++"
:supports-asm t
:starter-file-name "rmsbolt.cpp"
:compile-cmd-function #'rmsbolt--c-compile-cmd
@@ -367,16 +347,17 @@ int main() {
(setq completed t))))
labels-used)))
-(defun rmsbolt--user-func-p (opts func)
+(defun rmsbolt--user-func-p (src-buffer func)
"Return t if FUNC is a user function."
- (let* ((lang (rmsbolt--get-lang (rmsbolt-o-lang opts)))
+ (let* ((lang (rmsbolt--get-lang
+ (buffer-local-value 'major-mode src-buffer)))
(regexp (rmsbolt-l-dissas-hidden-funcs lang)))
(if regexp
(not (string-match-p regexp func))
t)))
-(cl-defun rmsbolt--process-dissasembled-lines (opts asm-lines)
- "Process and filter dissasembled ASM-LINES from OPTS."
+(cl-defun rmsbolt--process-dissasembled-lines (src-buffer asm-lines)
+ "Process and filter dissasembled ASM-LINES from SRC-BUFFER."
(let* ((result nil)
(func nil)
(match nil))
@@ -388,11 +369,11 @@ int main() {
;; TODO process line numbers
(when (string-match rmsbolt-dissas-label line)
(setq func (match-string 2 line))
- (when (rmsbolt--user-func-p opts func)
+ (when (rmsbolt--user-func-p src-buffer func)
(push (concat func ":") result))
(go continue))
(unless (and func
- (rmsbolt--user-func-p opts func))
+ (rmsbolt--user-func-p src-buffer func))
(go continue))
(when (string-match rmsbolt-dissas-opcode line)
(push (concat "\t" (match-string 3 line)) result)
@@ -402,10 +383,10 @@ int main() {
(nreverse result)
"\n")))
-(cl-defun rmsbolt--process-asm-lines (opts asm-lines)
+(cl-defun rmsbolt--process-asm-lines (src-buffer asm-lines)
"Process and filter a set of asm lines."
- (if (rmsbolt-o-dissasemble opts)
- (rmsbolt--process-dissasembled-lines opts asm-lines)
+ (if (buffer-local-value 'rmsbolt-dissasemble src-buffer)
+ (rmsbolt--process-dissasembled-lines src-buffer asm-lines)
(let ((used-labels (rmsbolt--find-used-labels asm-lines))
(result nil)
(prev-label nil))
@@ -455,18 +436,18 @@ int main() {
(eq 'compilation-mode-line-fail
(get-text-property 0 'face (car mode-line-process)))))
(default-directory (buffer-local-value 'default-directory buffer))
- (opts (buffer-local-value 'rmsbolt-current-options buffer)))
+ (src-buffer (buffer-local-value 'rmsbolt-src-buffer buffer)))
(with-current-buffer (get-buffer-create rmsbolt-output-buffer)
(cond ((not compilation-fail)
- (if (not (file-exists-p (rmsbolt-output-filename opts t)))
+ (if (not (file-exists-p (rmsbolt-output-filename src-buffer t)))
(message "Error reading from output file.")
(delete-region (point-min) (point-max))
(insert
(rmsbolt--process-asm-lines
- opts
+ src-buffer
(with-temp-buffer
- (insert-file-contents (rmsbolt-output-filename opts t))
+ (insert-file-contents (rmsbolt-output-filename src-buffer
t))
(split-string (buffer-string) "\n" t))))
(asm-mode)
(display-buffer (current-buffer))))
@@ -479,31 +460,29 @@ int main() {
(cdr-safe (assoc (or language major-mode) rmsbolt-languages)))
(defun rmsbolt--parse-options ()
"Parse RMS options from file."
+ (hack-local-variables)
(let* ((lang (rmsbolt--get-lang))
- (options (copy-rmsbolt-options
- (rmsbolt-l-options lang)))
+ (src-buffer (current-buffer))
(cmd rmsbolt-command))
(when cmd
- (setf (rmsbolt-o-compile-cmd options) cmd))
- (setf (rmsbolt-o-dissasemble options)
- (or rmsbolt-dissasemble
- (not (rmsbolt-l-supports-asm lang))))
- (prin1 (rmsbolt-o-dissasemble options))
- options))
+ (setq-local rmsbolt-command cmd))
+ (when (not (rmsbolt-l-supports-asm lang))
+ (setq-local rmsbolt-dissasemble t))
+ src-buffer))
;;;;; UI Functions
-(defvar-local rmsbolt-current-options nil)
+(defvar-local rmsbolt-src-buffer nil)
(defun rmsbolt-compile ()
"Compile the current rmsbolt buffer."
(interactive)
(save-some-buffers nil (lambda () rmsbolt-mode))
- (hack-local-variables)
- (let* ((options (rmsbolt--parse-options))
+ (rmsbolt--parse-options)
+ (let* ((src-buffer (current-buffer))
(lang (rmsbolt--get-lang))
(func (rmsbolt-l-compile-cmd-function lang))
- (cmd (funcall func options)))
+ (cmd (funcall func src-buffer)))
- (when (rmsbolt-o-dissasemble options)
+ (when (buffer-local-value 'rmsbolt-dissasemble src-buffer)
(pcase
(rmsbolt-l-objdumper lang)
('objdump
@@ -511,12 +490,12 @@ int main() {
(mapconcat 'identity
(list cmd
"&&"
- "objdump" "-d" (rmsbolt-output-filename
options)
+ "objdump" "-d" (rmsbolt-output-filename
src-buffer)
"-C" "--insn-width=16" "-l"
"-M" (if rmsbolt-intel-x86
"intel"
"att")
- ">" (rmsbolt-output-filename options t))
+ ">" (rmsbolt-output-filename src-buffer t))
" ")))
(_
(error "Objdumper not recognized"))))
@@ -524,7 +503,7 @@ int main() {
(with-current-buffer (compilation-start cmd)
(add-hook 'compilation-finish-functions
#'rmsbolt--handle-finish-compile nil t)
- (setq-local rmsbolt-current-options options)))))
+ (setq-local rmsbolt-src-buffer src-buffer)))))
;;;; Keymap
(defvar rmsbolt-mode-map nil "Keymap for `rmsbolt-mode'.")
- [elpa] externals/beardbolt ff6f376d87 053/323: Update README.org, (continued)
- [elpa] externals/beardbolt ff6f376d87 053/323: Update README.org, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 3ca3f35cdb 050/323: Add very basic support for rust, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 65a1ac7b6e 054/323: Add support for demangling, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt bb64352f8d 034/323: Store and use ranges to view highlighted regions, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 1419a90465 040/323: Add C/C++ demo, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 39f1e05667 009/323: Add filter for commentOnly, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 4a35528d7d 021/323: Configure all variables with buffer-local values, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 3bfc7ed2e3 012/323: Allow custom functions to parse arguments, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 98cea6e8e0 023/323: Simplify creation of new starters with a macro, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 547a47e58f 022/323: Fix default commands, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 2530003c71 020/323: Remove rmsbolt-options,
ELPA Syncer <=
- [elpa] externals/beardbolt cf7d2787bc 027/323: Implement line number parsing, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 8fc36eacd8 044/323: Add option to force assembling, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt d37f8a0ebf 042/323: Remove reliance on hl-line-mode, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt a0527f16af 045/323: Add very basic support for common lisp, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt d7acfdd127 041/323: Fix rmsbolt temp directory generation being too late, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt f0d13c4ac2 036/323: Add a stronger blacklist for ocaml asm, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 22810d69a7 062/323: Add docs for python, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 503b51ecb8 066/323: Fix typo, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt ca92d533ad 061/323: Add basic support for python, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt fef52d3de3 057/323: Update readme, ELPA Syncer, 2023/03/09