aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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))