1
Fork 0

Set up conform.nvim

This commit is contained in:
Matei Adriel 2023-12-04 06:25:00 +01:00
parent 445c5965c6
commit e6f397f4be
No known key found for this signature in database
11 changed files with 68 additions and 77 deletions

View file

@ -3,5 +3,6 @@ args: {
purescript = import ./purescript.nix args; purescript = import ./purescript.nix args;
rwtw = import ./rwtw.nix args; rwtw = import ./rwtw.nix args;
typst = import ./typst.nix args; typst = import ./typst.nix args;
lua = import ./lua.nix args;
} }

8
devshells/lua.nix Normal file
View file

@ -0,0 +1,8 @@
{ pkgs, ... }:
pkgs.mkShell {
pacakges = with pkgs; [
stylua
lua-language-server
lua
];
}

View file

@ -1,5 +1,5 @@
# shell containing the tools i most commonly use for purescript work! # shell containing the tools i most commonly use for purescript work!
{ pkgs, ... }: { pkgs, ... }:
pkgs.mkShell { pkgs.mkShell {
nativebuildinputs = with pkgs; [ purescript spago typescript nodejs ]; packages = with pkgs; [ purescript spago typescript nodejs ];
} }

View file

@ -9,12 +9,12 @@
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
"conform": { "branch": "master", "commit": "5bf1405fd234d469243ea6f394e0aeec9ea53bd8" },
"crates.nvim": { "branch": "main", "commit": "d5caf28aba49e81ac4099426231f3cf3c151013a" }, "crates.nvim": { "branch": "main", "commit": "d5caf28aba49e81ac4099426231f3cf3c151013a" },
"dhall-vim": { "branch": "master", "commit": "68500ef46ff3706f46c99db3be7a0c8abcf6a3ae" }, "dhall-vim": { "branch": "master", "commit": "68500ef46ff3706f46c99db3be7a0c8abcf6a3ae" },
"dressing.nvim": { "branch": "master", "commit": "6bde51adabba06f7fd4a469885a85f36d78a5f52" }, "dressing.nvim": { "branch": "master", "commit": "6bde51adabba06f7fd4a469885a85f36d78a5f52" },
"fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" }, "fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" },
"flash": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" }, "flash": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" },
"formatter.nvim": { "branch": "master", "commit": "44c89f09dcc220dc2a9b056e93c3a87c86e79804" },
"github-actions-yaml.vim": { "branch": "master", "commit": "f2f16243447cea174daa6b4a9ffd3ff9213814ef" }, "github-actions-yaml.vim": { "branch": "master", "commit": "f2f16243447cea174daa6b4a9ffd3ff9213814ef" },
"gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, "gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" },
"gitsigns.nvim": { "branch": "main", "commit": "af0f583cd35286dd6f0e3ed52622728703237e50" }, "gitsigns.nvim": { "branch": "main", "commit": "af0f583cd35286dd6f0e3ed52622728703237e50" },

View file

@ -6,7 +6,10 @@ local M = {}
M.unicode = { M.unicode = {
-- {{{ Logic -- {{{ Logic
{ "frl", "" }, -- [f]o[r]al[l] { "frl", "" }, -- [f]o[r]al[l]
{ "exs", "" }, -- [e][x]ist[s]
{ "exs", "" }, -- [e][x]ist[s]
{ "land", "" }, -- [l]ogical [and] { "land", "" }, -- [l]ogical [and]
{ "Land", "" }, -- arbitrary [l]ogical [and] { "Land", "" }, -- arbitrary [l]ogical [and]
{ "lor", "" }, -- [l]ogical [or] { "lor", "" }, -- [l]ogical [or]

View file

@ -1,42 +0,0 @@
local env = require("my.helpers.env")
local K = require("my.keymaps")
local M = {
"mhartington/formatter.nvim",
event = "BufReadPre",
cond = env.vscode.not_active(),
}
function M.config()
local any = require("formatter.filetypes.any")
local formatters = {
markdown = {
require("formatter.filetypes.markdown").prettier,
},
lua = {
require("formatter.filetypes.lua").stylua,
},
["*"] = {
any.remove_trailing_whitespace,
},
}
require("formatter").setup({ filetype = formatters })
local format = function()
if formatters[vim.bo.filetype] ~= nil then
vim.cmd([[Format]])
elseif next(vim.lsp.get_active_clients({ bufnr = 0 })) == nil then
vim.lsp.buf.format()
end
end
K.nmap("<leader>F", format, "[F]ormat file")
vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("Formatting", { clear = false }),
callback = format,
})
end
return M

View file

@ -42,14 +42,14 @@ function M.on_attach(client, bufnr)
vim.lsp.buf.format({ async = false, bufnr = bufnr }) vim.lsp.buf.format({ async = false, bufnr = bufnr })
end end
if client.supports_method("textDocument/formatting") then -- if client.supports_method("textDocument/formatting") then
nmap("<leader>F", format, "[F]ormat") -- nmap("<leader>F", format, "[F]ormat")
vim.api.nvim_create_autocmd("BufWritePre", { -- vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("LspFormatting", { clear = false }), -- group = vim.api.nvim_create_augroup("LspFormatting", { clear = false }),
buffer = bufnr, -- buffer = bufnr,
callback = format, -- callback = format,
}) -- })
end -- end
-- }}} -- }}}
-- {{{ Go to declaration / references / implementation -- {{{ Go to declaration / references / implementation
nmap("gd", vim.lsp.buf.definition, "[G]o to [d]efinition") nmap("gd", vim.lsp.buf.definition, "[G]o to [d]efinition")
@ -129,6 +129,10 @@ local servers = {
settings = { settings = {
---@diagnostic disable-next-line: missing-fields ---@diagnostic disable-next-line: missing-fields
Lua = { Lua = {
---@diagnostic disable-next-line: missing-fields
format = {
enable = true
},
-- Do not send telemetry data containing a randomized but unique identifier -- Do not send telemetry data containing a randomized but unique identifier
telemetry = { telemetry = {
enable = false, enable = false,
@ -211,9 +215,9 @@ function lspconfig.config()
diagnostics_icons() diagnostics_icons()
-- -- {{{ Change on-hover borders -- -- {{{ Change on-hover borders
vim.lsp.handlers["textDocument/hover"] = vim.lsp.handlers["textDocument/hover"] =
vim.lsp.with(vim.lsp.handlers.hover, { border = "single" }) vim.lsp.with(vim.lsp.handlers.hover, { border = "single" })
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.handlers["textDocument/signatureHelp"] =
vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" }) vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" })
-- -- }}} -- -- }}}
local capabilities = M.capabilities() local capabilities = M.capabilities()
@ -226,7 +230,7 @@ function lspconfig.config()
require("lspconfig")[lsp].setup({ require("lspconfig")[lsp].setup({
on_attach = details.on_attach, on_attach = details.on_attach,
settings = details.settings, -- Specific per-language settings settings = details.settings, -- Specific per-language settings
flags = { flags = {
debounce_text_changes = 150, -- This will be the default in neovim 0.7+ debounce_text_changes = 150, -- This will be the default in neovim 0.7+
}, },

View file

@ -13,21 +13,7 @@ function M.config()
local null_ls = require("null-ls") local null_ls = require("null-ls")
local sources = { local sources = {
-- {{{ Typescript formatting
-- null_ls.builtins.formatting.prettierd, -- format ts files
null_ls.builtins.formatting.prettier, -- format ts files
-- }}}
-- {{{ Lua formatting
-- null_ls.builtins.formatting, -- format lua code
null_ls.builtins.formatting.stylua, -- format lua code
-- }}}
-- {{{ Python -- {{{ Python
-- Formatting:
-- null_ls.builtins.formatting.black,
-- null_ls.builtins.formatting.isort,
null_ls.builtins.formatting.yapf.with({
extra_args = { [[--style="{ indent_width: 2 }"]] },
}),
-- Diagnostics -- Diagnostics
null_ls.builtins.diagnostics.ruff, -- Linting null_ls.builtins.diagnostics.ruff, -- Linting
-- null_ls.builtins.diagnostics.mypy, -- Type checking -- null_ls.builtins.diagnostics.mypy, -- Type checking

View file

@ -73,7 +73,7 @@ let
# Required by magma-nvim: # Required by magma-nvim:
# python310Packages.pynvim # python310Packages.pynvim
# python310Packages.jupyter # python310Packages.jupyter
]; ] ++ config.satellite.neovim.generated.dependencies;
# }}} # }}}
# {{{ extraRuntime # {{{ extraRuntime
extraRuntimePaths = env: [ extraRuntimePaths = env: [
@ -268,7 +268,7 @@ in
package = "folke/flash.nvim"; package = "folke/flash.nvim";
name = "flash"; name = "flash";
cond = nlib.blacklistEnv [ "vscode" "firenvim" ]; cond = nlib.blacklistEnv [ "vscode" ];
keys = keys =
let keybind = mode: mapping: action: desc: { let keybind = mode: mapping: action: desc: {
inherit mapping desc mode; inherit mapping desc mode;
@ -287,5 +287,22 @@ in
opts.modes.char.enabled = false; opts.modes.char.enabled = false;
}; };
# }}} # }}}
# {{{ Conform.nvim
satellite.neovim.lazy.conform = {
package = "stevearc/conform.nvim";
name = "conform";
cond = nlib.blacklistEnv [ "vscode" ];
event = "BufReadPost";
opts.log_level = nlib.lua "vim.log.levels.DEBUG";
opts.format_on_save.lsp_fallback = true;
opts.formatters_by_ft = {
lua = [ "stylua" ];
python = [ "ruff_format" ];
javascript = [ [ "prettierd" "prettier" ] ];
};
};
# }}}
# }}} # }}}
} }

View file

@ -215,13 +215,13 @@ let
numberOr = luaEncoders.conditional (e: lib.isFloat e || lib.isInt e) luaEncoders.number; numberOr = luaEncoders.conditional (e: lib.isFloat e || lib.isInt e) luaEncoders.number;
nullOr = luaEncoders.conditional (e: e == null) luaEncoders.nil; nullOr = luaEncoders.conditional (e: e == null) luaEncoders.nil;
anything = lib.pipe (luaEncoders.fail (v: "Cannot figure out how to encode value ${builtins.toJSON v}")) [ anything = lib.pipe (luaEncoders.fail (v: "Cannot figure out how to encode value ${builtins.toJSON v}")) [
luaEncoders.luaCodeOr (luaEncoders.attrsetOfOr luaEncoders.anything)
(luaEncoders.listOfOr luaEncoders.anything)
luaEncoders.nullOr luaEncoders.nullOr
luaEncoders.boolOr luaEncoders.boolOr
luaEncoders.numberOr luaEncoders.numberOr
luaEncoders.stringOr luaEncoders.stringOr
(luaEncoders.listOfOr luaEncoders.anything) luaEncoders.luaCodeOr # Lua code expressions have priority over attrsets
(luaEncoders.attrsetOfOr luaEncoders.anything)
]; ];
# }}} # }}}
# {{{ Lua code # {{{ Lua code
@ -299,7 +299,7 @@ let
# Format and write a lua file to disk # Format and write a lua file to disk
writeLuaFile = path: name: text: writeLuaFile = path: name: text:
let let
directory = "lua/${path}"; directory = "lua/${path}";
destination = "${directory}/${name}.lua"; destination = "${directory}/${name}.lua";
unformatted = pkgs.writeText "raw-lua-${name}" text; unformatted = pkgs.writeText "raw-lua-${name}" text;
in in
@ -340,6 +340,12 @@ in
type = types.package; type = types.package;
description = "Derivation building all the given nix modules"; description = "Derivation building all the given nix modules";
}; };
dependencies = lib.mkOption {
default = [ ];
type = types.listOf types.package;
description = "List of packages to give neovim access to";
};
}; };
lib = { lib = {
@ -432,4 +438,12 @@ in
name = "lazy-nvim-modules"; name = "lazy-nvim-modules";
paths = lib.attrsets.mapAttrsToList (_: m: m.module) cfg.generated.lazy; paths = lib.attrsets.mapAttrsToList (_: m: m.module) cfg.generated.lazy;
}; };
config.satellite.neovim.generated.dependencies =
lib.pipe cfg.lazy
[
(lib.attrsets.mapAttrsToList (_: m: m.dependencies.nix))
lib.lists.flatten
]
;
} }

View file

@ -4,5 +4,5 @@
pkgs.mkShell { pkgs.mkShell {
# Enable experimental features without having to specify the argument # Enable experimental features without having to specify the argument
NIX_CONFIG = "experimental-features = nix-command flakes"; NIX_CONFIG = "experimental-features = nix-command flakes";
nativeBuildInputs = with pkgs; [ nix home-manager git ]; packages = with pkgs; [ nix home-manager git ];
} }