astoff / digestif

A language server for TeX and friends
Other
251 stars 6 forks source link

No completion for bibliographical entries #55

Open manuel-uberti opened 1 year ago

manuel-uberti commented 1 year ago

Hi,

I updated Digestif yesterday by removing the .digestif directory and re-running digestif from the command line, but I cannot complete bibliographical entries any more.

This is a small recipe to reproduce the problem:

\begin{document}

\end{document}

%%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End:

- emacs -Q
- <kbd>M-x eglot RET</kbd>
- after `\begin{document}`, try inserting `\cite{te` and press <kbd>TAB</kbd> (or <kbd>M-x completion-at-point</kbd>)

This is the content of the Eglot events buffer:

[internal] Sat Dec 31 14:48:35 2022: (:message "Running language server: /home/manuel/.bin/digestif") [client-request] (id:1) Sat Dec 31 14:48:35 2022: (:jsonrpc "2.0" :id 1 :method "initialize" :params (:processId 5997 :rootPath "/tmp/test-completion/" :rootUri "file:///tmp/test-completion" :initializationOptions #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ()) :capabilities (:workspace (:applyEdit t :executeCommand (:dynamicRegistration :json-false) :workspaceEdit (:documentChanges t) :didChangeWatchedFiles (:dynamicRegistration t) :symbol (:dynamicRegistration :json-false) :configuration t :workspaceFolders t) :textDocument (:synchronization (:dynamicRegistration :json-false :willSave t :willSaveWaitUntil t :didSave t) :completion (:dynamicRegistration :json-false :completionItem (:snippetSupport :json-false :deprecatedSupport t :resolveSupport (:properties ["documentation" "details" "additionalTextEdits"]) :tagSupport (:valueSet [1])) :contextSupport t) :hover (:dynamicRegistration :json-false :contentFormat ["plaintext"]) :signatureHelp (:dynamicRegistration :json-false :signatureInformation (:parameterInformation (:labelOffsetSupport t) :activeParameterSupport t)) :references (:dynamicRegistration :json-false) :definition (:dynamicRegistration :json-false :linkSupport t) :declaration (:dynamicRegistration :json-false :linkSupport t) :implementation (:dynamicRegistration :json-false :linkSupport t) :typeDefinition (:dynamicRegistration :json-false :linkSupport t) :documentSymbol (:dynamicRegistration :json-false :hierarchicalDocumentSymbolSupport t :symbolKind (:valueSet [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26])) :documentHighlight (:dynamicRegistration :json-false) :codeAction (:dynamicRegistration :json-false :codeActionLiteralSupport (:codeActionKind (:valueSet ["quickfix" "refactor" "refactor.extract" "refactor.inline" "refactor.rewrite" "source" "source.organizeImports"])) :isPreferredSupport t) :formatting (:dynamicRegistration :json-false) :rangeFormatting (:dynamicRegistration :json-false) :rename (:dynamicRegistration :json-false) :publishDiagnostics (:relatedInformation :json-false :codeDescriptionSupport :json-false :tagSupport (:valueSet [1 2]))) :experimental #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ())) :workspaceFolders [(:uri "file:///tmp/test-completion" :name "/tmp/test-completion/")])) [server-reply] (id:1) Sat Dec 31 14:48:36 2022: (:id 1 :jsonrpc "2.0" :result (:capabilities (:completionProvider (:triggerCharacters ["\" "{" "[" "," "="]) :workspaceSymbolProvider t :documentSymbolProvider t :textDocumentSync (:change 2 :openClose t) :referencesProvider t :hoverProvider t :definitionProvider t :signatureHelpProvider (:triggerCharacters ["{" "[" "="])) :serverInfo (:name "Digestif" :version "0.5.1"))) [client-notification] Sat Dec 31 14:48:36 2022: (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ())) [client-notification] Sat Dec 31 14:48:36 2022: (:jsonrpc "2.0" :method "textDocument/didOpen" :params (:textDocument (:uri "file:///tmp/test-completion/test.tex" :version 0 :languageId "latex" :text "\documentclass[12pt, oneside]{book}\n\n\begin{document}\n\n\cite{te\n\n\end{document}\n\n%%% Local Variables:\n%%% mode: latex\n%%% TeX-master: t\n%%% End:\n"))) [client-notification] Sat Dec 31 14:48:36 2022: (:jsonrpc "2.0" :method "textDocument/didOpen" :params (:textDocument (:uri "file:///tmp/test-completion/biblio.bib" :version 0 :languageId "latex" :text "@Book{test,\n author = {testy, test},\n title = {This is a test},\n date = 2022,\n publisher = {Test Press}\n}"))) [client-notification] Sat Dec 31 14:48:36 2022: (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params (:settings #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125 data ()))) [client-request] (id:2) Sat Dec 31 14:48:44 2022: (:jsonrpc "2.0" :id 2 :method "textDocument/completion" :params (:textDocument (:uri "file:///tmp/test-completion/test.tex") :position (:line 4 :character 8) :context (:triggerKind 1))) [server-reply] (id:2) Sat Dec 31 14:48:44 2022: (:id 2 :jsonrpc "2.0" :result [])


I am using GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0) of 2022-12-31
manuel-uberti commented 1 year ago

For the sake of completeness, I have a more complex .tex file with this at the top:

\usepackage[backend=biber, style=ext-authoryear, giveninits=true]{biblatex}
\addbibresource{biblio.bib}

By working in this file is where I experienced the problem.

manuel-uberti commented 1 year ago

BTW, not sure if this is related, but M-. on \cite or \textcite results in: xref--not-found-error: No definitions found for: LSP identifier at point.

(Happy new year!)

manuel-uberti commented 1 year ago

Another debug update: hard resetting to commit f1b4202 makes completion and M-. work again.

astoff commented 1 year ago

In your original example, I need to add \bibliography{biblio} somewhere to the file, but otherwise it works as expected.

There is a simple integration test for citations on the CI, so if there was a regression it must be a more subtle issue.

manuel-uberti commented 1 year ago

In your original example, I need to add \bibliography{biblio} somewhere to the file, but otherwise it works as expected.

It does not work for me though with the following file:

\documentclass[12pt, oneside]{book}

\bibliography{biblio}

\begin{document}

\textcite{te|}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

Where | is the cursor where I try to complete. Probably something related to recent Emacs changes on master?

astoff commented 1 year ago

Okay, the last example doesn't work because \textcite is defined in biblatex and the file doesn't have the corresponding \usepackage call (so \textci TAB also doesn't complete the command name). But when I add \usepackage{biblatex} all is fine again.

manuel-uberti commented 1 year ago

I added \usepackage{biblatex} to the example, but still nothing for me here. Eglot event buffer says:

[client-request] (id:2) Tue Jan  3 13:46:02 2023:
(:jsonrpc "2.0" :id 2 :method "textDocument/completion" :params
      (:textDocument
       (:uri "file:///tmp/test-complete/test.tex")
       :position
       (:line 7 :character 12)
       :context
       (:triggerKind 1)))
[server-reply] (id:2) Tue Jan  3 13:46:03 2023:
(:result
 []
 :jsonrpc "2.0" :id 2)

This is so weird.

Also, sorry to waste your time on something that seems to be happening only here. :)