[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt f6b72fe0eb 248/323: First stab at rainbow ove
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt f6b72fe0eb 248/323: First stab at rainbow overlays |
Date: |
Thu, 9 Mar 2023 10:58:35 -0500 (EST) |
branch: externals/beardbolt
commit f6b72fe0eb589f6440f6015b5eb98a9da2ba4d02
Author: João Távora <joaotavora@gmail.com>
Commit: João Távora <joaotavora@gmail.com>
First stab at rainbow overlays
* rmsbolt.el (color): Require it.
(rmsbolt--rainbow-overlays): New variable.
(rmsbolt--rainbowize-cleanup, rmsbolt--rainbowize): New function.
(rmsbolt-compile): Call rmsbolt--rainbowize-cleanup.
---
rmsbolt.el | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/rmsbolt.el b/rmsbolt.el
index e5b6f6ba75..73cb1e3ca8 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -73,6 +73,7 @@
(require 'compile)
(require 'disass)
(require 'json)
+(require 'color)
(require 'rmsbolt-java)
(require 'rmsbolt-split)
@@ -227,6 +228,8 @@ may not be cleared to default as variables are usually."
(defvar rmsbolt-overlays nil
"List of overlays to use.")
+(defvar-local rmsbolt--rainbow-overlays nil
+ "List of rainbow overlays to use.")
(defvar rmsbolt-compile-delay 0.4
"Time in seconds to delay before recompiling if there is a change.")
(defvar rmsbolt--automated-compile nil
@@ -1343,6 +1346,47 @@ Argument ASM-LINES input lines."
(push line result)))
(nreverse result)))
+(defun rmsbolt--rainbowize (idx total src-buffer src-line asm-regions)
+ (let* ((background-hsl
+ (apply #'color-rgb-to-hsl (color-name-to-rgb (face-background
'default))))
+ (color (apply #'color-rgb-to-hex
+ (color-hsl-to-rgb (/ (* 1.0 idx) total)
+ (cl-second background-hsl)
+ (cl-third background-hsl))))
+ all-ovs
+ _src-ov)
+ (save-excursion
+ (cl-loop
+ for (beg . end) in (cl-sort asm-regions #'< :key #'car)
+ for asm-ov =
+ (progn
+ (goto-char (point-min)) ;; TODO: could optimize
+ (make-overlay (progn (forward-line (1- beg))
+ (line-beginning-position))
+ (progn (forward-line (- end beg))
+ (line-end-position))))
+ do
+ (overlay-put asm-ov 'priority 0)
+ (push asm-ov all-ovs)
+ (overlay-put asm-ov 'face `(:background ,color))))
+ (when asm-regions
+ (with-current-buffer src-buffer
+ (save-excursion
+ (goto-char (point-min))
+ (forward-line (1- src-line))
+ (let ((ov (make-overlay (line-beginning-position)
+ (1+ (line-end-position)))))
+ (push ov all-ovs)
+ (overlay-put ov 'face `(:background ,color))
+ (overlay-put ov 'priority 0)))
+ (setq-local rmsbolt--rainbow-overlays
+ (append all-ovs
+ rmsbolt--rainbow-overlays))))))
+
+(defun rmsbolt--rainbowize-cleanup ()
+ (mapc #'delete-overlay rmsbolt--rainbow-overlays)
+ (setq rmsbolt--rainbow-overlays nil))
+
;;;;; Handlers
(cl-defun rmsbolt--handle-finish-compile (buffer str &key override-buffer
stopped)
"Finish hook for compilations.
@@ -1418,6 +1462,15 @@ Argument STOPPED The compilation was stopped to start
another compilation."
(set-window-point window old-point)))
(asm-mode)
(rmsbolt-mode 1)
+ (let ((i 0))
+ (maphash (lambda (k v)
+ (rmsbolt--rainbowize
+ (prog1 i (cl-incf i))
+ (hash-table-count ht)
+ src-buffer
+ k
+ v))
+ ht))
(setq rmsbolt-src-buffer src-buffer)
(display-buffer (current-buffer))
(run-at-time 0 nil #'rmsbolt-update-overlays))))
@@ -1536,6 +1589,7 @@ and return it."
(default-directory (or rmsbolt-default-directory
rmsbolt--temp-dir)))
(run-hooks 'rmsbolt-after-parse-hook)
+ (rmsbolt--rainbowize-cleanup)
(when (buffer-local-value 'rmsbolt-disassemble src-buffer)
(pcase
(rmsbolt-l-objdumper lang)
@@ -1676,6 +1730,7 @@ and return it."
"Setup overlay with START and END in BUF."
(let ((o (make-overlay start end buf)))
(overlay-put o 'face 'rmsbolt-current-line-face)
+ (overlay-put o 'priority 1)
o))
(cl-defun rmsbolt--point-visible (point)
"Check if the current point is visible in a window in the current buffer."
- [elpa] externals/beardbolt 349ace7310 164/323: Merge branch 'master' of gitlab.com:jgkamat/rmsbolt, (continued)
- [elpa] externals/beardbolt 349ace7310 164/323: Merge branch 'master' of gitlab.com:jgkamat/rmsbolt, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 5aeda6f846 155/323: Add basic documentation for compile_commands.json, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 246377bbff 173/323: Add dummy panic handler to reduce size of zig diassembly, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 73dcaca98d 177/323: Remove unneeded variables, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 28ccabf318 190/323: Clean up overlays and simplify hook when asm buffer is closed, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 3a8964d537 204/323: Update Readme, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 7c81d55d3e 202/323: Format go block, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9b1a5abbdf 208/323: Strip -flto flag from compile_commands.json by default, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt d257e51fce 244/323: starters/zig: Automatically export functions, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt ebbdebc66f 239/323: Improve compilation buffer display UX, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt f6b72fe0eb 248/323: First stab at rainbow overlays,
ELPA Syncer <=
- [elpa] externals/beardbolt 3cace942b8 251/323: Fix buffer selection problems, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 041234b499 241/323: Improve auto-compilation, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 2421b29094 255/323: Remove .ert-runner, .gitlab-ci.yml and Cask, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 49e2500be1 259/323: Use shorthands so I can just type bb- instead of beardbolt-, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 58b07a215c 268/323: Simplify some code, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9f6d1cf10c 269/323: Remove some rmsbolt remnants, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 5deed3972e 276/323: * beardbolt.el (bb--reachable-p, bb--process-asm): Use obarrays., ELPA Syncer, 2023/03/09
- [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