From 4ba24cac9fb14d5fdc32582cd947572040e82b2c Mon Sep 17 00:00:00 2001 From: StrawberryTea Date: Sat, 6 Jan 2024 04:30:30 -0600 Subject: [PATCH] Fix scan-sexps error for C-defined variables --- helpful.el | 5 ++++- test/helpful-unit-test.el | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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))