Display assembly for the current buffer or visual selection from https://godbolt.org
Requires neovim 0.6 and curl
You can call the setup function in your config to override these default values:
require("godbolt").setup({
c = { compiler = "cg112", options = {} },
cpp = { compiler = "g112", options = {} },
rust = { compiler = "r1560", options = {} },
-- any_additional_filetype = { compiler = ..., options = ... },
quickfix = {
enable = false, -- whether to populate the quickfix list in case of errors
auto_open = false -- whether to open the quickfix list if the compiler outputs errors
}
})If your neovim config is in lua then place this snippet in your config directly, otherwise place it inside a lua block like so:
lua << EOF
require("godbolt").setup({
...
})
EOFoptions is a table corresponding to the options field in the schema. For example:
- If you want to add compiler flags then you need to set it to
{ userArguments = "-Wall -O2" } - If you want to use boost then you need to set it to
{ userArguments = "-I /opt/compiler-explorer/libs/boost_1_77_0", libraries = { id = "boost", version = "1.77.0" } }and so on.-I /opt/compiler-explorer/libs/boost_1_77_0was for including boost, you can get the path of the library bycurling or visitinghttps://godbolt.org/api/libraries/c++
You can get the list of compiler ids by visiting or curling https://godbolt.org/api/compilers/<language> (or using the fuzzy finders mentioned) and the list of libraries by curling or visiting https://godbolt.org/api/libraries/<language>. For more info, see https://github.com/compiler-explorer/compiler-explorer/blob/main/docs/API.md
(Note: use c++, not cpp for C++)
Setting b:godbolt_exec to true will execute the code in addition to displaying assembly and display the output/error in the message area.
- To use the default/setup compiler for the entire buffer:
:Godbolt and type in compiler flags in the prompt if needed
- To use the default/setup compiler for a visual selection: Select the function(s) you want and
:'<,'>Godbolt
- To use a custom compiler for the entire buffer:
:GodboltCompiler <compiler>.
- Similarly, to use a custom compiler for a visual selection: Select the function you want and
:'<,'>GodboltCompiler <compiler>.
- Adding a bang (
!) to either command (:Godbolt!,GodboltCompiler!) will reuse the last assembly window for the current source buffer.
If in :GodboltCompiler <compiler> or :'<,'>GodboltCompiler <compiler>, <compiler> is telescope, fzf, skim or fzy, you can choose the compiler using telescope.nvim, fzf, skim or fzy + nvim-fzy respectively.
Set quickfix.enable = true as described above to populate the quickfix in case of errors.
If quickfix.auto_open is true, a quickfix list will automatically open if the compiler outputs errors. Otherwise you can manually :copen
Screencast:
- Update default compilers using Github Actions.
