branch: externals/beardbolt
commit c86cc8f11ef6f90c59c5857bbf341ae5e874621d
Author: Jay Kamat <[email protected]>
Commit: Jay Kamat <[email protected]>
Fix highlights not working with compile_commands.json in some cases
- Now use compilation directory as base for paths for highlight
- Make paths proper directories so they can be used in default-directory
---
rmsbolt.el | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/rmsbolt.el b/rmsbolt.el
index 914899316c..328681852d 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -801,7 +801,7 @@ return t if successful."
(to-ret (rmsbolt--parse-compile-commands
compile-cmd-file (buffer-file-name src-buffer))))
(with-current-buffer src-buffer
- (setq-local rmsbolt-default-directory (cl-first to-ret))
+ (setq-local rmsbolt-default-directory (file-name-as-directory (cl-first
to-ret)))
(setq-local rmsbolt-command
;; Remove -c, -S, and -o <arg> if present,
;; as we will add them back
@@ -1074,8 +1074,12 @@ Argument SRC-BUFFER source buffer."
'("Aborting processing due to exceeding the binary limit.")))
(when (string-match rmsbolt-disass-line line)
;; Don't add linums from files which we aren't inspecting
- ;; If we get a non-absolute .file path, treat it like we are in the
src directory.
- (let ((default-directory (file-name-directory src-file-name)))
+ ;; If we get a non-absolute .file path, check to see if we
+ ;; have a default dir. If not, treat it like we are in the
+ ;; src directory.
+ (let ((default-directory (or
+ (buffer-local-value
'rmsbolt-default-directory src-buffer)
+ (file-name-directory src-file-name))))
(if (file-equal-p src-file-name
(match-string 1 line))
(setq source-linum (string-to-number (match-string 2 line)))
@@ -1131,8 +1135,12 @@ Argument SRC-BUFFER source buffer."
;; Process any line number hints
((string-match rmsbolt-source-tag line)
(if (or (not src-file-name) ;; Skip file match if we don't have a
current filename
- ;; If we get a non-absolute .file path, treat it like we
are in the src directory.
- (let ((default-directory (file-name-directory
src-file-name)))
+ ;; If we get a non-absolute .file path, check to see if we
+ ;; have a default dir. If not, treat it like we are in the
+ ;; src directory.
+ (let ((default-directory (or
+ (buffer-local-value
'rmsbolt-default-directory src-buffer)
+ (file-name-directory
src-file-name))))
(file-equal-p src-file-name
(gethash
(string-to-number (match-string 1 line))