Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix imenu with Clojure code in string or comment #638

Merged
merged 1 commit into from
Dec 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

* [#581](https://github.com/clojure-emacs/clojure-mode/issues/581): Fix font locking not working for keywords starting with a number.
* [#377](https://github.com/clojure-emacs/clojure-mode/issues/377): Fix everything starting with the prefix 'def' being highlighted as a definition form. Now definition forms are enumerated explicitly in the font-locking code, like all other forms.
* [#638](https://github.com/clojure-emacs/clojure-mode/pull/638): Fix imenu with Clojure code in string or comment.

## 5.15.1 (2022-07-30)

Expand Down
4 changes: 3 additions & 1 deletion clojure-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,9 @@ Called by `imenu--generic-function'."
(let (found?
(deftype (match-string 2))
(start (point)))
(down-list)
;; ignore user-error from down-list when called from inside a string or comment
(ignore-errors
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess some comment here would be useful, otherwise it's really hard to tell why this error needs to be ignored. I'm also a bit worried this might suppress actual errors and complicate the debugging.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked a bit more into it why I didn't happen before and nobody noticed.
The change to down-list came only in May with this: https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=0b3b295776ce723885c9997ab26d57314db2a5df

I guess a better workaround would be to wrap it in
unless (ppss-comment-or-string-start (syntax-ppss)) instead of ignore-errors,
but ppss-comment-or-string-start is only available since Emacs 27 and clojure-mode
is marked to support Emacs 25+.

I updated the commit message with this info and added a short comment.
Happy to rephrase it or change something else.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If ppss-comment-or-string-start is not complex I guess we can just copy it and inline it.

(down-list))
(forward-sexp)
(while (not found?)
(ignore-errors
Expand Down