forked from pub-solar/os
Compare commits
No commits in common. "7ccefe060165fbe4bdf3a57275f1198ee3aa51a8" and "0eca82134be65667d07be87f6ae8f9ef0c8ddc24" have entirely different histories.
7ccefe0601
...
0eca82134b
|
@ -20,14 +20,6 @@ indent_style = unset
|
||||||
indent_size = unset
|
indent_size = unset
|
||||||
|
|
||||||
[{.*,secrets}/**]
|
[{.*,secrets}/**]
|
||||||
end_of_line = false
|
|
||||||
insert_final_newline = false
|
|
||||||
trim_trailing_whitespace = unset
|
|
||||||
charset = unset
|
|
||||||
indent_style = unset
|
|
||||||
indent_size = unset
|
|
||||||
|
|
||||||
[*.rom]
|
|
||||||
end_of_line = unset
|
end_of_line = unset
|
||||||
insert_final_newline = unset
|
insert_final_newline = unset
|
||||||
trim_trailing_whitespace = unset
|
trim_trailing_whitespace = unset
|
||||||
|
|
30
flake.lock
30
flake.lock
|
@ -248,7 +248,7 @@
|
||||||
"narHash": "sha256-zNW/rqNJwhq2lYmQf19wJerRuNimjhxHKmzrWWFJYts=",
|
"narHash": "sha256-zNW/rqNJwhq2lYmQf19wJerRuNimjhxHKmzrWWFJYts=",
|
||||||
"rev": "622a2253a071a1fb97a4d3c8103a91114acc1140",
|
"rev": "622a2253a071a1fb97a4d3c8103a91114acc1140",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/622a2253a071a1fb97a4d3c8103a91114acc1140.tar.gz?rev=622a2253a071a1fb97a4d3c8103a91114acc1140"
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/622a2253a071a1fb97a4d3c8103a91114acc1140.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
|
@ -262,11 +262,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723859949,
|
"lastModified": 1722924007,
|
||||||
"narHash": "sha256-kiaGz4deGYKMjJPOji/JVvSP/eTefrIA3rAjOnOpXl4=",
|
"narHash": "sha256-+CQDamNwqO33REJLft8c26NbUi2Td083hq6SvAm2xkU=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "076b9a905af8a52b866c8db068d6da475839d97b",
|
"rev": "91010a5613ffd7ee23ee9263213157a1c422b705",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -324,11 +324,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723938990,
|
"lastModified": 1723400035,
|
||||||
"narHash": "sha256-9tUadhnZQbWIiYVXH8ncfGXGvkNq3Hag4RCBEMUk7MI=",
|
"narHash": "sha256-WoKZDlBEdMhP+hjquBAh0BhUJbcH2+U8g2mHOr1mv8I=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c42fcfbdfeae23e68fc520f9182dde9f38ad1890",
|
"rev": "a731b45590a5169542990c36ffcde6cebd9a3356",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -466,13 +466,13 @@
|
||||||
"rev": "0d039dcf06afb8cbddd7ac54bae4d0d185f3e88e",
|
"rev": "0d039dcf06afb8cbddd7ac54bae4d0d185f3e88e",
|
||||||
"revCount": 85,
|
"revCount": 85,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pub.solar/pub-solar/infra-vintage"
|
"url": "https://git.pub.solar/pub-solar/infra-vintage?dir=vmtools"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"dir": "vmtools",
|
"dir": "vmtools",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pub.solar/pub-solar/infra-vintage"
|
"url": "https://git.pub.solar/pub-solar/infra-vintage?dir=vmtools"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tritonshell": {
|
"tritonshell": {
|
||||||
|
@ -500,11 +500,11 @@
|
||||||
},
|
},
|
||||||
"unstable": {
|
"unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723637854,
|
"lastModified": 1723362943,
|
||||||
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
|
"narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
|
"rev": "a58bc8ad779655e790115244571758e8de055e3d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -543,11 +543,11 @@
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724040047,
|
"lastModified": 1721447721,
|
||||||
"narHash": "sha256-8oVTexYGQWyaAVJedrp4kIQ7VjBR47l65eByZr7oghg=",
|
"narHash": "sha256-vcDaLwe4NxFvo6JPMWUGOpDM9ztrAm9mFYI8UGfMhmg=",
|
||||||
"owner": "rafaelrc7",
|
"owner": "rafaelrc7",
|
||||||
"repo": "wayland-pipewire-idle-inhibit",
|
"repo": "wayland-pipewire-idle-inhibit",
|
||||||
"rev": "ab6c30cdf1cfbabd65e1a5a30f0dc94d1114bb45",
|
"rev": "01f15357c38590662ae44606b63cc2bb3d1c5938",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -102,8 +102,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
flake = {
|
flake = {
|
||||||
formatter."x86_64-linux" = inputs.unstable.legacyPackages."x86_64-linux".nixfmt-rfc-style;
|
|
||||||
|
|
||||||
deploy.nodes = self.lib.deploy.mkDeployNodes self.nixosConfigurations {
|
deploy.nodes = self.lib.deploy.mkDeployNodes self.nixosConfigurations {
|
||||||
#example = {
|
#example = {
|
||||||
# hostname = "example.com:22";
|
# hostname = "example.com:22";
|
||||||
|
|
|
@ -17,6 +17,22 @@ in {
|
||||||
signal-desktop
|
signal-desktop
|
||||||
tdesktop
|
tdesktop
|
||||||
element-desktop
|
element-desktop
|
||||||
|
|
||||||
|
binutils
|
||||||
|
ripgrep
|
||||||
|
jq
|
||||||
|
|
||||||
|
# Nix specific utilities
|
||||||
|
alejandra
|
||||||
|
manix
|
||||||
|
nix-init
|
||||||
|
nix-inspect
|
||||||
|
nix-output-monitor
|
||||||
|
nix-tree
|
||||||
|
nvd
|
||||||
|
nixpkgs-review
|
||||||
|
nix-update
|
||||||
|
nix-search-cli
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
|
|
|
@ -120,6 +120,5 @@ in {
|
||||||
myip = "dig +short myip.opendns.com @208.67.222.222 2>&1";
|
myip = "dig +short myip.opendns.com @208.67.222.222 2>&1";
|
||||||
nnn = "nnn -d -e -H -r";
|
nnn = "nnn -d -e -H -r";
|
||||||
tmate = ''tmate -f "''${XDG_CONFIG_HOME}/tmate/tmate.conf"'';
|
tmate = ''tmate -f "''${XDG_CONFIG_HOME}/tmate/tmate.conf"'';
|
||||||
nix = "nix --log-format multiline";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ in {
|
||||||
programs.nix-index.enableBashIntegration = false;
|
programs.nix-index.enableBashIntegration = false;
|
||||||
|
|
||||||
users.users."${psCfg.user.name}".packages = with pkgs; [
|
users.users."${psCfg.user.name}".packages = with pkgs; [
|
||||||
|
ack
|
||||||
asciinema
|
asciinema
|
||||||
bat
|
bat
|
||||||
blesh
|
blesh
|
||||||
|
@ -42,23 +43,10 @@ in {
|
||||||
];
|
];
|
||||||
}))
|
}))
|
||||||
powerline
|
powerline
|
||||||
ripgrep
|
|
||||||
screen
|
screen
|
||||||
|
silver-searcher
|
||||||
watson
|
watson
|
||||||
] ++ (if cfg.full then [
|
];
|
||||||
binutils
|
|
||||||
jq
|
|
||||||
|
|
||||||
# Nix specific utilities
|
|
||||||
manix
|
|
||||||
nix-index
|
|
||||||
nix-tree
|
|
||||||
nix-inspect
|
|
||||||
nvd
|
|
||||||
nixpkgs-review
|
|
||||||
nix-update
|
|
||||||
nix-search-cli
|
|
||||||
] else []);
|
|
||||||
|
|
||||||
# Get completion for system packages
|
# Get completion for system packages
|
||||||
# https://nix-community.github.io/home-manager/options.xhtml#opt-programs.bash.enableCompletion
|
# https://nix-community.github.io/home-manager/options.xhtml#opt-programs.bash.enableCompletion
|
||||||
|
@ -101,7 +89,6 @@ in {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit lib;
|
inherit lib;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Ensure nvim backup directory gets created
|
# Ensure nvim backup directory gets created
|
||||||
# Workaround for E510: Can't make backup file (add ! to override)
|
# Workaround for E510: Can't make backup file (add ! to override)
|
||||||
xdg.dataFile."nvim/backup/.keep".text = "";
|
xdg.dataFile."nvim/backup/.keep".text = "";
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
lua <<EOF
|
|
||||||
|
|
||||||
local luasnip = require 'luasnip'
|
|
||||||
|
|
||||||
local cmp = require 'cmp'
|
|
||||||
cmp.setup {
|
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
require('luasnip').lsp_expand(args.body)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
mapping = {
|
|
||||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
|
||||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
|
||||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
|
||||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
|
||||||
['<C-Space>'] = cmp.mapping.complete(),
|
|
||||||
['<C-e>'] = cmp.mapping.close(),
|
|
||||||
['<CR>'] = cmp.mapping.confirm {
|
|
||||||
behavior = cmp.ConfirmBehavior.Replace,
|
|
||||||
select = true,
|
|
||||||
},
|
|
||||||
['<Tab>'] = function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_next_item()
|
|
||||||
elseif luasnip.expand_or_jumpable() then
|
|
||||||
luasnip.expand_or_jump()
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
['<S-Tab>'] = function(fallback)
|
|
||||||
if cmp.visible() then
|
|
||||||
cmp.select_prev_item()
|
|
||||||
elseif luasnip.jumpable(-1) then
|
|
||||||
luasnip.jump(-1)
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
sources = {
|
|
||||||
{ name = 'nvim_lsp' },
|
|
||||||
{ name = 'luasnip' },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
EOF
|
|
|
@ -7,6 +7,8 @@
|
||||||
psCfg = config.pub-solar;
|
psCfg = config.pub-solar;
|
||||||
cfg = config.pub-solar.terminal-life;
|
cfg = config.pub-solar.terminal-life;
|
||||||
xdg = config.home-manager.users."${psCfg.user.name}".xdg;
|
xdg = config.home-manager.users."${psCfg.user.name}".xdg;
|
||||||
|
|
||||||
|
preview-file = pkgs.writeShellScriptBin "preview-file" (import ./preview-file.nix pkgs);
|
||||||
in {
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
@ -18,35 +20,101 @@ in {
|
||||||
withRuby = true;
|
withRuby = true;
|
||||||
withPython3 = true;
|
withPython3 = true;
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs;
|
||||||
ripgrep
|
lib.mkIf (cfg.full) [
|
||||||
nixd
|
ansible-language-server
|
||||||
universal-ctags
|
ccls
|
||||||
# ansible-language-server
|
gopls
|
||||||
# clang-tools
|
nixd
|
||||||
# gopls
|
nodejs
|
||||||
# nodePackages.bash-language-server
|
nodePackages.bash-language-server
|
||||||
# nodePackages.svelte-language-server
|
nodePackages.dockerfile-language-server-nodejs
|
||||||
# nodePackages.typescript
|
nodePackages.svelte-language-server
|
||||||
# nodePackages.typescript-language-server
|
nodePackages.typescript
|
||||||
# nodePackages.vue-language-server
|
nodePackages.typescript-language-server
|
||||||
# nodePackages.vscode-langservers-extracted
|
nodePackages.vim-language-server
|
||||||
# nginx-language-server
|
nodePackages.vue-language-server
|
||||||
# lua-language-server
|
nodePackages.vscode-langservers-extracted
|
||||||
# cmake-language-server
|
nodePackages.yaml-language-server
|
||||||
# vim-language-server
|
python3Packages.python-lsp-server
|
||||||
# yaml-language-server
|
python3Full
|
||||||
# python3Packages.python-lsp-server
|
rust-analyzer
|
||||||
# nodePackages.dockerfile-language-server-nodejs
|
shellcheck
|
||||||
# docker-compose-language-service
|
solargraph
|
||||||
# rust-analyzer
|
terraform-ls
|
||||||
# cargo
|
universal-ctags
|
||||||
# solargraph
|
];
|
||||||
# terraform-ls
|
|
||||||
# python3Full
|
plugins = with pkgs.vimPlugins; lib.mkIf cfg.full [
|
||||||
];
|
(pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [
|
||||||
|
p.ini
|
||||||
|
p.json
|
||||||
|
p.json5
|
||||||
|
p.markdown
|
||||||
|
p.nix
|
||||||
|
p.toml
|
||||||
|
p.yaml
|
||||||
|
|
||||||
|
p.css
|
||||||
|
p.graphql
|
||||||
|
p.html
|
||||||
|
p.javascript
|
||||||
|
p.scss
|
||||||
|
p.tsx
|
||||||
|
p.typescript
|
||||||
|
p.vue
|
||||||
|
|
||||||
|
p.c
|
||||||
|
p.cpp
|
||||||
|
p.go
|
||||||
|
p.gomod
|
||||||
|
p.gosum
|
||||||
|
p.haskell
|
||||||
|
p.lua
|
||||||
|
p.php
|
||||||
|
p.python
|
||||||
|
p.ruby
|
||||||
|
p.rust
|
||||||
|
|
||||||
|
p.vim
|
||||||
|
p.vimdoc
|
||||||
|
|
||||||
|
p.passwd
|
||||||
|
p.sql
|
||||||
|
|
||||||
|
p.diff
|
||||||
|
p.gitcommit
|
||||||
|
p.gitignore
|
||||||
|
p.git_config
|
||||||
|
p.gitattributes
|
||||||
|
p.git_rebase
|
||||||
|
|
||||||
|
p.bash
|
||||||
|
p.dockerfile
|
||||||
|
p.make
|
||||||
|
p.ninja
|
||||||
|
p.terraform
|
||||||
|
]))
|
||||||
|
|
||||||
|
# Dependencies for nvim-lspconfig
|
||||||
|
nvim-cmp
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp_luasnip
|
||||||
|
luasnip
|
||||||
|
|
||||||
|
# Quickstart configs for neovim LSP
|
||||||
|
lsp_extensions-nvim
|
||||||
|
nvim-lspconfig
|
||||||
|
|
||||||
|
# Collaborative editing in Neovim using built-in capabilities
|
||||||
|
instant-nvim-nvfetcher
|
||||||
|
|
||||||
|
# Search functionality behind :Ack
|
||||||
|
ack-vim
|
||||||
|
|
||||||
|
# Go development
|
||||||
|
vim-go
|
||||||
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
|
||||||
# The status bar in the bottom of the screen with the mode indication and file location
|
# The status bar in the bottom of the screen with the mode indication and file location
|
||||||
vim-airline
|
vim-airline
|
||||||
|
|
||||||
|
@ -59,9 +127,18 @@ in {
|
||||||
# Highlight characters when using f, F, t, and T
|
# Highlight characters when using f, F, t, and T
|
||||||
quick-scope
|
quick-scope
|
||||||
|
|
||||||
|
# Get sudo in vim; :SudaWrite <optional filename>
|
||||||
|
vim-suda
|
||||||
|
|
||||||
# Undo history etc. per project
|
# Undo history etc. per project
|
||||||
vim-workspace-nvfetcher
|
vim-workspace-nvfetcher
|
||||||
|
|
||||||
|
# JSON schemas
|
||||||
|
SchemaStore-nvim
|
||||||
|
|
||||||
|
# Work with tags files
|
||||||
|
vim-gutentags
|
||||||
|
|
||||||
# Neovim colorschemes / themes
|
# Neovim colorschemes / themes
|
||||||
sonokai
|
sonokai
|
||||||
vim-hybrid-material
|
vim-hybrid-material
|
||||||
|
@ -78,10 +155,9 @@ in {
|
||||||
# Ease your git workflow within Vim
|
# Ease your git workflow within Vim
|
||||||
vimagit-nvfetcher
|
vimagit-nvfetcher
|
||||||
|
|
||||||
# Telescope fuzzy finder
|
# FZF fuzzy finder
|
||||||
telescope-nvim
|
fzf-vim
|
||||||
telescope-fzf-native-nvim
|
fzfWrapper
|
||||||
|
|
||||||
# Make the yanked region apparent
|
# Make the yanked region apparent
|
||||||
vim-highlightedyank
|
vim-highlightedyank
|
||||||
|
|
||||||
|
@ -90,39 +166,22 @@ in {
|
||||||
|
|
||||||
# Unload, delete or wipe a buffer without closing the window
|
# Unload, delete or wipe a buffer without closing the window
|
||||||
vim-bufkill
|
vim-bufkill
|
||||||
|
|
||||||
# Defaults everyone can agree on
|
# Defaults everyone can agree on
|
||||||
vim-sensible
|
vim-sensible
|
||||||
|
|
||||||
# Single tabpage interface for easily cycling through diffs for all modified files
|
# emmet for vim: http://emmet.io/
|
||||||
diffview-nvim
|
emmet-vim
|
||||||
|
|
||||||
# Work with tags files
|
|
||||||
vim-gutentags
|
|
||||||
] ++ (if cfg.full then [
|
|
||||||
nvim-treesitter.withAllGrammars
|
|
||||||
|
|
||||||
# Dependencies for nvim-lspconfig
|
|
||||||
nvim-cmp
|
|
||||||
cmp-nvim-lsp
|
|
||||||
cmp_luasnip
|
|
||||||
luasnip
|
|
||||||
|
|
||||||
# Quickstart configs for neovim LSP
|
|
||||||
lsp_extensions-nvim
|
|
||||||
nvim-lspconfig
|
|
||||||
|
|
||||||
# Collaborative editing in Neovim using built-in capabilities
|
|
||||||
instant-nvim-nvfetcher
|
|
||||||
|
|
||||||
# Caddyfile syntax support for Vim
|
# Caddyfile syntax support for Vim
|
||||||
vim-caddyfile-nvfetcher
|
vim-caddyfile-nvfetcher
|
||||||
|
|
||||||
# JSON schemas
|
# Fix TOFU hashes when writing nix derivations without leaving neovim
|
||||||
SchemaStore-nvim
|
vim-nixhash
|
||||||
] else []);
|
|
||||||
|
|
||||||
extraConfig = builtins.concatStringsSep "\n" ([
|
# Single tabpage interface for easily cycling through diffs for all modified files
|
||||||
|
diffview-nvim
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfig = builtins.concatStringsSep "\n" [
|
||||||
''
|
''
|
||||||
" Persistent undo
|
" Persistent undo
|
||||||
set undofile
|
set undofile
|
||||||
|
@ -135,9 +194,13 @@ in {
|
||||||
(builtins.readFile ./plugins.vim)
|
(builtins.readFile ./plugins.vim)
|
||||||
(builtins.readFile ./clipboard.vim)
|
(builtins.readFile ./clipboard.vim)
|
||||||
(builtins.readFile ./ui.vim)
|
(builtins.readFile ./ui.vim)
|
||||||
(builtins.readFile ./lastplace.lua)
|
(builtins.readFile ./quickfixopenall.vim)
|
||||||
] ++ (if cfg.full then [
|
|
||||||
(builtins.readFile ./lsp.vim)
|
(builtins.readFile ./lsp.vim)
|
||||||
(builtins.readFile ./cmp.vim)
|
(builtins.readFile ./lastplace.lua)
|
||||||
] else []));
|
''
|
||||||
|
" fzf with file preview
|
||||||
|
command! -bang -nargs=? -complete=dir Files
|
||||||
|
\ call fzf#vim#files(<q-args>, { 'options': ['--keep-right', '--cycle', '--layout', 'reverse', '--preview', '${preview-file}/bin/preview-file {}'] }, <bang>0)
|
||||||
|
''
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,6 +77,9 @@ nmap <leader>j :bprevious<CR>
|
||||||
" This replicates the idea of closing a tab
|
" This replicates the idea of closing a tab
|
||||||
nmap <leader>q :bp <BAR> bd #<CR>
|
nmap <leader>q :bp <BAR> bd #<CR>
|
||||||
|
|
||||||
|
" Show all open buffers and their status
|
||||||
|
nmap <leader>bl :ls<CR>
|
||||||
|
"
|
||||||
" Move to the next tab
|
" Move to the next tab
|
||||||
nmap <leader>tl :tabnext<CR>
|
nmap <leader>tl :tabnext<CR>
|
||||||
|
|
||||||
|
@ -86,5 +89,23 @@ nmap <leader>tj :tabprevious<CR>
|
||||||
" Close the current tab
|
" Close the current tab
|
||||||
nmap <leader>tq :tabclose<CR>
|
nmap <leader>tq :tabclose<CR>
|
||||||
|
|
||||||
|
" Mapping selecting mappings
|
||||||
|
nmap <leader><tab> <plug>(fzf-maps-n)
|
||||||
|
xmap <leader><tab> <plug>(fzf-maps-x)
|
||||||
|
omap <leader><tab> <plug>(fzf-maps-o)
|
||||||
|
|
||||||
|
nmap <c-p> :Files<CR>
|
||||||
|
imap <c-p> <ESC>:Files<CR>
|
||||||
|
|
||||||
|
" Insert mode completion
|
||||||
|
imap <c-x><c-k> <plug>(fzf-complete-word)
|
||||||
|
imap <c-x><c-f> <plug>(fzf-complete-path)
|
||||||
|
imap <c-x><c-j> <plug>(fzf-complete-file)
|
||||||
|
imap <c-x><c-l> <plug>(fzf-complete-line)
|
||||||
|
|
||||||
" Clear quickfix shortcut
|
" Clear quickfix shortcut
|
||||||
nmap <Leader>c :ccl<CR>
|
nmap <Leader>c :ccl<CR>
|
||||||
|
|
||||||
|
nmap - :NnnPicker %<CR>
|
||||||
|
nmap <leader>n :NnnPicker %<CR>
|
||||||
|
nmap <leader>N :NnnPicker<CR>
|
||||||
|
|
|
@ -1,149 +1,258 @@
|
||||||
|
" Set completeopt to have a better completion experience
|
||||||
|
" :help completeopt
|
||||||
|
" menuone: popup even when there's only one match
|
||||||
|
" noinsert: Do not insert text until a selection is made
|
||||||
|
" noselect: Do not select, force user to select one from the menu
|
||||||
|
set completeopt=menuone,noinsert,noselect
|
||||||
|
|
||||||
|
" Avoid showing extra messages when using completion
|
||||||
|
set shortmess+=c
|
||||||
|
|
||||||
|
function AddTemplate(tmpl_file)
|
||||||
|
exe "0read " . a:tmpl_file
|
||||||
|
set nomodified
|
||||||
|
6
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
autocmd BufNewFile shell.nix call AddTemplate("$XDG_DATA_HOME/nvim/templates/shell.nix.tmpl")
|
||||||
|
|
||||||
" Configure neovim 0.6+ experimental LSPs
|
" Configure neovim 0.6+ experimental LSPs
|
||||||
" https://github.com/neovim/nvim-lspconfig
|
" https://github.com/neovim/nvim-lspconfig
|
||||||
" https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
|
" https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
|
||||||
" https://github.com/neovim/nvim-lspconfig/wiki/UI-Customization
|
" https://github.com/neovim/nvim-lspconfig/wiki/UI-Customization
|
||||||
" https://gitlab.com/Iron_E/dotfiles/-/blob/master/.config/nvim/lua/_config/plugin/nvim_lsp.lua
|
" https://gitlab.com/Iron_E/dotfiles/-/blob/master/.config/nvim/lua/_config/plugin/nvim_lsp.lua
|
||||||
|
|
||||||
lua <<EOF
|
lua <<EOF
|
||||||
|
local nvim_lsp = require('lspconfig')
|
||||||
|
|
||||||
-- Set completeopt to have a better completion experience
|
-- Mappings (global)
|
||||||
vim.o.completeopt = 'menuone,noselect,noinsert'
|
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
||||||
vim.o.shortmess = vim.o.shortmess .. 'c'
|
local opts = { noremap=true, silent=true }
|
||||||
vim.o.signcolumn = 'yes:2'
|
vim.api.nvim_set_keymap('n', '<leader>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
|
||||||
|
vim.api.nvim_set_keymap('n', 'g[', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
|
||||||
|
vim.api.nvim_set_keymap('n', 'g]', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>dq', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
|
||||||
|
vim.api.nvim_set_keymap('n', '<leader>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
|
||||||
|
|
||||||
local lspconfig = require('lspconfig')
|
-- Use an on_attach function to only map the following keys
|
||||||
|
-- after the language server attaches to the current buffer
|
||||||
|
local on_attach = function(client, bufnr)
|
||||||
|
-- Enable completion triggered by <c-x><c-o>
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||||
|
|
||||||
-- Mappings (global)
|
-- Mappings (available if LSP is configured and attached to buffer)
|
||||||
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||||
local opts = { noremap=true, silent=true }
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
||||||
vim.api.nvim_set_keymap('n', '<leader>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
||||||
vim.api.nvim_set_keymap('n', 'g[', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
||||||
vim.api.nvim_set_keymap('n', 'g]', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
||||||
vim.api.nvim_set_keymap('n', '<leader>dq', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
||||||
vim.api.nvim_set_keymap('n', '<leader>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||||
|
|
||||||
local on_attach = function(client, bufnr)
|
-- Show diagnostic popup on cursor hold
|
||||||
-- Enable completion triggered by <c-x><c-o>
|
vim.api.nvim_create_autocmd("CursorHold", {
|
||||||
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
buffer = bufnr,
|
||||||
|
callback = function()
|
||||||
|
local opts = {
|
||||||
|
focusable = false,
|
||||||
|
close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" },
|
||||||
|
border = 'rounded',
|
||||||
|
source = 'always',
|
||||||
|
prefix = ' ',
|
||||||
|
scope = 'cursor',
|
||||||
|
}
|
||||||
|
vim.diagnostic.open_float(nil, opts)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
-- Mappings (available if LSP is configured and attached to buffer)
|
|
||||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
|
|
||||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
|
|
||||||
|
|
||||||
-- Show diagnostic popup on cursor hold
|
|
||||||
vim.api.nvim_create_autocmd("CursorHold", {
|
|
||||||
buffer = bufnr,
|
|
||||||
callback = function()
|
|
||||||
local opts = {
|
|
||||||
focusable = false,
|
|
||||||
close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" },
|
|
||||||
border = 'rounded',
|
|
||||||
source = 'always',
|
|
||||||
prefix = ' ',
|
|
||||||
scope = 'cursor',
|
|
||||||
}
|
|
||||||
vim.diagnostic.open_float(nil, opts)
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
local lspconfig = require 'lspconfig'
|
|
||||||
-- Add additional capabilities supported by nvim-cmp
|
|
||||||
local CAPABILITIES = require('cmp_nvim_lsp').default_capabilities()
|
|
||||||
|
|
||||||
--- Event handlers
|
|
||||||
local HANDLERS = {
|
|
||||||
-- TODO: replace with vim.lsp.protocol.Methods
|
|
||||||
["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, FLOAT_CONFIG),
|
|
||||||
["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, FLOAT_CONFIG),
|
|
||||||
}
|
|
||||||
|
|
||||||
-- vscode HTML lsp needs this https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#html
|
|
||||||
CAPABILITIES.textDocument.completion.completionItem.snippetSupport = true
|
|
||||||
|
|
||||||
local function setup(lsp, config)
|
|
||||||
if config == nil then
|
|
||||||
config = {}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
config.capabilities = CAPABILITIES
|
-- Add additional capabilities supported by nvim-cmp
|
||||||
config.handlers = HANDLERS
|
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||||
config.on_attach = on_attach
|
-- vscode HTML lsp needs this https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#html
|
||||||
lspconfig[lsp].setup(config)
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
end
|
|
||||||
|
|
||||||
setup('nixd')
|
-- vscode HTML lsp needs this https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#html
|
||||||
setup('bashls')
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
setup('clangd')
|
|
||||||
setup('cssls')
|
local use_denols_for_typescript = not(os.getenv('NVIM_USE_DENOLS') == nil)
|
||||||
setup('eslint')
|
|
||||||
setup('tsserver')
|
for lsp_key, lsp_settings in pairs({
|
||||||
setup('denols')
|
'ansiblels', ---------------------------- Ansible
|
||||||
setup('vuels')
|
'bashls', ------------------------------- Bash
|
||||||
setup('svelte')
|
'ccls', --------------------------------- C / C++ / Objective-C
|
||||||
setup('html')
|
'cssls', -------------------------------- CSS / SCSS / LESS
|
||||||
setup('yamlls')
|
'dockerls', ----------------------------- Docker
|
||||||
setup('jsonls', {
|
['gopls'] = { --------------------------- Go
|
||||||
json = {
|
['settings'] = {
|
||||||
schemas = require('schemastore').json.schemas(),
|
['gopls'] = {
|
||||||
validate = {
|
['analyses'] = {
|
||||||
enable = true
|
['unusedparams'] = true,
|
||||||
}
|
},
|
||||||
}
|
['staticcheck'] = true
|
||||||
})
|
},
|
||||||
setup('gopls', {
|
},
|
||||||
settings = {
|
},
|
||||||
gopls = { semanticTokens = true }
|
'html', --------------------------------- HTML
|
||||||
}
|
['jdtls'] = { --------------------------- Java
|
||||||
})
|
['root_dir'] = nvim_lsp.util.root_pattern('.git', 'pom.xml', 'build.xml'),
|
||||||
setup('phpactor')
|
['init_options'] = {
|
||||||
setup('pylsp')
|
['jvm_args'] = {['java.format.settings.url'] = vim.fn.stdpath('config')..'/eclipse-formatter.xml'},
|
||||||
setup('solargraph') -- ruby
|
['workspace'] = vim.fn.stdpath('cache')..'/java-workspaces'
|
||||||
setup('rust_analyzer', {
|
}
|
||||||
settings = {
|
},
|
||||||
['rust-analyzer'] = {
|
['jsonls'] = { -------------------------- JSON
|
||||||
checkOnSave = { extraArgs = { "--target-dir", "/tmp/rust-analyzer-check" } },
|
['settings'] = {
|
||||||
diagnostics = { disabled = { 'inactive-code' } },
|
['json'] = {
|
||||||
|
['schemas' ] = vim.list_extend(
|
||||||
|
{
|
||||||
|
{
|
||||||
|
['description'] = 'JSON schema for Caddy v2',
|
||||||
|
['fileMatch'] = { '*caddy*.json' },
|
||||||
|
['name'] = 'caddy_schema.json',
|
||||||
|
['url'] = vim.fn.stdpath('data')..'/json-schemas/caddy_schema.json',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
require('schemastore').json.schemas()
|
||||||
|
),
|
||||||
|
['validate'] = { ['enable'] = true }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'nixd', --------------------------------- Nix
|
||||||
|
'phpactor', ----------------------------- PHP
|
||||||
|
'pylsp', -------------------------------- Python
|
||||||
|
'solargraph', --------------------------- Ruby
|
||||||
|
'rust_analyzer', ------------------------ Rust
|
||||||
|
['sqlls'] = {
|
||||||
|
['cmd'] = {vim.fn.stdpath('data')..'/nvm/versions/node/v12.19.0/bin/sql-language-server', 'up', '--method', 'stdio'}
|
||||||
|
},
|
||||||
|
['terraformls'] = { --------------------- Terraform
|
||||||
|
['filetypes'] = { 'terraform', 'hcl', 'tf' }
|
||||||
|
},
|
||||||
|
|
||||||
|
-- The TS/JS server is chosen depending on an environment variable,
|
||||||
|
-- since denols is nicer for Deno based projects
|
||||||
|
------------------------ Deno TS/JS
|
||||||
|
------------------------------------ Typescript / JavaScript
|
||||||
|
(use_denols_for_typescript and 'denols' or 'tsserver'),
|
||||||
|
|
||||||
|
'vuels', -------------------------------- Vue
|
||||||
|
'svelte', ------------------------------- Svelte
|
||||||
|
['yamlls'] = { -------------------------- YAML
|
||||||
|
['settings'] = {
|
||||||
|
['yaml'] = {
|
||||||
|
['schemas'] = {
|
||||||
|
['https://json.schemastore.org/github-workflow'] = '.github/workflows/*.{yml,yaml}',
|
||||||
|
['https://json.schemastore.org/github-action'] = '.github/action.{yml,yaml}',
|
||||||
|
['https://json.schemastore.org/drone'] = '*.drone.{yml,yaml}',
|
||||||
|
['https://json.schemastore.org/swagger-2.0'] = 'swagger.{yml,yaml}',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}) do -- Setup all of the language servers. †
|
||||||
|
if type(lsp_key) == 'number' then -- Enable the LSP with defaults.
|
||||||
|
-- The `lsp` is an index in this case.
|
||||||
|
nvim_lsp[lsp_settings].setup{
|
||||||
|
on_attach = on_attach,
|
||||||
|
flags = {
|
||||||
|
debounce_text_changes = 150,
|
||||||
|
},
|
||||||
|
capabilities = capabilities,
|
||||||
|
}
|
||||||
|
else -- Use the LSP's configuration.
|
||||||
|
lsp_settings.on_attach = on_attach
|
||||||
|
lsp_settings.capabilities = capabilities
|
||||||
|
|
||||||
|
nvim_lsp[lsp_key].setup(lsp_settings)
|
||||||
|
end
|
||||||
|
end -- ‡
|
||||||
|
|
||||||
|
-- configure floating diagnostics appearance, symbols
|
||||||
|
local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " }
|
||||||
|
for type, icon in pairs(signs) do
|
||||||
|
local hl = "DiagnosticSign" .. type
|
||||||
|
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Set completeopt to have a better completion experience
|
||||||
|
vim.o.completeopt = 'menuone,noselect'
|
||||||
|
|
||||||
|
-- luasnip setup
|
||||||
|
local luasnip = require 'luasnip'
|
||||||
|
|
||||||
|
-- nvim-cmp setup
|
||||||
|
local cmp = require 'cmp'
|
||||||
|
cmp.setup {
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require('luasnip').lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||||
|
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||||
|
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
['<C-Space>'] = cmp.mapping.complete(),
|
||||||
|
['<C-e>'] = cmp.mapping.close(),
|
||||||
|
['<CR>'] = cmp.mapping.confirm {
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = true,
|
||||||
|
},
|
||||||
|
['<Tab>'] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
['<S-Tab>'] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
|
||||||
setup('sqlls')
|
|
||||||
setup('salt_ls')
|
|
||||||
setup('ansiblels')
|
|
||||||
setup('dockerls')
|
|
||||||
setup('docker_compose_language_service')
|
|
||||||
setup('terraformls')
|
|
||||||
|
|
||||||
-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#denols
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#denols
|
||||||
vim.g.markdown_fenced_languages = {
|
vim.g.markdown_fenced_languages = {
|
||||||
"ts=typescript"
|
"ts=typescript"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Configure diagnostics
|
-- Configure diagnostics
|
||||||
vim.diagnostic.config({
|
vim.diagnostic.config({
|
||||||
virtual_text = false,
|
virtual_text = false,
|
||||||
signs = true,
|
signs = true,
|
||||||
underline = true,
|
underline = true,
|
||||||
update_in_insert = false,
|
update_in_insert = false,
|
||||||
severity_sort = false,
|
severity_sort = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Change diagnostic symbols in the sign column (gutter)
|
-- Change diagnostic symbols in the sign column (gutter)
|
||||||
local signs = { Error = "x ", Warn = "! ", Hint = "? ", Info = "i " }
|
local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " }
|
||||||
for type, icon in pairs(signs) do
|
for type, icon in pairs(signs) do
|
||||||
local hl = "DiagnosticSign" .. type
|
local hl = "DiagnosticSign" .. type
|
||||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
||||||
end
|
end
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
" have a fixed column for the diagnostics to appear in
|
||||||
|
" this removes the jitter when warnings/errors flow in
|
||||||
|
set signcolumn=yes:2
|
||||||
|
|
|
@ -2,22 +2,31 @@
|
||||||
au! BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml
|
au! BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml
|
||||||
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
|
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
|
||||||
|
|
||||||
function AddTemplate(tmpl_file)
|
|
||||||
exe "0read " . a:tmpl_file
|
|
||||||
set nomodified
|
|
||||||
6
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
autocmd BufNewFile shell.nix call AddTemplate("$XDG_DATA_HOME/nvim/templates/shell.nix.tmpl")
|
|
||||||
|
|
||||||
let g:gutentags_file_list_command = 'git ls-files'
|
let g:gutentags_file_list_command = 'git ls-files'
|
||||||
|
|
||||||
|
" quick-scope
|
||||||
" https://github.com/unblevable/quick-scope
|
" https://github.com/unblevable/quick-scope
|
||||||
let g:qs_highlight_on_keys = ['f', 'F', 't', 'T']
|
let g:qs_highlight_on_keys = ['f', 'F', 't', 'T']
|
||||||
|
|
||||||
|
" Golang
|
||||||
|
" Go test, Def, Decls shortcut
|
||||||
|
nmap <Leader>got :GoTest<CR>:botright copen<CR>
|
||||||
|
autocmd FileType go nmap gd :GoDef<CR>
|
||||||
|
autocmd FileType go nmap gD :GoDecls<CR>
|
||||||
|
|
||||||
|
" Go formatting
|
||||||
|
autocmd FileType go setlocal noexpandtab shiftwidth=4 tabstop=4 softtabstop=4 nolist
|
||||||
|
|
||||||
" Caddyfile indentation
|
" Caddyfile indentation
|
||||||
autocmd FileType caddyfile setlocal noexpandtab shiftwidth=8 tabstop=8 softtabstop=8 nolist
|
autocmd FileType caddyfile setlocal noexpandtab shiftwidth=8 tabstop=8 softtabstop=8 nolist
|
||||||
|
|
||||||
|
" vim-go disable text-objects
|
||||||
|
let g:go_textobj_enabled = 0
|
||||||
|
|
||||||
|
" disable vim-go :GoDef short cut (gd)
|
||||||
|
" this is handled by LanguageClient [LC]
|
||||||
|
let g:go_def_mapping_enabled = 0
|
||||||
|
|
||||||
" GitGutter and vim Magit
|
" GitGutter and vim Magit
|
||||||
" inspired by: https://jakobgm.com/posts/vim/git-integration/
|
" inspired by: https://jakobgm.com/posts/vim/git-integration/
|
||||||
" Don't map gitgutter keys automatically, set them ourselves
|
" Don't map gitgutter keys automatically, set them ourselves
|
||||||
|
@ -42,6 +51,9 @@ nnoremap <leader>gP :! git push<CR> " git Push
|
||||||
nmap <Leader>[ :diffget //2<CR>
|
nmap <Leader>[ :diffget //2<CR>
|
||||||
nmap <Leader>] :diffget //3<CR>
|
nmap <Leader>] :diffget //3<CR>
|
||||||
|
|
||||||
|
" netrw
|
||||||
|
let g:netrw_fastbrowse=0
|
||||||
|
|
||||||
" Auto-FMT rust code on save
|
" Auto-FMT rust code on save
|
||||||
let g:rustfmt_autosave = 1
|
let g:rustfmt_autosave = 1
|
||||||
|
|
||||||
|
@ -54,52 +66,22 @@ let g:highlightedyank_highlight_duration = 200
|
||||||
" Markdown options
|
" Markdown options
|
||||||
let g:vim_markdown_folding_disabled = 1
|
let g:vim_markdown_folding_disabled = 1
|
||||||
|
|
||||||
|
" Haskell options
|
||||||
|
let g:haskell_enable_quantification = 1 " to enable highlighting of `forall`
|
||||||
|
let g:haskell_enable_recursivedo = 1 " to enable highlighting of `mdo` and `rec`
|
||||||
|
let g:haskell_enable_arrowsyntax = 1 " to enable highlighting of `proc`
|
||||||
|
let g:haskell_enable_pattern_synonyms = 1 " to enable highlighting of `pattern`
|
||||||
|
let g:haskell_enable_typeroles = 1 " to enable highlighting of type roles
|
||||||
|
let g:haskell_enable_static_pointers = 1 " to enable highlighting of `static`
|
||||||
|
let g:haskell_backpack = 1 " to enable highlighting of backpack keywords
|
||||||
|
|
||||||
|
" Emmet
|
||||||
|
let g:user_emmet_leader_key='<c-n>'
|
||||||
|
|
||||||
|
" Ack
|
||||||
|
if executable('ag')
|
||||||
|
let g:ackprg = 'ag --vimgrep'
|
||||||
|
endif
|
||||||
|
|
||||||
" nnn
|
" nnn
|
||||||
let g:nnn#command = 'nnn -d -e -H -r'
|
let g:nnn#command = 'nnn -d -e -H -r'
|
||||||
|
|
||||||
nmap - :NnnPicker %<CR>
|
|
||||||
nmap <leader>n :NnnPicker %<CR>
|
|
||||||
nmap <leader>N :NnnPicker<CR>
|
|
||||||
|
|
||||||
lua <<EOF
|
|
||||||
local actions = require("telescope.actions")
|
|
||||||
local telescope = require("telescope")
|
|
||||||
telescope.setup{
|
|
||||||
defaults = {
|
|
||||||
mappings = {
|
|
||||||
n = {
|
|
||||||
["k"] = actions.move_selection_next,
|
|
||||||
["i"] = actions.move_selection_previous,
|
|
||||||
["I"] = actions.move_to_top,
|
|
||||||
["K"] = actions.move_to_bottom,
|
|
||||||
["<C-c>"] = actions.close,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
pickers = {
|
|
||||||
find_files = {
|
|
||||||
-- `hidden = true` will still show the inside of `.git/` as it's not `.gitignore`d.
|
|
||||||
find_command = { "rg", "--files", "--hidden", "--glob", "!**/.git/*" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
extensions = {
|
|
||||||
fzf = {
|
|
||||||
fuzzy = true, -- false will only do exact matching
|
|
||||||
override_generic_sorter = true, -- override the generic sorter
|
|
||||||
override_file_sorter = true, -- override the file sorter
|
|
||||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
telescope.load_extension('fzf')
|
|
||||||
|
|
||||||
local builtin = require('telescope.builtin')
|
|
||||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
|
||||||
vim.keymap.set('n', '<leader>f/', builtin.live_grep, {})
|
|
||||||
vim.keymap.set('n', '<leader>f?', builtin.builtin, {})
|
|
||||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
|
||||||
vim.keymap.set('n', '<leader>fr', builtin.command_history, {})
|
|
||||||
vim.keymap.set('n', '<leader>fc', builtin.commands, {})
|
|
||||||
vim.keymap.set('n', '<leader>ft', builtin.treesitter, {})
|
|
||||||
EOF
|
|
||||||
|
|
36
modules/terminal-life/nvim/preview-file.nix
Normal file
36
modules/terminal-life/nvim/preview-file.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
self:
|
||||||
|
with self; ''
|
||||||
|
IFS=':' read -r -a INPUT <<< "$1"
|
||||||
|
FILE=''${INPUT[0]}
|
||||||
|
CENTER=''${INPUT[1]}
|
||||||
|
|
||||||
|
if [[ "$1" =~ ^[A-Za-z]:\\ ]]; then
|
||||||
|
FILE=$FILE:''${INPUT[1]}
|
||||||
|
CENTER=''${INPUT[2]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$CENTER" && ! "$CENTER" =~ ^[0-9] ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
CENTER=''${CENTER/[^0-9]*/}
|
||||||
|
|
||||||
|
FILE="''${FILE/#\~\//$HOME/}"
|
||||||
|
if [ ! -r "$FILE" ]; then
|
||||||
|
echo "File not found ''${FILE}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$CENTER" ]; then
|
||||||
|
CENTER=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec cat "$FILE" \
|
||||||
|
| sed -e '/[#|\/\/ ?]-- copyright/,/[#\/\/]++/c\\' \
|
||||||
|
| ${pkgs.coreutils}/bin/tr -s '\n' \
|
||||||
|
| ${pkgs.bat}/bin/bat \
|
||||||
|
--style="''${BAT_STYLE:-numbers}" \
|
||||||
|
--color=always \
|
||||||
|
--pager=never \
|
||||||
|
--file-name="''$FILE" \
|
||||||
|
--highlight-line=$CENTER
|
||||||
|
''
|
20
modules/terminal-life/nvim/quickfixopenall.vim
Normal file
20
modules/terminal-life/nvim/quickfixopenall.vim
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
"Usage:
|
||||||
|
" 1. Perform a vimgrep search
|
||||||
|
" :vimgrep /def/ *.rb
|
||||||
|
" 2. Issue QuickFixOpenAll command
|
||||||
|
" :QuickFixOpenAll
|
||||||
|
function! QuickFixOpenAll()
|
||||||
|
if empty(getqflist())
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let s:prev_val = ""
|
||||||
|
for d in getqflist()
|
||||||
|
let s:curr_val = bufname(d.bufnr)
|
||||||
|
if (s:curr_val != s:prev_val)
|
||||||
|
exec "edit " . s:curr_val
|
||||||
|
endif
|
||||||
|
let s:prev_val = s:curr_val
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
command! QuickFixOpenAll call QuickFixOpenAll()
|
|
@ -13,3 +13,20 @@ let g:airline#extensions#tabline#fnamemod = ':t' " Show just the filename
|
||||||
let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
|
let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
|
||||||
let g:airline_powerline_fonts = 1 " Use powerline fonts
|
let g:airline_powerline_fonts = 1 " Use powerline fonts
|
||||||
let g:airline_theme = 'apprentice'
|
let g:airline_theme = 'apprentice'
|
||||||
|
|
||||||
|
" Customize fzf colors to match your color scheme
|
||||||
|
" - fzf#wrap translates this to a set of `--color` options
|
||||||
|
let g:fzf_colors =
|
||||||
|
\ { 'fg': ['fg', 'Normal'],
|
||||||
|
\ 'bg': ['bg', 'Normal'],
|
||||||
|
\ 'hl': ['fg', 'Comment'],
|
||||||
|
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
|
||||||
|
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
|
||||||
|
\ 'hl+': ['fg', 'Statement'],
|
||||||
|
\ 'info': ['fg', 'PreProc'],
|
||||||
|
\ 'border': ['fg', 'Ignore'],
|
||||||
|
\ 'prompt': ['fg', 'Conditional'],
|
||||||
|
\ 'pointer': ['fg', 'Exception'],
|
||||||
|
\ 'marker': ['fg', 'Keyword'],
|
||||||
|
\ 'spinner': ['fg', 'Label'],
|
||||||
|
\ 'header': ['fg', 'Comment'] }
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
[formatter.nix]
|
[formatter.nix]
|
||||||
command = "nix"
|
command = "alejandra"
|
||||||
options = ["fmt"]
|
|
||||||
includes = ["*.nix"]
|
includes = ["*.nix"]
|
||||||
excludes = ["pkgs/_sources/generated.nix"]
|
excludes = ["pkgs/_sources/generated.nix"]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue