Skip to content

Commit 74e82c3

Browse files
authored
Make lsp-headerline--check-breadcrumb public so that it can be added to after-*-jump-hooks by external code (#4803)
* make lsp-headerline--check-breadcrumb public * update docs * update changelog
1 parent 3a96df0 commit 74e82c3

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

CHANGELOG.org

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
* Add support for ~source.removeUnusedImports~ for lsp-javascript
4141
* Add Python(ty) support
4242
* Add support for [[https://github.com/tombi-toml/tombi][Tombi language server]] (TOML language).
43+
* Make lsp-headerline--check-breadcrumb public
4344

4445
** 9.0.0
4546
* Add language server config for QML (Qt Modeling Language) using qmlls.

docs/page/faq.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,18 @@ You can use `lsp-clients-clangd-args` to configure your clangd. Add the followin
8585
For more flags, see clangd --help.
8686

8787
(Thanks to [Martingale on Emacs StackExchange](https://emacs.stackexchange.com/questions/58015/how-to-stop-lsp-mode-including-headers-automatically-for-c-c-code) for this answer!)
88+
89+
---
90+
### :grey_question: I have lsp-headerline-breadcrumb-mode enabled but the breadcrumb isn't always updating, for example when previewing results in consult-xref.
91+
92+
The function that updates the breadcrumb is `lsp-headerline-check-breadcrumb`. By default, this is added to `xref-after-jump-hook`, so that the breadcrumb will update immediately after jumping to a new location. Some packages, such as consult during previews, do jumps without calling `xref-after-jump-hook`, so the breadcrumb never updates.
93+
94+
The solution is to add `lsp-headerline-check-breadcrumb` to the appropriate hook. For consult, add the following to your user configuration:
95+
96+
```elisp
97+
(add-hook 'lsp-headerline-breadcrumb-mode-hook
98+
(lambda ()
99+
(if lsp-headerline-breadcrumb-mode
100+
(add-hook 'consult-after-jump-hook #'lsp-headerline-check-breadcrumb nil t)
101+
(remove-hook 'consult-after-jump-hook #'lsp-headerline-check-breadcrumb t))))
102+
```

lsp-headerline.el

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ PATH is the current folder to be checked."
407407
lsp-headerline-breadcrumb-segments
408408
"")))
409409

410-
(defun lsp-headerline--check-breadcrumb (&rest _)
410+
(defun lsp-headerline-check-breadcrumb (&rest _)
411411
"Request for document symbols to build the breadcrumb."
412412
(set-window-parameter (selected-window) 'lsp-headerline--string (lsp-headerline--build-string))
413413
(force-mode-line-update))
@@ -440,17 +440,17 @@ PATH is the current folder to be checked."
440440
(setq header-line-format (list header-line-format)))
441441
(add-to-list 'header-line-format '(t (:eval (window-parameter nil 'lsp-headerline--string) )))
442442

443-
(add-hook 'xref-after-jump-hook #'lsp-headerline--check-breadcrumb nil t)
443+
(add-hook 'xref-after-jump-hook #'lsp-headerline-check-breadcrumb nil t)
444444

445-
(add-hook 'lsp-on-idle-hook #'lsp-headerline--check-breadcrumb nil t)
445+
(add-hook 'lsp-on-idle-hook #'lsp-headerline-check-breadcrumb nil t)
446446
(add-hook 'lsp-configure-hook #'lsp-headerline--enable-breadcrumb nil t)
447447
(add-hook 'lsp-unconfigure-hook #'lsp-headerline--disable-breadcrumb nil t))
448448
(t
449-
(remove-hook 'lsp-on-idle-hook #'lsp-headerline--check-breadcrumb t)
449+
(remove-hook 'lsp-on-idle-hook #'lsp-headerline-check-breadcrumb t)
450450
(remove-hook 'lsp-configure-hook #'lsp-headerline--enable-breadcrumb t)
451451
(remove-hook 'lsp-unconfigure-hook #'lsp-headerline--disable-breadcrumb t)
452452

453-
(remove-hook 'xref-after-jump-hook #'lsp-headerline--check-breadcrumb t)
453+
(remove-hook 'xref-after-jump-hook #'lsp-headerline-check-breadcrumb t)
454454

455455
(setq lsp-headerline--path-up-to-project-segments nil)
456456
(setq header-line-format (remove '(t (:eval (window-parameter nil 'lsp-headerline--string) )) header-line-format)))))

0 commit comments

Comments
 (0)