[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt f911321a02 058/323: Add support for automatic
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt f911321a02 058/323: Add support for automatically hot recompiling |
Date: |
Thu, 9 Mar 2023 10:58:16 -0500 (EST) |
branch: externals/beardbolt
commit f911321a02c566dbd0ee30aa855544254dfee37b
Author: Jay Kamat <jaygkamat@gmail.com>
Commit: Jay Kamat <jaygkamat@gmail.com>
Add support for automatically hot recompiling
---
rmsbolt.el | 47 ++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 40 insertions(+), 7 deletions(-)
diff --git a/rmsbolt.el b/rmsbolt.el
index 4486e3ecf5..702d601af0 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -128,9 +128,15 @@ Outputs assembly file if ASM."
"List of overlays to use.")
(defvar rmsbolt-overlay-delay 0.125
"Time in seconds to delay before showing overlays.")
+(defvar rmsbolt-compile-delay 1
+ "Time in seconds to delay before recompiling if there is a change.")
+(defvar rmsbolt--automated-compile nil
+ "Whether this compile was automated or not.")
(defvar rmsbolt--idle-timer nil
"Idle timer for rmsbolt overlays.")
+(defvar rmsbolt--compile-idle-timer nil
+ "Idle timer for rmsbolt overlays.")
(defvar rmsbolt-dir (when load-file-name
(file-name-directory load-file-name))
@@ -654,7 +660,8 @@ Outputs assembly file if ASM."
(ht (make-hash-table))
(linum 1)
(start-match nil)
- (in-match nil))
+ (in-match nil)
+ (output-buffer (current-buffer)))
;; Add lines to hashtable
(dolist (line lines)
(let ((property
@@ -681,16 +688,25 @@ Outputs assembly file if ASM."
(with-current-buffer src-buffer
(setq-local rmsbolt-line-mapping ht))
- (delete-region (point-min) (point-max))
- (insert
- (mapconcat 'identity lines "\n"))
+ ;; Replace buffer contents non-destructively
+ (with-temp-buffer
+ (insert (mapconcat 'identity lines "\n"))
+ (let ((tmp-buffer (current-buffer)))
+ (with-current-buffer output-buffer
+ (replace-buffer-contents tmp-buffer))))
(asm-mode)
(rmsbolt-mode 1)
(setq-local rmsbolt-src-buffer src-buffer)
- (display-buffer (current-buffer)))))
- (t
+ (display-buffer (current-buffer))
+ ;; Attempt to replace overlays
+ (with-current-buffer src-buffer
+ (rmsbolt-move-overlays)))))
+ ((and t
+ (not rmsbolt--automated-compile))
;; Display compilation output
- (display-buffer buffer))))))
+ (display-buffer buffer)))
+ ;; Reset automated recompile
+ (setq rmsbolt--automated-compile nil))))
;;;;; Parsing Options
(defun rmsbolt--get-lang (&optional language)
@@ -925,6 +941,19 @@ Outputs assembly file if ASM."
;; If not in rmsbolt-mode, don't do anything
))
+(defun rmsbolt-hot-recompile ()
+ "Recompile source buffer if we need to."
+ (when-let ((should-hot-compile rmsbolt-mode)
+ (output-buffer (get-buffer rmsbolt-output-buffer))
+ (src-buffer (buffer-local-value 'rmsbolt-src-buffer
output-buffer))
+ (modified (buffer-modified-p src-buffer)))
+ (with-current-buffer src-buffer
+ ;; Write to disk
+ (save-buffer)
+ ;; Recompile
+ (setq rmsbolt--automated-compile t)
+ (rmsbolt-compile))))
+
;;;; Mode Definition:
;;;###autoload
@@ -940,6 +969,10 @@ This mode is enabled both in modes to be compiled and
output buffers."
(setq rmsbolt--idle-timer (run-with-idle-timer
rmsbolt-overlay-delay t
#'rmsbolt-move-overlays)))
+ (unless rmsbolt--compile-idle-timer
+ (setq rmsbolt--compile-idle-timer (run-with-idle-timer
+ rmsbolt-compile-delay t
+ #'rmsbolt-hot-recompile)))
(rmsbolt--gen-temp))
(provide 'rmsbolt)
- [elpa] externals/beardbolt 291f82a324 266/323: Continue rewriting, (continued)
- [elpa] externals/beardbolt 291f82a324 266/323: Continue rewriting, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 3195997ccd 275/323: * beardbolt.el (bb--synch-relation-overlays): Rework and bugfix., ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt a13f8fe7f4 287/323: Reset beardbolt-specific locals before hacking them in, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 85d24d69f1 286/323: Add bb-kill-symbol-re option, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 10fe7307c3 291/323: Get a better C++ starter example, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 5324775417 321/323: Add beardbolt-shuffle-rainbow option, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 90b5cad9c1 016/323: Finish initial implementation of dissasembly, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt de183bea12 010/323: Add support for c++ and c, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 627dd4c1c9 059/323: Allow for custom asm processing functions, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 978d8290a1 067/323: Add guide on adding new languages, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt f911321a02 058/323: Add support for automatically hot recompiling,
ELPA Syncer <=
- [elpa] externals/beardbolt 86742e7b76 055/323: Merge branch 'master' of gitlab.com:jgkamat/rmsbolt, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 01f7664eda 060/323: Fix tests, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 36b701d70e 072/323: Fix broken tests, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 8d992d1da7 103/323: Add links to README, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt a74d54e764 109/323: Fix tests, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 859722f7e0 084/323: Add back support for Emacs 25, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 2eca2d59dd 100/323: Merge branch 'patch-2' into 'master', ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt a85b457e81 108/323: Fix typo, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt fb0e8c85a3 110/323: Use https links to avoid mixed content warnings, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9129f1f13c 116/323: Add documentation and README for elisp, ELPA Syncer, 2023/03/09