lsp: show function signature, use conform.nvim for formatting code.
This commit is contained in:
parent
8199081348
commit
aca9dd3078
4 changed files with 80 additions and 10 deletions
37
config/lsp/conform.nix
Normal file
37
config/lsp/conform.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{ helpers, pkgs, ... }: {
|
||||
plugins.conform-nvim = {
|
||||
enable = true;
|
||||
formatAfterSave = ''
|
||||
{
|
||||
format_after_save = {
|
||||
lsp_format = "fallback",
|
||||
},
|
||||
}
|
||||
'';
|
||||
formattersByFt = {
|
||||
python = [ "black" ];
|
||||
c = [ "clang-format" ];
|
||||
cpp = [ "clang-format" ];
|
||||
cmake = [ "cmake_format" ];
|
||||
nix = [ "nixfmt" ];
|
||||
# Standalone scalafmt is too slow, so we use it as a fallback
|
||||
scala = helpers.mkRaw ''
|
||||
{ scalafmt, lsp_format = "prefer" }
|
||||
'';
|
||||
toml = [ "taplo" ];
|
||||
yaml = [ "yq" ];
|
||||
json = [ "jq" ];
|
||||
};
|
||||
};
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
black
|
||||
clang-tools
|
||||
cmake-format
|
||||
jq
|
||||
nixfmt-rfc-style
|
||||
scalafmt
|
||||
taplo
|
||||
yq
|
||||
];
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./conform.nix
|
||||
./lsp.nix
|
||||
./lsp-format.nix
|
||||
./lspkind.nix
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ helpers, ... }:
|
||||
{ pkgs, helpers, ... }:
|
||||
|
||||
{
|
||||
plugins.lsp = {
|
||||
|
@ -69,6 +69,14 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
onAttach = ''
|
||||
require("lsp_signature").on_attach({
|
||||
bind = true,
|
||||
handler_opts = {
|
||||
border = "rounded"
|
||||
};
|
||||
}, bufnr)
|
||||
'';
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
|
@ -85,4 +93,20 @@
|
|||
};
|
||||
}
|
||||
];
|
||||
|
||||
extraConfigLua = ''
|
||||
require("lspconfig").asm_lsp.setup {
|
||||
filetypes = { "asm", "s", "S" }
|
||||
}
|
||||
require("lspconfig").verible.setup { }
|
||||
'';
|
||||
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
lsp_signature-nvim
|
||||
];
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
asm-lsp
|
||||
verible
|
||||
];
|
||||
}
|
||||
|
|
|
@ -8,12 +8,28 @@
|
|||
|
||||
extraPackages = [
|
||||
pkgs.metals
|
||||
pkgs.scalafmt
|
||||
];
|
||||
|
||||
autoGroups.nvim_metals_group = {
|
||||
clear = true;
|
||||
};
|
||||
|
||||
extraConfigLua = ''
|
||||
metals_config = require("metals").bare_config()
|
||||
metals_config.init_options.statusBarProvider = "off"
|
||||
metals_config.settings = {
|
||||
showInferredType = true,
|
||||
showImplicitArguments = false,
|
||||
showImplicitConversionsAndClasses = false,
|
||||
metalsBinaryPath = "${pkgs.lib.getExe pkgs.metals}",
|
||||
excludedPackages = { "akka.actor.typed.javadsl", "com.github.swagger.akka.javadsl" },
|
||||
useGlobalExecutable = true,
|
||||
verboseCompilation = true
|
||||
}
|
||||
metals_config.capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
'';
|
||||
|
||||
autoCmd = [
|
||||
{
|
||||
event = "FileType";
|
||||
|
@ -21,18 +37,10 @@
|
|||
desc = "Initialize nvim-metals";
|
||||
callback = helpers.mkRaw ''
|
||||
function()
|
||||
metals_config = require("metals").bare_config()
|
||||
metals_config.init_options.statusBarProvider = "off"
|
||||
metals_config.settings = {
|
||||
showInferredType = true,
|
||||
showImplicitArguments = false,
|
||||
showImplicitConversionsAndClasses = false,
|
||||
metalsBinaryPath = "${pkgs.lib.getExe pkgs.metals}",
|
||||
useGlobalExecutable = true
|
||||
}
|
||||
require("metals").initialize_or_attach(metals_config)
|
||||
end
|
||||
'';
|
||||
pattern = [ "scala" "sbt" ];
|
||||
}
|
||||
];
|
||||
|
||||
|
|
Loading…
Reference in a new issue