Awesome
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