11 unstable releases (5 breaking)
new 0.7.3 | Jul 18, 2024 |
---|---|
0.6.0 | Nov 26, 2023 |
0.3.2 | Mar 30, 2023 |
0.2.0 | Jul 27, 2020 |
#372 in Development tools
2,476 downloads per month
1.5MB
5K
SLoC
Language Server for GAS/GO Assembly
Goal
Provide hovering, autocompletion, signature help, go to definition, and view references for assembly files written in the GAS/NASM or GO assembly flavors. It supports assembly files for the x86, x86_64, and z80 instruction sets.
This tool can serve as reference when reading the assembly output of a program. This way you can query what each command exactly does and deliberate about whether the compiler is producing the desired output or whether you have to tweak your code for optimisation.
Installation
Using cargo
Install using the cargo package manager, either from crates.io
or from github:
cargo install asm-lsp
# or to get the latest version from github
cargo install --git https://github.com/bergercookie/asm-lsp
Set up as a language server
Add a section like the following in your settings.json
file:
"asm-lsp": {
"command": "asm-lsp",
"filetypes": [
"asm", "s", "S"
]
}
[OPTIONAL] Configure via .asm-lsp.toml
Add a .asm-lsp.toml
file like the following to your project's root directory
and/or ~/.config/asm-lsp/
(project configs will override global configs) to
selectively target specific assemblers and/or instruction sets.
version = "0.1"
[assemblers]
gas = true
go = false
z80 = false
[instruction_sets]
x86 = false
x86_64 = true
z80 = false
[OPTIONAL] Extend functionality via compile_commands.json
/compile_flags.txt
Add a compile_commands.json
or compile_flags.txt
file to your project's build
directory to enable inline diagnostic features, as
well as to specify additional include directories for use in hover features.
VSCode Support
The project has not published any VSCode extension package yet. However, there is
a development extension in the editors/code
directory with setup instructions.
Root directory must contain .git
The lsp searches for a .git
directory to locate the root of your project.
Please be sure to run git init
if your project is not already configured as a
git repository.
Demos / Features Documentation
Hovering / Documentation support
Autocomplete
Diagnostics
Goto Definition
View References
Signature Help
- Triggering signature help is dependent on your editor and LSP client.
- Using Neovim's built in LSP client, this can be done via the command
:lua vim.lsp.buf.signature_help()
. - Using coc, this issue comment
suggests the remap
inoremap <silent> ,s <C-r>=CocActionAsync('showSignatureHelp')<CR>
to trigger signature help in insert mode.
- Using Neovim's built in LSP client, this can be done via the command
Acknowledgements
Current rust package builds on top of the opcodes python package
Dependencies
~12–25MB
~407K SLoC