lsp: show function signature, use conform.nvim for formatting code.

This commit is contained in:
xinyangli 2024-08-24 21:52:45 +08:00
parent 8199081348
commit aca9dd3078
Signed by: xin
SSH key fingerprint: SHA256:qZ/tzd8lYRtUFSrfBDBMcUqV4GHKxqeqRA3huItgvbk
4 changed files with 80 additions and 10 deletions

37
config/lsp/conform.nix Normal file
View 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
];
}

View file

@ -1,5 +1,6 @@
{
imports = [
./conform.nix
./lsp.nix
./lsp-format.nix
./lspkind.nix

View file

@ -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
];
}

View file

@ -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" ];
}
];