15 stable releases
1.3.7 | Jan 26, 2025 |
---|---|
1.3.5 | Aug 5, 2024 |
1.3.4 | Jan 16, 2024 |
1.3.1 | Apr 29, 2023 |
0.1.0 |
|
#39 in Text editors
86 downloads per month
135KB
3K
SLoC
Thank you to the Twemoji project for the usage of their emoji for the icon.
Installation
The server can be installed via cargo
(or from source).
cargo install beancount-language-server
Alternatively, it can be installed via Homebrew.
brew install beancount-language-server
Then, you should be able to run the language server with the following command:
beancount-language-server
Follow the instructions below to integrate the language server into your editor.
Alternative: Compile and install from source
First, clone this repo and compile it.
git clone git@github.com/polarmutex/beancount-language-server.git
cd beancount-language-server
cargo build
Requirements
You will need to install beancount
to get all diagnostics.
pip install -g beancount
Configuration
TODO
Features
Supports Beancount v2
Feature | Description |
---|---|
diagnostics | Provided via beancount |
formatting | Should generate edits silimar to bean-format |
completions | Show completions for Payees, Accounts, Date |
definitions | Planned for future release |
folding | Planned for future release |
hover | Planned for future release |
rename | Planned for future release |
Future
- updated vscode extension to use the rust version
Editor Support
Neovim
The settings for the language server are in the lspconfig repo
-
Install the beancount language server
cargo install beancount-language-server
However you install it, you need to remember how to access the binary
-
Create a lua lspconfig for the beancount LSP example in my dotfiles
- add the following code to your lspconfig
local lspconfig = require 'lspconfig' lspconfig.beancount.setup= { init_options = { journal_file = "<path to journal file>", }; };
-
Open a beancount file and verify LSP connected with the LSPInfo command
Troubleshooting
beancount file type not detected
If you notice beancount files not having the "beancount" type, you need a neovim v0.5 or master built after Feb 17, 2021
If not the following in a file named beancount.vim
in the ftdetect
folder
function! s:setf(filetype) abort
if &filetype !=# a:filetype
let &filetype = a:filetype
endif
endfunction
au BufNewFile,BufRead *.bean,*.beancount call s:setf('beancount')
VS Code
Plan to make a VS Code extesion in the future
Vim
Tested and Developed on Neovim v0.5 (master branch)
SETUP TODO
Emacs
TODO
Helix
- Install beancount-language-server with
cargo install beancount-language-server
. - Add the following snippet to your
languages.toml
file:[language-server.beancount-language-server] command = "beancount-language-server" args = ["--stdio"] config.journal_file = "<path to journal file>" [[language]] name = "beancount" language-servers = [{ name = "beancount-language-server" }]
- Verify beancount-language-server shows as available in the output of
hx --health
.
Contributing
Please do :)
Previous Versions
Typescript
not currently maintained, unless there is interest
Python
no longer maintained
Dependencies
~12–21MB
~289K SLoC