mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-03 12:48:27 +00:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9697c200f9 | ||
| fd11f9966b | |||
| 722b3c0cde | |||
| 4fcb9d9741 | |||
| fc232f26f7 | |||
| 8b078309cf | |||
| 5a8f990e52 | |||
| c76c5d08b0 | |||
| b2857e226c | |||
| dfbac0c736 | |||
| fdd713908c | |||
| 60210c9bec | |||
| eaf8d2bdca | |||
| cc00055626 | |||
|
|
567de68844 | ||
|
|
ed0b229757 | ||
| c8b6243c0b | |||
|
|
21a92eb145 | ||
| 8ec317f582 | |||
|
|
42201d8b68 | ||
|
|
0c003ae5b9 | ||
| d383031ec8 | |||
|
|
fa5e5f16da | ||
| f82396236e | |||
| b127c2514d | |||
|
|
b06ac3bc0f |
4
.github/workflows/pre-commit-autoupdate.yml
vendored
4
.github/workflows/pre-commit-autoupdate.yml
vendored
@@ -12,9 +12,9 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v5.2.0
|
- uses: actions/setup-python@v5.3.0
|
||||||
- run: pip install pre-commit && pre-commit autoupdate
|
- run: pip install pre-commit && pre-commit autoupdate
|
||||||
- uses: peter-evans/create-pull-request@v5
|
- uses: peter-evans/create-pull-request@v7
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
branch: update/pre-commit-hooks
|
branch: update/pre-commit-hooks
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.6.0
|
rev: v5.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
args: [--markdown-linebreak-ext=md]
|
args: [--markdown-linebreak-ext=md]
|
||||||
@@ -40,7 +40,7 @@ repos:
|
|||||||
- id: shellcheck
|
- id: shellcheck
|
||||||
|
|
||||||
- repo: https://github.com/scop/pre-commit-shfmt
|
- repo: https://github.com/scop/pre-commit-shfmt
|
||||||
rev: v3.9.0-1
|
rev: v3.10.0-1
|
||||||
hooks:
|
hooks:
|
||||||
- id: shfmt
|
- id: shfmt
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
python 3.12.7
|
python 3.13.0
|
||||||
nodejs 22.9.0
|
nodejs 22.11.0
|
||||||
|
|||||||
@@ -1,30 +1,28 @@
|
|||||||
asdf-plugin-manager 1.4.0
|
asdf-plugin-manager 1.4.0
|
||||||
nodejs 22.9.0
|
nodejs 23.0.0
|
||||||
golang 1.23.1
|
golang 1.23.2
|
||||||
python 3.12.6
|
python 3.12.7
|
||||||
ruby 3.3.4
|
ruby 3.3.4
|
||||||
rust 1.81.0
|
rust 1.82.0
|
||||||
direnv 2.34.0
|
direnv 2.35.0
|
||||||
fd 10.2.0
|
fd 10.2.0
|
||||||
1password-cli 2.30.0
|
1password-cli 2.30.0
|
||||||
age 1.2.0
|
age 1.2.0
|
||||||
bottom 0.10.2
|
bottom 0.10.2
|
||||||
dotenv-linter 3.3.0
|
dotenv-linter 3.3.0
|
||||||
editorconfig-checker 2.8.0
|
editorconfig-checker 2.8.0
|
||||||
github-cli 2.57.0
|
github-cli 2.59.0
|
||||||
hadolint 2.12.0
|
hadolint 2.12.0
|
||||||
kubectl 1.31.1
|
kubectl 1.31.1
|
||||||
pipx 1.7.1
|
pipx 1.7.1
|
||||||
pre-commit 3.8.0
|
pre-commit 4.0.1
|
||||||
ripgrep 14.1.1
|
ripgrep 14.1.1
|
||||||
shellcheck 0.10.0
|
shellcheck 0.10.0
|
||||||
shfmt 3.9.0
|
shfmt 3.9.0
|
||||||
terragrunt 0.67.10
|
terragrunt 0.67.15
|
||||||
tf-summarize 0.3.10
|
tf-summarize 0.3.11
|
||||||
yamllint 1.35.1
|
yamllint 1.35.1
|
||||||
yq 4.44.3
|
yq 4.44.3
|
||||||
bats 1.11.0
|
bats 1.11.0
|
||||||
gitleaks 8.18.4
|
gitleaks 8.18.4
|
||||||
delta 0.18.1
|
delta 0.18.1
|
||||||
sops 3.9.0
|
|
||||||
eza system
|
|
||||||
|
|||||||
@@ -21,3 +21,5 @@ bob-nvim
|
|||||||
bottom
|
bottom
|
||||||
// A modern alternative to ls
|
// A modern alternative to ls
|
||||||
eza
|
eza
|
||||||
|
// Tmux Sessionizer: A tool for opening git repositories as tmux sessions
|
||||||
|
tmux-sessionizer
|
||||||
|
|||||||
@@ -1,26 +1,29 @@
|
|||||||
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
||||||
age https://github.com/threkk/asdf-age.git 4df80a0
|
age https://github.com/threkk/asdf-age.git 396bdf6
|
||||||
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git ecd1642
|
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git c721275
|
||||||
bottom https://github.com/carbonteq/asdf-btm.git fd8a55a
|
bats https://github.com/timgluz/asdf-bats.git 299551f
|
||||||
direnv https://github.com/asdf-community/asdf-direnv.git a2219c2
|
bottom https://github.com/carbonteq/asdf-btm.git fd8a55a
|
||||||
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
delta https://github.com/andweeb/asdf-delta.git 501318b
|
||||||
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
direnv https://github.com/asdf-community/asdf-direnv.git 6ff3dbe
|
||||||
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
||||||
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
||||||
golang https://github.com/asdf-community/asdf-golang.git 0e86b1d
|
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
||||||
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
|
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
||||||
kubectl https://github.com/asdf-community/asdf-kubectl.git cbe6df4
|
gitleaks https://github.com/jmcvetta/asdf-gitleaks.git 0cc0d7e
|
||||||
lazygit https://github.com/nklmilojevic/asdf-lazygit.git 78e04f1
|
golang https://github.com/asdf-community/asdf-golang.git e2527a3
|
||||||
nodejs https://github.com/asdf-vm/asdf-nodejs.git c5b7c40
|
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
|
||||||
pipx https://github.com/yozachar/asdf-pipx.git 31db618
|
kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
|
||||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
nodejs https://github.com/asdf-vm/asdf-nodejs.git c36e6f0
|
||||||
python https://github.com/asdf-community/asdf-python 7b0af87
|
php https://github.com/asdf-community/asdf-php.git 52c669a
|
||||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
pipx https://github.com/yozachar/asdf-pipx.git 31db618
|
||||||
ruby https://github.com/asdf-vm/asdf-ruby.git 27f78c9
|
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||||
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
python https://github.com/asdf-community/asdf-python a3a0185
|
||||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 780d78d
|
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
ruby https://github.com/asdf-vm/asdf-ruby.git e955978
|
||||||
terragrunt https://github.com/ohmer/asdf-terragrunt.git 4a6651a
|
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
||||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
shellcheck https://github.com/luizm/asdf-shellcheck.git 66200ff
|
||||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git 2f4fd4c
|
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
terragrunt https://github.com/ohmer/asdf-terragrunt.git 4a6651a
|
||||||
|
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||||
|
yamllint https://github.com/ericcornelissen/asdf-yamllint.git 2f825d9
|
||||||
|
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
[global]
|
[global]
|
||||||
disable_stdin = true
|
disable_stdin = false
|
||||||
load_dotenv = true
|
load_dotenv = true
|
||||||
hide_env_diff = true
|
hide_env_diff = false
|
||||||
|
|
||||||
[whitelist]
|
[whitelist]
|
||||||
prefix = [
|
prefix = [
|
||||||
"~/Code/ivuorinen/"
|
"~/Code/"
|
||||||
]
|
]
|
||||||
exact = [
|
exact = [
|
||||||
"~/.dotfiles/.envrc"
|
"~/.dotfiles/.envrc"
|
||||||
|
|||||||
@@ -25,12 +25,11 @@ fi
|
|||||||
# Load asdf
|
# Load asdf
|
||||||
export ASDF_DIR="$XDG_BIN_HOME/asdf"
|
export ASDF_DIR="$XDG_BIN_HOME/asdf"
|
||||||
if [[ -d $ASDF_DIR ]]; then
|
if [[ -d $ASDF_DIR ]]; then
|
||||||
[[ -d $ASDF_DIR/bin ]] && x-path-prepend "$ASDF_DIR/bin"
|
|
||||||
[[ -d $ASDF_DIR/shims ]] && x-path-prepend "$ASDF_DIR/shims"
|
|
||||||
[[ -d $ASDF_DIR/completions ]] && fpath=("$ASDF_DIR/completions" $fpath)
|
[[ -d $ASDF_DIR/completions ]] && fpath=("$ASDF_DIR/completions" $fpath)
|
||||||
[[ -d $ASDF_DIR/plugins ]] && fpath=("$ASDF_DIR/plugins" $fpath)
|
[[ -d $ASDF_DIR/plugins ]] && fpath=("$ASDF_DIR/plugins" $fpath)
|
||||||
source "$ASDF_DIR/asdf.sh"
|
source "$ASDF_DIR/asdf.sh"
|
||||||
fi
|
fi
|
||||||
|
export PATH="$ASDF_DIR/bin:$ASDF_DIR/shims:$PATH"
|
||||||
|
|
||||||
if ! command -v msg &> /dev/null; then
|
if ! command -v msg &> /dev/null; then
|
||||||
# Function to print messages if VERBOSE is enabled
|
# Function to print messages if VERBOSE is enabled
|
||||||
@@ -400,6 +399,9 @@ x-dc "$DOCKER_CONFIG"
|
|||||||
# Docker: Disable snyk ad
|
# Docker: Disable snyk ad
|
||||||
export DOCKER_SCAN_SUGGEST=false
|
export DOCKER_SCAN_SUGGEST=false
|
||||||
|
|
||||||
|
# fzf
|
||||||
|
export FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
|
||||||
|
|
||||||
# GnuPG
|
# GnuPG
|
||||||
# https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html
|
# https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html
|
||||||
msg "Setting up GnuPG configuration"
|
msg "Setting up GnuPG configuration"
|
||||||
|
|||||||
@@ -12,10 +12,19 @@ return {
|
|||||||
-- ── LuaSnip Dependencies ────────────────────────────────────────────
|
-- ── LuaSnip Dependencies ────────────────────────────────────────────
|
||||||
-- Snippet Engine for Neovim written in Lua.
|
-- Snippet Engine for Neovim written in Lua.
|
||||||
-- https://github.com/L3MON4D3/LuaSnip
|
-- https://github.com/L3MON4D3/LuaSnip
|
||||||
{ 'L3MON4D3/LuaSnip', build = 'make install_jsregexp' },
|
{
|
||||||
-- luasnip completion source for nvim-cmp
|
'L3MON4D3/LuaSnip',
|
||||||
-- https://github.com/saadparwaiz1/cmp_luasnip
|
version = '*',
|
||||||
{ 'saadparwaiz1/cmp_luasnip' },
|
event = 'BufReadPre',
|
||||||
|
build = 'make install_jsregexp',
|
||||||
|
dependencies = {
|
||||||
|
-- luasnip completion source for nvim-cmp
|
||||||
|
-- https://github.com/saadparwaiz1/cmp_luasnip
|
||||||
|
'saadparwaiz1/cmp_luasnip',
|
||||||
|
'rafamadriz/friendly-snippets',
|
||||||
|
'molleweide/LuaSnip-snippets.nvim',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- ── Adds other completion capabilities. ─────────────────────────────
|
-- ── Adds other completion capabilities. ─────────────────────────────
|
||||||
-- ── nvim-cmp does not ship with all sources by default.
|
-- ── nvim-cmp does not ship with all sources by default.
|
||||||
@@ -23,9 +32,25 @@ return {
|
|||||||
{ 'hrsh7th/cmp-nvim-lsp' },
|
{ 'hrsh7th/cmp-nvim-lsp' },
|
||||||
{ 'hrsh7th/cmp-buffer' },
|
{ 'hrsh7th/cmp-buffer' },
|
||||||
{ 'hrsh7th/cmp-path' },
|
{ 'hrsh7th/cmp-path' },
|
||||||
|
{ 'hrsh7th/cmp-nvim-lsp-signature-help' },
|
||||||
|
{ 'hrsh7th/cmp-emoji' },
|
||||||
|
{ 'hrsh7th/cmp-cmdline' },
|
||||||
-- cmp import and use all environment variables from .env.* and system
|
-- cmp import and use all environment variables from .env.* and system
|
||||||
-- https://github.com/SergioRibera/cmp-dotenv
|
-- https://github.com/SergioRibera/cmp-dotenv
|
||||||
{ 'SergioRibera/cmp-dotenv' },
|
{ 'SergioRibera/cmp-dotenv' },
|
||||||
|
-- A dictionary completion source for nvim-cmp
|
||||||
|
-- https://github.com/uga-rosa/cmp-dictionary
|
||||||
|
{ 'uga-rosa/cmp-dictionary' },
|
||||||
|
-- An additional source for nvim-cmp to autocomplete packages and its versions
|
||||||
|
-- https://github.com/David-Kunz/cmp-npm
|
||||||
|
{
|
||||||
|
'David-Kunz/cmp-npm',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
ft = 'json',
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
-- https://github.com/chrisgrieser/cmp-nerdfont
|
||||||
|
{ 'chrisgrieser/cmp-nerdfont' },
|
||||||
|
|
||||||
-- ── Other deps ──────────────────────────────────────────────────────
|
-- ── Other deps ──────────────────────────────────────────────────────
|
||||||
-- vscode-like pictograms for neovim lsp completion items
|
-- vscode-like pictograms for neovim lsp completion items
|
||||||
@@ -63,8 +88,16 @@ return {
|
|||||||
local luasnip = require 'luasnip'
|
local luasnip = require 'luasnip'
|
||||||
local lspkind = require 'lspkind'
|
local lspkind = require 'lspkind'
|
||||||
luasnip.config.setup {}
|
luasnip.config.setup {}
|
||||||
|
luasnip.snippets = require('luasnip_snippets').load_snippets()
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
|
||||||
require('copilot_cmp').setup()
|
require('copilot_cmp').setup()
|
||||||
|
|
||||||
|
require('cmp_dictionary').setup {
|
||||||
|
paths = { '/usr/share/dict/words' },
|
||||||
|
exact_length = 2,
|
||||||
|
}
|
||||||
|
|
||||||
local has_words_before = function()
|
local has_words_before = function()
|
||||||
if vim.api.nvim_get_option_value('buftype', {}) == 'prompt' then
|
if vim.api.nvim_get_option_value('buftype', {}) == 'prompt' then
|
||||||
return false
|
return false
|
||||||
@@ -90,12 +123,16 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered(),
|
||||||
|
documentation = cmp.config.window.bordered(),
|
||||||
|
},
|
||||||
view = {
|
view = {
|
||||||
width = function(_, _) return math.min(80, vim.o.columns) end,
|
width = function(_, _) return math.min(80, vim.o.columns) end,
|
||||||
entries = {
|
-- entries = {
|
||||||
name = 'custom',
|
-- name = 'custom',
|
||||||
selection_order = 'near_cursor',
|
-- selection_order = 'near_cursor',
|
||||||
},
|
-- },
|
||||||
},
|
},
|
||||||
snippet = {
|
snippet = {
|
||||||
expand = function(args) luasnip.lsp_expand(args.body) end,
|
expand = function(args) luasnip.lsp_expand(args.body) end,
|
||||||
@@ -131,14 +168,20 @@ return {
|
|||||||
end, { 'i', 's' }),
|
end, { 'i', 's' }),
|
||||||
},
|
},
|
||||||
sources = {
|
sources = {
|
||||||
|
-- function arg popups while typing
|
||||||
|
{ name = 'nvim_lsp_signature_help', group_index = 2 },
|
||||||
|
|
||||||
-- Copilot Source
|
-- Copilot Source
|
||||||
{ name = 'copilot', group_index = 2 },
|
{ name = 'copilot', group_index = 2 },
|
||||||
-- Other Sources
|
-- Other Sources
|
||||||
|
{ name = 'dictionary', keyword_length = 2, group_index = 2 },
|
||||||
|
{ name = 'npm', keyword_length = 4, group_index = 2 },
|
||||||
{ name = 'nvim_lsp', group_index = 2 },
|
{ name = 'nvim_lsp', group_index = 2 },
|
||||||
{ name = 'path', group_index = 2 },
|
|
||||||
{ name = 'luasnip', group_index = 2 },
|
{ name = 'luasnip', group_index = 2 },
|
||||||
{ name = 'buffer', group_index = 2 },
|
|
||||||
{ name = 'dotenv', group_index = 2 },
|
{ name = 'dotenv', group_index = 2 },
|
||||||
|
{ name = 'path', group_index = 2 },
|
||||||
|
{ name = 'emoji', group_index = 2 },
|
||||||
|
{ name = 'nerdfont', group_index = 2 },
|
||||||
},
|
},
|
||||||
sorting = {
|
sorting = {
|
||||||
priority_weight = 2,
|
priority_weight = 2,
|
||||||
@@ -147,7 +190,7 @@ return {
|
|||||||
|
|
||||||
-- Below is the default comparator list and order for nvim-cmp
|
-- Below is the default comparator list and order for nvim-cmp
|
||||||
cmp.config.compare.offset,
|
cmp.config.compare.offset,
|
||||||
-- cmp.config.compare.scopes, --this is commented in nvim-cmp too
|
cmp.config.compare.scopes, --this is commented in nvim-cmp too
|
||||||
cmp.config.compare.exact,
|
cmp.config.compare.exact,
|
||||||
cmp.config.compare.score,
|
cmp.config.compare.score,
|
||||||
cmp.config.compare.recently_used,
|
cmp.config.compare.recently_used,
|
||||||
@@ -159,6 +202,34 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmp.setup.cmdline({ '/', '?' }, {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = {
|
||||||
|
{ name = 'buffer' },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'path' },
|
||||||
|
}, {
|
||||||
|
{ name = 'cmdline' },
|
||||||
|
}),
|
||||||
|
matching = { disallow_symbol_nonprefix_matching = false },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- Luasnip choice node completion source for nvim-cmp
|
||||||
|
-- https://github.com/doxnit/cmp-luasnip-choice
|
||||||
|
{
|
||||||
|
'doxnit/cmp-luasnip-choice',
|
||||||
|
config = function()
|
||||||
|
require('cmp_luasnip_choice').setup {
|
||||||
|
auto_open = true, -- Automatically open nvim-cmp on choice node (default: true)
|
||||||
|
}
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
9
config/nvim/lua/plugins/comment.lua
Normal file
9
config/nvim/lua/plugins/comment.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
-- Commenting
|
||||||
|
-- "gc" to comment visual regions/lines
|
||||||
|
-- https://github.com/numToStr/Comment.nvim
|
||||||
|
return {
|
||||||
|
'numToStr/Comment.nvim',
|
||||||
|
version = '*',
|
||||||
|
event = { 'BufRead', 'BufNewFile' },
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
84
config/nvim/lua/plugins/conform.lua
Normal file
84
config/nvim/lua/plugins/conform.lua
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
-- ── Formatting ──────────────────────────────────────────────────────
|
||||||
|
-- Lightweight yet powerful formatter plugin for Neovim
|
||||||
|
-- https://github.com/stevearc/conform.nvim
|
||||||
|
return {
|
||||||
|
'stevearc/conform.nvim',
|
||||||
|
event = { 'BufWritePre' },
|
||||||
|
cmd = { 'ConformInfo' },
|
||||||
|
config = function()
|
||||||
|
-- Select first conform formatter that is available
|
||||||
|
---@param bufnr integer
|
||||||
|
---@param ... string
|
||||||
|
---@return string
|
||||||
|
local function first(bufnr, ...)
|
||||||
|
local conform = require 'conform'
|
||||||
|
for i = 1, select('#', ...) do
|
||||||
|
local formatter = select(i, ...)
|
||||||
|
if conform.get_formatter_info(formatter, bufnr).available then
|
||||||
|
return formatter
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return select(1, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
require('conform').setup {
|
||||||
|
-- Enable or disable logging
|
||||||
|
notify_on_error = true,
|
||||||
|
-- Set the default formatter for all filetypes
|
||||||
|
default_formatter = 'injected',
|
||||||
|
-- Set the default formatter for all filetypes
|
||||||
|
default_formatter_opts = {
|
||||||
|
lsp_format = 'fallback',
|
||||||
|
-- Set the default formatter for all filetypes
|
||||||
|
-- formatter = 'injected',
|
||||||
|
-- Set the default formatter for all filetypes
|
||||||
|
-- formatter_opts = {},
|
||||||
|
},
|
||||||
|
formatters_by_ft = {
|
||||||
|
markdown = function(bufnr)
|
||||||
|
return { first(bufnr, 'prettierd', 'prettier'), 'injected' }
|
||||||
|
end,
|
||||||
|
javascript = function(bufnr)
|
||||||
|
return { first(bufnr, 'prettier', 'eslint'), 'injected' }
|
||||||
|
end,
|
||||||
|
lua = { 'stylua' },
|
||||||
|
-- Conform will run multiple formatters sequentially
|
||||||
|
-- python = { 'isort', 'black', lsp_format = 'fallback' },
|
||||||
|
-- You can customize some of the format options for the filetype (:help conform.format)
|
||||||
|
-- rust = { 'rustfmt', lsp_format = 'fallback' },
|
||||||
|
},
|
||||||
|
format_on_save = function(bufnr)
|
||||||
|
-- Disable autoformat on certain filetypes
|
||||||
|
local ignore_filetypes = {
|
||||||
|
'c',
|
||||||
|
'cpp',
|
||||||
|
'sql',
|
||||||
|
'java',
|
||||||
|
}
|
||||||
|
if vim.tbl_contains(ignore_filetypes, vim.bo[bufnr].filetype) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Disable with a global or buffer-local variable
|
||||||
|
if
|
||||||
|
vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat
|
||||||
|
then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Disable autoformat for files in a certain path
|
||||||
|
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
if bufname:match '/node_modules/' then return end
|
||||||
|
if bufname:match '/vendor/' then return end
|
||||||
|
if bufname:match '/dist/' then return end
|
||||||
|
if bufname:match '/build/' then return end
|
||||||
|
|
||||||
|
return { timeout_ms = 500, lsp_format = 'fallback' }
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
init = function()
|
||||||
|
-- If you want the formatexpr, here is the place to set it
|
||||||
|
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||||
|
end,
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
39
config/nvim/lua/plugins/flash.lua
Normal file
39
config/nvim/lua/plugins/flash.lua
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
return {
|
||||||
|
'folke/flash.nvim',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
opts = {},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'zk',
|
||||||
|
mode = { 'n', 'x', 'o' },
|
||||||
|
function() require('flash').jump() end,
|
||||||
|
desc = 'Flash',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'Zk',
|
||||||
|
mode = { 'n', 'x', 'o' },
|
||||||
|
function() require('flash').treesitter() end,
|
||||||
|
desc = 'Flash Treesitter',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'r',
|
||||||
|
mode = 'o',
|
||||||
|
function() require('flash').remote() end,
|
||||||
|
desc = 'Remote Flash',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'R',
|
||||||
|
mode = { 'o', 'x' },
|
||||||
|
function() require('flash').treesitter_search() end,
|
||||||
|
desc = 'Treesitter Search',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<m-s>',
|
||||||
|
mode = { 'c' },
|
||||||
|
function() require('flash').toggle() end,
|
||||||
|
desc = 'Toggle Flash Search',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
47
config/nvim/lua/plugins/harpoon.lua
Normal file
47
config/nvim/lua/plugins/harpoon.lua
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
-- Getting you where you want with the fewest keystrokes.
|
||||||
|
-- https://github.com/ThePrimeagen/harpoon
|
||||||
|
return {
|
||||||
|
'ThePrimeagen/harpoon',
|
||||||
|
branch = 'harpoon2',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'nvim-telescope/telescope.nvim',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local harpoon = require 'harpoon'
|
||||||
|
harpoon:setup {}
|
||||||
|
|
||||||
|
-- basic telescope configuration
|
||||||
|
local conf = require('telescope.config').values
|
||||||
|
local function toggle_telescope(harpoon_files)
|
||||||
|
local file_paths = {}
|
||||||
|
for _, item in ipairs(harpoon_files.items) do
|
||||||
|
table.insert(file_paths, item.value)
|
||||||
|
end
|
||||||
|
|
||||||
|
require('telescope.pickers')
|
||||||
|
.new({}, {
|
||||||
|
prompt_title = 'Harpoon',
|
||||||
|
finder = require('telescope.finders').new_table {
|
||||||
|
results = file_paths,
|
||||||
|
},
|
||||||
|
previewer = conf.file_previewer {},
|
||||||
|
sorter = conf.generic_sorter {},
|
||||||
|
})
|
||||||
|
:find()
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'<leader>hw',
|
||||||
|
function() toggle_telescope(harpoon:list()) end,
|
||||||
|
{ desc = 'Open harpoon window with telescope' }
|
||||||
|
)
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'<leader>ht',
|
||||||
|
function() harpoon.ui:toggle_quick_menu(harpoon:list()) end,
|
||||||
|
{ desc = 'Open Harpoon Quick menu' }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
return {
|
|
||||||
|
|
||||||
-- A better annotation generator.
|
|
||||||
-- Supports multiple languages and annotation conventions.
|
|
||||||
-- https://github.com/danymat/neogen
|
|
||||||
{
|
|
||||||
'danymat/neogen',
|
|
||||||
version = '*',
|
|
||||||
opts = { enabled = true, snippet_engine = 'luasnip' },
|
|
||||||
},
|
|
||||||
|
|
||||||
-- The Refactoring library based off the Refactoring book by Martin Fowler
|
|
||||||
-- https://github.com/ThePrimeagen/refactoring.nvim
|
|
||||||
{
|
|
||||||
'ThePrimeagen/refactoring.nvim',
|
|
||||||
version = '*',
|
|
||||||
dependencies = { 'nvim-lua/plenary.nvim', 'nvim-treesitter/nvim-treesitter' },
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- All the npm/yarn/pnpm commands I don't want to type
|
|
||||||
-- https://github.com/vuki656/package-info.nvim
|
|
||||||
{
|
|
||||||
'vuki656/package-info.nvim',
|
|
||||||
version = '*',
|
|
||||||
dependencies = { 'MunifTanjim/nui.nvim' },
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Add/change/delete surrounding delimiter pairs with ease. Written with ❤️ in Lua.
|
|
||||||
-- https://github.com/kylechui/nvim-surround
|
|
||||||
{
|
|
||||||
'kylechui/nvim-surround',
|
|
||||||
version = '*',
|
|
||||||
event = 'VeryLazy',
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Highlight, list and search todo comments in your projects
|
|
||||||
-- https://github.com/folke/todo-comments.nvim
|
|
||||||
{
|
|
||||||
'folke/todo-comments.nvim',
|
|
||||||
version = '*',
|
|
||||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Commenting
|
|
||||||
-- "gc" to comment visual regions/lines
|
|
||||||
-- https://github.com/numToStr/Comment.nvim
|
|
||||||
{
|
|
||||||
'numToStr/Comment.nvim',
|
|
||||||
version = '*',
|
|
||||||
event = { 'BufRead', 'BufNewFile' },
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Detect tabstop and shiftwidth automatically
|
|
||||||
-- https://github.com/tpope/vim-sleuth
|
|
||||||
{ 'tpope/vim-sleuth' },
|
|
||||||
|
|
||||||
-- Vim plugin for automatic time tracking and metrics
|
|
||||||
-- generated from your programming activity.
|
|
||||||
-- https://github.com/wakatime/vim-wakatime
|
|
||||||
{ 'wakatime/vim-wakatime', lazy = false, enabled = true },
|
|
||||||
}
|
|
||||||
21
config/nvim/lua/plugins/lsp-saga.lua
Normal file
21
config/nvim/lua/plugins/lsp-saga.lua
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
-- improve neovim lsp experience
|
||||||
|
-- https://github.com/nvimdev/lspsaga.nvim
|
||||||
|
-- https://nvimdev.github.io/lspsaga/
|
||||||
|
return {
|
||||||
|
'nvimdev/lspsaga.nvim',
|
||||||
|
event = 'LspAttach',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-treesitter/nvim-treesitter', -- optional
|
||||||
|
'nvim-tree/nvim-web-devicons', -- optional
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
code_action = {
|
||||||
|
show_server_name = true,
|
||||||
|
},
|
||||||
|
diagnostic = {
|
||||||
|
keys = {
|
||||||
|
quit = { 'q', '<ESC>' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,228 +1,47 @@
|
|||||||
-- Quick start configs for Nvim LSP
|
-- ── Mason and LSPConfig integration ────────────────────────────────────
|
||||||
-- https://github.com/neovim/nvim-lspconfig
|
|
||||||
|
-- ── LSP settings. ───────────────────────────────────────────────
|
||||||
|
-- This function gets run when an LSP connects to a particular buffer.
|
||||||
|
|
||||||
|
-- Make runtime files discoverable to the server
|
||||||
|
local runtime_path = vim.split(package.path, ';')
|
||||||
|
table.insert(runtime_path, 'lua/?.lua')
|
||||||
|
table.insert(runtime_path, 'lua/?/init.lua')
|
||||||
|
|
||||||
|
-- nvim-cmp supports additional completion capabilities
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||||
|
-- Tell the server the capability of foldingRange,
|
||||||
|
-- Neovim hasn't added foldingRange to default capabilities, users must add it manually
|
||||||
|
capabilities.textDocument.foldingRange = {
|
||||||
|
dynamicRegistration = true,
|
||||||
|
lineFoldingOnly = true,
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
'neovim/nvim-lspconfig',
|
'folke/neoconf.nvim',
|
||||||
lazy = false,
|
cmd = 'Neoconf',
|
||||||
dependencies = {
|
opts = {},
|
||||||
-- ── Mason and LSPConfig integration ─────────────────────────────────
|
},
|
||||||
-- Automatically install LSPs to stdpath for neovim
|
-- Portable package manager for Neovim that runs everywhere Neovim runs.
|
||||||
|
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
|
||||||
-- Portable package manager for Neovim that runs everywhere Neovim runs.
|
-- https://github.com/williamboman/mason.nvim
|
||||||
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
|
{
|
||||||
-- https://github.com/williamboman/mason.nvim
|
'williamboman/mason.nvim',
|
||||||
{
|
cmd = 'Mason',
|
||||||
'williamboman/mason.nvim',
|
run = ':MasonUpdate',
|
||||||
cmd = 'Mason',
|
opts = {
|
||||||
run = ':MasonUpdate',
|
PATH = 'prepend',
|
||||||
},
|
-- Mason servers to install
|
||||||
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
|
|
||||||
-- https://github.com/williamboman/mason-lspconfig.nvim
|
|
||||||
{ 'williamboman/mason-lspconfig.nvim' },
|
|
||||||
|
|
||||||
-- ── Formatting ──────────────────────────────────────────────────────
|
|
||||||
-- Lightweight yet powerful formatter plugin for Neovim
|
|
||||||
-- https://github.com/stevearc/conform.nvim
|
|
||||||
{
|
|
||||||
'stevearc/conform.nvim',
|
|
||||||
event = { 'BufWritePre' },
|
|
||||||
cmd = { 'ConformInfo' },
|
|
||||||
config = function()
|
|
||||||
-- Select first conform formatter that is available
|
|
||||||
---@param bufnr integer
|
|
||||||
---@param ... string
|
|
||||||
---@return string
|
|
||||||
local function first(bufnr, ...)
|
|
||||||
local conform = require 'conform'
|
|
||||||
for i = 1, select('#', ...) do
|
|
||||||
local formatter = select(i, ...)
|
|
||||||
if conform.get_formatter_info(formatter, bufnr).available then
|
|
||||||
return formatter
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return select(1, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
require('conform').setup {
|
|
||||||
-- Enable or disable logging
|
|
||||||
notify_on_error = true,
|
|
||||||
-- Set the default formatter for all filetypes
|
|
||||||
default_formatter = 'injected',
|
|
||||||
-- Set the default formatter for all filetypes
|
|
||||||
default_formatter_opts = {
|
|
||||||
lsp_format = 'fallback',
|
|
||||||
-- Set the default formatter for all filetypes
|
|
||||||
-- formatter = 'injected',
|
|
||||||
-- Set the default formatter for all filetypes
|
|
||||||
-- formatter_opts = {},
|
|
||||||
},
|
|
||||||
formatters_by_ft = {
|
|
||||||
markdown = function(bufnr)
|
|
||||||
return { first(bufnr, 'prettierd', 'prettier'), 'injected' }
|
|
||||||
end,
|
|
||||||
javascript = function(bufnr)
|
|
||||||
return { first(bufnr, 'prettier', 'eslint'), 'injected' }
|
|
||||||
end,
|
|
||||||
lua = { 'stylua' },
|
|
||||||
-- Conform will run multiple formatters sequentially
|
|
||||||
-- python = { 'isort', 'black', lsp_format = 'fallback' },
|
|
||||||
-- You can customize some of the format options for the filetype (:help conform.format)
|
|
||||||
-- rust = { 'rustfmt', lsp_format = 'fallback' },
|
|
||||||
},
|
|
||||||
format_on_save = function(bufnr)
|
|
||||||
-- Disable autoformat on certain filetypes
|
|
||||||
local ignore_filetypes = {
|
|
||||||
'c',
|
|
||||||
'cpp',
|
|
||||||
'sql',
|
|
||||||
'java',
|
|
||||||
}
|
|
||||||
if vim.tbl_contains(ignore_filetypes, vim.bo[bufnr].filetype) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
-- Disable with a global or buffer-local variable
|
|
||||||
if
|
|
||||||
vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat
|
|
||||||
then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
-- Disable autoformat for files in a certain path
|
|
||||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
|
||||||
if bufname:match '/node_modules/' then return end
|
|
||||||
if bufname:match '/vendor/' then return end
|
|
||||||
if bufname:match '/dist/' then return end
|
|
||||||
if bufname:match '/build/' then return end
|
|
||||||
|
|
||||||
return { timeout_ms = 500, lsp_format = 'fallback' }
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
init = function()
|
|
||||||
-- If you want the formatexpr, here is the place to set it
|
|
||||||
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- ── Misc ────────────────────────────────────────────────────────────
|
|
||||||
-- vscode-like pictograms for neovim lsp completion items
|
|
||||||
-- https://github.com/onsails/lspkind-nvim
|
|
||||||
{ 'onsails/lspkind.nvim' },
|
|
||||||
-- JSON schemas for Neovim
|
|
||||||
-- https://github.com/b0o/SchemaStore.nvim
|
|
||||||
{ 'b0o/schemastore.nvim' },
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
-- ── LSP settings. ───────────────────────────────────────────────────
|
|
||||||
-- This function gets run when an LSP connects to a particular buffer.
|
|
||||||
|
|
||||||
-- Make runtime files discoverable to the server
|
|
||||||
local runtime_path = vim.split(package.path, ';')
|
|
||||||
table.insert(runtime_path, 'lua/?.lua')
|
|
||||||
table.insert(runtime_path, 'lua/?/init.lua')
|
|
||||||
|
|
||||||
-- Generate a command `:Format` local to the LSP buffer
|
|
||||||
--
|
|
||||||
---@param _ nil Skipped
|
|
||||||
---@param bufnr number Buffer number
|
|
||||||
---@output nil
|
|
||||||
local on_attach = function(_, bufnr)
|
|
||||||
-- Create a command `:Format` local to the LSP buffer
|
|
||||||
vim.api.nvim_create_user_command('Format', function(args)
|
|
||||||
local range = nil
|
|
||||||
if args.count ~= -1 then
|
|
||||||
local end_line = vim.api.nvim_buf_get_lines(
|
|
||||||
bufnr,
|
|
||||||
args.line2 - 1,
|
|
||||||
args.line2,
|
|
||||||
true
|
|
||||||
)[1]
|
|
||||||
range = {
|
|
||||||
start = { args.line1, 0 },
|
|
||||||
['end'] = { args.line2, end_line:len() },
|
|
||||||
}
|
|
||||||
end
|
|
||||||
require('conform').format {
|
|
||||||
async = true,
|
|
||||||
lsp_format = 'fallback',
|
|
||||||
range = range,
|
|
||||||
}
|
|
||||||
end, { range = true, desc = 'Format current buffer with LSP' })
|
|
||||||
end
|
|
||||||
|
|
||||||
-- ── Enable the following language servers ───────────────────────────
|
|
||||||
-- :help lspconfig-all for all pre-configured LSPs
|
|
||||||
local servers = {
|
|
||||||
bashls = {}, -- Bash
|
|
||||||
-- csharp_ls = {}, -- C#, requires dotnet executable
|
|
||||||
gopls = {}, -- Go
|
|
||||||
html = {}, -- HTML
|
|
||||||
intelephense = {}, -- PHP
|
|
||||||
tailwindcss = {}, -- Tailwind CSS
|
|
||||||
ts_ls = {}, -- TypeScript
|
|
||||||
volar = {}, -- Vue
|
|
||||||
|
|
||||||
lua_ls = {
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
runtime = {
|
|
||||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT)
|
|
||||||
version = 'LuaJIT',
|
|
||||||
-- Setup your lua path
|
|
||||||
path = runtime_path,
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
globals = { 'vim' },
|
|
||||||
disable = {
|
|
||||||
-- Ignore Lua_LS's noisy `missing-fields` warnings
|
|
||||||
'missing-fields',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
workspace = {
|
|
||||||
library = vim.api.nvim_get_runtime_file('', true),
|
|
||||||
checkThirdParty = false,
|
|
||||||
},
|
|
||||||
-- Do not send telemetry data containing a randomized but unique identifier
|
|
||||||
telemetry = { enable = false },
|
|
||||||
|
|
||||||
completion = {
|
|
||||||
callSnippet = 'Replace',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
jsonls = {
|
|
||||||
settings = {
|
|
||||||
json = {
|
|
||||||
schemas = require('schemastore').json.schemas(),
|
|
||||||
validate = { enable = true },
|
|
||||||
},
|
|
||||||
yaml = {
|
|
||||||
schemaStore = {
|
|
||||||
-- You must disable built-in schemaStore support if you want to use
|
|
||||||
-- this plugin and its advanced options like `ignore`.
|
|
||||||
enable = false,
|
|
||||||
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
|
||||||
url = '',
|
|
||||||
},
|
|
||||||
schemas = require('schemastore').yaml.schemas(),
|
|
||||||
validate = { enable = true },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Mason servers should be it's own variable for mason-nvim-lint
|
|
||||||
-- See: https://mason-registry.dev/registry/list
|
-- See: https://mason-registry.dev/registry/list
|
||||||
local mason_servers = {
|
ensure_installed = {
|
||||||
'bash-language-server',
|
|
||||||
'clang-format',
|
'clang-format',
|
||||||
'codespell',
|
'codespell',
|
||||||
'commitlint',
|
'commitlint',
|
||||||
'diagnostic-languageserver',
|
|
||||||
'editorconfig-checker',
|
'editorconfig-checker',
|
||||||
'fixjson',
|
'fixjson',
|
||||||
'jsonlint',
|
'jsonlint',
|
||||||
'lua-language-server',
|
|
||||||
'luacheck',
|
'luacheck',
|
||||||
'phpcbf',
|
'phpcbf',
|
||||||
'phpcs',
|
'phpcs',
|
||||||
@@ -231,65 +50,184 @@ return {
|
|||||||
'shellcheck',
|
'shellcheck',
|
||||||
'shfmt',
|
'shfmt',
|
||||||
'stylua',
|
'stylua',
|
||||||
'vim-language-server',
|
|
||||||
'vue-language-server',
|
|
||||||
'yamllint',
|
'yamllint',
|
||||||
}
|
},
|
||||||
local ensure_installed = vim.tbl_keys(servers or {})
|
},
|
||||||
vim.list_extend(ensure_installed, mason_servers)
|
},
|
||||||
|
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
|
||||||
-- ── Setup mason so it can manage external tooling ───────────────────
|
-- https://github.com/williamboman/mason-lspconfig.nvim
|
||||||
require('mason').setup {
|
{
|
||||||
ensure_installed = ensure_installed,
|
'williamboman/mason-lspconfig.nvim',
|
||||||
automatic_installation = true,
|
opts = {
|
||||||
}
|
-- ── Enable the following language servers ───────────────────────────
|
||||||
|
-- :help lspconfig-all for all pre-configured LSPs
|
||||||
-- nvim-cmp supports additional completion capabilities
|
ensure_installed = {
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
'bashls',
|
||||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
-- 'csharp_ls',
|
||||||
-- Tell the server the capability of foldingRange,
|
'diagnosticls',
|
||||||
-- Neovim hasn't added foldingRange to default capabilities, users must add it manually
|
'gopls',
|
||||||
capabilities.textDocument.foldingRange = {
|
'html',
|
||||||
dynamicRegistration = true,
|
'intelephense',
|
||||||
lineFoldingOnly = true,
|
'jsonls',
|
||||||
}
|
'lua_ls',
|
||||||
|
'tailwindcss',
|
||||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
'ts_ls',
|
||||||
capabilities.textDocument.completion.completionItem.resolveSupport = {
|
'vimls',
|
||||||
properties = {
|
'volar',
|
||||||
'documentation',
|
},
|
||||||
'detail',
|
automatic_installation = true,
|
||||||
'additionalTextEdits',
|
handlers = {
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local lspconfig_handlers = {
|
|
||||||
-- The first entry (without a key) will be the default handler
|
-- The first entry (without a key) will be the default handler
|
||||||
-- and will be called for each installed server that doesn't have
|
-- and will be called for each installed server that doesn't have
|
||||||
-- a dedicated handler.
|
-- a dedicated handler.
|
||||||
function(server_name) -- default handler (optional)
|
function(server_name) -- default handler (optional)
|
||||||
require('lspconfig')[server_name].setup {
|
require('lspconfig')[server_name].setup {
|
||||||
on_attach = on_attach,
|
on_attach = function(_, bufnr)
|
||||||
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
|
vim.api.nvim_buf_create_user_command(
|
||||||
|
bufnr,
|
||||||
|
'Format',
|
||||||
|
function(_)
|
||||||
|
require('conform').format {
|
||||||
|
formatters = { 'injected' },
|
||||||
|
async = true,
|
||||||
|
lsp_fallback = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
{ desc = 'Format current buffer with LSP' }
|
||||||
|
)
|
||||||
|
end,
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
-- Next, you can provide targeted overrides for specific servers.
|
-- Next, you can provide targeted overrides for specific servers.
|
||||||
['lua_ls'] = function()
|
['lua_ls'] = function()
|
||||||
require('lspconfig')['lua_ls'].setup { settings = servers.lua_ls }
|
require('lspconfig')['lua_ls'].setup {
|
||||||
|
on_attach = function(_, bufnr)
|
||||||
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
|
vim.api.nvim_buf_create_user_command(
|
||||||
|
bufnr,
|
||||||
|
'Format',
|
||||||
|
function(_)
|
||||||
|
require('conform').format {
|
||||||
|
formatters = { 'injected' },
|
||||||
|
async = true,
|
||||||
|
lsp_fallback = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
{ desc = 'Format current buffer with LSP' }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
runtime = {
|
||||||
|
-- Tell the language server which version of Lua you're
|
||||||
|
-- using (most likely LuaJIT)
|
||||||
|
version = 'LuaJIT',
|
||||||
|
-- Setup your lua path
|
||||||
|
path = runtime_path,
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
globals = { 'vim' },
|
||||||
|
disable = {
|
||||||
|
-- Ignore lua_ls noisy `missing-fields` warnings
|
||||||
|
'missing-fields',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
library = vim.api.nvim_get_runtime_file('', true),
|
||||||
|
checkThirdParty = false,
|
||||||
|
},
|
||||||
|
-- Do not send telemetry data containing a randomized
|
||||||
|
-- but unique identifier
|
||||||
|
telemetry = { enable = false },
|
||||||
|
|
||||||
|
completion = {
|
||||||
|
callSnippet = 'Replace',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
end,
|
end,
|
||||||
['jsonls'] = function()
|
['jsonls'] = function()
|
||||||
require('lspconfig')['jsonls'].setup { settings = servers.jsonls }
|
require('lspconfig')['jsonls'].setup {
|
||||||
|
on_attach = function(_, bufnr)
|
||||||
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
|
vim.api.nvim_buf_create_user_command(
|
||||||
|
bufnr,
|
||||||
|
'Format',
|
||||||
|
function(_)
|
||||||
|
require('conform').format {
|
||||||
|
formatters = { 'injected' },
|
||||||
|
async = true,
|
||||||
|
lsp_fallback = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
{ desc = 'Format current buffer with LSP' }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
json = {
|
||||||
|
schemas = require('schemastore').json.schemas(),
|
||||||
|
validate = { enable = true },
|
||||||
|
},
|
||||||
|
yaml = {
|
||||||
|
schemaStore = {
|
||||||
|
-- You must disable built-in SchemaStore support if you want to use
|
||||||
|
-- this plugin and its advanced options like `ignore`.
|
||||||
|
enable = false,
|
||||||
|
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
||||||
|
url = '',
|
||||||
|
},
|
||||||
|
schemas = require('schemastore').yaml.schemas(),
|
||||||
|
validate = { enable = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
end,
|
end,
|
||||||
}
|
['ts_ls'] = function()
|
||||||
|
local mason_registry = require 'mason-registry'
|
||||||
require('mason-lspconfig').setup {
|
local ts_plugin_location = mason_registry
|
||||||
ensure_installed = vim.tbl_keys(servers or {}),
|
.get_package('vue-language-server')
|
||||||
automatic_installation = true,
|
:get_install_path() .. '/node_modules/@vue/typescript-plugin'
|
||||||
handlers = lspconfig_handlers,
|
require('lspconfig')['volar'].setup {
|
||||||
}
|
init_options = {
|
||||||
end,
|
plugins = {
|
||||||
|
{
|
||||||
|
name = '@vue/typescript-plugin',
|
||||||
|
location = ts_plugin_location,
|
||||||
|
languages = { 'javascript', 'typescript', 'vue' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filetypes = {
|
||||||
|
'typescript',
|
||||||
|
'javascript',
|
||||||
|
'javascriptreact',
|
||||||
|
'typescriptreact',
|
||||||
|
'vue',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- ── Misc ───────────────────────────────────────────────────
|
||||||
|
-- vscode-like pictograms for neovim lsp completion items
|
||||||
|
-- https://github.com/onsails/lspkind-nvim
|
||||||
|
{ 'onsails/lspkind.nvim', opts = {} },
|
||||||
|
-- JSON schemas for Neovim
|
||||||
|
-- https://github.com/b0o/SchemaStore.nvim
|
||||||
|
{ 'b0o/schemastore.nvim' },
|
||||||
|
|
||||||
|
-- ── LSP ────────────────────────────────────────────────────
|
||||||
|
-- Quick start configs for Nvim LSP
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig
|
||||||
|
{ 'neovim/nvim-lspconfig', dependencies = { 'folke/neoconf.nvim' } },
|
||||||
|
|
||||||
-- Garbage collector that stops inactive LSP clients to free RAM
|
-- Garbage collector that stops inactive LSP clients to free RAM
|
||||||
-- https://github.com/Zeioth/garbage-day.nvim
|
-- https://github.com/Zeioth/garbage-day.nvim
|
||||||
{
|
{
|
||||||
@@ -298,134 +236,4 @@ return {
|
|||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
opts = {},
|
opts = {},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- improve neovim lsp experience
|
|
||||||
-- https://github.com/nvimdev/lspsaga.nvim
|
|
||||||
-- https://nvimdev.github.io/lspsaga/
|
|
||||||
{
|
|
||||||
'nvimdev/lspsaga.nvim',
|
|
||||||
event = 'LspAttach',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-treesitter/nvim-treesitter', -- optional
|
|
||||||
'nvim-tree/nvim-web-devicons', -- optional
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
code_action = {
|
|
||||||
show_server_name = true,
|
|
||||||
},
|
|
||||||
diagnostic = {
|
|
||||||
keys = {
|
|
||||||
quit = { 'q', '<ESC>' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Not UFO in the sky, but an ultra fold in Neovim.
|
|
||||||
-- https://github.com/kevinhwang91/nvim-ufo/
|
|
||||||
{
|
|
||||||
'kevinhwang91/nvim-ufo',
|
|
||||||
version = '*',
|
|
||||||
dependencies = {
|
|
||||||
{ 'neovim/nvim-lspconfig' },
|
|
||||||
{ 'kevinhwang91/promise-async' },
|
|
||||||
{ 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' },
|
|
||||||
{
|
|
||||||
-- Status column plugin that provides a configurable
|
|
||||||
-- 'statuscolumn' and click handlers.
|
|
||||||
-- https://github.com/luukvbaal/statuscol.nvim
|
|
||||||
'luukvbaal/statuscol.nvim',
|
|
||||||
config = function()
|
|
||||||
local builtin = require 'statuscol.builtin'
|
|
||||||
require('statuscol').setup {
|
|
||||||
relculright = true,
|
|
||||||
segments = {
|
|
||||||
{
|
|
||||||
text = { builtin.foldfunc },
|
|
||||||
click = 'v:lua.ScFa',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
sign = {
|
|
||||||
namespace = { 'diagnostic/signs' },
|
|
||||||
maxwidth = 2,
|
|
||||||
-- auto = true,
|
|
||||||
},
|
|
||||||
click = 'v:lua.ScSa',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text = { builtin.lnumfunc, ' ' },
|
|
||||||
click = 'v:lua.ScLa',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
open_fold_hl_timeout = 150,
|
|
||||||
close_fold_kinds_for_ft = { 'imports', 'comment' },
|
|
||||||
preview = {
|
|
||||||
win_config = {
|
|
||||||
border = { '', '─', '', '', '', '─', '', '' },
|
|
||||||
winhighlight = 'Normal:Folded',
|
|
||||||
winblend = 0,
|
|
||||||
},
|
|
||||||
mappings = {
|
|
||||||
scrollU = '<C-u>',
|
|
||||||
scrollD = '<C-d>',
|
|
||||||
jumpTop = '[',
|
|
||||||
jumpBot = ']',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
|
|
||||||
return { 'treesitter', 'indent' }
|
|
||||||
end,
|
|
||||||
|
|
||||||
-- fold_virt_text_handler
|
|
||||||
--
|
|
||||||
-- This handler is called when the fold text is too long to fit in the window.
|
|
||||||
-- It is expected to truncate the text and return a new list of virtual text.
|
|
||||||
--
|
|
||||||
---@param virtText table The current virtual text list.
|
|
||||||
---@param lnum number The line number of the first line in the fold.
|
|
||||||
---@param endLnum number The line number of the last line in the fold.
|
|
||||||
---@param width number The width of the window.
|
|
||||||
---@param truncate function Truncate function
|
|
||||||
---@return table
|
|
||||||
fold_virt_text_handler = function(
|
|
||||||
virtText,
|
|
||||||
lnum,
|
|
||||||
endLnum,
|
|
||||||
width,
|
|
||||||
truncate
|
|
||||||
)
|
|
||||||
local newVirtText = {}
|
|
||||||
local suffix = (' %d '):format(endLnum - lnum)
|
|
||||||
local sufWidth = vim.fn.strdisplaywidth(suffix)
|
|
||||||
local targetWidth = width - sufWidth
|
|
||||||
local curWidth = 0
|
|
||||||
for _, chunk in ipairs(virtText) do
|
|
||||||
local chunkText = chunk[1]
|
|
||||||
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
|
||||||
if targetWidth > curWidth + chunkWidth then
|
|
||||||
table.insert(newVirtText, chunk)
|
|
||||||
else
|
|
||||||
chunkText = truncate(chunkText, targetWidth - curWidth)
|
|
||||||
local hlGroup = chunk[2]
|
|
||||||
table.insert(newVirtText, { chunkText, hlGroup })
|
|
||||||
chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
|
||||||
-- str width returned from truncate() may less than 2nd argument, need padding
|
|
||||||
if curWidth + chunkWidth < targetWidth then
|
|
||||||
suffix = suffix .. (' '):rep(targetWidth - curWidth - chunkWidth)
|
|
||||||
end
|
|
||||||
break
|
|
||||||
end
|
|
||||||
curWidth = curWidth + chunkWidth
|
|
||||||
end
|
|
||||||
table.insert(newVirtText, { suffix, 'MoreMsg' })
|
|
||||||
return newVirtText
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
8
config/nvim/lua/plugins/neogen.lua
Normal file
8
config/nvim/lua/plugins/neogen.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
-- A better annotation generator.
|
||||||
|
-- Supports multiple languages and annotation conventions.
|
||||||
|
-- https://github.com/danymat/neogen
|
||||||
|
return {
|
||||||
|
'danymat/neogen',
|
||||||
|
version = '*',
|
||||||
|
opts = { enabled = true, snippet_engine = 'luasnip' },
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
-- Highly experimental plugin that completely replaces the UI
|
-- Highly experimental plugin that completely replaces the UI
|
||||||
-- for messages, cmdline and the popupmenu.
|
-- for messages, cmdline and the popupmenu.
|
||||||
-- https://github.com/folke/noice.nvim
|
-- https://github.com/folke/noice.nvim
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'folke/noice.nvim',
|
'folke/noice.nvim',
|
||||||
lazy = false,
|
lazy = false,
|
||||||
@@ -44,6 +43,13 @@ return {
|
|||||||
},
|
},
|
||||||
opts = { skip = true },
|
opts = { skip = true },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
filter = {
|
||||||
|
event = 'notify',
|
||||||
|
find = 'No information available',
|
||||||
|
},
|
||||||
|
opts = { skip = true },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
views = {
|
views = {
|
||||||
cmdline_popup = {
|
cmdline_popup = {
|
||||||
|
|||||||
8
config/nvim/lua/plugins/refactoring.lua
Normal file
8
config/nvim/lua/plugins/refactoring.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
-- The Refactoring library based off the Refactoring book by Martin Fowler
|
||||||
|
-- https://github.com/ThePrimeagen/refactoring.nvim
|
||||||
|
return {
|
||||||
|
'ThePrimeagen/refactoring.nvim',
|
||||||
|
version = '*',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim', 'nvim-treesitter/nvim-treesitter' },
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
8
config/nvim/lua/plugins/surround.lua
Normal file
8
config/nvim/lua/plugins/surround.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
-- Add/change/delete surrounding delimiter pairs with ease.
|
||||||
|
-- https://github.com/kylechui/nvim-surround
|
||||||
|
return {
|
||||||
|
'kylechui/nvim-surround',
|
||||||
|
version = '*',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
@@ -8,58 +8,16 @@ return {
|
|||||||
{ 'nvim-lua/plenary.nvim' },
|
{ 'nvim-lua/plenary.nvim' },
|
||||||
{ 'nvim-telescope/telescope-symbols.nvim' },
|
{ 'nvim-telescope/telescope-symbols.nvim' },
|
||||||
{ 'folke/which-key.nvim' },
|
{ 'folke/which-key.nvim' },
|
||||||
-- Getting you where you want with the fewest keystrokes.
|
|
||||||
-- https://github.com/ThePrimeagen/harpoon
|
|
||||||
{
|
|
||||||
'ThePrimeagen/harpoon',
|
|
||||||
branch = 'harpoon2',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-lua/plenary.nvim',
|
|
||||||
'nvim-telescope/telescope.nvim',
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local harpoon = require 'harpoon'
|
|
||||||
harpoon:setup {}
|
|
||||||
|
|
||||||
-- basic telescope configuration
|
|
||||||
local conf = require('telescope.config').values
|
|
||||||
local function toggle_telescope(harpoon_files)
|
|
||||||
local file_paths = {}
|
|
||||||
for _, item in ipairs(harpoon_files.items) do
|
|
||||||
table.insert(file_paths, item.value)
|
|
||||||
end
|
|
||||||
|
|
||||||
require('telescope.pickers')
|
|
||||||
.new({}, {
|
|
||||||
prompt_title = 'Harpoon',
|
|
||||||
finder = require('telescope.finders').new_table {
|
|
||||||
results = file_paths,
|
|
||||||
},
|
|
||||||
previewer = conf.file_previewer {},
|
|
||||||
sorter = conf.generic_sorter {},
|
|
||||||
})
|
|
||||||
:find()
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set(
|
|
||||||
'n',
|
|
||||||
'<leader>hw',
|
|
||||||
function() toggle_telescope(harpoon:list()) end,
|
|
||||||
{ desc = 'Open harpoon window with telescope' }
|
|
||||||
)
|
|
||||||
vim.keymap.set(
|
|
||||||
'n',
|
|
||||||
'<leader>ht',
|
|
||||||
function() harpoon.ui:toggle_quick_menu(harpoon:list()) end,
|
|
||||||
{ desc = 'Open Harpoon Quick menu' }
|
|
||||||
)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
-- A Telescope picker to quickly access configurations
|
-- A Telescope picker to quickly access configurations
|
||||||
-- of plugins managed by lazy.nvim.
|
-- of plugins managed by lazy.nvim.
|
||||||
-- https://github.com/polirritmico/telescope-lazy-plugins.nvim
|
-- https://github.com/polirritmico/telescope-lazy-plugins.nvim
|
||||||
{ 'polirritmico/telescope-lazy-plugins.nvim' },
|
{ 'polirritmico/telescope-lazy-plugins.nvim' },
|
||||||
|
|
||||||
|
-- Neovim plugin. Telescope.nvim extension that adds LuaSnip integration.
|
||||||
|
-- https://github.com/benfowler/telescope-luasnip.nvim
|
||||||
|
{ 'benfowler/telescope-luasnip.nvim' },
|
||||||
|
|
||||||
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
|
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
|
||||||
-- Only load if `make` is available
|
-- Only load if `make` is available
|
||||||
{
|
{
|
||||||
@@ -67,6 +25,10 @@ return {
|
|||||||
build = 'make',
|
build = 'make',
|
||||||
cond = vim.fn.executable 'make' == 1,
|
cond = vim.fn.executable 'make' == 1,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Import modules with ease
|
||||||
|
-- https://github.com/piersolenski/telescope-import.nvim
|
||||||
|
{ 'piersolenski/telescope-import.nvim' },
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local t = require 'telescope'
|
local t = require 'telescope'
|
||||||
@@ -97,6 +59,23 @@ return {
|
|||||||
-- Must be a valid path to the file containing the lazy spec and setup() call.
|
-- Must be a valid path to the file containing the lazy spec and setup() call.
|
||||||
lazy_config = vim.fn.stdpath 'config' .. '/init.lua',
|
lazy_config = vim.fn.stdpath 'config' .. '/init.lua',
|
||||||
},
|
},
|
||||||
|
import = {
|
||||||
|
-- Imports can be added at a specified line whilst keeping the cursor in place
|
||||||
|
insert_at_top = true,
|
||||||
|
-- Optionally support additional languages or modify existing languages...
|
||||||
|
custom_languages = {
|
||||||
|
{
|
||||||
|
-- The filetypes that ripgrep supports (find these via `rg --type-list`)
|
||||||
|
extensions = { 'js', 'ts' },
|
||||||
|
-- The Vim filetypes
|
||||||
|
filetypes = { 'vue' },
|
||||||
|
-- Optionally set a line other than 1
|
||||||
|
insert_at_line = 2, ---@type function|number
|
||||||
|
-- The regex pattern for the import statement
|
||||||
|
regex = [[^(?:import(?:[\"'\s]*([\w*{}\n, ]+)from\s*)?[\"'\s](.*?)[\"'\s].*)]],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,6 +83,8 @@ return {
|
|||||||
pcall(t.load_extension, 'harpoon')
|
pcall(t.load_extension, 'harpoon')
|
||||||
pcall(t.load_extension, 'git_worktree')
|
pcall(t.load_extension, 'git_worktree')
|
||||||
pcall(t.load_extension, 'lazy_plugins')
|
pcall(t.load_extension, 'lazy_plugins')
|
||||||
|
pcall(t.load_extension, 'luasnip')
|
||||||
|
pcall(t.load_extension, 'import')
|
||||||
|
|
||||||
-- Enable telescope fzf native, if installed
|
-- Enable telescope fzf native, if installed
|
||||||
pcall(t.load_extension, 'fzf')
|
pcall(t.load_extension, 'fzf')
|
||||||
@@ -113,10 +94,12 @@ return {
|
|||||||
-- See `:help telescope.keymap`
|
-- See `:help telescope.keymap`
|
||||||
vim.keymap.set('n', '<leader>/', function()
|
vim.keymap.set('n', '<leader>/', function()
|
||||||
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
||||||
require('telescope.builtin').current_buffer_fuzzy_find(themes.get_dropdown {
|
require('telescope.builtin').current_buffer_fuzzy_find(
|
||||||
winblend = 10,
|
themes.get_dropdown {
|
||||||
previewer = true,
|
winblend = 20,
|
||||||
})
|
previewer = true,
|
||||||
|
}
|
||||||
|
)
|
||||||
end, { desc = '[/] Fuzzily search in current buffer]' })
|
end, { desc = '[/] Fuzzily search in current buffer]' })
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
8
config/nvim/lua/plugins/todo-comments.lua
Normal file
8
config/nvim/lua/plugins/todo-comments.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
-- Highlight, list and search todo comments in your projects
|
||||||
|
-- https://github.com/folke/todo-comments.nvim
|
||||||
|
return {
|
||||||
|
'folke/todo-comments.nvim',
|
||||||
|
version = '*',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
@@ -8,6 +8,9 @@ return {
|
|||||||
end,
|
end,
|
||||||
dependencies = {
|
dependencies = {
|
||||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||||
|
'nvim-treesitter/nvim-treesitter-refactor',
|
||||||
|
'nvim-treesitter/nvim-treesitter-context',
|
||||||
|
'JoosepAlviste/nvim-ts-context-commentstring',
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
require('nvim-treesitter.configs').setup {
|
require('nvim-treesitter.configs').setup {
|
||||||
@@ -47,13 +50,39 @@ return {
|
|||||||
'yaml',
|
'yaml',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
refactor = {
|
||||||
|
navigation = {
|
||||||
|
enable = true,
|
||||||
|
-- Assign keymaps to false to disable them, e.g. `goto_definition = false`.
|
||||||
|
keymaps = {
|
||||||
|
goto_definition = '<leader>gnd',
|
||||||
|
list_definitions = '<leader>gnD',
|
||||||
|
list_definitions_toc = '<leader>gO',
|
||||||
|
goto_next_usage = '<a-*>',
|
||||||
|
goto_previous_usage = '<a-#>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
smart_rename = {
|
||||||
|
enable = true,
|
||||||
|
-- Assign keymaps to false to disable them, e.g. `smart_rename = false`.
|
||||||
|
keymaps = {
|
||||||
|
smart_rename = 'grr',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
highlight_definitions = {
|
||||||
|
enable = true,
|
||||||
|
-- Set to false if you have an `updatetime` of ~100.
|
||||||
|
clear_on_cursor_move = true,
|
||||||
|
},
|
||||||
|
highlight_current_scope = { enable = false },
|
||||||
|
},
|
||||||
highlight = { enable = true },
|
highlight = { enable = true },
|
||||||
indent = { enable = true },
|
indent = { enable = true },
|
||||||
incremental_selection = {
|
incremental_selection = {
|
||||||
enable = true,
|
enable = true,
|
||||||
keymaps = {
|
keymaps = {
|
||||||
init_selection = '<c-space>',
|
init_selection = '<a-space>',
|
||||||
node_incremental = '<c-space>',
|
node_incremental = '<a-space>',
|
||||||
scope_incremental = '<c-s>',
|
scope_incremental = '<c-s>',
|
||||||
node_decremental = '<c-backspace>',
|
node_decremental = '<c-backspace>',
|
||||||
},
|
},
|
||||||
|
|||||||
9
config/nvim/lua/plugins/treesj.lua
Normal file
9
config/nvim/lua/plugins/treesj.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
-- Neovim plugin for splitting/joining blocks of code
|
||||||
|
-- https://github.com/Wansmer/treesj
|
||||||
|
return {
|
||||||
|
'Wansmer/treesj',
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||||
|
opts = {
|
||||||
|
use_default_keymaps = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ return {
|
|||||||
lazy = false,
|
lazy = false,
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
opts = {
|
opts = {
|
||||||
auto_preview = false,
|
auto_preview = true,
|
||||||
auto_fold = true,
|
auto_fold = true,
|
||||||
auto_close = true,
|
auto_close = true,
|
||||||
use_lsp_diagnostic_signs = true,
|
use_lsp_diagnostic_signs = true,
|
||||||
|
|||||||
116
config/nvim/lua/plugins/ufo.lua
Normal file
116
config/nvim/lua/plugins/ufo.lua
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
-- Not UFO in the sky, but an ultra fold in Neovim.
|
||||||
|
-- https://github.com/kevinhwang91/nvim-ufo/
|
||||||
|
return {
|
||||||
|
'kevinhwang91/nvim-ufo',
|
||||||
|
version = '*',
|
||||||
|
dependencies = {
|
||||||
|
{ 'neovim/nvim-lspconfig' },
|
||||||
|
{ 'kevinhwang91/promise-async' },
|
||||||
|
{ 'nvim-treesitter/nvim-treesitter' },
|
||||||
|
{
|
||||||
|
-- Status column plugin that provides a configurable
|
||||||
|
-- 'statuscolumn' and click handlers.
|
||||||
|
-- https://github.com/luukvbaal/statuscol.nvim
|
||||||
|
'luukvbaal/statuscol.nvim',
|
||||||
|
config = function()
|
||||||
|
local builtin = require 'statuscol.builtin'
|
||||||
|
require('statuscol').setup {
|
||||||
|
relculright = true,
|
||||||
|
segments = {
|
||||||
|
{
|
||||||
|
text = { builtin.foldfunc },
|
||||||
|
click = 'v:lua.ScFa',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sign = {
|
||||||
|
namespace = { 'diagnostic/signs' },
|
||||||
|
maxwidth = 2,
|
||||||
|
-- auto = true,
|
||||||
|
},
|
||||||
|
click = 'v:lua.ScSa',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text = { builtin.lnumfunc, ' ' },
|
||||||
|
click = 'v:lua.ScLa',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities.textDocument.foldingRange = {
|
||||||
|
dynamicRegistration = false,
|
||||||
|
lineFoldingOnly = true,
|
||||||
|
}
|
||||||
|
local language_servers = require('lspconfig').util.available_servers() -- or list servers manually like {'gopls', 'clangd'}
|
||||||
|
for _, ls in ipairs(language_servers) do
|
||||||
|
require('lspconfig')[ls].setup {
|
||||||
|
capabilities = capabilities,
|
||||||
|
-- you can add other fields for setting up lsp server in this table
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
require('ufo').setup {
|
||||||
|
open_fold_hl_timeout = 150,
|
||||||
|
close_fold_kinds_for_ft = { 'imports', 'comment' },
|
||||||
|
preview = {
|
||||||
|
win_config = {
|
||||||
|
border = { '', '─', '', '', '', '─', '', '' },
|
||||||
|
winhighlight = 'Normal:Folded',
|
||||||
|
winblend = 0,
|
||||||
|
},
|
||||||
|
mappings = {
|
||||||
|
scrollU = '<C-u>',
|
||||||
|
scrollD = '<C-d>',
|
||||||
|
jumpTop = '[',
|
||||||
|
jumpBot = ']',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
|
||||||
|
return { 'treesitter', 'indent' }
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- fold_virt_text_handler
|
||||||
|
--
|
||||||
|
-- This handler is called when the fold text is too long to fit in the window.
|
||||||
|
-- It is expected to truncate the text and return a new list of virtual text.
|
||||||
|
--
|
||||||
|
---@param virtText table The current virtual text list.
|
||||||
|
---@param lnum number The line number of the first line in the fold.
|
||||||
|
---@param endLnum number The line number of the last line in the fold.
|
||||||
|
---@param width number The width of the window.
|
||||||
|
---@param truncate function Truncate function
|
||||||
|
---@return table
|
||||||
|
fold_virt_text_handler = function(virtText, lnum, endLnum, width, truncate)
|
||||||
|
local newVirtText = {}
|
||||||
|
local suffix = (' %d '):format(endLnum - lnum)
|
||||||
|
local sufWidth = vim.fn.strdisplaywidth(suffix)
|
||||||
|
local targetWidth = width - sufWidth
|
||||||
|
local curWidth = 0
|
||||||
|
for _, chunk in ipairs(virtText) do
|
||||||
|
local chunkText = chunk[1]
|
||||||
|
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||||
|
if targetWidth > curWidth + chunkWidth then
|
||||||
|
table.insert(newVirtText, chunk)
|
||||||
|
else
|
||||||
|
chunkText = truncate(chunkText, targetWidth - curWidth)
|
||||||
|
local hlGroup = chunk[2]
|
||||||
|
table.insert(newVirtText, { chunkText, hlGroup })
|
||||||
|
chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||||
|
-- str width returned from truncate() may less than 2nd argument, need padding
|
||||||
|
if curWidth + chunkWidth < targetWidth then
|
||||||
|
suffix = suffix .. (' '):rep(targetWidth - curWidth - chunkWidth)
|
||||||
|
end
|
||||||
|
break
|
||||||
|
end
|
||||||
|
curWidth = curWidth + chunkWidth
|
||||||
|
end
|
||||||
|
table.insert(newVirtText, { suffix, 'MoreMsg' })
|
||||||
|
return newVirtText
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -27,6 +27,10 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Extensible Neovim Scrollbar
|
||||||
|
-- https://github.com/petertriho/nvim-scrollbar
|
||||||
|
{ 'petertriho/nvim-scrollbar', opts = {} },
|
||||||
|
|
||||||
-- vim dashboard
|
-- vim dashboard
|
||||||
-- https://github.com/nvimdev/dashboard-nvim
|
-- https://github.com/nvimdev/dashboard-nvim
|
||||||
{
|
{
|
||||||
@@ -78,6 +82,13 @@ return {
|
|||||||
action = 'Lazy update',
|
action = 'Lazy update',
|
||||||
key = 'u',
|
key = 'u',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
icon = '☉ ',
|
||||||
|
desc = 'Quit',
|
||||||
|
group = 'DiagnosticError',
|
||||||
|
action = 'q',
|
||||||
|
key = 'q',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
3
config/nvim/lua/plugins/vim-sleuth.lua
Normal file
3
config/nvim/lua/plugins/vim-sleuth.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
-- Detect tabstop and shiftwidth automatically
|
||||||
|
-- https://github.com/tpope/vim-sleuth
|
||||||
|
return { 'tpope/vim-sleuth' }
|
||||||
4
config/nvim/lua/plugins/wakatime.lua
Normal file
4
config/nvim/lua/plugins/wakatime.lua
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
-- Vim plugin for automatic time tracking and metrics
|
||||||
|
-- generated from your programming activity.
|
||||||
|
-- https://github.com/wakatime/vim-wakatime
|
||||||
|
return { 'wakatime/vim-wakatime', lazy = false, enabled = true }
|
||||||
@@ -22,10 +22,8 @@ return {
|
|||||||
{
|
{
|
||||||
'<leader>b',
|
'<leader>b',
|
||||||
group = '[b] Buffer',
|
group = '[b] Buffer',
|
||||||
expand = function()
|
-- Add the current buffers to the menu
|
||||||
-- Add the current buffers to the menu
|
expand = function() return require('which-key.extras').expand.buf() end,
|
||||||
return require('which-key.extras').expand.buf()
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ '<leader>bk', '<cmd>blast<cr>', desc = 'Buffer: Last' },
|
{ '<leader>bk', '<cmd>blast<cr>', desc = 'Buffer: Last' },
|
||||||
@@ -39,55 +37,30 @@ return {
|
|||||||
-- ── Code ────────────────────────────────────────────────────────────
|
-- ── Code ────────────────────────────────────────────────────────────
|
||||||
{ '<leader>c', group = '[c] Code' },
|
{ '<leader>c', group = '[c] Code' },
|
||||||
{
|
{
|
||||||
{
|
'<leader>ca',
|
||||||
'<leader>ca',
|
'<cmd>lua vim.lsp.buf.code_action()<CR>',
|
||||||
'<cmd>lua vim.lsp.buf.code_action()<CR>',
|
desc = 'LSP: Code Action',
|
||||||
desc = 'LSP: Code Action',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>cg',
|
|
||||||
'<cmd>lua require("neogen").generate()<CR>',
|
|
||||||
desc = 'Generate annotations',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'<leader>cg',
|
||||||
|
'<cmd>lua require("neogen").generate()<CR>',
|
||||||
|
desc = 'Generate annotations',
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Code: treesj
|
||||||
|
{ '<leader>cc', group = 'Code Split/Join' },
|
||||||
|
-- see: lua/plugins/treesj.lua
|
||||||
|
{ '<leader>cct', '<cmd>TSJToggle<CR>', desc = 'Split/Join: Toggle' },
|
||||||
|
{ '<leader>ccs', '<cmd>TSJSplit<CR>', desc = 'Split/Join: Split' },
|
||||||
|
{ '<leader>ccj', '<cmd>TSJJoin<CR>', desc = 'Split/Join: Join' },
|
||||||
|
|
||||||
-- ── Code: CommentBox ────────────────────────────────────────────────
|
-- ── Code: CommentBox ────────────────────────────────────────────────
|
||||||
{
|
{ '<leader>cb', group = 'CommentBox' },
|
||||||
{ '<leader>cb', group = 'CommentBox' },
|
{ '<leader>cbb', '<Cmd>CBccbox<CR>', desc = 'CommentBox: Box Title' },
|
||||||
{ '<leader>cbb', '<Cmd>CBccbox<CR>', desc = 'CommentBox: Box Title' },
|
{ '<leader>cbd', '<Cmd>CBd<CR>', desc = 'CommentBox: Remove a box' },
|
||||||
{ '<leader>cbd', '<Cmd>CBd<CR>', desc = 'CommentBox: Remove a box' },
|
{ '<leader>cbl', '<Cmd>CBline<CR>', desc = 'CommentBox: Simple Line' },
|
||||||
{ '<leader>cbl', '<Cmd>CBline<CR>', desc = 'CommentBox: Simple Line' },
|
{ '<leader>cbm', '<Cmd>CBllbox14<CR>', desc = 'CommentBox: Marked' },
|
||||||
{ '<leader>cbm', '<Cmd>CBllbox14<CR>', desc = 'CommentBox: Marked' },
|
{ '<leader>cbt', '<Cmd>CBllline<CR>', desc = 'CommentBox: Titled Line' },
|
||||||
{
|
|
||||||
'<leader>cbt',
|
|
||||||
'<Cmd>CBllline<CR>',
|
|
||||||
desc = 'CommentBox: Titled Line',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- ── Code: package.json control ──────────────────────────────────────
|
|
||||||
-- See: lua/plugins/lazy.lua
|
|
||||||
{ '<leader>cn', group = 'package.json control' },
|
|
||||||
{
|
|
||||||
{
|
|
||||||
'<leader>cnd',
|
|
||||||
'<cmd>lua require("package-info").delete()<cr>',
|
|
||||||
desc = 'Delete package',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>cni',
|
|
||||||
'<cmd>lua require("package-info").install()<cr>',
|
|
||||||
desc = 'Install package',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>cns',
|
|
||||||
'<cmd>lua require("package-info").show({ force = true })<cr>',
|
|
||||||
desc = 'Show package info',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>cnu',
|
|
||||||
'<cmd>lua require("package-info").change_version()<cr>',
|
|
||||||
desc = 'Change version',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- ── Code: Refactoring ───────────────────────────────────────────────
|
-- ── Code: Refactoring ───────────────────────────────────────────────
|
||||||
{ '<leader>cx', group = '[x] Refactoring' },
|
{ '<leader>cx', group = '[x] Refactoring' },
|
||||||
@@ -217,6 +190,11 @@ return {
|
|||||||
'<cmd>Lspsaga diagnostic_jump_next<cr>',
|
'<cmd>Lspsaga diagnostic_jump_next<cr>',
|
||||||
desc = 'LSPSaga: Diagnostic Jump Next',
|
desc = 'LSPSaga: Diagnostic Jump Next',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'<leader>cx',
|
||||||
|
'<cmd>Telescope import<cr>',
|
||||||
|
desc = 'Telescope import',
|
||||||
|
},
|
||||||
|
|
||||||
-- ── DAP ─────────────────────────────────────────────────────────────
|
-- ── DAP ─────────────────────────────────────────────────────────────
|
||||||
{ '<leader>d', group = '[d] DAP' },
|
{ '<leader>d', group = '[d] DAP' },
|
||||||
@@ -293,24 +271,34 @@ return {
|
|||||||
-- See: lua/plugins/telescope.lua
|
-- See: lua/plugins/telescope.lua
|
||||||
{
|
{
|
||||||
'<leader><space>',
|
'<leader><space>',
|
||||||
"<cmd>lua require('telescope.builtin').buffers()<cr>",
|
'<cmd>Telescope buffers<cr>',
|
||||||
desc = 'Find existing buffers',
|
desc = 'Find existing buffers',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'<leader><tab>',
|
'<leader>sc',
|
||||||
"<cmd>lua require('telescope.builtin').commands()<CR>",
|
'<cmd>Telescope commands<CR>',
|
||||||
desc = 'Telescope: Commands',
|
desc = 'Telescope: Commands',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'<leader>sd',
|
'<leader>sd',
|
||||||
"<cmd>lua require('telescope.builtin').diagnostics()<cr>",
|
'<cmd>Telescope diagnostics<cr>',
|
||||||
desc = 'Search Diagnostics',
|
desc = 'Search Diagnostics',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'<leader>sg',
|
'<leader>sg',
|
||||||
"<cmd>lua require('telescope.builtin').live_grep()<cr>",
|
'<cmd>Telescope live_grep<cr>',
|
||||||
desc = 'Search by Grep',
|
desc = 'Search by Grep',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'<leader>sh',
|
||||||
|
'<cmd>Telescope highlights<cr>',
|
||||||
|
desc = 'List highlights',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>sl',
|
||||||
|
'<cmd>Telescope luasnip<CR>',
|
||||||
|
desc = 'Search LuaSnip',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'<leader>sm',
|
'<leader>sm',
|
||||||
'<cmd>Telescope harpoon marks<CR>',
|
'<cmd>Telescope harpoon marks<CR>',
|
||||||
@@ -323,7 +311,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
'<leader>so',
|
'<leader>so',
|
||||||
"<cmd>lua require('telescope.builtin').oldfiles()<cr>",
|
'<cmd>Telescope oldfiles<cr>',
|
||||||
desc = 'Find recently Opened files',
|
desc = 'Find recently Opened files',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -331,10 +319,54 @@ return {
|
|||||||
"<cmd>lua require('telescope').extensions.lazy_plugins.lazy_plugins()<cr>",
|
"<cmd>lua require('telescope').extensions.lazy_plugins.lazy_plugins()<cr>",
|
||||||
desc = 'Find neovim/lazy configs',
|
desc = 'Find neovim/lazy configs',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'<leader>sq',
|
||||||
|
'<cmd>Telescope quickfix<cr>',
|
||||||
|
desc = 'Quickfix list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>sr',
|
||||||
|
group = 'References',
|
||||||
|
{
|
||||||
|
'<leader>srd',
|
||||||
|
'<cmd>Telescope lsp_definitions<CR>',
|
||||||
|
desc = 'Definitions',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>sri',
|
||||||
|
'<cmd>Telescope lsp_implementations<CR>',
|
||||||
|
desc = 'Implementations',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>srp',
|
||||||
|
'<cmd>Telescope lsp_document_symbols<CR>',
|
||||||
|
desc = 'Document Symbols',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>srr',
|
||||||
|
'<cmd>Telescope lsp_references<CR>',
|
||||||
|
desc = 'LSP References',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>srt',
|
||||||
|
'<cmd>Telescope lsp_type_definitions<CR>',
|
||||||
|
desc = 'Type Definitions',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>srw',
|
||||||
|
'<cmd>Telescope lsp_workspace_symbols<CR>',
|
||||||
|
desc = 'Workspace Symbols',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>ss',
|
||||||
|
'<cmd>Telescope treesitter',
|
||||||
|
desc = 'Treesitter symbols',
|
||||||
|
},
|
||||||
{ '<leader>st', '<cmd>TodoTelescope<CR>', desc = 'Telescope: Show Todo' },
|
{ '<leader>st', '<cmd>TodoTelescope<CR>', desc = 'Telescope: Show Todo' },
|
||||||
{
|
{
|
||||||
'<leader>sw',
|
'<leader>sw',
|
||||||
"<cmd>lua require('telescope.builtin').grep_string()<cr>",
|
'<cmd>Telescope grep_string<cr>',
|
||||||
desc = 'Search current Word',
|
desc = 'Search current Word',
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -402,39 +434,24 @@ return {
|
|||||||
-- ── Help ────────────────────────────────────────────────────────────
|
-- ── Help ────────────────────────────────────────────────────────────
|
||||||
{ '<leader>?', group = '[?] Help & Cheat sheets' },
|
{ '<leader>?', group = '[?] Help & Cheat sheets' },
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
'<leader>?h',
|
||||||
|
'<cmd>Telescope help_tags<cr>',
|
||||||
|
desc = 'Help tags',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>?m',
|
||||||
|
'<cmd>Telescope man_pages<cr>',
|
||||||
|
desc = 'Man pages',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'<leader>?w',
|
'<leader>?w',
|
||||||
'<cmd>lua require("which-key").show({global = false})<cr>',
|
'<cmd>lua require("which-key").show({global = true})<cr>',
|
||||||
desc = 'Buffer Local Keymaps (which-key)',
|
desc = 'Buffer Local Keymaps (which-key)',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- ── Misc ────────────────────────────────────────────────────────────
|
-- ── Misc ────────────────────────────────────────────────────────────
|
||||||
{
|
|
||||||
'<leader>1',
|
|
||||||
'<cmd>lua require("harpoon"):list():select(1)<cr>',
|
|
||||||
desc = 'harpoon to file 1',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>2',
|
|
||||||
'<cmd>lua require("harpoon"):list():select(2)<cr>',
|
|
||||||
desc = 'harpoon to file 2',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>3',
|
|
||||||
'<cmd>lua require("harpoon"):list():select(3)<cr>',
|
|
||||||
desc = 'harpoon to file 3',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>4',
|
|
||||||
'<cmd>lua require("harpoon"):list():select(4)<cr>',
|
|
||||||
desc = 'harpoon to file 4',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<leader>5',
|
|
||||||
'<cmd>lua require("harpoon"):list():select(5)<cr>',
|
|
||||||
desc = 'harpoon to file 5',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
'<leader>D',
|
'<leader>D',
|
||||||
'<cmd>lua vim.lsp.buf.type_definition()<CR>',
|
'<cmd>lua vim.lsp.buf.type_definition()<CR>',
|
||||||
|
|||||||
462
config/nvim/snippets/javascript.json
Normal file
462
config/nvim/snippets/javascript.json
Normal file
@@ -0,0 +1,462 @@
|
|||||||
|
{
|
||||||
|
"While ..": {
|
||||||
|
"body": [
|
||||||
|
"while (${1:condition}) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "while .."
|
||||||
|
},
|
||||||
|
"argv (node)": {
|
||||||
|
"body": "const argv = process.argv.slice(2);",
|
||||||
|
"description": "Arguments from the command line. [0] is the node executable path, [1] the path of the file being executed, making [2] the first positional argument.",
|
||||||
|
"prefix": "argv (node)"
|
||||||
|
},
|
||||||
|
"cast (JSDoc)": {
|
||||||
|
"body": "/** @type {${1:string}} */ (${2:bracketedVar})",
|
||||||
|
"prefix": "cast (JSDoc)"
|
||||||
|
},
|
||||||
|
"class (JSDoc) + typedef (JSDoc)": {
|
||||||
|
"body": [
|
||||||
|
"/** @typedef {Object} ${1:name}",
|
||||||
|
" * @property {${2:string}} ${3:prop1}",
|
||||||
|
" */"
|
||||||
|
],
|
||||||
|
"description": "https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#typedef-callback-and-param",
|
||||||
|
"prefix": [
|
||||||
|
"class (JSDoc)",
|
||||||
|
"typedef (JSDoc)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"do .. while ..": {
|
||||||
|
"body": [
|
||||||
|
"do {",
|
||||||
|
"\t$0",
|
||||||
|
"} while (${1:condition});"
|
||||||
|
],
|
||||||
|
"prefix": [
|
||||||
|
"do .. while",
|
||||||
|
"repeat until"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ec (export const)": {
|
||||||
|
"body": "export const ${1:CONSTANT}",
|
||||||
|
"prefix": "ec (export const)"
|
||||||
|
},
|
||||||
|
"ef (export function)": {
|
||||||
|
"body": [
|
||||||
|
"export function ${1:name}($2) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "ef (export function)"
|
||||||
|
},
|
||||||
|
"filter ( => )": {
|
||||||
|
"body": "filter(${1:item} => ${1:item}$0)",
|
||||||
|
"prefix": "filter ( => )"
|
||||||
|
},
|
||||||
|
"for (i++)": {
|
||||||
|
"body": [
|
||||||
|
"for (let i = 0; i < ${1:array}.length; i++) {",
|
||||||
|
"\tconst ${2:element} = ${1:array}[i];",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "for (i++)"
|
||||||
|
},
|
||||||
|
"for (i--)": {
|
||||||
|
"body": [
|
||||||
|
"for (let i = ${1:array}.length - 1; i >= 0; i--) {",
|
||||||
|
"\tconst ${2:element} = ${1:array}[i];",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "for (i--)"
|
||||||
|
},
|
||||||
|
"for (key, value)": {
|
||||||
|
"body": [
|
||||||
|
"for (const [key, value] of Object.entries(${1:dict})) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "for (key, value)"
|
||||||
|
},
|
||||||
|
"for .. in (key)": {
|
||||||
|
"body": [
|
||||||
|
"for (const ${1:key} in ${2:object}) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "for .. in (key)"
|
||||||
|
},
|
||||||
|
"for .. of (array)": {
|
||||||
|
"body": [
|
||||||
|
"for (const ${1:iterator} of ${2:array}) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "for .. of (array)"
|
||||||
|
},
|
||||||
|
"forEach": {
|
||||||
|
"body": [
|
||||||
|
"forEach(${1:item} => {",
|
||||||
|
"\t$0",
|
||||||
|
"});"
|
||||||
|
],
|
||||||
|
"prefix": "forEach =>"
|
||||||
|
},
|
||||||
|
"function_trad": {
|
||||||
|
"body": [
|
||||||
|
"function ${1:name}() {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "function"
|
||||||
|
},
|
||||||
|
"if ..": {
|
||||||
|
"body": [
|
||||||
|
"if (${1:condition}) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "if"
|
||||||
|
},
|
||||||
|
"if .. else": {
|
||||||
|
"body": [
|
||||||
|
"if (${1:condition}) {",
|
||||||
|
"\t$0",
|
||||||
|
"} else {",
|
||||||
|
"\t",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "if .. else"
|
||||||
|
},
|
||||||
|
"ignore (biome formatter)": {
|
||||||
|
"body": "// biome-ignore format: ${1:explanation}",
|
||||||
|
"description": "Ignores the next block of code.",
|
||||||
|
"prefix": "ignore (biome formatter)"
|
||||||
|
},
|
||||||
|
"ignore file (TypeScript) + nocheck (TypeScript)": {
|
||||||
|
"body": "// @ts-nocheck",
|
||||||
|
"prefix": [
|
||||||
|
"ignore file (TypeScript)",
|
||||||
|
"nocheck (TypeScript)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"map ( () => {} )": {
|
||||||
|
"body": [
|
||||||
|
"map(${1:item} => {",
|
||||||
|
"\t$0",
|
||||||
|
"\treturn;",
|
||||||
|
"})"
|
||||||
|
],
|
||||||
|
"prefix": "map ( () => {} )"
|
||||||
|
},
|
||||||
|
"map ( => )": {
|
||||||
|
"body": "map(${1:item} => ${1:item}$0)",
|
||||||
|
"prefix": "map ( => )"
|
||||||
|
},
|
||||||
|
"reduce()": {
|
||||||
|
"body": [
|
||||||
|
".reduce((acc, ${1:item}) => {",
|
||||||
|
"\t$0",
|
||||||
|
"\treturn acc;",
|
||||||
|
"}, ${2:initialValue})"
|
||||||
|
],
|
||||||
|
"prefix": "reduce()"
|
||||||
|
},
|
||||||
|
"relative date": {
|
||||||
|
"body": [
|
||||||
|
"/**",
|
||||||
|
" * @param {string} absoluteDate string to be converted to a date",
|
||||||
|
" * @return {string} relative date",
|
||||||
|
" */",
|
||||||
|
"function relativeDate(absoluteDate) {",
|
||||||
|
"\tconst deltaSecs = (+new Date() - +new Date(absoluteDate)) / 1000;",
|
||||||
|
"\t/** @type {\"year\"|\"month\"|\"week\"|\"day\"|\"hour\"|\"minute\"|\"second\"} */",
|
||||||
|
"\tlet unit;",
|
||||||
|
"\tlet delta;",
|
||||||
|
"\tif (deltaSecs < 60) {",
|
||||||
|
"\t\tunit = \"second\";",
|
||||||
|
"\t\tdelta = deltaSecs;",
|
||||||
|
"\t} else if (deltaSecs < 60 * 60) {",
|
||||||
|
"\t\tunit = \"minute\";",
|
||||||
|
"\t\tdelta = Math.ceil(deltaSecs / 60);",
|
||||||
|
"\t} else if (deltaSecs < 60 * 60 * 24) {",
|
||||||
|
"\t\tunit = \"hour\";",
|
||||||
|
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60);",
|
||||||
|
"\t} else if (deltaSecs < 60 * 60 * 24 * 7) {",
|
||||||
|
"\t\tunit = \"day\";",
|
||||||
|
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24);",
|
||||||
|
"\t} else if (deltaSecs < 60 * 60 * 24 * 7 * 4) {",
|
||||||
|
"\t\tunit = \"week\";",
|
||||||
|
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24 / 7);",
|
||||||
|
"\t} else if (deltaSecs < 60 * 60 * 24 * 7 * 4 * 12) {",
|
||||||
|
"\t\tunit = \"month\";",
|
||||||
|
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24 / 7 / 4);",
|
||||||
|
"\t} else {",
|
||||||
|
"\t\tunit = \"year\";",
|
||||||
|
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24 / 7 / 4 / 12);",
|
||||||
|
"\t}",
|
||||||
|
"\tconst formatter = new Intl.RelativeTimeFormat(\"en\", { style: \"long\", numeric: \"auto\" });",
|
||||||
|
"\treturn formatter.format(-delta, unit);",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "relative date"
|
||||||
|
},
|
||||||
|
"replace": {
|
||||||
|
"body": "replace(/${1:regexp}/, \"$2\")",
|
||||||
|
"prefix": "replace"
|
||||||
|
},
|
||||||
|
"sort ( () => {} )": {
|
||||||
|
"body": [
|
||||||
|
"sort((a, b) => {",
|
||||||
|
"\treturn ${1:b - a};",
|
||||||
|
"})"
|
||||||
|
],
|
||||||
|
"description": "Sort Array with basic a-b-comparator function",
|
||||||
|
"prefix": "sort ( () => {} )"
|
||||||
|
},
|
||||||
|
"split by \\n": {
|
||||||
|
"body": ".split(\"\\n\")",
|
||||||
|
"prefix": ".split by \\n"
|
||||||
|
},
|
||||||
|
"split by \\r": {
|
||||||
|
"body": ".split(\"\\r\")",
|
||||||
|
"description": "required for output from app.doShellScript()",
|
||||||
|
"prefix": ".split by \\r"
|
||||||
|
},
|
||||||
|
"switch .. case": {
|
||||||
|
"body": [
|
||||||
|
"switch (${1:key}) {",
|
||||||
|
"\tcase ${2:value}:",
|
||||||
|
"\t\t$0",
|
||||||
|
"\t\tbreak;",
|
||||||
|
"\tdefault:",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"prefix": "switch .. case"
|
||||||
|
},
|
||||||
|
"ternary": {
|
||||||
|
"body": "${1:condition} ? ${2:value1} : ${3:value2}",
|
||||||
|
"prefix": "ternary"
|
||||||
|
},
|
||||||
|
"thousand separator": {
|
||||||
|
"body": ".toLocaleString(\"de-DE\")",
|
||||||
|
"description": "insert thousand separator into a digit string",
|
||||||
|
"prefix": "thousand separator"
|
||||||
|
},
|
||||||
|
"timeout + delay": {
|
||||||
|
"body": [
|
||||||
|
"setTimeout(() => {",
|
||||||
|
"\t$0",
|
||||||
|
"}, ${1:timeoutMs});"
|
||||||
|
],
|
||||||
|
"prefix": [
|
||||||
|
"timeout",
|
||||||
|
"delay"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"today as ISO 8601 string": {
|
||||||
|
"body": "new Date().toISOString().slice(0, 10);",
|
||||||
|
"prefix": "ISO date"
|
||||||
|
},
|
||||||
|
"today's date": {
|
||||||
|
"body": "const today = new Date();",
|
||||||
|
"prefix": [
|
||||||
|
"today",
|
||||||
|
"date"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tomorrow's date": {
|
||||||
|
"body": [
|
||||||
|
"const tomorrow = new Date();",
|
||||||
|
"tomorrow.setDate(tomorrow.getDate() + 1);"
|
||||||
|
],
|
||||||
|
"prefix": [
|
||||||
|
"tomorrow",
|
||||||
|
"date"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"try .. catch": {
|
||||||
|
"body": [
|
||||||
|
"try {",
|
||||||
|
"\t$0",
|
||||||
|
"} catch (_error) {",
|
||||||
|
"\t",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"description": "leading underscore so the variable is ignored by biome when not used.",
|
||||||
|
"prefix": "try .. catch"
|
||||||
|
},
|
||||||
|
"type (JSDoc)": {
|
||||||
|
"body": "/** @type {${1:string}} */",
|
||||||
|
"prefix": "type (JSDoc)"
|
||||||
|
},
|
||||||
|
"type: Record (JSDoc)": {
|
||||||
|
"body": "/** @type {Record<string, string>} */",
|
||||||
|
"prefix": "type: Record (JSDoc)"
|
||||||
|
},
|
||||||
|
"unique items": {
|
||||||
|
"body": "${1:arr} = [...new Set(${2:arr})];",
|
||||||
|
"prefix": "unique items"
|
||||||
|
},
|
||||||
|
"Class": {
|
||||||
|
"prefix": [
|
||||||
|
"clax"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"export class $1 ${2:extends ${3:Parent} }{",
|
||||||
|
"\tconstructor(${4:props}) {",
|
||||||
|
"\t\tthis.$4 = $4;",
|
||||||
|
"\t}",
|
||||||
|
"",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"description": "Class definition template."
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"prefix": [
|
||||||
|
"it"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"it('${1:should ${2}}', async () => {",
|
||||||
|
"\t$0",
|
||||||
|
"});"
|
||||||
|
],
|
||||||
|
"description": "Test template"
|
||||||
|
},
|
||||||
|
"method": {
|
||||||
|
"prefix": [
|
||||||
|
"mtd"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"${1:async ${2:method}}(${3:params}) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"description": "method"
|
||||||
|
},
|
||||||
|
"function": {
|
||||||
|
"prefix": [
|
||||||
|
"fun"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"${1:async }${2:(${3:params})} => {$0}"
|
||||||
|
],
|
||||||
|
"description": "function"
|
||||||
|
},
|
||||||
|
"const": {
|
||||||
|
"prefix": [
|
||||||
|
"const"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"const $1 = $0;"
|
||||||
|
],
|
||||||
|
"description": "const"
|
||||||
|
},
|
||||||
|
"let": {
|
||||||
|
"prefix": [
|
||||||
|
"let"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"let $1 = $0;"
|
||||||
|
],
|
||||||
|
"description": "let"
|
||||||
|
},
|
||||||
|
"Console log": {
|
||||||
|
"prefix": [
|
||||||
|
"cl"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"console.log($0);"
|
||||||
|
],
|
||||||
|
"description": "Console log"
|
||||||
|
},
|
||||||
|
"Console debug": {
|
||||||
|
"prefix": [
|
||||||
|
"cd"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"console.debug($0);"
|
||||||
|
],
|
||||||
|
"description": "Console debug"
|
||||||
|
},
|
||||||
|
"Console log all": {
|
||||||
|
"prefix": [
|
||||||
|
"clj"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"console.log(JSON.stringify($0, null, 2));"
|
||||||
|
],
|
||||||
|
"description": "Console log whole object"
|
||||||
|
},
|
||||||
|
"Console debug all": {
|
||||||
|
"prefix": [
|
||||||
|
"cdj"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"console.debug(JSON.stringify($0, null, 2));"
|
||||||
|
],
|
||||||
|
"description": "Console debug whole object"
|
||||||
|
},
|
||||||
|
"If": {
|
||||||
|
"prefix": [
|
||||||
|
"if"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"if (${1:condition}) {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"description": "Console debug whole object"
|
||||||
|
},
|
||||||
|
"If-else": {
|
||||||
|
"prefix": [
|
||||||
|
"ifelse"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"if (${1:condition}) {",
|
||||||
|
"\t$2",
|
||||||
|
"} else {",
|
||||||
|
"\t$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"description": "Console debug whole object"
|
||||||
|
},
|
||||||
|
"docblock": {
|
||||||
|
"prefix": [
|
||||||
|
"/**"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"/**",
|
||||||
|
" * $0",
|
||||||
|
" */"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trycatch": {
|
||||||
|
"prefix": [
|
||||||
|
"tc"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"try {",
|
||||||
|
"\t$0",
|
||||||
|
"} catch (e) {",
|
||||||
|
"\tthrow e;",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"description": "Try catch block"
|
||||||
|
},
|
||||||
|
"Describe test": {
|
||||||
|
"prefix": [
|
||||||
|
"desc"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"describe('${1}', () => {",
|
||||||
|
"\t$0",
|
||||||
|
"})"
|
||||||
|
],
|
||||||
|
"description": "Describe test"
|
||||||
|
}
|
||||||
|
}
|
||||||
262
config/nvim/snippets/lua.json
Normal file
262
config/nvim/snippets/lua.json
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
{
|
||||||
|
"@class (LuaDoc)": {
|
||||||
|
"body": [
|
||||||
|
"---@class (exact) ${1:class_name}",
|
||||||
|
"---@field ${2:field_name} string"
|
||||||
|
],
|
||||||
|
"description": "https://github.com/LuaLS/lua-language-server/wiki/Annotations#class",
|
||||||
|
"prefix": "@class (LuaDoc)"
|
||||||
|
},
|
||||||
|
"@type (LuaDoc)": {
|
||||||
|
"body": "---@type ${1:string}",
|
||||||
|
"prefix": "@type (LuaDoc)"
|
||||||
|
},
|
||||||
|
"Record (type)": {
|
||||||
|
"body": "---@type table<string, string>",
|
||||||
|
"prefix": "Record (type)"
|
||||||
|
},
|
||||||
|
"count occurrences in string": {
|
||||||
|
"body": "local _, count = ${1:str}:gsub(\"${2:find}\", \"\")",
|
||||||
|
"prefix": "count occurrences in string"
|
||||||
|
},
|
||||||
|
"export module": {
|
||||||
|
"body": [
|
||||||
|
"local M = {}",
|
||||||
|
"--------------------------------------------------------------------------------",
|
||||||
|
"",
|
||||||
|
"$0--------------------------------------------------------------------------------",
|
||||||
|
"return M"
|
||||||
|
],
|
||||||
|
"prefix": "export module"
|
||||||
|
},
|
||||||
|
"find all in string": {
|
||||||
|
"body": [
|
||||||
|
"local ${1:matches} = {}",
|
||||||
|
"for match in ${2:str}:gmatch(${3:pattern}) do",
|
||||||
|
"\ttable.insert(${1:matches}, match)",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"prefix": "find all in string"
|
||||||
|
},
|
||||||
|
"for each (list)": {
|
||||||
|
"body": [
|
||||||
|
"for _, ${1:v} in pairs(${2:table}) do",
|
||||||
|
"\t$0",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"prefix": "for each (list)"
|
||||||
|
},
|
||||||
|
"for each line (of file)": {
|
||||||
|
"body": [
|
||||||
|
"for line in io.lines(${1:filepath}) do",
|
||||||
|
"\t$0",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"prefix": [
|
||||||
|
"for each line (file)",
|
||||||
|
"read file (as lines)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"home": {
|
||||||
|
"body": "os.getenv(\"HOME\")",
|
||||||
|
"prefix": "home"
|
||||||
|
},
|
||||||
|
"if .. then .. else": {
|
||||||
|
"body": [
|
||||||
|
"if ${1:true} then",
|
||||||
|
"\t$2",
|
||||||
|
"else",
|
||||||
|
"\t$0",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"filetype": "lua",
|
||||||
|
"prefix": "if .. then .. else"
|
||||||
|
},
|
||||||
|
"nodiscard": {
|
||||||
|
"body": "---@nodiscard",
|
||||||
|
"description": "Luadoc Annotation that a function's return value should not be discarded. https://github.com/LuaLS/lua-language-server/wiki/Annotations#nodiscard",
|
||||||
|
"prefix": "nodiscard"
|
||||||
|
},
|
||||||
|
"path of this file": {
|
||||||
|
"body": "local pathOfThisFile = debug.getinfo(1).source:sub(2)",
|
||||||
|
"prefix": "path of this file"
|
||||||
|
},
|
||||||
|
"path separator (os-independent)": {
|
||||||
|
"body": "local osPathSep = package.config:sub(1, 1)",
|
||||||
|
"prefix": "path separator (os-independent)"
|
||||||
|
},
|
||||||
|
"pcall": {
|
||||||
|
"body": [
|
||||||
|
"local success = pcall(${1:func})",
|
||||||
|
"if not success then",
|
||||||
|
"\t$0",
|
||||||
|
"\treturn",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"prefix": [
|
||||||
|
"try",
|
||||||
|
"pcall"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"read file": {
|
||||||
|
"body": [
|
||||||
|
"---@param filePath string",
|
||||||
|
"---@return string? -- content or error message",
|
||||||
|
"---@return boolean success",
|
||||||
|
"local function readFile(filePath)",
|
||||||
|
"\tlocal file, err = io.open(filePath, \"r\")",
|
||||||
|
"\tif not file then return err, false end",
|
||||||
|
"\tlocal content = file:read(\"*a\")",
|
||||||
|
"\tfile:close()",
|
||||||
|
"\treturn content, true",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"prefix": "read file"
|
||||||
|
},
|
||||||
|
"redirect (metatable __index)": {
|
||||||
|
"body": [
|
||||||
|
"setmetatable(M, {",
|
||||||
|
"\t__index = function(_, key)",
|
||||||
|
"\t\treturn function(...)",
|
||||||
|
"\t\t\trequire(${1:moduleToRedirectTo})[key](...)",
|
||||||
|
"\t\tend",
|
||||||
|
"\tend,",
|
||||||
|
"})"
|
||||||
|
],
|
||||||
|
"prefix": "redirect (metatable __index)"
|
||||||
|
},
|
||||||
|
"round number": {
|
||||||
|
"body": "local roundedNum = tonumber(string.format(\"%.${1:decimals}f\", exactNum))",
|
||||||
|
"prefix": "round number"
|
||||||
|
},
|
||||||
|
"safe require": {
|
||||||
|
"body": [
|
||||||
|
"local ok, ${1:module} = require(\"${1:module}\")",
|
||||||
|
"if not (ok and ${1:module}) then return end",
|
||||||
|
"${1:module}.$0"
|
||||||
|
],
|
||||||
|
"prefix": "safe require"
|
||||||
|
},
|
||||||
|
"sort (table)": {
|
||||||
|
"body": "table.sort(${1:table}, function(a, b) return ${2:a} > ${3:b} end)",
|
||||||
|
"prefix": "sort (table)"
|
||||||
|
},
|
||||||
|
"split (gmatch)": {
|
||||||
|
"body": [
|
||||||
|
"local acc = {}",
|
||||||
|
"for part in ${1:str}:gmatch(\"(.-)\" .. ${2:delimiter}) do",
|
||||||
|
"\ttable.insert(acc, part)",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"filetype": "lua",
|
||||||
|
"prefix": "split (gmatch)"
|
||||||
|
},
|
||||||
|
"ternary": {
|
||||||
|
"body": "${1:condition} and ${2:value1} or ${3:value2}",
|
||||||
|
"prefix": "ternary"
|
||||||
|
},
|
||||||
|
"trim trailing line break": {
|
||||||
|
"body": ":gsub(\"\\n$\", \"\")",
|
||||||
|
"prefix": "trim"
|
||||||
|
},
|
||||||
|
"write file": {
|
||||||
|
"body": [
|
||||||
|
"---@param str string",
|
||||||
|
"---@param filePath string",
|
||||||
|
"---@return string|nil -- error message",
|
||||||
|
"local function overwriteFile(filePath, str)",
|
||||||
|
"\tlocal file, _ = io.open(filePath, \"w\")",
|
||||||
|
"\tif not file then return end",
|
||||||
|
"\tfile:write(str)",
|
||||||
|
"\tfile:close()",
|
||||||
|
"end"
|
||||||
|
],
|
||||||
|
"description": "Overwriting file, for appending use `a` instead of `w`.",
|
||||||
|
"prefix": "write file"
|
||||||
|
},
|
||||||
|
"Create Auto Command": {
|
||||||
|
"prefix": "autocmd",
|
||||||
|
"body": [
|
||||||
|
"vim.api.nvim_create_autocmd(\"${1:event}\", {",
|
||||||
|
" group = vim.api.nvim_create_augroup(\"${2:group}\", { clear = true }),",
|
||||||
|
" callback = function(ev)",
|
||||||
|
" ${0}",
|
||||||
|
" end",
|
||||||
|
"})"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Create Auto Command Group": {
|
||||||
|
"prefix": "augroup",
|
||||||
|
"body": [
|
||||||
|
"vim.api.nvim_create_augroup(\"${1:group}\", { clear = true })$0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Current Win": {
|
||||||
|
"prefix": "win",
|
||||||
|
"body": "local win = vim.api.nvim_get_current_win()\n$0"
|
||||||
|
},
|
||||||
|
"Current Buf": {
|
||||||
|
"prefix": "buf",
|
||||||
|
"body": "local buf = vim.api.nvim_get_current_buf()\n$0"
|
||||||
|
},
|
||||||
|
"Buf Valid": {
|
||||||
|
"prefix": "bufvalid",
|
||||||
|
"body": "vim.api.nvim_buf_is_valid(${1:buf})"
|
||||||
|
},
|
||||||
|
"Win Valid": {
|
||||||
|
"prefix": "winvalid",
|
||||||
|
"body": "vim.api.nvim_win_is_valid(${1:win})"
|
||||||
|
},
|
||||||
|
"Win Call": {
|
||||||
|
"prefix": "wincall",
|
||||||
|
"body": [
|
||||||
|
"vim.api.nvim_win_call(${1:win}, function(win)",
|
||||||
|
" ${0}",
|
||||||
|
"end)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Buf Call": {
|
||||||
|
"prefix": "bufcall",
|
||||||
|
"body": [
|
||||||
|
"vim.api.nvim_buf_call(${1:buf}, function(buf)",
|
||||||
|
" ${0}",
|
||||||
|
"end)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Schedule": {
|
||||||
|
"prefix": "schedule",
|
||||||
|
"body": [
|
||||||
|
"vim.schedule(function()",
|
||||||
|
" ${0}",
|
||||||
|
"end)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Table Deep Extend": {
|
||||||
|
"prefix": "deepextend",
|
||||||
|
"body": "vim.tbl_deep_extend(\"force\", ${1:table}, ${2:table})$0"
|
||||||
|
},
|
||||||
|
"Table Filter": {
|
||||||
|
"prefix": "filter",
|
||||||
|
"body": [
|
||||||
|
"vim.tbl_filter(function()",
|
||||||
|
" $0",
|
||||||
|
"end, ${1:table})"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Table Map": {
|
||||||
|
"prefix": "map",
|
||||||
|
"body": [
|
||||||
|
"vim.tbl_map(function()",
|
||||||
|
" $0",
|
||||||
|
"end, ${1:table})"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Table Values": {
|
||||||
|
"prefix": "values",
|
||||||
|
"body": "vim.tbl_values(${1:table})"
|
||||||
|
},
|
||||||
|
"Table Keys": {
|
||||||
|
"prefix": "keys",
|
||||||
|
"body": "vim.tbl_keys(${1:table})"
|
||||||
|
}
|
||||||
|
}
|
||||||
133
config/nvim/snippets/markdown.json
Normal file
133
config/nvim/snippets/markdown.json
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
{
|
||||||
|
"Misc": {
|
||||||
|
"body": "Miscellaneous",
|
||||||
|
"prefix": "Misc"
|
||||||
|
},
|
||||||
|
"bash (Codeblock)": {
|
||||||
|
"body": [
|
||||||
|
"```bash",
|
||||||
|
"$CLIPBOARD$0",
|
||||||
|
"```"
|
||||||
|
],
|
||||||
|
"prefix": "bash (Codeblock)"
|
||||||
|
},
|
||||||
|
"caution (callout)": {
|
||||||
|
"body": [
|
||||||
|
"> [!CAUTION]",
|
||||||
|
"> $0"
|
||||||
|
],
|
||||||
|
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||||
|
"prefix": "caution (callout)"
|
||||||
|
},
|
||||||
|
"details & summary": {
|
||||||
|
"body": [
|
||||||
|
"<details>",
|
||||||
|
"<summary>${1:Text}</summary>",
|
||||||
|
"$0",
|
||||||
|
"</details>"
|
||||||
|
],
|
||||||
|
"description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details",
|
||||||
|
"prefix": [
|
||||||
|
"toggle / fold",
|
||||||
|
"details & summary"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ignore file (ltex)": {
|
||||||
|
"body": "<!-- LTeX: enabled=false -->",
|
||||||
|
"prefix": "ignore file (ltex)"
|
||||||
|
},
|
||||||
|
"image": {
|
||||||
|
"body": "<img src=\"${1:image_path}\" alt=\"${2:alt text}\" width=\"${3:50%}\">",
|
||||||
|
"description": "HTML syntax for images used to display images with reduced size",
|
||||||
|
"prefix": "image"
|
||||||
|
},
|
||||||
|
"important (callout)": {
|
||||||
|
"body": [
|
||||||
|
"> [!IMPORTANT]",
|
||||||
|
"> $0"
|
||||||
|
],
|
||||||
|
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||||
|
"prefix": "important (callout)"
|
||||||
|
},
|
||||||
|
"insert table 2x2": {
|
||||||
|
"body": [
|
||||||
|
"| ${1:Column1} | ${2:Column2} |",
|
||||||
|
"|--------------- | -------------- |",
|
||||||
|
"| ${3:Item1.1} | ${4:Item2.1} |"
|
||||||
|
],
|
||||||
|
"prefix": "table (2x2)"
|
||||||
|
},
|
||||||
|
"insert toc": {
|
||||||
|
"body": [
|
||||||
|
"## Table of Content",
|
||||||
|
"",
|
||||||
|
"<!-- toc -->"
|
||||||
|
],
|
||||||
|
"description": "https://github.com/jonschlinkert/markdown-toc#tocinsert",
|
||||||
|
"prefix": "insert toc"
|
||||||
|
},
|
||||||
|
"js (Codeblock)": {
|
||||||
|
"body": [
|
||||||
|
"```js",
|
||||||
|
"$CLIPBOARD$0",
|
||||||
|
"```"
|
||||||
|
],
|
||||||
|
"prefix": "js (Codeblock)"
|
||||||
|
},
|
||||||
|
"kbd": {
|
||||||
|
"body": "<kbd>$0</kbd>",
|
||||||
|
"description": "HTML tag for keys",
|
||||||
|
"prefix": "kbd"
|
||||||
|
},
|
||||||
|
"lua (Codeblock)": {
|
||||||
|
"body": [
|
||||||
|
"```lua",
|
||||||
|
"$CLIPBOARD$0",
|
||||||
|
"```"
|
||||||
|
],
|
||||||
|
"prefix": "lua (Codeblock)"
|
||||||
|
},
|
||||||
|
"note (GitHub callout)": {
|
||||||
|
"body": [
|
||||||
|
"> [!NOTE]",
|
||||||
|
"> $0"
|
||||||
|
],
|
||||||
|
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||||
|
"prefix": [
|
||||||
|
"info (callout)",
|
||||||
|
"note (callout)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"py (Codeblock)": {
|
||||||
|
"body": [
|
||||||
|
"```py",
|
||||||
|
"$CLIPBOARD$0",
|
||||||
|
"```"
|
||||||
|
],
|
||||||
|
"prefix": "py (Codeblock)"
|
||||||
|
},
|
||||||
|
"tip (callout)": {
|
||||||
|
"body": [
|
||||||
|
"> [!TIP]",
|
||||||
|
"> $0"
|
||||||
|
],
|
||||||
|
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||||
|
"prefix": "tip (callout)"
|
||||||
|
},
|
||||||
|
"ts (Codeblock)": {
|
||||||
|
"body": [
|
||||||
|
"```ts",
|
||||||
|
"$CLIPBOARD$0",
|
||||||
|
"```"
|
||||||
|
],
|
||||||
|
"prefix": "ts (Codeblock)"
|
||||||
|
},
|
||||||
|
"warning (callout)": {
|
||||||
|
"body": [
|
||||||
|
"> [!WARNING]",
|
||||||
|
"> $0"
|
||||||
|
],
|
||||||
|
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||||
|
"prefix": "warning (callout)"
|
||||||
|
}
|
||||||
|
}
|
||||||
165
config/nvim/snippets/php.snippets
Normal file
165
config/nvim/snippets/php.snippets
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
snippet php "php"
|
||||||
|
<?php
|
||||||
|
${1}
|
||||||
|
|
||||||
|
snippet ec "ec"
|
||||||
|
echo '${1}'${2};
|
||||||
|
|
||||||
|
snippet vd "vd"
|
||||||
|
var_dump(${1});
|
||||||
|
|
||||||
|
# Includes and requires
|
||||||
|
|
||||||
|
snippet inc "inc"
|
||||||
|
include_once '${1}';${2}
|
||||||
|
|
||||||
|
snippet req "req"
|
||||||
|
require_once '${1}';${2}
|
||||||
|
|
||||||
|
# define(...)
|
||||||
|
|
||||||
|
snippet def "def"
|
||||||
|
define('${1}'${2});${3}
|
||||||
|
|
||||||
|
# Doxygen comments
|
||||||
|
|
||||||
|
snippet d "/**"
|
||||||
|
/**
|
||||||
|
* ${1}
|
||||||
|
*/${2}
|
||||||
|
|
||||||
|
snippet code "code"
|
||||||
|
* @code
|
||||||
|
* ${1}
|
||||||
|
* @endcode
|
||||||
|
|
||||||
|
# Class
|
||||||
|
|
||||||
|
snippet cl "cl"
|
||||||
|
class ${1} {
|
||||||
|
${2}
|
||||||
|
function ${3:__construct}(${4}) {
|
||||||
|
${5}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet pubf "public method"
|
||||||
|
public function ${1}(${2}): $3
|
||||||
|
{
|
||||||
|
${0}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet prof "protected method"
|
||||||
|
protected function ${1}(${2}): $3
|
||||||
|
{
|
||||||
|
${0}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet prif "private method"
|
||||||
|
protected function ${1}(${2}): $3
|
||||||
|
{
|
||||||
|
${0}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet testt "test method (prefix)"
|
||||||
|
public function test_${1}()
|
||||||
|
{
|
||||||
|
${0}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet testa "test method (annotation)"
|
||||||
|
/** @test */
|
||||||
|
public function ${1}()
|
||||||
|
{
|
||||||
|
${0}
|
||||||
|
}
|
||||||
|
|
||||||
|
# $this->
|
||||||
|
|
||||||
|
snippet . "$this->" i
|
||||||
|
$this->
|
||||||
|
|
||||||
|
# If statement
|
||||||
|
|
||||||
|
snippet if "if"
|
||||||
|
if (${1}) {
|
||||||
|
${2}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet ife "ife"
|
||||||
|
if (${1}) {
|
||||||
|
${2}
|
||||||
|
} else {
|
||||||
|
${3}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet elif "elif"
|
||||||
|
else if (${1}) {
|
||||||
|
${2}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet el "el"
|
||||||
|
else {
|
||||||
|
${1}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Switch
|
||||||
|
|
||||||
|
snippet sw "sw"
|
||||||
|
switch (${1}) {
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet case "case"
|
||||||
|
case '${1}':
|
||||||
|
${2}
|
||||||
|
break;${3}
|
||||||
|
|
||||||
|
# Do-while loop
|
||||||
|
|
||||||
|
snippet do "do"
|
||||||
|
do {
|
||||||
|
${2}
|
||||||
|
} while (${1});
|
||||||
|
|
||||||
|
# While loop
|
||||||
|
|
||||||
|
snippet wh "wh"
|
||||||
|
while (${1}) {
|
||||||
|
${2}
|
||||||
|
}
|
||||||
|
|
||||||
|
# For loop
|
||||||
|
|
||||||
|
snippet for "for"
|
||||||
|
for (${1}; ${2}; ${3}) {
|
||||||
|
${4}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet fore "fore"
|
||||||
|
foreach (${1} as ${2}) {
|
||||||
|
${3}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Functions and methods
|
||||||
|
|
||||||
|
snippet fun "fun"
|
||||||
|
function ${1}(${2}) {
|
||||||
|
${3}
|
||||||
|
}
|
||||||
|
|
||||||
|
snippet met "met"
|
||||||
|
${1}function ${2}(${3}) {
|
||||||
|
${4}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Return
|
||||||
|
|
||||||
|
snippet r "return"
|
||||||
|
return ${1}
|
||||||
|
|
||||||
|
# Todos
|
||||||
|
|
||||||
|
snippet todo "todo"
|
||||||
|
// TODO ${1}
|
||||||
334
config/nvim/snippets/sh.json
Normal file
334
config/nvim/snippets/sh.json
Normal file
@@ -0,0 +1,334 @@
|
|||||||
|
{
|
||||||
|
"PATH (export)": {
|
||||||
|
"body": "export PATH=/usr/local/lib:/usr/local/bin:/opt/homebrew/bin/:\\$PATH",
|
||||||
|
"description": "Extends PATH in a way that homebrew installed CLIs are recognized in ARM and Intel Macs.",
|
||||||
|
"prefix": "PATH (export)"
|
||||||
|
},
|
||||||
|
"awk (get field)": {
|
||||||
|
"body": "awk '{ print $${1:1} }'",
|
||||||
|
"description": "Retrieve a field from the piped in string, with whitespace as the default field delimiter. `$n` means that the nth field will be used.",
|
||||||
|
"prefix": "awk (field)"
|
||||||
|
},
|
||||||
|
"check device name": {
|
||||||
|
"body": "scutil --get ComputerName | grep -q \"$0\"",
|
||||||
|
"prefix": "device name"
|
||||||
|
},
|
||||||
|
"check if dark mode (macOS)": {
|
||||||
|
"body": "defaults read -g AppleInterfaceStyle &>/dev/null; && echo 'isDark'",
|
||||||
|
"prefix": "check if dark mode (macOS)"
|
||||||
|
},
|
||||||
|
"check if in git repo": {
|
||||||
|
"body": "if ! git rev-parse --is-inside-work-tree &>/dev/null ; then print \"\\e[0;33mfile is not ins a git repository.\\e[0m\" && return 1 ; fi",
|
||||||
|
"prefix": "check if in git repo"
|
||||||
|
},
|
||||||
|
"check if installed": {
|
||||||
|
"body": [
|
||||||
|
"if [[ ! -x \"\\$(command -v ${1:cli})\" ]]; then print \"\\e[0;33m${1:cli} not installed.\\e[0m\" && return 1; fi",
|
||||||
|
"$0"
|
||||||
|
],
|
||||||
|
"description": "https://stackoverflow.com/a/26759734/22114136",
|
||||||
|
"prefix": "check if installed"
|
||||||
|
},
|
||||||
|
"check if on macOS": {
|
||||||
|
"body": "[[ \"\\$OSTYPE\" =~ \"darwin\" ]]",
|
||||||
|
"prefix": "check if on macOS"
|
||||||
|
},
|
||||||
|
"check if process is running": {
|
||||||
|
"body": "pgrep -xq \"${1:process}\" && $0",
|
||||||
|
"prefix": "check if process is running"
|
||||||
|
},
|
||||||
|
"check if sudo user": {
|
||||||
|
"body": "sudo -nv && ${1:some_sudo_action}",
|
||||||
|
"prefix": "check if sudo user"
|
||||||
|
},
|
||||||
|
"confirmation prompt": {
|
||||||
|
"body": [
|
||||||
|
"# confirmation prompt",
|
||||||
|
"print \"\\e[1;34m$0Proceed? (y/n)\\e[0m\"",
|
||||||
|
"read -rk pressed",
|
||||||
|
"echo",
|
||||||
|
"if [[ \"\\$pressed\" != \"y\" ]]; then",
|
||||||
|
"\techo \"Aborted.\"",
|
||||||
|
"\treturn 1",
|
||||||
|
"fi",
|
||||||
|
"echo"
|
||||||
|
],
|
||||||
|
"prefix": "confirmation prompt"
|
||||||
|
},
|
||||||
|
"default value": {
|
||||||
|
"body": "\\${${1:var}:-${2:default_value}}",
|
||||||
|
"prefix": "default value"
|
||||||
|
},
|
||||||
|
"directory of script": {
|
||||||
|
"body": "\"$(dirname \"$(readlink -f \"\\$0\")\")\"",
|
||||||
|
"prefix": "directory of this script"
|
||||||
|
},
|
||||||
|
"elseif": {
|
||||||
|
"body": "elif [[ ${1:condition} ]]; then\n\t${0}",
|
||||||
|
"description": "Add an elseif to an if statement.",
|
||||||
|
"prefix": "elseif"
|
||||||
|
},
|
||||||
|
"extension": {
|
||||||
|
"body": "ext=${${1:file_name}##*.}",
|
||||||
|
"prefix": "get extension"
|
||||||
|
},
|
||||||
|
"filename": {
|
||||||
|
"body": "file_name=$(basename \"$${1:file_path}\")",
|
||||||
|
"prefix": "filename"
|
||||||
|
},
|
||||||
|
"filename w/o ext": {
|
||||||
|
"body": "${1:file_name}=${${1:file_name}%.*}",
|
||||||
|
"prefix": "filename w/o ext"
|
||||||
|
},
|
||||||
|
"find & xargs": {
|
||||||
|
"body": "find . -print0 | xargs -0 -I '{}'",
|
||||||
|
"prefix": "find & xargs"
|
||||||
|
},
|
||||||
|
"find -exec": {
|
||||||
|
"body": "find . $0 -exec open '{}' \\;",
|
||||||
|
"prefix": "find -exec"
|
||||||
|
},
|
||||||
|
"for each file": {
|
||||||
|
"body": [
|
||||||
|
"for filename in *.txt; do",
|
||||||
|
"\techo \"\\$filename\"",
|
||||||
|
"done"
|
||||||
|
],
|
||||||
|
"prefix": "for each file"
|
||||||
|
},
|
||||||
|
"for each line (read)": {
|
||||||
|
"body": [
|
||||||
|
"while read -r line; do",
|
||||||
|
"\techo \"\\$line\"$0",
|
||||||
|
"done < \"\\$${1:input_file}\""
|
||||||
|
],
|
||||||
|
"prefix": "for each line (read)"
|
||||||
|
},
|
||||||
|
"for each line (variable)": {
|
||||||
|
"body": [
|
||||||
|
"echo \"\\$lines\" | while read -r line; do",
|
||||||
|
"\techo \"\\$line\"",
|
||||||
|
"done"
|
||||||
|
],
|
||||||
|
"prefix": "for each line (variable)"
|
||||||
|
},
|
||||||
|
"for i ..": {
|
||||||
|
"body": [
|
||||||
|
"for ((i = 0; i <= ${1:length}; i++)); do",
|
||||||
|
" echo \\$i$0",
|
||||||
|
"done"
|
||||||
|
],
|
||||||
|
"prefix": "for i .."
|
||||||
|
},
|
||||||
|
"function": {
|
||||||
|
"body": "function ${1:name} {\n\t${0}\n}",
|
||||||
|
"prefix": "function"
|
||||||
|
},
|
||||||
|
"get nth line from string": {
|
||||||
|
"body": "line=$(echo \"\\$${1:str}\" | sed -n \"${2:n}p\")",
|
||||||
|
"prefix": "get nth line from string"
|
||||||
|
},
|
||||||
|
"i++": {
|
||||||
|
"body": "((${1:i}++))",
|
||||||
|
"prefix": "i++"
|
||||||
|
},
|
||||||
|
"i--": {
|
||||||
|
"body": "((${1:i}--))",
|
||||||
|
"prefix": "i--"
|
||||||
|
},
|
||||||
|
"if (short)": {
|
||||||
|
"body": "[[ \"\\$${1:var}\" ]] && $0",
|
||||||
|
"prefix": "if (short)"
|
||||||
|
},
|
||||||
|
"if .. then": {
|
||||||
|
"body": [
|
||||||
|
"if [[ \"\\$${1:var}\" ]]; then",
|
||||||
|
"\t$0",
|
||||||
|
"fi"
|
||||||
|
],
|
||||||
|
"prefix": "if .. then"
|
||||||
|
},
|
||||||
|
"if .. then .. else": {
|
||||||
|
"body": [
|
||||||
|
"if [[ \"$${1:cond}\" ]]; then",
|
||||||
|
"\t$0",
|
||||||
|
"else",
|
||||||
|
"\t",
|
||||||
|
"fi"
|
||||||
|
],
|
||||||
|
"prefix": "if .. then .. else"
|
||||||
|
},
|
||||||
|
"input (stdin or $1)": {
|
||||||
|
"body": [
|
||||||
|
"if [[ $# -eq 0 ]]; then",
|
||||||
|
"\tinput=$(< /dev/stdin)",
|
||||||
|
"else",
|
||||||
|
"\tinput=\"$1\"",
|
||||||
|
"fi"
|
||||||
|
],
|
||||||
|
"description": "reads either from STDIN or $1. stdin may have unescaped newlines, which have to be removed, e.g. via `tr -d '\n'`.",
|
||||||
|
"prefix": "input (stdin or $1)"
|
||||||
|
},
|
||||||
|
"notify (msg)": {
|
||||||
|
"body": "osascript -e 'display notification \"\" with title \"${1:msg}\"'",
|
||||||
|
"prefix": "notify (msg)"
|
||||||
|
},
|
||||||
|
"notify (var)": {
|
||||||
|
"body": "osascript -e \"display notification \\\"\\\" with title \\\"$${1:var}\\\"\"",
|
||||||
|
"prefix": "notify (var)"
|
||||||
|
},
|
||||||
|
"null (pipe)": {
|
||||||
|
"body": "&> /dev/null",
|
||||||
|
"prefix": "null (pipe)"
|
||||||
|
},
|
||||||
|
"osascript jxa (run script)": {
|
||||||
|
"body": "osascript -l JavaScript \"${1:file}\"",
|
||||||
|
"prefix": [
|
||||||
|
"jxa (run script)",
|
||||||
|
"osascript -l JavaScript"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"plist: extract key": {
|
||||||
|
"body": "plutil -extract name.childkey xml1 -o - example.plist | sed -n 4p | cut -d'>' -f2 | cut -d'<' -f1",
|
||||||
|
"prefix": "plist: extract key"
|
||||||
|
},
|
||||||
|
"print in blue": {
|
||||||
|
"body": "print \"\\e[1;34m$0\\e[0m\"",
|
||||||
|
"prefix": "print in blue"
|
||||||
|
},
|
||||||
|
"progress bar": {
|
||||||
|
"body": [
|
||||||
|
"for _ in {1..100}; do",
|
||||||
|
"\tprintf \"🬋\"",
|
||||||
|
"\tsleep 0.5",
|
||||||
|
"done"
|
||||||
|
],
|
||||||
|
"prefix": "progress bar"
|
||||||
|
},
|
||||||
|
"quicklook": {
|
||||||
|
"body": "qlmanage -p \"${1:filepath}\"",
|
||||||
|
"description": "QuickLook the file. MacOS only.",
|
||||||
|
"prefix": "quicklook"
|
||||||
|
},
|
||||||
|
"redirect to stderr": {
|
||||||
|
"body": ">&2",
|
||||||
|
"prefix": "redirect to stderr"
|
||||||
|
},
|
||||||
|
"resolve home": {
|
||||||
|
"body": "${1:path}=\"\\${${1:path}/#\\~/\\$HOME}\"",
|
||||||
|
"prefix": "resolve home"
|
||||||
|
},
|
||||||
|
"restart app": {
|
||||||
|
"body": [
|
||||||
|
"killall \"${1:app_name}\"",
|
||||||
|
"while pgrep -xq \"${1:app_name}\"; do sleep 0.1; done",
|
||||||
|
"open -a \"${1:app_name}\""
|
||||||
|
],
|
||||||
|
"description": "safely restart app, avoiding race condition",
|
||||||
|
"prefix": "restart app"
|
||||||
|
},
|
||||||
|
"sed substitution": {
|
||||||
|
"body": "sed 's/$0//'",
|
||||||
|
"prefix": "sed substitution"
|
||||||
|
},
|
||||||
|
"shebang": {
|
||||||
|
"body": "#!/usr/bin/env zsh",
|
||||||
|
"prefix": "shebang"
|
||||||
|
},
|
||||||
|
"slice": {
|
||||||
|
"body": "${1:var}=\"${${1:var}:${2:from}:${3:to}}\"",
|
||||||
|
"prefix": "slice"
|
||||||
|
},
|
||||||
|
"spinner": {
|
||||||
|
"body": [
|
||||||
|
"# spinner with 20s timeout",
|
||||||
|
"spinner=\"⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏\"",
|
||||||
|
"for i in {1..100}; do",
|
||||||
|
"\tpos=\\$((i % \\${#spinner}))",
|
||||||
|
"\tprintf \"\\r%s\" \"\\${spinner:\\$pos:1}\"",
|
||||||
|
"\tsleep 0.2",
|
||||||
|
"done",
|
||||||
|
"printf \"\\r\" # remove spinner"
|
||||||
|
],
|
||||||
|
"prefix": "spinner"
|
||||||
|
},
|
||||||
|
"stderr (merge with stdout)": {
|
||||||
|
"body": "2>&1",
|
||||||
|
"prefix": "stderr (merge with stdout)"
|
||||||
|
},
|
||||||
|
"stdin": {
|
||||||
|
"body": "stdin=\\$(< /dev/stdin)",
|
||||||
|
"description": "$(cat) also works. See https://stackoverflow.com/questions/32363887/in-a-bash-function-how-do-i-get-stdin-into-a-variable",
|
||||||
|
"prefix": "stdin"
|
||||||
|
},
|
||||||
|
"stdout is to a terminal": {
|
||||||
|
"body": "[[ -t true ]]",
|
||||||
|
"prefix": "stdout is to a terminal"
|
||||||
|
},
|
||||||
|
"substitute": {
|
||||||
|
"body": "\\${${1:var}//${2:search}/${3:replace}}",
|
||||||
|
"description": "one slash for single substitution, two for global",
|
||||||
|
"prefix": "substitute (expansion)"
|
||||||
|
},
|
||||||
|
"suppress stderr": {
|
||||||
|
"body": "2>/dev/null",
|
||||||
|
"prefix": "suppress stderr"
|
||||||
|
},
|
||||||
|
"switch case": {
|
||||||
|
"body": [
|
||||||
|
"case $${1:var} in",
|
||||||
|
"\"one\" | \"two\")",
|
||||||
|
"\techo \"foo\"",
|
||||||
|
"\t;;",
|
||||||
|
"\"three\")",
|
||||||
|
"\techo \"bar\"",
|
||||||
|
"\t;;",
|
||||||
|
"*)",
|
||||||
|
"\techo \"default\"",
|
||||||
|
"\t;;",
|
||||||
|
"esac"
|
||||||
|
],
|
||||||
|
"description": "A case command first expands word, and tries to match it against each pattern in turn.",
|
||||||
|
"prefix": "switch case"
|
||||||
|
},
|
||||||
|
"ternary": {
|
||||||
|
"body": "\\$([[ \"${1:cond}\" ]] && echo \"${2:value1}\" || echo \"${3:value2}\")",
|
||||||
|
"prefix": "ternary"
|
||||||
|
},
|
||||||
|
"then": {
|
||||||
|
"body": "then\n\t$0\nfi",
|
||||||
|
"prefix": "then .. fi"
|
||||||
|
},
|
||||||
|
"today (ISO date) + now": {
|
||||||
|
"body": "${1:now}=\\$(date +\"%Y-%m-%d %H:%M:%S\")",
|
||||||
|
"prefix": [
|
||||||
|
"today (ISO date)",
|
||||||
|
"now"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trim whitespace": {
|
||||||
|
"body": "${1:text}=$(echo -n \"$${1:text}\" | sed -e 's/^ *//' -e 's/ *$//')",
|
||||||
|
"prefix": "trim whitespace"
|
||||||
|
},
|
||||||
|
"urlEncode": {
|
||||||
|
"body": "osascript -l JavaScript -e \"encodeURIComponent('${1:text}')\"",
|
||||||
|
"prefix": "urlEncode"
|
||||||
|
},
|
||||||
|
"wait until app running": {
|
||||||
|
"body": "while ! pgrep -xq \"${1:app_name}\"; do sleep 0.1; done",
|
||||||
|
"prefix": "wait until app running"
|
||||||
|
},
|
||||||
|
"wait until app terminated": {
|
||||||
|
"body": "while pgrep -xq \"${1:app_name}\"; do sleep 0.1; done",
|
||||||
|
"prefix": "wait until app terminated"
|
||||||
|
},
|
||||||
|
"while": {
|
||||||
|
"body": "while [[ ${1:condition} ]]; do\n\t${0}\ndone\n",
|
||||||
|
"description": "A while loop by condition.",
|
||||||
|
"prefix": "while"
|
||||||
|
},
|
||||||
|
"xargs (for each line)": {
|
||||||
|
"body": "xargs -I {} ${1:some_cmd} '{}'",
|
||||||
|
"prefix": "xargs (for each line)"
|
||||||
|
}
|
||||||
|
}
|
||||||
7
config/nvim/snippets/yaml.json
Normal file
7
config/nvim/snippets/yaml.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"schema (modeline)": {
|
||||||
|
"body": "# yaml-language-server: $$schema=${1:url}",
|
||||||
|
"description": "https://github.com/redhat-developer/yaml-language-server#using-inlined-schema",
|
||||||
|
"prefix": "schema (modeline)"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,7 +36,6 @@ type = "prompt"
|
|||||||
type = "git"
|
type = "git"
|
||||||
style = "plain"
|
style = "plain"
|
||||||
foreground = "lightGreen"
|
foreground = "lightGreen"
|
||||||
# template = "{{ .UpstreamIcon }}{{ .HEAD }} {{ if or (.Staging.Changed) (.Working.Changed) }}({{if .Behind }}\u2193 {{ .Behind }} {{ end }}{{if .Staging.Changed }}\uF046 {{ .Staging.String }} {{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }}| {{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}){{ end }}"
|
|
||||||
template = "{{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} {{ .StashCount }}{{ end }}"
|
template = "{{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} {{ .StashCount }}{{ end }}"
|
||||||
|
|
||||||
[blocks.segments.properties]
|
[blocks.segments.properties]
|
||||||
|
|||||||
@@ -28,6 +28,15 @@ bind -n M-Down select-pane -D
|
|||||||
# Reload tmux config with <prefix> + r
|
# Reload tmux config with <prefix> + r
|
||||||
bind r source-file ~/.dotfiles/config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
bind r source-file ~/.dotfiles/config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
||||||
|
|
||||||
|
# Switch to next client with <prefix>( and previous with <prefix>)
|
||||||
|
bind -r '(' switch-client -p\; refresh-client -S
|
||||||
|
bind -r ')' switch-client -n\; refresh-client -S
|
||||||
|
|
||||||
|
# tms, https://github.com/jrmoulton/tmux-sessionizer
|
||||||
|
bind C-h display-popup -E "tms"
|
||||||
|
bind C-j display-popup -E "tms switch"
|
||||||
|
bind C-k display-popup -E "tms windows"
|
||||||
|
|
||||||
# Open a new window with <prefix> + N
|
# Open a new window with <prefix> + N
|
||||||
bind N new-window
|
bind N new-window
|
||||||
|
|
||||||
@@ -112,7 +121,7 @@ set-option -g status-left ''
|
|||||||
set-option -g window-status-format ' #I:#W '
|
set-option -g window-status-format ' #I:#W '
|
||||||
set-option -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
set-option -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||||
|
|
||||||
set-option -g status-right "#{hostname_short}/#S #{tmux_mode_indicator}"
|
set-option -g status-right "#{hostname_short}/#(tms sessions) #{tmux_mode_indicator}"
|
||||||
|
|
||||||
set -g pane-border-style "fg=#3b4261"
|
set -g pane-border-style "fg=#3b4261"
|
||||||
set -g pane-active-border-style "fg=#7aa2f7"
|
set -g pane-active-border-style "fg=#7aa2f7"
|
||||||
@@ -138,15 +147,15 @@ set -g @tmux_window_name_max_name_len "20"
|
|||||||
set -g @tmux_window_name_use_tilde "True"
|
set -g @tmux_window_name_use_tilde "True"
|
||||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
||||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'x-set-php-aliases', 'oh-my-posh', 'antidot']" # Default is []
|
set -g @tmux_window_name_ignored_programs "['sqlite3', 'x-set-php-aliases', 'oh-my-posh', 'antidot', 'direnv']" # Default is []
|
||||||
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local')]"
|
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
||||||
|
|
||||||
## https://github.com/tmux-plugins/tmux-continuum
|
## https://github.com/tmux-plugins/tmux-continuum
|
||||||
set -g @continuum-restore 'on'
|
# set -g @continuum-restore 'on'
|
||||||
|
|
||||||
## https://github.com/tmux-plugins/tmux-resurrect
|
## https://github.com/tmux-plugins/tmux-resurrect
|
||||||
set -g @resurrect-strategy-nvim 'session'
|
# set -g @resurrect-strategy-nvim 'session'
|
||||||
set -g @resurrect-dir '~/.local/state/tmux/tmux-resurrect'
|
# set -g @resurrect-dir '~/.local/state/tmux/tmux-resurrect'
|
||||||
|
|
||||||
## https://github.com/MunifTanjim/tmux-mode-indicator
|
## https://github.com/MunifTanjim/tmux-mode-indicator
|
||||||
set -g @mode_indicator_prefix_mode_style 'bg=default,fg=#7aa2f7'
|
set -g @mode_indicator_prefix_mode_style 'bg=default,fg=#7aa2f7'
|
||||||
@@ -160,9 +169,9 @@ set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
|
|||||||
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-sensible/sensible.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-sensible/sensible.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-window-name/tmux_window_name.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-window-name/tmux_window_name.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-resurrect/resurrect.tmux
|
# run-shell ~/.dotfiles/config/tmux/plugins/tmux-resurrect/resurrect.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-continuum/continuum.tmux
|
# run-shell ~/.dotfiles/config/tmux/plugins/tmux-continuum/continuum.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-sessionist/sessionist.tmux
|
# run-shell ~/.dotfiles/config/tmux/plugins/tmux-sessionist/sessionist.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-mode-indicator/mode_indicator.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-mode-indicator/mode_indicator.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
||||||
|
|||||||
@@ -2,98 +2,12 @@
|
|||||||
|
|
||||||
```txt
|
```txt
|
||||||
|
|
||||||
n <Space>/ * <Lua 380: ~/.config/nvim/lua/plugins/telescope.lua:82>
|
n <Space>/ * <Lua 196: ~/.config/nvim/lua/plugins/telescope.lua:68>
|
||||||
[/] Fuzzily search in current buffer]
|
[/] Fuzzily search in current buffer]
|
||||||
n <Space>hw * <Lua 42: ~/.config/nvim/lua/plugins/harpoon.lua:40>
|
n <Space>ht * <Lua 192: ~/.config/nvim/lua/plugins/harpoon.lua:43>
|
||||||
Open harpoon window with telescope
|
|
||||||
n <Space>1 * <Lua 40: ~/.config/nvim/lua/plugins/harpoon.lua:68>
|
|
||||||
harpoon to file 1
|
|
||||||
n <Space>hn * <Lua 39: ~/.config/nvim/lua/plugins/harpoon.lua:61>
|
|
||||||
harpoon to next file
|
|
||||||
n <Space>hp * <Lua 38: ~/.config/nvim/lua/plugins/harpoon.lua:54>
|
|
||||||
harpoon to previous file
|
|
||||||
n <Space>ha * <Lua 37: ~/.config/nvim/lua/plugins/harpoon.lua:47>
|
|
||||||
harpoon file
|
|
||||||
n <Space>5 * <Lua 36: ~/.config/nvim/lua/plugins/harpoon.lua:96>
|
|
||||||
harpoon to file 5
|
|
||||||
n <Space>4 * <Lua 35: ~/.config/nvim/lua/plugins/harpoon.lua:89>
|
|
||||||
harpoon to file 4
|
|
||||||
n <Space>3 * <Lua 34: ~/.config/nvim/lua/plugins/harpoon.lua:82>
|
|
||||||
harpoon to file 3
|
|
||||||
n <Space>2 * <Lua 33: ~/.config/nvim/lua/plugins/harpoon.lua:75>
|
|
||||||
harpoon to file 2
|
|
||||||
n <Space>tc * <Cmd>CloakToggle<CR>
|
|
||||||
[tc] Toggle Cloak
|
|
||||||
n <Space>xx * <Cmd>Trouble<CR>
|
|
||||||
Toggle Trouble
|
|
||||||
n <Space>xq * <Cmd>Trouble quickfix<CR>
|
|
||||||
Toggle Quickfix
|
|
||||||
n <Space>xl * <Cmd>Trouble loclist<CR>
|
|
||||||
Toggle Loclist
|
|
||||||
n <Space>xd * <Cmd>Trouble document_diagnostics<CR>
|
|
||||||
Toggle Document Diagnostics
|
|
||||||
n <Space>xw * <Cmd>Trouble workspace_diagnostics<CR>
|
|
||||||
Toggle Workspace Diagnostics
|
|
||||||
n <Space>?s * <Cmd>Neoconf show<CR>
|
|
||||||
Neoconf: Show merged config
|
|
||||||
n <Space>?m * <Cmd>Neoconf lsp<CR>
|
|
||||||
Neoconf: Show merged LSP config
|
|
||||||
n <Space>?l * <Cmd>Neoconf local<CR>
|
|
||||||
Neoconf: Local
|
|
||||||
n <Space>?g * <Cmd>Neoconf global<CR>
|
|
||||||
Neoconf: Global
|
|
||||||
n <Space>?c * <Cmd>Neoconf<CR>
|
|
||||||
Neoconf: Open
|
|
||||||
n <Space>wl * <Cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>
|
|
||||||
LSP: Workspace List Folders
|
|
||||||
n <Space>wr * <Cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>
|
|
||||||
LSP: Workspace Remove Folder
|
|
||||||
n <Space>wa * <Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>
|
|
||||||
LSP: Workspace Add Folder
|
|
||||||
n <Space>ws * <Cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>
|
|
||||||
LSP: Workspace Symbols
|
|
||||||
n <Space>ds * <Cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>
|
|
||||||
LSP: Document Symbols
|
|
||||||
n <Space>D * <Cmd>lua vim.lsp.buf.type_definition()<CR>
|
|
||||||
LSP: Type Definition
|
|
||||||
n <Space>ca * <Cmd>lua vim.lsp.buf.code_action()<CR>
|
|
||||||
LSP: Code Action
|
|
||||||
n <Space>cr * <Cmd>lua vim.lsp.buf.rename()<CR>
|
|
||||||
LSP: Rename
|
|
||||||
n <Space>dq * <Cmd>lua vim.diagnostic.setloclist()<CR>
|
|
||||||
Diagnostic: Set loc list
|
|
||||||
n <Space>do * <Cmd>lua vim.diagnostic.open_float()<CR>
|
|
||||||
Diagnostic: Open float
|
|
||||||
<Space>cf * <Lua 107: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
[f] Format buffer
|
|
||||||
n <Space>e * <Lua 81: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
NeoTree reveal
|
|
||||||
n <Space>cg * <Lua 50: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
Generate annotations
|
|
||||||
n <Space>zm * <Lua 49: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search mappings.
|
|
||||||
n <Space>zh * <Lua 48: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search history of opened files
|
|
||||||
n <Space>zb * <Lua 47: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search open buffers.
|
|
||||||
n <Space>zt * <Lua 46: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search open tabs.
|
|
||||||
n <Space>zc * <Lua 32: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search commands.
|
|
||||||
n <Space>zf * <Lua 31: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search for files in given path.
|
|
||||||
n <Space>zg * <Lua 25: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search with rg (aka live grep).
|
|
||||||
n <Space>dc * <Lua 45: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
DAP: Continue
|
|
||||||
n <Space>db * <Lua 44: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
DAP: Toggle Breakpoint
|
|
||||||
n <Space>dt * <Lua 43: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
DAP: Toggle UI
|
|
||||||
n <Space>ht * <Lua 369: ~/.config/nvim/lua/plugins/harpoon.lua:16>
|
|
||||||
Open Harpoon Quick menu
|
Open Harpoon Quick menu
|
||||||
n <Space>dr * <Lua 41: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
n <Space>hw * <Lua 189: ~/.config/nvim/lua/plugins/harpoon.lua:37>
|
||||||
DAP: Reset
|
Open harpoon window with telescope
|
||||||
x # * <Lua 7: vim/_defaults.lua:0>
|
x # * <Lua 7: vim/_defaults.lua:0>
|
||||||
:help v_#-default
|
:help v_#-default
|
||||||
o % <Plug>(MatchitOperationForward)
|
o % <Plug>(MatchitOperationForward)
|
||||||
@@ -105,13 +19,20 @@ x * * <Lua 3: vim/_defaults.lua:0>
|
|||||||
:help v_star-default
|
:help v_star-default
|
||||||
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||||
:help v_@-default
|
:help v_@-default
|
||||||
n K * <Cmd>lua vim.lsp.buf.hover()<CR>
|
|
||||||
LSP: Hover Documentation
|
|
||||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||||
:help v_Q-default
|
:help v_Q-default
|
||||||
x S <Plug>VSurround
|
x R * <Lua 70: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
|
Treesitter Search
|
||||||
|
o R * <Lua 69: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
|
Treesitter Search
|
||||||
n Y * y$
|
n Y * y$
|
||||||
:help Y-default
|
:help Y-default
|
||||||
|
o Zk * <Lua 67: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
|
Flash Treesitter
|
||||||
|
x Zk * <Lua 66: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
|
Flash Treesitter
|
||||||
|
n Zk * <Lua 59: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
|
Flash Treesitter
|
||||||
o [% <Plug>(MatchitOperationMultiBackward)
|
o [% <Plug>(MatchitOperationMultiBackward)
|
||||||
x [% <Plug>(MatchitVisualMultiBackward)
|
x [% <Plug>(MatchitVisualMultiBackward)
|
||||||
n [% <Plug>(MatchitNormalMultiBackward)
|
n [% <Plug>(MatchitNormalMultiBackward)
|
||||||
@@ -123,27 +44,23 @@ n ]% <Plug>(MatchitNormalMultiForward)
|
|||||||
n ]d * <Lua 14: vim/_defaults.lua:0>
|
n ]d * <Lua 14: vim/_defaults.lua:0>
|
||||||
Jump to the next diagnostic
|
Jump to the next diagnostic
|
||||||
x a% <Plug>(MatchitVisualTextObject)
|
x a% <Plug>(MatchitVisualTextObject)
|
||||||
n cS <Plug>CSurround
|
n gR * :RegexplainerToggle<CR>
|
||||||
n cs <Plug>Csurround
|
Toggle Regexplainer
|
||||||
n ds <Plug>Dsurround
|
|
||||||
n dp * <Cmd>lua vim.diagnostic.goto_prev()<CR>
|
|
||||||
Diagnostic: Goto Prev
|
|
||||||
n dn * <Cmd>lua vim.diagnostic.goto_next()<CR>
|
|
||||||
Diagnostic: Goto Next
|
|
||||||
o g% <Plug>(MatchitOperationBackward)
|
o g% <Plug>(MatchitOperationBackward)
|
||||||
x g% <Plug>(MatchitVisualBackward)
|
x g% <Plug>(MatchitVisualBackward)
|
||||||
n g% <Plug>(MatchitNormalBackward)
|
n g% <Plug>(MatchitNormalBackward)
|
||||||
x gS <Plug>VgSurround
|
n gP * <Lua 52: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:132>
|
||||||
n gR * :RegexplainerToggle<CR>
|
Close preview windows
|
||||||
Toggle Regexplainer
|
n gpr * <Lua 25: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:114>
|
||||||
n gD * <Cmd>lua vim.lsp.buf.declaration()<CR>
|
Preview references
|
||||||
LSP: Goto Declaration
|
n gpD * <Lua 244: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:105>
|
||||||
n gd * <Cmd>lua vim.lsp.buf.definition()<CR>
|
Preview declaration
|
||||||
LSP: Goto Definition
|
n gpi * <Lua 242: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:91>
|
||||||
n gr * <Cmd>lua require("telescope.builtin").lsp_references()<CR>
|
Preview implementation
|
||||||
LSP: Goto References
|
n gpt * <Lua 241: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:77>
|
||||||
n gI * <Cmd>lua vim.lsp.buf.implementation()<CR>
|
Preview type definition
|
||||||
LSP: Goto Implementation
|
n gpd * <Lua 237: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:63>
|
||||||
|
Preview definition
|
||||||
o gc * <Lua 13: vim/_defaults.lua:0>
|
o gc * <Lua 13: vim/_defaults.lua:0>
|
||||||
Comment textobject
|
Comment textobject
|
||||||
n gcc * <Lua 12: vim/_defaults.lua:0>
|
n gcc * <Lua 12: vim/_defaults.lua:0>
|
||||||
@@ -160,13 +77,14 @@ n j * v:count == 0 ? 'gj' : 'j'
|
|||||||
Move down
|
Move down
|
||||||
n k * v:count == 0 ? 'gk' : 'k'
|
n k * v:count == 0 ? 'gk' : 'k'
|
||||||
Move up
|
Move up
|
||||||
n n * <Lua 51: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
o r * <Lua 68: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
Twilight
|
Remote Flash
|
||||||
n ySS <Plug>YSsurround
|
o zk * <Lua 65: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
n ySs <Plug>YSsurround
|
Flash
|
||||||
n yss <Plug>Yssurround
|
x zk * <Lua 64: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
n yS <Plug>YSurround
|
Flash
|
||||||
n ys <Plug>Ysurround
|
n zk * <Lua 63: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||||
|
Flash
|
||||||
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
||||||
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
|
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
|
||||||
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
|
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
|
||||||
@@ -180,44 +98,29 @@ x <Plug>(MatchitVisualBackward) * :<C-U>call matchit#Match_wrapper('',0,'v')<CR
|
|||||||
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
||||||
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
||||||
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
||||||
v <Plug>VgSurround * :<C-U>call <SNR>27_opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR>
|
s <Plug>luasnip-jump-prev * <Lua 315: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:57>
|
||||||
v <Plug>VSurround * :<C-U>call <SNR>27_opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>
|
|
||||||
n <Plug>YSurround * <SNR>27_opfunc2('setup')
|
|
||||||
n <Plug>Ysurround * <SNR>27_opfunc('setup')
|
|
||||||
n <Plug>YSsurround * <SNR>27_opfunc2('setup').'_'
|
|
||||||
n <Plug>Yssurround * '^'.v:count1.<SNR>27_opfunc('setup').'g_'
|
|
||||||
n <Plug>CSurround * :<C-U>call <SNR>27_changesurround(1)<CR>
|
|
||||||
n <Plug>Csurround * :<C-U>call <SNR>27_changesurround()<CR>
|
|
||||||
n <Plug>Dsurround * :<C-U>call <SNR>27_dosurround(<SNR>27_inputtarget())<CR>
|
|
||||||
n <Plug>SurroundRepeat * .
|
|
||||||
n <C-L> * :<C-U>TmuxNavigateRight<CR>
|
|
||||||
n <C-Bslash> * :<C-U>TmuxNavigatePrevious<CR>
|
|
||||||
n <C-J> * :<C-U>TmuxNavigateDown<CR>
|
|
||||||
n <C-H> * :<C-U>TmuxNavigateLeft<CR>
|
|
||||||
n <C-K> * :<C-U>TmuxNavigateUp<CR>
|
|
||||||
s <Plug>luasnip-jump-prev * <Lua 283: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:57>
|
|
||||||
LuaSnip: Jump to the previous node
|
LuaSnip: Jump to the previous node
|
||||||
s <Plug>luasnip-jump-next * <Lua 282: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:54>
|
s <Plug>luasnip-jump-next * <Lua 314: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:54>
|
||||||
LuaSnip: Jump to the next node
|
LuaSnip: Jump to the next node
|
||||||
s <Plug>luasnip-prev-choice * <Lua 281: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:51>
|
s <Plug>luasnip-prev-choice * <Lua 313: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:51>
|
||||||
LuaSnip: Change to the previous choice from the choiceNode
|
LuaSnip: Change to the previous choice from the choiceNode
|
||||||
s <Plug>luasnip-next-choice * <Lua 280: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:48>
|
s <Plug>luasnip-next-choice * <Lua 312: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:48>
|
||||||
LuaSnip: Change to the next choice from the choiceNode
|
LuaSnip: Change to the next choice from the choiceNode
|
||||||
s <Plug>luasnip-expand-snippet * <Lua 279: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:45>
|
s <Plug>luasnip-expand-snippet * <Lua 311: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:45>
|
||||||
LuaSnip: Expand the current snippet
|
LuaSnip: Expand the current snippet
|
||||||
s <Plug>luasnip-expand-or-jump * <Lua 278: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:42>
|
s <Plug>luasnip-expand-or-jump * <Lua 310: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:42>
|
||||||
LuaSnip: Expand or jump in the current snippet
|
LuaSnip: Expand or jump in the current snippet
|
||||||
<Plug>luasnip-expand-repeat * <Lua 276: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:35>
|
<Plug>luasnip-expand-repeat * <Lua 308: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:35>
|
||||||
LuaSnip: Repeat last node expansion
|
LuaSnip: Repeat last node expansion
|
||||||
n <Plug>luasnip-delete-check * <Lua 274: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:28>
|
n <Plug>luasnip-delete-check * <Lua 306: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:28>
|
||||||
LuaSnip: Removes current snippet from jumplist
|
LuaSnip: Removes current snippet from jumplist
|
||||||
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
||||||
n <C-P> * <Lua 26: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
|
||||||
FZF: search for files starting at current directory.
|
|
||||||
n <C-W><C-D> <C-W>d
|
n <C-W><C-D> <C-W>d
|
||||||
Show diagnostics under the cursor
|
Show diagnostics under the cursor
|
||||||
n <C-W>d * <Lua 16: vim/_defaults.lua:0>
|
n <C-W>d * <Lua 16: vim/_defaults.lua:0>
|
||||||
Show diagnostics under the cursor
|
Show diagnostics under the cursor
|
||||||
|
n <C-L> * <Cmd>nohlsearch|diffupdate|normal! <C-L><CR>
|
||||||
|
:help CTRL-L-default
|
||||||
```
|
```
|
||||||
|
|
||||||
- Generated on Wed 25 Sep 2024 14:52:25 EEST
|
- Generated on Fri 4 Oct 2024 14:49:00 EEST
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# It also updates asdf and the plugins, and then reshim asdf.
|
# It also updates asdf and the plugins, and then reshim asdf.
|
||||||
#
|
#
|
||||||
# Usage: ./install-asdf.sh [both|install|add_plugins]
|
# Usage: ./install-asdf.sh [both|install|update|add_plugins]
|
||||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
||||||
# License: MIT
|
# License: MIT
|
||||||
#
|
#
|
||||||
@@ -13,9 +13,40 @@ source "${DOTFILES}/config/shared.sh"
|
|||||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||||
export PATH="${ASDF_DIR}/bin:$PATH"
|
export PATH="${ASDF_DIR}/bin:$PATH"
|
||||||
|
|
||||||
|
# If ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME is not set, set it
|
||||||
|
if [ -z "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}" ]; then
|
||||||
|
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
|
||||||
|
fi
|
||||||
|
|
||||||
msg "Sourcing asdf in your shell"
|
msg "Sourcing asdf in your shell"
|
||||||
. "$ASDF_DIR/asdf.sh"
|
. "$ASDF_DIR/asdf.sh"
|
||||||
|
|
||||||
|
ASDF_INSTALLABLES=(
|
||||||
|
"1password-cli:github.com/NeoHsu/asdf-1password-cli.git"
|
||||||
|
"age:github.com/threkk/asdf-age.git"
|
||||||
|
"bottom:github.com/carbonteq/asdf-btm.git"
|
||||||
|
"direnv:github.com/asdf-community/asdf-direnv.git"
|
||||||
|
"dotenv-linter:github.com/wesleimp/asdf-dotenv-linter.git"
|
||||||
|
"editorconfig-checker:github.com/gabitchov/asdf-editorconfig-checker.git"
|
||||||
|
"fd:gitlab.com/wt0f/asdf-fd.git"
|
||||||
|
"github-cli:github.com/bartlomiejdanek/asdf-github-cli.git"
|
||||||
|
"golang:github.com/asdf-community/asdf-golang.git"
|
||||||
|
"hadolint:github.com/devlincashman/asdf-hadolint.git"
|
||||||
|
"kubectl:github.com/asdf-community/asdf-kubectl.git"
|
||||||
|
"nodejs:github.com/asdf-vm/asdf-nodejs.git"
|
||||||
|
"pipx:github.com/yozachar/asdf-pipx.git"
|
||||||
|
"pre-commit:github.com/jonathanmorley/asdf-pre-commit.git"
|
||||||
|
"python:github.com/asdf-community/asdf-python.git"
|
||||||
|
"ripgrep:gitlab.com/wt0f/asdf-ripgrep.git"
|
||||||
|
"rust:github.com/code-lever/asdf-rust.git"
|
||||||
|
"shellcheck:github.com/luizm/asdf-shellcheck.git"
|
||||||
|
"shfmt:github.com/luizm/asdf-shfmt.git"
|
||||||
|
"terragrunt:github.com/ohmer/asdf-terragrunt.git"
|
||||||
|
"tf-summarize:github.com/adamcrews/asdf-tf-summarize.git"
|
||||||
|
"yamllint:github.com/ericcornelissen/asdf-yamllint.git"
|
||||||
|
"yq:github.com/sudermanjr/asdf-yq.git"
|
||||||
|
)
|
||||||
|
|
||||||
# Function to update asdf and plugins
|
# Function to update asdf and plugins
|
||||||
update_asdf()
|
update_asdf()
|
||||||
{
|
{
|
||||||
@@ -24,43 +55,24 @@ update_asdf()
|
|||||||
asdf global asdf-plugin-manager "$(asdf latest asdf-plugin-manager)"
|
asdf global asdf-plugin-manager "$(asdf latest asdf-plugin-manager)"
|
||||||
asdf-plugin-manager version
|
asdf-plugin-manager version
|
||||||
asdf-plugin-manager add-all
|
asdf-plugin-manager add-all
|
||||||
|
asdf-plugin-manager update-all
|
||||||
|
asdf-plugin-manager export > "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}"
|
||||||
|
|
||||||
asdf install
|
asdf install
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_asdf_commands()
|
||||||
|
{
|
||||||
|
msg "Updating asdf commands using asdf-plugin-manager"
|
||||||
|
asdf-plugin-manager update-all
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# Function to install asdf plugins
|
# Function to install asdf plugins
|
||||||
install_asdf_plugins()
|
install_asdf_plugins()
|
||||||
{
|
{
|
||||||
ASDF_INSTALLABLES=(
|
|
||||||
"1password-cli:github.com/NeoHsu/asdf-1password-cli.git"
|
|
||||||
"age:github.com/threkk/asdf-age.git"
|
|
||||||
"bottom:github.com/carbonteq/asdf-btm.git"
|
|
||||||
"direnv:github.com/asdf-community/asdf-direnv.git"
|
|
||||||
"dotenv-linter:github.com/wesleimp/asdf-dotenv-linter.git"
|
|
||||||
"editorconfig-checker:github.com/gabitchov/asdf-editorconfig-checker.git"
|
|
||||||
"eza:github.com/lwiechec/asdf-eza.git"
|
|
||||||
"fd:gitlab.com/wt0f/asdf-fd.git"
|
|
||||||
"github-cli:github.com/bartlomiejdanek/asdf-github-cli.git"
|
|
||||||
"golang:github.com/asdf-community/asdf-golang.git"
|
|
||||||
"hadolint:github.com/devlincashman/asdf-hadolint.git"
|
|
||||||
"kubectl:github.com/asdf-community/asdf-kubectl.git"
|
|
||||||
"lazygit:github.com/nklmilojevic/asdf-lazygit.git"
|
|
||||||
"nodejs:github.com/asdf-vm/asdf-nodejs.git"
|
|
||||||
"pipx:github.com/yozachar/asdf-pipx.git"
|
|
||||||
"pre-commit:github.com/jonathanmorley/asdf-pre-commit.git"
|
|
||||||
"python:github.com/asdf-community/asdf-python.git"
|
|
||||||
"ripgrep:gitlab.com/wt0f/asdf-ripgrep.git"
|
|
||||||
"rust:github.com/code-lever/asdf-rust.git"
|
|
||||||
"shellcheck:github.com/luizm/asdf-shellcheck.git"
|
|
||||||
"shfmt:github.com/luizm/asdf-shfmt.git"
|
|
||||||
"terragrunt:github.com/ohmer/asdf-terragrunt.git"
|
|
||||||
"tf-summarize:github.com/adamcrews/asdf-tf-summarize.git"
|
|
||||||
"yamllint:github.com/ericcornelissen/asdf-yamllint.git"
|
|
||||||
"yq:github.com/sudermanjr/asdf-yq.git"
|
|
||||||
)
|
|
||||||
|
|
||||||
msg "Installing asdf plugins"
|
msg "Installing asdf plugins"
|
||||||
for item in "${ASDF_INSTALLABLES[@]}"; do
|
for item in "${ASDF_INSTALLABLES[@]}"; do
|
||||||
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
||||||
@@ -72,7 +84,7 @@ install_asdf_plugins()
|
|||||||
done
|
done
|
||||||
|
|
||||||
msg "Exporting asdf plugin versions"
|
msg "Exporting asdf plugin versions"
|
||||||
asdf-plugin-manager export > "${XDG_CONFIG_HOME}/asdf/plugin-versions"
|
asdf-plugin-manager export > "${ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME}"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -87,7 +99,7 @@ reshim()
|
|||||||
# create usage function
|
# create usage function
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
echo "Usage: $0 [both|install|add_plugins]"
|
echo "Usage: $0 [both|install|add_plugins|update]"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,6 +111,10 @@ main()
|
|||||||
update_asdf
|
update_asdf
|
||||||
reshim
|
reshim
|
||||||
;;
|
;;
|
||||||
|
"update")
|
||||||
|
update_asdf_commands
|
||||||
|
reshim
|
||||||
|
;;
|
||||||
"install")
|
"install")
|
||||||
update_asdf
|
update_asdf
|
||||||
reshim
|
reshim
|
||||||
|
|||||||
Reference in New Issue
Block a user