aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrawberryTea <look@strawberrytea.xyz>2024-01-06 04:30:30 -0600
committerWilfred Hughes <me@wilfred.me.uk>2024-06-13 08:23:51 -0700
commit4ba24cac9fb14d5fdc32582cd947572040e82b2c (patch)
tree3f54afcec09de00603ac875ada0d928a252f7fdf
parenta835b7ec59004a13f4a09ff127a785a92b957e8f (diff)
Fix scan-sexps error for C-defined variables
-rw-r--r--helpful.el5
-rw-r--r--test/helpful-unit-test.el6
2 files changed, 10 insertions, 1 deletions
diff --git a/helpful.el b/helpful.el
index 79c9bde..b9ee878 100644
--- a/helpful.el
+++ b/helpful.el
@@ -1259,7 +1259,10 @@ If the source code cannot be found, return the sexp used."
;; function.
(progn
(setq pos (line-beginning-position))
- (forward-list)
+ ;; HACK Use the elisp syntax table even though the file is a
+ ;; C file. This is a temporary workaround for issue #329.
+ (with-syntax-table emacs-lisp-mode-syntax-table
+ (forward-list))
(forward-char)
(narrow-to-region pos (point)))
;; Narrow to the top-level definition.
diff --git a/test/helpful-unit-test.el b/test/helpful-unit-test.el
index 0716b0d..26c5077 100644
--- a/test/helpful-unit-test.el
+++ b/test/helpful-unit-test.el
@@ -782,6 +782,12 @@ in."
(should
(s-starts-with-p "(defun " source))))
+(ert-deftest helpful--source-c-fn ()
+ (-let* (((buf pos _opened) (helpful--definition 'mode-line-format nil))
+ (source (helpful--source 'mode-line-format nil buf pos)))
+ (should
+ (s-starts-with-p "DEFVAR" (s-trim-left source)))))
+
(ert-deftest helpful--source-autoloaded ()
"We should include the autoload cookie."
(-let* (((buf pos _opened) (helpful--definition #'helpful-at-point t))