-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
GSoC 2025 ‐ LSP
| Student | Philip |
| Organization | JabRef e.V. |
| Primary repositories | JabRef/jabref & JabRef/lsp-vscode-extension |
| Project name | JabRef for Visual Studio Code (JabRef4VSCode) |
| Project mentors | @koppor, @InAnYan, @subhramit |
| Project page | Google Summer of Code 2025 Project Page |
| Status | Done |
JabRef is a popular open-source bibliography reference manager that helps researchers and academics organize and manage their references efficiently. The project contributed three new components for JabRef:
- A Language Server Protocol (LSP) server that provides different features for editing
.bib,.bibtex,.mdand.texfiles in editors, including VSCode. Which can run inside JabRef or as a standalone server. - A VSCode extension that integrates with the LSP server to provide a seamless experience for users working with bibliography files in VSCode. The VSCode extension connects to the running LSP server (or can start a standalone version if JabRef isn't running) and provides features such as integrity checks, hover information, jump to definition, select the key in JabRef (when running) or opening the CAYW endpoint.
- A Cite As You Write (CAYW) endpoint that can be used as an alternative to Better-BibTeX's CAYW feature for Zotero which can run alongside JabRef or as a part of JabSrv (JabRefs' HTTP-server, which offers an API for working with the bibliographies opened in JabRef).
- Provide hover information for citation keys in
.mdand.texfiles. demo - Provide jump to definition for citation keys in
.mdand.texfiles. demo - When running along the GUI you can jump to the entry in the GUI. demo
- Provide integrity checks for
.bib,.bibtexfiles. demo - Provide consistency checks for
.bib,.bibtexfiles. demo - Provide a CAYW endpoint that can be used as an alternative to Better-BibTeX's CAYW feature for Zotero. demo
- Automatically connect to the LSP server when JabRef's GUI is running.
- Automatically start and update the LSP server when JabRef's GUI is not running.
A .bib file is used to storea bibliography file consisting of different e.g. articles, those articles consist of different information such as title, author, year, journal, etc.
When some of this information is missing, wrong or when the article entries are not consistent, the ingerity and consistency check will raise errors or warnings depending on the severity of the error.
Integrity check raising severe errors
Integrity check raising warnings
LSP raising error when parsing went wrong
Sometimes it is useful to see more information about a citation key. For that the LSP can provide hover information and jump to the corresponding entry in the bibliography file. And if JabRef is running, it can also jump to the entry in the GUI and you can see also more data for that entry.
Hover over citation keys in LaTeX files to see the definition in the bibliography
ctrl+click to jump to the entry in the bibliography
open the attached pdf in the preview
Hover over citation keys in markdown files to see the definition in the bibliography
Jump to the entry in the GUI
When writing a paper, it is often useful to cite the articles that you have read. But knowing all the citation keys can be a bit tedious. The CAYW endpoint can be triggered to open up a popup in which you can search and select the citation keys from the bibliography file and insert the citation command directly into the document.
Use the CAYW popup to insert the citation command
While the current features are already useful, there are still many things that could be improved and added.
For the extension many other files could be supported other than .tex and .md files while those two are the most commonly used.
More unique features from JabRef GUI could be added:
- having a grouping view
- a preview of the entry
- reformatting the entry or whole bib file
- suggest quick fixes for errors
- completion of citation keys
On a technical perspective tests for many classes should be added to make sure everything works as expected.
Always keep in mind that the codebase is not just a few files and classes. It's a complex system that has to be maintained and extended. For that it is important to take the time to deeply think about how everything should/could be implemented and write maintainable clean code, not just for myself but also for others. Could be really frustrating to work on code contributed a long time ago which is not thought through completely and makes extending challenging.
Testing the implemented code (manually) is important and should be done as much as possible, but sometimes moving fast can lead to bugs or testing not being done that well. But this is also okay as long as you fix it as soon as you stumble upon it.
-
#14275 - Feat: Add the ability to open linked pdf files in bib files
-
#14260 - Feat: Add definition links for TeX Files
-
#14162 - Fix: update group and version for JabRef language server
-
#14096 - Fix: condition to check if
jumpToKeyis not blank -
#14032 - Feat: Add definition links for Markdown Files
-
#13968 - Chore: Rework json ADR for consistency check options
-
#13910 - Feat: Add more consistency check options
-
#13880 - Feat: Add 'unknown' field check to consistency check
-
#13862 - Fix: Refactor BibtexParser to use ranges of articles and work with them in the LSP instead of string matching
-
#13697 - Feat: Add Language Server to the UI and add the core integrity/consistency check functionality
-
#13612 - Feat: Initial implementation of an LSP for integrity checks
-
#70 - Feat: Add the ability to call the LSP for tex language files
-
#69 - Feat: Add keybinding for calling the CAYW endpoint
-
#68 - Feat: Add messages for the user and states to the ui
-
#63 - Feat: Add logic for connecting to the LSP server or downloading and starting it if it's not running
-
#61 - Feat: Add the ability to call the LSP for markdown files
-
#40 - Feat: Add more consistency check options
-
#31 - Feat: first initial release
-
#25 - Feat: enhance connection handling and configuration options
-
#11 - Chore: Port the js current version to typescript
-
#10 - Feat: Added settings support for enabling/disabling features
-
#71 - Chore: Add Dependabot auto merge
-
#30 - Fix: Adapt workflow to test a successful build
-
#29 - Fix: Adapt pipeline to test a successful build
-
#28 - Chore: Rename scripts and adapt pipeline for successful builds
-
#26 - Chore: Add build ci to test for a successful build
-
#13 - Chore: Add dependabot configuration
-
#12 - Chore: Add MIT License
-
#13554 - Feat: Add select entries CAYW feature and command endpoint
-
#13514 - Fix: Refactor
PushToApplicationsand split into logic and GUI -
#13478 - Fix: Errors in CAYW endpoint
-
#13466 - Fix: jbang run failing
-
#13459 - Fix: jbang jabsrvlauncher build failing
-
#13447 - Feat: Refine and add more options to the CAYW endpoint
-
#13185 - Feat: Implement a basic Zotero picker compatible CAYW endpoint
-
#13183 - Fix: Refactor
DatabaseSearcher
-
#13848 - Feat: Add integrity check to CLI
-
#13593 - Chore: add fallback and re-enable
defaultcomeslastfor openrewrite
-
#12783 - Chore: workflow added for detecting changelog modification
-
#12739 - Fix: changed preferences and keybind search
-
#12668 - Fix: search and groups in sidebar get disabled when no library is opened
| jabref | lsp-vscode-extension | |
|---|---|---|
| insertions | 6214 | 1886 |
| deletions | 1880 | 483 |
| files | 306 | 78 |
| commits | 31 | 28 |
| lines changed | 8094 | 2369 |
I sincerely thank @koppor, @InAnYan, @subhramit, @calixtus and @Siedlerchr and the whole team behind JabRef for their great support and guidance throughout the project. It was a pleasure working with them, and I'm thrilled to have been a part of JabRef's GSoC 2025 and looking forward to be part of JabRef after GSoC.
- Home
- General Information
- Development
- Please go to our devdocs at https://devdocs.jabref.org
- GSoC 2025 ideas list
- Completed "Google Summer of Code" (GSoC) projects
- GSoC 2025 ‐ Git Support for JabRef
- GSoC 2025 - LSP
- GSoC 2025 - Walkthrough and Welcome Tab
- GSoC 2024 ‐ Improved CSL Support (and more LibreOffice‐JabRef integration enhancements)
- GSoC 2024 - Lucene Search Backend Integration
- GSoC 2024 ‐ AI‐Powered Summarization and “Interaction” with Academic Papers
- GSoC 2022 — Implement a Three Way Merge UI for merging BibTeX entries
- GSoC 2021 - Improve pdf support in JabRef
- GSoC 2021 - Microsoft Word Integration
- GSoc 2019 - Bidirectional Integration — Paper Writing — LaTeX and JabRef 5.0
- GSoC Archive
- Release
- JabCon Archive