1
Fork 0

Make purescript work inside neovim

This commit is contained in:
prescientmoon 2024-02-24 01:53:32 +01:00
parent fd3af8a1f6
commit eb9d1d2814
Signed by: prescientmoon
SSH key fingerprint: SHA256:UUF9JT2s8Xfyv76b8ZuVL7XrmimH4o49p4b+iexbVH4
10 changed files with 405 additions and 409 deletions
home/features/neovim

View file

@ -250,23 +250,39 @@ let
};
# }}}
# {{{ Language specific settings
"5:language-specific-settings".autocmds = [{
event = "FileType";
group = "UserNixSettings";
pattern = "nix";
action = {
vim.opt.commentstring = "# %s";
keys = {
mapping = "<leader>lg";
action = thunk /* lua */ ''
D.tempest.withSavedCursor(function()
vim.cmd(":%!${lib.getExe pkgs.update-nix-fetchgit}")
end)
'';
desc = "Update all fetchgit calls";
};
};
}];
"5:language-specific-settings" = {
autocmds = [
{
event = "FileType";
group = "UserNixSettings";
pattern = "nix";
action = {
vim.opt.commentstring = "# %s";
keys = {
mapping = "<leader>lg";
action = thunk /* lua */ ''
D.tempest.withSavedCursor(function()
vim.cmd(":%!${lib.getExe pkgs.update-nix-fetchgit}")
end)
'';
desc = "Update all fetchgit calls";
};
};
}
{
event = "FileType";
group = "UserPurescriptSettings";
pattern = "purs";
action.vim.opt = {
expandtab = true; # Use spaces for the tab char
commentstring = "-- %s";
};
}
];
# Make neovim aware about the existence of the purescript datatype.
callback = lua ''vim.filetype.add({ extension = { purs = "purescript" } })'';
};
# }}}
};
# }}}
@ -310,7 +326,7 @@ let
mini-statusline = {
package = "echasnovski/mini.statusline";
name = "mini.statusline";
dependencies.lua = [ self.lazy.web-devicons.package ];
dependencies.lua = [ "web-devicons" ];
cond = blacklist [ "vscode" "firenvim" ];
lazy = false;
@ -342,7 +358,7 @@ let
mini-files = {
package = "echasnovski/mini.files";
name = "mini.files";
dependencies.lua = [ self.lazy.web-devicons.package ];
dependencies.lua = [ "web-devicons" ];
cond = blacklist [ "vscode" "firenvim" ];
keys = {
@ -411,7 +427,7 @@ let
# {{{ neogit
neogit = {
package = "TimUntersberger/neogit";
dependencies.lua = [ self.lazy.plenary.package ];
dependencies.lua = [ "plenary" ];
cond = blacklist [ "vscode" "firenvim" ];
cmd = "Neogit"; # We sometimes spawn this directly from fish using a keybind
@ -436,7 +452,7 @@ let
dependencies = {
nix = [ pkgs.ripgrep ];
lua = [
self.lazy.plenary.package
"plenary"
{
# We want a prebuilt version of this plugin
dir = pkgs.vimPlugins.telescope-fzf-native-nvim;
@ -562,12 +578,15 @@ let
# {{{ treesitter
treesitter = {
# REASON: more grammars
dir = upkgs.vimPlugins.nvim-treesitter.withAllGrammars;
# dir = upkgs.vimPlugins.nvim-treesitter.withAllGrammars;
package = "nvim-treesitter/nvim-treesitter";
main = "nvim-treesitter.configs";
dependencies.lua = [ "nvim-treesitter/nvim-treesitter-textobjects" ];
dependencies.nix = [ pkgs.tree-sitter ];
cond = blacklist "vscode";
event = "BufReadPost";
event = "VeryLazy";
#{{{ Highlighting
opts.highlight = {
@ -628,15 +647,16 @@ let
event = "VeryLazy";
};
# REASON: broken
# show context at top of file
treesitter-top-context = {
package = "nvim-treesitter/nvim-treesitter-context";
dependencies.lua = [ "treesitter" ];
cond = blacklist "vscode";
event = "VeryLazy";
opts.enable = true;
};
# treesitter-top-context = {
# package = "nvim-treesitter/nvim-treesitter-context";
# dependencies.lua = [ "treesitter" ];
#
# cond = blacklist "vscode";
# event = "VeryLazy";
# opts.enable = true;
# };
# }}}
# }}}
# {{{ editing
@ -735,21 +755,22 @@ let
opts.keymaps.replace_all = "<s-cr>";
};
# }}}
# {{{ edit-code-block (edit injections in separate buffers)
edit-code-block = {
package = "dawsers/edit-code-block.nvim";
dependencies.lua = [ "treesitter" ];
main = "ecb";
cond = blacklist "vscode";
config = true;
keys = {
mapping = "<leader>e";
action = "<cmd>EditCodeBlock<cr>";
desc = "[e]dit injection";
};
};
# }}}
# # {{{ edit-code-block (edit injections in separate buffers)
# REASON: broken
# edit-code-block = {
# package = "dawsers/edit-code-block.nvim";
# dependencies.lua = [ "treesitter" ];
# main = "ecb";
#
# cond = blacklist "vscode";
# config = true;
# keys = {
# mapping = "<leader>e";
# action = "<cmd>EditCodeBlock<cr>";
# desc = "[e]dit injection";
# };
# };
# # }}}
# {{{ mini.comment
mini-comment = {
package = "echasnovski/mini.comment";
@ -890,6 +911,7 @@ let
# {{{ ide
# {{{ conform
conform = {
dependencies.lua = [ "neovim/nvim-lspconfig" ];
package = "stevearc/conform.nvim";
cond = blacklist "vscode";
@ -1052,7 +1074,7 @@ let
"dmitmel/cmp-digraphs"
# }}}
"onsails/lspkind.nvim" # show icons in lsp completion menus
self.lazy.luasnip.package
"luasnip"
];
cond = blacklist "vscode";
@ -1063,7 +1085,7 @@ let
# {{{ inc-rename
inc-rename = {
package = "smjonas/inc-rename.nvim";
dependencies.lua = [ self.lazy.dressing.package ];
dependencies.lua = [ "dressing" ];
cond = blacklist "vscode";
event = "VeryLazy";
@ -1085,7 +1107,7 @@ let
# {{{ haskell support
haskell-tools = {
package = "mrcjkb/haskell-tools.nvim";
dependencies.lua = [ self.lazy.plenary.package ];
dependencies.lua = [ "plenary" ];
version = "^2";
cond = blacklist "vscode";
@ -1126,7 +1148,7 @@ let
# {{{ crates
crates = {
package = "saecki/crates.nvim";
dependencies.lua = [ self.lazy.plenary.package ];
dependencies.lua = [ "plenary" ];
cond = blacklist "vscode";
event = "BufReadPost Cargo.toml";
@ -1203,7 +1225,7 @@ let
package = "Julian/lean.nvim";
name = "lean";
dependencies.lua = [
self.lazy.plenary.package
"plenary"
"neovim/nvim-lspconfig"
];
@ -1229,7 +1251,7 @@ let
package = "ShinKage/idris2-nvim";
name = "idris";
dependencies.lua = [
self.lazy.nui.package
"nui"
"neovim/nvim-lspconfig"
];
@ -1278,6 +1300,14 @@ let
ft = "typst";
};
# }}}
# {{{ purescript support
# purescript = {
# package = "purescript-contrib/purescript-vim";
#
# cond = blacklist "vscode";
# ft = "purescript";
# };
# }}}
# {{{ hyprland
hyprland = {
package = "theRealCarneiro/hyprland-vim-syntax";
@ -1322,7 +1352,7 @@ let
in
{
package = "ruifm/gitlinker.nvim";
dependencies.lua = [ self.lazy.plenary.package ];
dependencies.lua = [ "plenary" ];
cond = blacklist [ "vscode" "firenvim" ];
opts.mappings = mapping;
@ -1345,7 +1375,7 @@ let
in
{
package = "epwalsh/obsidian.nvim";
dependencies.lua = [ self.lazy.plenary.package ];
dependencies.lua = [ "plenary" ];
cond = [
(blacklist [ "vscode" "firenvim" ])
@ -1393,7 +1423,7 @@ let
extraPackages = with pkgs; [
# Language servers
nodePackages.typescript-language-server # typescript
nodePackages_latest.purescript-language-server # purescript
# nodePackages_latest.purescript-language-server # purescript
lua-language-server # lua
rnix-lsp # nix
nil # nix
@ -1404,7 +1434,7 @@ let
# Formatters
stylua # Lua
nodePackages_latest.purs-tidy # Purescript
# nodePackages_latest.purs-tidy # Purescript
nodePackages_latest.prettier # Js & friends
nodePackages_latest.prettier_d_slim # Js & friends
@ -1483,7 +1513,7 @@ let
base =
if config.satellite.toggles.neovim-nightly.enable
then pkgs.neovim-nightly
else pkgs.neovim;
else upkgs.neovim;
name = "nvim";
};