Compare commits

...

70 Commits

Author SHA1 Message Date
af123e5138 chore(deps): update brewfile 2024-11-19 11:20:24 +02:00
3879289559 feat(tmux): removal of tmux-resurrect 2024-11-18 11:42:58 +02:00
392628e733 fix(shell): fixes to zsh and bash configs 2024-11-16 16:30:57 +02:00
aa70eab5fb fix(nvim): disable statuscol on certain ft and bt 2024-11-12 05:22:01 +02:00
e5311ca285 fix(nvim): finally a working colorcolumn 2024-11-12 05:21:26 +02:00
d5618c9b5f chore(config): tweaks to nvim config, autogroups 2024-11-09 19:49:21 +02:00
d091f5a88f feat(base): add tms bundle to antigen 2024-11-09 19:48:12 +02:00
cb9195e3ad chore(config): asdf, add libtmux to python 2024-11-09 19:47:42 +02:00
c91cc387b6 chore(docs): update working on readme 2024-11-09 19:47:02 +02:00
083091ea46 chore(deps): update asdf tool-versions, plugins 2024-11-08 15:59:54 +02:00
7ff74f0e15 feat(dfm): add asdf helpers 2024-11-08 15:36:47 +02:00
9d1f62fcca feat(dfm): more helpers, enable multiple commands 2024-11-08 15:35:56 +02:00
a563e82e33 chore(base): add lando, eza fix if missing 2024-11-08 15:33:43 +02:00
62ff7836e7 chore(config): wezterm config formatting, fonts 2024-11-08 15:32:04 +02:00
88cb573027 chore(config): update oh-my-posh cfg, completions 2024-11-08 15:31:29 +02:00
82772d8208 feat(config): tms configs 2024-11-07 10:04:33 +02:00
github-actions[bot]
240035569c chore: update pre-commit hooks (#42)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-11-06 13:56:19 +02:00
renovate[bot]
9697c200f9 chore(deps): update node to v22.11.0 (#41) 2024-11-01 13:04:20 +02:00
fd11f9966b chore(config): tmux-sessionizer bindings 2024-10-25 13:03:53 +03:00
722b3c0cde chore(scripts): tweak install-asdf, add update 2024-10-25 12:42:38 +03:00
4fcb9d9741 chore(config): fzf default opts 2024-10-25 12:42:38 +03:00
fc232f26f7 chore(config): update tmux config 2024-10-25 12:42:38 +03:00
8b078309cf chore(nvim): dashboard tweaks, add q for fast quit 2024-10-25 12:42:38 +03:00
5a8f990e52 chore(nvim): which-key tweaks 2024-10-25 12:42:38 +03:00
c76c5d08b0 chore(nvim): treesitter config tweaks 2024-10-25 12:42:38 +03:00
b2857e226c chore(nvim): telescope config tweaks 2024-10-25 12:42:38 +03:00
dfbac0c736 chore(nvim): lsp config tweaks, add neoconf, ts_ls 2024-10-25 12:42:38 +03:00
fdd713908c chore(nvim): cmp tweaks, add luasnip snippets 2024-10-25 12:42:37 +03:00
60210c9bec chore(deps): cleanup oh-my-posh config 2024-10-25 12:42:37 +03:00
eaf8d2bdca chore(config): update direnv config 2024-10-25 12:42:37 +03:00
cc00055626 chore(deps): update tool-versions & cargo-package
# Conflicts:
#	base/tool-versions
2024-10-25 12:42:34 +03:00
renovate[bot]
567de68844 feat(github-action): update actions/setup-python ( v5.2.0 → v5.3.0 )
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-24 23:17:20 +00:00
github-actions[bot]
ed0b229757 chore: update pre-commit hooks (#40)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-10-22 09:09:53 +03:00
c8b6243c0b chore(deps): update asdf dependencies 2024-10-17 23:47:05 +03:00
renovate[bot]
21a92eb145 chore(deps): update node to v22.10.0 (#39)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-17 23:38:09 +03:00
8ec317f582 chore: tweaks and cleanup 2024-10-17 23:29:40 +03:00
renovate[bot]
42201d8b68 feat(github-release): update python ( 3.12.7 → 3.13.0 ) (#38)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-08 10:36:55 +03:00
github-actions[bot]
0c003ae5b9 chore: update pre-commit hooks (#37)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2024-10-06 15:53:15 +03:00
d383031ec8 chore(docs): update nvim keybindings 2024-10-04 14:50:09 +03:00
renovate[bot]
fa5e5f16da feat(github-action)!: Update peter-evans/create-pull-request ( v6 → v7 ) (#36)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 10:43:47 +03:00
f82396236e chore(asdf): removed eza, lazygit. updated deps. 2024-10-03 01:52:46 +03:00
b127c2514d feat(nvim): another configuration tweak round
added snippets!
2024-10-03 01:51:39 +03:00
renovate[bot]
b06ac3bc0f feat(github-action)!: Update peter-evans/create-pull-request ( v5 → v6 ) (#35)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-03 01:21:03 +03:00
renovate[bot]
7e4ea90a05 fix(github-release): update python ( 3.12.6 → 3.12.7 ) (#34)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-02 23:35:20 +03:00
github-actions[bot]
d264a33d21 chore: update pre-commit hooks (#33)
Co-authored-by: ivuorinen <ivuorinen@users.noreply.github.com>
2024-10-01 09:26:30 +03:00
224ee56461 fix(workflow): pre-commit, run in the cloud 2024-10-01 08:51:27 +03:00
renovate[bot]
8147490c65 feat(github-action)!: Update peter-evans/create-pull-request ( v4 → v5 ) (#32)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 08:28:44 +03:00
renovate[bot]
c6d501347a feat(github-action)!: Update actions/setup-python ( v4.8.0 → v5.2.0 ) (#31)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 08:20:22 +03:00
renovate[bot]
d8044f2b6a feat(github-action)!: Update actions/checkout ( v3 → v4 ) (#30)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-01 08:12:02 +03:00
renovate[bot]
1b3fe6d12e feat(github-action): update actions/setup-python ( v4.5.0 → v4.8.0 )
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 21:05:17 +00:00
76b66d8c61 feat(workflow): pre-commit autoupdate 2024-09-30 21:41:56 +03:00
9c8644de17 feat(nvim): cleanup, fixes and helpers 2024-09-30 21:41:35 +03:00
120345b562 chore(nvim): ignore spell file changes 2024-09-30 02:49:16 +03:00
8accd4a60b chore(nvim): clear spell file 2024-09-30 02:42:19 +03:00
8fb03660ad chore(asdf): use system eza 2024-09-30 02:41:53 +03:00
8b2dc74f2a chore(brew): remove upstream removed font casks 2024-09-30 02:41:35 +03:00
8fa63e63bb chore(nvim): cleanup, formatting, fixes 2024-09-30 02:40:01 +03:00
4ca5b63b75 chore(nvim): more tweaks, cleanup and docs 2024-09-26 22:47:12 +03:00
5a59872377 chore(nvim): prefer telescope over fzf, cleanup 2024-09-26 14:16:28 +03:00
38419eda28 feat(nvim): refactoring, docs, keybinds, others 2024-09-26 13:38:31 +03:00
fc85dbaa6c chore(deps): pre-commit hooks update 2024-09-25 15:02:21 +03:00
250e7f5666 feat(nvim): keymaps tweaks, cleanup, docs 2024-09-25 14:52:56 +03:00
8f96922033 chore(asdf): add fzf to go packages 2024-09-25 14:49:26 +03:00
4c4de2dc26 chore(config): tweaks to path, show script name 2024-09-25 14:48:59 +03:00
b8c163e028 chore(deps): update tool-versions 2024-09-25 14:43:29 +03:00
0a974c2a17 chore(asdf): move eza to cargo packages 2024-09-25 14:43:11 +03:00
fd8d72ab38 chore(nvim): cleanup and keybindings 2024-09-23 16:25:54 +03:00
0908a23231 chore(asdf): add sops global version 2024-09-23 10:27:04 +03:00
2e070eed83 chore(docs): update nvim keybindings 2024-09-23 10:26:40 +03:00
e22762255d feat(nvim): configuration, refactoring, fixes 2024-09-23 09:52:11 +03:00
83 changed files with 4247 additions and 1661 deletions

View File

@@ -8,6 +8,9 @@ indent_style = space
insert_final_newline = true insert_final_newline = true
trim_trailing_whitespace = true trim_trailing_whitespace = true
[*.md]
max_line_length = 100
[*.php] [*.php]
indent_size = 4 indent_size = 4

10
.github/README.md vendored
View File

@@ -6,10 +6,10 @@ aware of yet. As I find more interesting tools, configs and other stuff,
this repository will live accordingly. this repository will live accordingly.
Please for the love of everything good do not use these 1:1 as your own dotfiles, Please for the love of everything good do not use these 1:1 as your own dotfiles,
fork or download the repo as a zip and go from there with your own configs. fork or download the repository as a zip and go from there with your own configs.
It would be nice if you'd add an issue linking to your fork or repo so I can It would be nice if you'd add an issue linking to your fork or repo so I can
see what interesing stuff you've done with it. Sharing is caring. see what interesting stuff you've done with it. Sharing is caring.
## Setup ## Setup
@@ -28,9 +28,9 @@ see what interesing stuff you've done with it. Sharing is caring.
![screenshot of the oh-my-posh shell](./screenshots/oh-my-posh.png) ![screenshot of the oh-my-posh shell](./screenshots/oh-my-posh.png)
![screenshot of light version of tmux with nvim editing this repo](./screenshots/tmux-nvim-kickstart-light.png) ![screenshot of light version of tmux with nvim editing this repository](./screenshots/tmux-nvim-kickstart-light.png)
![screenshot of dark version of tmux with nvim editing this repo](./screenshots/tmux-nvim-kickstart-dark.png) ![screenshot of dark version of tmux with nvim editing this repository](./screenshots/tmux-nvim-kickstart-dark.png)
## Interesting files and locations ## Interesting files and locations
@@ -52,7 +52,7 @@ see what interesing stuff you've done with it. Sharing is caring.
| `local/` | `.local/` | XDG Base folder: `bin`, `share` and `state` | | `local/` | `.local/` | XDG Base folder: `bin`, `share` and `state` |
| `ssh/` | `.ssh/` | SSH Configurations. | | `ssh/` | `.ssh/` | SSH Configurations. |
### dfm - the dotfiles manager ### `dfm` - the dotfiles manager
[`.local/bin/dfm`][dfm] is a shell script that has some tools that help with dotfiles management. [`.local/bin/dfm`][dfm] is a shell script that has some tools that help with dotfiles management.

View File

@@ -0,0 +1,23 @@
---
name: Pre-commit autoupdate
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
auto-update:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5.3.0
- run: pip install pre-commit && pre-commit autoupdate
- uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: update/pre-commit-hooks
title: "chore: update pre-commit hooks"
commit-message: "chore: update pre-commit hooks"
body: Update versions of pre-commit hooks to latest version.

2
.gitignore vendored
View File

@@ -26,4 +26,6 @@ config/iterm2/AppSupport
config/gnupg/S.* config/gnupg/S.*
config/gnupg/s config/gnupg/s
config/gnupg/private-keys-v1.d config/gnupg/private-keys-v1.d
config/nvim/spell/*
!config/nvim/spell/.gitkeep

4
.gitmodules vendored
View File

@@ -23,10 +23,6 @@
path = config/tmux/plugins/tmux-continuum path = config/tmux/plugins/tmux-continuum
url = https://github.com/tmux-plugins/tmux-continuum url = https://github.com/tmux-plugins/tmux-continuum
ignore = dirty ignore = dirty
[submodule "tmux/tmux-resurrect"]
path = config/tmux/plugins/tmux-resurrect
url = https://github.com/tmux-plugins/tmux-resurrect
ignore = dirty
[submodule "tmux/tmux-sensible"] [submodule "tmux/tmux-sensible"]
path = config/tmux/plugins/tmux-sensible path = config/tmux/plugins/tmux-sensible
url = https://github.com/tmux-plugins/tmux-sensible.git url = https://github.com/tmux-plugins/tmux-sensible.git

View File

@@ -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]
@@ -19,7 +19,7 @@ repos:
args: [--autofix, --no-sort-keys] args: [--autofix, --no-sort-keys]
- repo: https://github.com/igorshubovych/markdownlint-cli - repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.41.0 rev: v0.42.0
hooks: hooks:
- id: markdownlint - id: markdownlint
args: [-c, .markdownlint.yaml, --fix] args: [-c, .markdownlint.yaml, --fix]
@@ -40,11 +40,11 @@ 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
- repo: https://github.com/rhysd/actionlint - repo: https://github.com/rhysd/actionlint
rev: v1.7.1 rev: v1.7.4
hooks: hooks:
- id: actionlint - id: actionlint

View File

@@ -2,8 +2,8 @@ column_width = 120
line_endings = "Unix" line_endings = "Unix"
indent_type = "Spaces" indent_type = "Spaces"
indent_width = 2 indent_width = 2
quote_style = "AutoPreferDouble" quote_style = "AutoPreferSingle"
call_parentheses = "Always" call_parentheses = "None"
collapse_simple_statement = "Always" collapse_simple_statement = "Always"
[sort_requires] [sort_requires]

View File

@@ -1,2 +1,2 @@
python 3.12.6 python 3.13.0
nodejs 22.9.0 nodejs 22.11.0

View File

@@ -23,8 +23,6 @@ git submodule add --name tmux/tmux-continuum \
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum -f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
git submodule add --name tmux/tmux-mode-indicator \ git submodule add --name tmux/tmux-mode-indicator \
-f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator -f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator
git submodule add --name tmux/tmux-resurrect \
-f https://github.com/tmux-plugins/tmux-resurrect config/tmux/plugins/tmux-resurrect
git submodule add --name tmux/tmux-sensible \ git submodule add --name tmux/tmux-sensible \
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible -f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
git submodule add --name tmux/tmux-sessionist \ git submodule add --name tmux/tmux-sessionist \
@@ -49,6 +47,7 @@ done
[ -d "config/tmux/plugins/tpm" ] && rm -rf config/tmux/plugins/tpm [ -d "config/tmux/plugins/tpm" ] && rm -rf config/tmux/plugins/tpm
[ -d "config/tmux/plugins/tmux" ] && rm -rf config/tmux/plugins/tmux [ -d "config/tmux/plugins/tmux" ] && rm -rf config/tmux/plugins/tmux
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus [ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
[ -d "config/tmux/plugins/tmux-resurrect" ] && rm -rf config/tmux/plugins/tmux-resurrect
[ -d "tools/dotbot-crontab" ] && rm -rf tools/dotbot-crontab [ -d "tools/dotbot-crontab" ] && rm -rf tools/dotbot-crontab
[ -d "tools/dotbot-snap" ] && rm -rf tools/dotbot-snap [ -d "tools/dotbot-snap" ] && rm -rf tools/dotbot-snap
[ -d "config/nvim-kickstart" ] && rm -rf config/nvim-kickstart [ -d "config/nvim-kickstart" ] && rm -rf config/nvim-kickstart

View File

@@ -14,10 +14,45 @@ source "$DOTFILES/config/shared.sh"
# Import ssh keys in keychain # Import ssh keys in keychain
ssh-add -A 2>/dev/null ssh-add -A 2>/dev/null
x-have oh-my-posh && {
eval "$(oh-my-posh init bash --config "$DOTFILES/config/omp/own.toml")"
}
x-have antidot && { x-have antidot && {
eval "$(antidot init)" eval "$(antidot init)"
} }
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return ;;
esac
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm* | rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*) ;;
esac
x-have oh-my-posh && {
eval "$(oh-my-posh init bash --config "$DOTFILES/config/omp/own.toml")"
}

View File

@@ -1,30 +1,28 @@
asdf-plugin-manager 1.3.1 asdf-plugin-manager 1.4.0
nodejs 22.8.0 nodejs 23.1.0
golang 1.23.1 golang 1.23.3
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
eza 0.19.3
fd 10.2.0 fd 10.2.0
1password-cli 2.30.0 1password-cli 2.30.3
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.56.0 github-cli 2.61.0
hadolint 2.12.0 hadolint 2.12.0
kubectl 1.31.1 kubectl 1.31.2
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.10.0
terragrunt 0.67.5 terragrunt 0.68.8
tf-summarize 0.3.10 tf-summarize 0.3.13
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
lazygit 0.44.0

41
base/zshrc → base/zshenv Executable file → Normal file
View File

@@ -1,4 +1,5 @@
# this is my zsh config. there are many like it, but this one is mine. # this is my zsh config. there are many like it, but this one is mine.
# https://zsh.sourceforge.io/Intro/intro_3.html
# shellcheck shell=bash # shellcheck shell=bash
# export VERBOSE=1 # export VERBOSE=1
@@ -6,10 +7,20 @@
export DOTFILES="$HOME/.dotfiles" export DOTFILES="$HOME/.dotfiles"
LOCAL_SHARE="$HOME/.local/share" LOCAL_SHARE="$HOME/.local/share"
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim-kickstart/mason/bin:$LOCAL_SHARE/bob/nvim-bin:$LOCAL_SHARE/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH" export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim/mason/bin:$LOCAL_SHARE/bob/nvim-bin:$LOCAL_SHARE/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
export SHARED_SCRIPTS_SOURCED=0 export SHARED_SCRIPTS_SOURCED=0
source "$DOTFILES/config/shared.sh" source "$DOTFILES/config/shared.sh"
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
export ZDOTDIR="$DOTFILES/zsh"
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
eval "$(oh-my-posh init zsh --config "$DOTFILES/config/omp/own.toml")" eval "$(oh-my-posh init zsh --config "$DOTFILES/config/omp/own.toml")"
@@ -53,9 +64,10 @@ load_antigen()
antigen bundle brew antigen bundle brew
antigen bundle colored-man-pages antigen bundle colored-man-pages
antigen bundle zsh-users/zsh-completions antigen bundle zsh-users/zsh-completions
antigen bundle eza x-have eza && antigen bundle eza
x-have tms && antigen bundle yuki-ycino/tms
# this needs to be the last item # this needs to be the last bundle
antigen bundle zsh-users/zsh-syntax-highlighting antigen bundle zsh-users/zsh-syntax-highlighting
antigen apply antigen apply
fi fi
@@ -87,15 +99,16 @@ setup_tmux_window_name_plugin()
fi fi
} }
main() load_antigen
{ source_fzf_config
load_antigen setup_tmux_window_name_plugin
source_fzf_config if x-have antidot; then
setup_tmux_window_name_plugin eval "$(antidot init)"
if x-have antidot; then fi
eval "$(antidot init)"
fi
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
}
main "$@" # Lando
export PATH="$HOME/.lando/bin${PATH+:$PATH}"; #landopath
autoload -Uz compinit bashcompinit
compinit -d $ZSH_COMPDUMP
bashcompinit

View File

@@ -19,3 +19,7 @@ bob-nvim
// bottom, btm - A cross-platform graphical process/system monitor with // bottom, btm - A cross-platform graphical process/system monitor with
// a customizable interface and a multitude of features. // a customizable interface and a multitude of features.
bottom bottom
// A modern alternative to ls
eza
// Tmux Sessionizer: A tool for opening git repositories as tmux sessions
tmux-sessionizer

View File

@@ -17,3 +17,5 @@ github.com/charmbracelet/glow@v1.5.1
github.com/rhysd/actionlint/cmd/actionlint@v1.7.1 github.com/rhysd/actionlint/cmd/actionlint@v1.7.1
// Cleans up your $HOME from those pesky dotfiles // Cleans up your $HOME from those pesky dotfiles
github.com/doron-cohen/antidot@v0.6.3 github.com/doron-cohen/antidot@v0.6.3
// FZF is a general-purpose command-line fuzzy finder.
github.com/junegunn/fzf@latest

View File

@@ -1,27 +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 b5862c1
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
eza https://github.com/lwiechec/asdf-eza.git eee3d59 dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0 editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7 fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
golang https://github.com/asdf-community/asdf-golang.git 0e86b1d github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230 gitleaks https://github.com/jmcvetta/asdf-gitleaks.git 0cc0d7e
kubectl https://github.com/asdf-community/asdf-kubectl.git cbe6df4 golang https://github.com/asdf-community/asdf-golang.git e2527a3
lazygit https://github.com/nklmilojevic/asdf-lazygit.git 78e04f1 hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
nodejs https://github.com/asdf-vm/asdf-nodejs.git c5b7c40 kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
pipx https://github.com/yozachar/asdf-pipx.git 31db618 nodejs https://github.com/asdf-vm/asdf-nodejs.git c36e6f0
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42 pipx https://github.com/yozachar/asdf-pipx.git 31db618
python https://github.com/asdf-community/asdf-python 7b0af87 pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665 python https://github.com/asdf-community/asdf-python a3a0185
ruby https://github.com/asdf-vm/asdf-ruby.git 27f78c9 ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
rust https://github.com/code-lever/asdf-rust.git 95acf4f ruby https://github.com/asdf-vm/asdf-ruby.git 194fe45
shellcheck https://github.com/luizm/asdf-shellcheck.git 780d78d rust https://github.com/code-lever/asdf-rust.git 95acf4f
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff shellcheck https://github.com/luizm/asdf-shellcheck.git 66200ff
terragrunt https://github.com/ohmer/asdf-terragrunt.git 4a6651a shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26 sops https://github.com/feniix/asdf-sops.git 5c7a2fb
yamllint https://github.com/ericcornelissen/asdf-yamllint.git 2f4fd4c terragrunt https://github.com/ohmer/asdf-terragrunt.git 4a6651a
yq https://github.com/sudermanjr/asdf-yq.git 772992f tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
yamllint https://github.com/ericcornelissen/asdf-yamllint.git bc2813e
yq https://github.com/sudermanjr/asdf-yq.git 772992f

View File

@@ -1,3 +1,5 @@
ansible ansible
pipenv pipenv
semgrep semgrep
neovim
libtmux

View File

@@ -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"

View File

@@ -14,21 +14,19 @@
# if DOTFILES is not set, set it to the default location # if DOTFILES is not set, set it to the default location
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles" [ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
# zsh completions directory
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH" export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
# Load bash completions if available for zsh # Add zsh completions to FPATH, compinit will be called later
if [[ -n "$ZSH_VERSION" ]]; then FPATH="$ZSH_COMPLETIONS:$FPATH"
autoload bashcompinit
bashcompinit
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/completions ]] && FPATH="$ASDF_DIR/completions:$FPATH"
[[ -d $ASDF_DIR/shims ]] && x-path-prepend "$ASDF_DIR/shims" [[ -d $ASDF_DIR/plugins ]] && FPATH="$ASDF_DIR/plugins:$FPATH"
[[ -d $ASDF_DIR/completions ]] && fpath=("$ASDF_DIR/completions" $fpath)
[[ -d $ASDF_DIR/plugins ]] && fpath=("$ASDF_DIR/plugins" $fpath)
source "$ASDF_DIR/asdf.sh" source "$ASDF_DIR/asdf.sh"
fi fi
@@ -125,7 +123,7 @@ preexec()
dfu() dfu()
{ {
( (
cd "$DOTFILES" && git pull --ff-only && ./install cd "$DOTFILES" && git rebase --ff --autostash && ./install
) )
} }
@@ -400,6 +398,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"
@@ -463,6 +464,9 @@ export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
msg "Setting up tmux configuration" msg "Setting up tmux configuration"
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf" export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
# tms, https://github.com/jrmoulton/tmux-sessionizer
export TMS_CONFIG_FILE="${XDG_CONFIG_HOME}/tms/config.toml"
# wakatime, https://github.com/wakatime/wakatime-cli # wakatime, https://github.com/wakatime/wakatime-cli
msg "Setting up Wakatime configuration" msg "Setting up Wakatime configuration"
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime" export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"

View File

@@ -53,6 +53,10 @@ brew "aspell"
brew "autoconf" brew "autoconf"
# Collection of over 500 reusable autoconf macros # Collection of over 500 reusable autoconf macros
brew "autoconf-archive" brew "autoconf-archive"
# Cryptographic recipes and primitives for Python
brew "cryptography"
# Official Amazon AWS command-line interface
brew "awscli"
# Bourne-Again SHell, a UNIX command interpreter # Bourne-Again SHell, a UNIX command interpreter
brew "bash" brew "bash"
# GNU multiple precision arithmetic library # GNU multiple precision arithmetic library
@@ -71,8 +75,6 @@ brew "gettext"
brew "glib" brew "glib"
# Mozilla CA bundle for Python # Mozilla CA bundle for Python
brew "certifi" brew "certifi"
# Cryptographic recipes and primitives for Python
brew "cryptography"
# Get a file from an HTTP, HTTPS or FTP server # Get a file from an HTTP, HTTPS or FTP server
brew "curl" brew "curl"
# Lightweight DNS forwarder and DHCP server # Lightweight DNS forwarder and DHCP server
@@ -85,6 +87,12 @@ brew "freetds"
brew "gd" brew "gd"
# GitHub command-line tool # GitHub command-line tool
brew "gh" brew "gh"
# OpenType text shaping engine
brew "harfbuzz"
# Secure hashing function
brew "libb2"
# Framework for layout and rendering of i18n text
brew "pango"
# Distributed revision control system # Distributed revision control system
brew "git" brew "git"
# Render markdown on the CLI # Render markdown on the CLI
@@ -97,12 +105,6 @@ brew "gnutls"
brew "gnupg" brew "gnupg"
# Image manipulation # Image manipulation
brew "netpbm" brew "netpbm"
# C/C++ and Java libraries for Unicode and globalization
brew "icu4c"
# OpenType text shaping engine
brew "harfbuzz"
# Framework for layout and rendering of i18n text
brew "pango"
# Library to render SVG files using Cairo # Library to render SVG files using Cairo
brew "librsvg" brew "librsvg"
# Graph visualization software from AT&T and Bell Labs # Graph visualization software from AT&T and Bell Labs
@@ -127,8 +129,6 @@ brew "json-c"
brew "krb5" brew "krb5"
# Tool to detect/remediate misconfig and security risks of GitHub/GitLab assets # Tool to detect/remediate misconfig and security risks of GitHub/GitLab assets
brew "legitify" brew "legitify"
# Secure hashing function
brew "libb2"
# Postgres C API library # Postgres C API library
brew "libpq" brew "libpq"
# Multi-platform support library with a focus on asynchronous I/O # Multi-platform support library with a focus on asynchronous I/O
@@ -143,10 +143,14 @@ brew "m-cli"
brew "nginx" brew "nginx"
# Port scanning utility for large networks # Port scanning utility for large networks
brew "nmap" brew "nmap"
# Libraries for security-enabled client and server applications
brew "nss"
# Open source suite of directory software # Open source suite of directory software
brew "openldap" brew "openldap"
# General-purpose scripting language # General-purpose scripting language
brew "php" brew "php"
# General-purpose scripting language
brew "php@8.2"
# Manage compile and link flags for libraries # Manage compile and link flags for libraries
brew "pkg-config" brew "pkg-config"
# Send macOS User Notifications from the command-line # Send macOS User Notifications from the command-line

View File

@@ -9,3 +9,12 @@ insert_final_newline = true
charset = utf-8 charset = utf-8
indent_style = space indent_style = space
indent_size = 2 indent_size = 2
max_line_length = 120
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false
[*.json]
max_line_length = off

3
config/nvim/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
spell/*
!spell/.gitkeep

View File

@@ -1,5 +0,0 @@
{
"diagnostics.globals": [
"vim"
]
}

View File

@@ -1,7 +1,11 @@
column_width = 160 column_width = 80
line_endings = "Unix" line_endings = "Unix"
indent_type = "Spaces" indent_type = "Spaces"
indent_width = 2 indent_width = 2
quote_style = "AutoPreferSingle" quote_style = "AutoPreferSingle"
call_parentheses = "None" call_parentheses = "None"
collapse_simple_statement = "Always"
[sort_requires]
enabled = true

View File

@@ -1,67 +1,61 @@
-- vim: ts=2 sts=2 sw=2 et -- ╭─────────────────────────────────────────────────────────╮
-- │ ivuorinen's Neovim configuration │
-- ╰─────────────────────────────────────────────────────────╯
-- Install lazylazy -- ── Install lazylazy ────────────────────────────────────────────────
-- https://github.com/folke/lazy.nvim -- https://github.com/folke/lazy.nvim
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then if not (vim.uv or vim.loop).fs_stat(lazypath) then
vim.fn.system { local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system {
'git', 'git',
'clone', 'clone',
'--filter=blob:none', '--filter=blob:none',
'https://github.com/folke/lazy.nvim.git', '--branch=stable',
'--branch=stable', -- latest stable release lazyrepo,
lazypath, lazypath,
} }
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ 'Failed to clone lazy.nvim:\n', 'ErrorMsg' },
{ out, 'WarningMsg' },
{ '\nPress any key to exit...' },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end end
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
-- ── Add ~/.local/bin to the PATH ────────────────────────────────────
vim.fn.setenv(
'PATH',
vim.fn.expand '$HOME/.local/bin' .. ':' .. vim.fn.expand '$PATH'
)
require 'options' require 'options'
require 'keymaps' require 'autogroups'
require('lazy').setup { -- ── Load plugins ────────────────────────────────────────────────────
checker = { require('lazy').setup(
-- Automatically check for updates -- Automatically load plugins from lua/plugins
enabled = true, 'plugins',
}, -- Lazy Configuration
spec = { {
-- Useful plugin to show you pending keybinds. checker = {
-- https://github.com/folke/which-key.nvim -- Automatically check for updates
{ enabled = true,
'folke/which-key.nvim', -- We don't want to be notified about updates
event = 'VimEnter', -- Sets the loading event to 'VimEnter' notify = false,
priority = 1001, -- Make sure to load this as soon as possible
config = function() -- This is the function that runs, AFTER loading
local wk = require 'which-key'
wk.setup()
wk.add {
{ '<leader>b', group = '[b] Buffer' },
{ '<leader>c', group = '[c] Code' },
{ '<leader>d', group = '[d] Document' },
{ '<leader>f', group = '[f] File' },
{ '<leader>g', group = '[g] Git' },
{ '<leader>l', group = '[l] LSP' },
{ '<leader>o', group = '[o] Open' },
{ '<leader>p', group = '[p] Project' },
{ '<leader>q', group = '[q] Quit' },
{ '<leader>s', group = '[s] Search' },
{ '<leader>t', group = '[t] Toggle' },
{ '<leader>w', group = '[w] Workspace' },
{ '<leader>z', group = '[x] FZF' },
{ '<leader>?', group = '[?] Help' },
{
'<leader>?w',
function()
wk.show { global = false }
end,
desc = 'Buffer Local Keymaps (which-key)',
},
}
end,
}, },
-- Import plugins from `lua/plugins` directory change_detection = {
{ import = 'plugins' }, -- No need to notify about changes
}, notify = false,
} },
install = {
colorscheme = { vim.g.colors_theme },
},
}
)
require 'config.misc' -- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,71 @@
-- ╭─────────────────────────────────────────────────────────╮
-- │ Autogroups │
-- ╰─────────────────────────────────────────────────────────╯
local augroup = vim.api.nvim_create_augroup -- Create/get autocommand group
local autocmd = vim.api.nvim_create_autocmd -- Create autocommand
-- ── Highlight on yank ───────────────────────────────────────────────
-- See `:help vim.highlight.on_yank()`
autocmd('TextYankPost', {
callback = function() vim.highlight.on_yank() end,
group = augroup('YankHighlight', { clear = true }),
pattern = '*',
})
-- ── Windows to close with "q" ───────────────────────────────────────
autocmd('FileType', {
group = augroup('close_with_q', { clear = true }),
pattern = {
'PlenaryTestPopup',
'checkhealth',
'dbout',
'gitsigns.blame',
'grug-far',
'help',
'lspinfo',
'man',
'neotest-output',
'neotest-output-panel',
'neotest-summary',
'notify',
'qf',
'spectre_panel',
'startuptime',
'tsplayground',
},
callback = function(event)
vim.bo[event.buf].buflisted = false
vim.keymap.set('n', 'q', '<cmd>close<cr>', {
buffer = event.buf,
silent = true,
desc = 'Quit buffer',
})
end,
})
-- ── make it easier to close man-files when opened inline ────────────
autocmd('FileType', {
group = augroup('man_unlisted', { clear = true }),
pattern = { 'man' },
callback = function(event) vim.bo[event.buf].buflisted = false end,
})
-- ── wrap and check for spell in text filetypes ──────────────────────
vim.api.nvim_create_autocmd('FileType', {
group = augroup('wrap_spell', { clear = true }),
pattern = { 'text', 'plaintex', 'typst', 'gitcommit', 'markdown' },
callback = function()
vim.opt_local.wrap = true
vim.opt_local.spell = true
end,
})
-- ── Fix conceallevel for json files ─────────────────────────────────
vim.api.nvim_create_autocmd({ 'FileType' }, {
group = augroup('json_conceal', { clear = true }),
pattern = { 'json', 'jsonc', 'json5' },
callback = function() vim.opt_local.conceallevel = 0 end,
})
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,10 +0,0 @@
-- Go
local format_sync_grp = vim.api.nvim_create_augroup('GoFormat', {})
vim.api.nvim_create_autocmd('BufWritePre', {
pattern = '*.go',
callback = function()
require('go.format').goimport()
end,
group = format_sync_grp,
})
require('go').setup()

View File

@@ -1,78 +0,0 @@
vim.api.nvim_set_keymap('i', 'jj', '<Esc>', { noremap = false })
-- twilight
vim.api.nvim_set_keymap('n', 'tw', ':Twilight<enter>', { noremap = false })
-- buffers
vim.api.nvim_set_keymap('n', '<leader>bk', ':blast<enter>', { desc = 'Last', noremap = false })
vim.api.nvim_set_keymap('n', '<leader>bj', ':bfirst<enter>', { desc = 'First', noremap = false })
vim.api.nvim_set_keymap('n', '<leader>bh', ':bprev<enter>', { desc = 'Prev', noremap = false })
vim.api.nvim_set_keymap('n', '<leader>bl', ':bnext<enter>', { desc = 'Next', noremap = false })
vim.api.nvim_set_keymap('n', '<leader>bd', ':bdelete<enter>', { desc = 'Delete', noremap = false })
vim.api.nvim_set_keymap('n', '<C-w>', ':bdelete<enter>', { desc = 'Delete buffer', noremap = false })
-- files
vim.api.nvim_set_keymap('n', 'QQ', ':q!<enter>', { desc = 'Quickly Quit', noremap = false })
vim.api.nvim_set_keymap('n', 'WW', ':w!<enter>', { desc = 'Force write', noremap = false })
vim.api.nvim_set_keymap('n', 'E', '$', { noremap = false })
vim.api.nvim_set_keymap('n', 'B', '^', { noremap = false })
vim.api.nvim_set_keymap('n', 'tT', ':TransparentToggle<CR>', { desc = 'Toggle Transparency', noremap = true })
vim.api.nvim_set_keymap('n', 'ss', ':noh<CR>', { noremap = true })
-- splits
vim.api.nvim_set_keymap('n', '<C-W>,', ':vertical resize -10<CR>', { desc = 'V Resize -', noremap = true })
vim.api.nvim_set_keymap('n', '<C-W>.', ':vertical resize +10<CR>', { desc = 'V Resize +', noremap = true })
-- Quicker close split
vim.keymap.set('n', '<leader>qf', ':q<CR>', { desc = 'Quicker close split', silent = true, noremap = true })
-- Keymaps for better default experience
-- See `:help vim.keymap.set()`
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
-- Remap for dealing with word wrap
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
-- Noice
vim.api.nvim_set_keymap('n', '<leader>nn', ':Noice dismiss<CR>', { desc = 'Noice dismiss', noremap = true })
vim.keymap.set('n', '<leader>xe', '<cmd>GoIfErr<cr>', { desc = 'Go If Error', silent = true, noremap = true })
-- TIP: Disable arrow keys in normal mode
vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>')
vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>')
vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>')
vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>')
-- Keybinds to make split navigation easier.
-- Use CTRL+<hjkl> to switch between windows
--
-- See `:help wincmd` for a list of all window commands
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
-- Old habits
vim.keymap.set('n', '<C-s>', '<cmd>w<CR>', { desc = 'Save file' })
vim.keymap.set('n', '<leader>qq', '<cmd>wq!<CR>', { desc = '[qq] Quickly Quit' })
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
-- is not what someone will guess without a bit more experience.
--
-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
-- or just use <C-\><C-n> to exit terminal mode
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
-- [[ Highlight on yank ]]
-- See `:help vim.highlight.on_yank()`
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function()
vim.highlight.on_yank()
end,
group = highlight_group,
pattern = '*',
})

View File

@@ -1,16 +1,28 @@
-- ╭─────────────────────────────────────────────────────────╮
-- │ neovim configuration options │
-- ╰─────────────────────────────────────────────────────────╯
-- See `:help vim.opt`
-- For more options, you can see `:help option-list`
-- Enables the experimental nvim 0.5 features
vim.loader.enable()
-- Map leader and local leader
vim.g.mapleader = ' ' vim.g.mapleader = ' '
vim.g.maplocalleader = ' ' vim.g.maplocalleader = ' '
-- Set to true if you have a Nerd Font installed and selected in the terminal -- Set the colorscheme and variants
vim.g.have_nerd_font = true vim.g.colors_theme = 'tokyonight'
vim.g.colors_variant_light = 'tokyonight-day'
vim.g.colors_variant_dark = 'tokyonight-storm'
-- Make sure editorconfig support is enabled -- Make sure editorconfig support is enabled
vim.g.editorconfig = true vim.g.editorconfig = true
-- [[ Setting options ]] -- Enable the colorcolumn
-- See `:help vim.opt` vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
-- For more options, you can see `:help option-list`
-- Enable line numbers and relative line numbers
vim.opt.number = true vim.opt.number = true
vim.opt.relativenumber = true vim.opt.relativenumber = true
@@ -22,10 +34,10 @@ vim.opt.showmode = false
-- Sync clipboard between OS and Neovim. -- Sync clipboard between OS and Neovim.
-- Schedule the setting after `UiEnter` because it can increase startup-time. -- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'` -- See `:help 'clipboard'`
vim.schedule(function() vim.schedule(function()
vim.opt.clipboard = 'unnamedplus' local c = vim.env.SSH_TTY and '' or 'unnamedplus'
vim.opt.clipboard = c
end) end)
vim.opt.breakindent = true -- Enable break indent vim.opt.breakindent = true -- Enable break indent
@@ -34,7 +46,8 @@ vim.opt.smartindent = true -- Insert indents automatically
-- Save undo history -- Save undo history
vim.opt.undofile = true vim.opt.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term -- Case-insensitive searching UNLESS \C or one or
-- more capital letters in the search term
vim.opt.ignorecase = true vim.opt.ignorecase = true
vim.opt.smartcase = true vim.opt.smartcase = true
@@ -47,7 +60,7 @@ vim.wo.signcolumn = 'yes'
-- Decrease mapped sequence wait time -- Decrease mapped sequence wait time
-- Displays which-key popup sooner -- Displays which-key popup sooner
vim.opt.timeoutlen = 300 vim.opt.timeoutlen = 250
-- Configure how new splits should be opened -- Configure how new splits should be opened
vim.opt.splitright = true vim.opt.splitright = true
@@ -66,15 +79,56 @@ vim.opt.inccommand = 'split'
vim.opt.cursorline = true vim.opt.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor. -- Minimal number of screen lines to keep above and below the cursor.
vim.opt.scrolloff = 10 vim.opt.scrolloff = 15
-- Enable break indent
vim.o.breakindent = true
-- Save undo history
vim.o.undofile = true
-- Set completeopt to have a better completion experience -- Set completeopt to have a better completion experience
vim.o.completeopt = 'menuone,noselect' vim.o.completeopt = 'menuone,noselect'
-- Fixes Notify opacity issues -- Fixes Notify opacity issues
vim.o.termguicolors = true vim.o.termguicolors = true
-- Set spell checking
vim.o.spell = true
vim.o.spelllang = 'en_us'
-- Tree-sitter settings
vim.g.loaded_perl_provider = 0
vim.g.loaded_ruby_provider = 0
-- kevinhwang91/nvim-ufo settings
vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
vim.o.foldcolumn = '1' -- '0' is not bad
-- Using ufo provider need a large value, feel free to decrease the value
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
vim.o.foldenable = true
-- anuvyklack/windows.nvim settings
vim.o.winwidth = 15
vim.o.winminwidth = 10
vim.o.equalalways = false
-- folke/noice.nvim settings
vim.g.noice_ignored_filetypes = {
'fugitiveblame',
'fugitive',
'gitcommit',
'noice',
}
-- ── Deal with word wrap ───────────────────────────────────────────────────────
local m = vim.api.nvim_set_keymap
m(
'n',
'k',
"v:count == 0 ? 'gk' : 'k'",
{ desc = 'Move up', noremap = true, expr = true }
)
m(
'n',
'j',
"v:count == 0 ? 'gj' : 'j'",
{ desc = 'Move down', noremap = true, expr = true }
)
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,38 +0,0 @@
-- Autoformat
-- https://github.com/stevearc/conform.nvim
return {
'stevearc/conform.nvim',
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>f',
function()
require('conform').format { async = true, lsp_fallback = true }
end,
mode = '',
desc = '[f] Format buffer',
},
},
opts = {
notify_on_error = false,
format_on_save = function(bufnr)
-- Disable "format_on_save lsp_fallback" for languages that don't
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = true, cpp = true }
return {
timeout_ms = 500,
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
}
end,
formatters_by_ft = {
lua = { 'stylua' },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
-- You can use 'stop_after_first' to run the first available formatter from the list
javascript = { 'prettierd', 'prettier', stop_after_first = true },
},
},
}

View File

@@ -1,51 +1,141 @@
-- Auto completion
-- https://github.com/hrsh7th/nvim-cmp
return { return {
-- Autocompletion
-- https://github.com/hrsh7th/nvim-cmp
{ {
'hrsh7th/nvim-cmp', 'hrsh7th/nvim-cmp',
lazy = false,
version = false, -- Use the latest version of the plugin
event = 'InsertEnter', event = 'InsertEnter',
dependencies = { dependencies = {
'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-nvim-lsp',
'L3MON4D3/LuaSnip',
'saadparwaiz1/cmp_luasnip', -- ── LuaSnip Dependencies ────────────────────────────────────────────
-- Adds other completion capabilities. -- Snippet Engine for Neovim written in Lua.
-- nvim-cmp does not ship with all sources by default. They are split -- https://github.com/L3MON4D3/LuaSnip
-- into multiple repos for maintenance purposes. {
'hrsh7th/cmp-nvim-lsp', 'L3MON4D3/LuaSnip',
'hrsh7th/cmp-path', version = '*',
'onsails/lspkind.nvim', 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. ─────────────────────────────
-- ── nvim-cmp does not ship with all sources by default.
-- ── They are split into multiple repos for maintenance purposes.
{ 'hrsh7th/cmp-nvim-lsp' },
{ 'hrsh7th/cmp-buffer' },
{ '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
-- https://github.com/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 ──────────────────────────────────────────────────────
-- vscode-like pictograms for neovim lsp completion items
-- https://github.com/onsails/lspkind.nvim
{ 'onsails/lspkind.nvim' },
-- Lua plugin to turn github copilot into a cmp source
-- https://github.com/zbirenbaum/copilot-cmp
{ {
'zbirenbaum/copilot-cmp', 'zbirenbaum/copilot-cmp',
dependencies = { dependencies = {
'zbirenbaum/copilot.lua', -- Fully featured & enhanced replacement for copilot.vim complete
-- with API for interacting with Github Copilot
-- https://github.com/zbirenbaum/copilot.lua
{
'zbirenbaum/copilot.lua',
cmd = 'Copilot',
build = ':Copilot setup',
event = { 'InsertEnter', 'LspAttach' },
opts = {
fix_pairs = true,
suggestion = { enabled = false },
panel = { enabled = false },
filetypes = {
markdown = true,
help = true,
},
},
},
}, },
config = function() config = function() require('copilot_cmp').setup() end,
require('copilot_cmp').setup()
end,
}, },
}, },
config = function() config = function()
-- nvim-cmp setup
local cmp = require 'cmp' local cmp = require 'cmp'
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('cmp_dictionary').setup {
paths = { '/usr/share/dict/words' },
exact_length = 2,
}
local has_words_before = function()
if vim.api.nvim_get_option_value('buftype', {}) == 'prompt' then
return false
end
local line, col = table.unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0
and vim.api
.nvim_buf_get_text(0, line - 1, 0, line - 1, col, {})[1]
:match '^%s*$'
== nil
end
cmp.setup { cmp.setup {
formatting = { formatting = {
format = lspkind.cmp_format { format = lspkind.cmp_format {
mode = 'symbol', mode = 'symbol',
max_width = 50, max_width = function() return math.floor(0.45 * vim.o.columns) end,
symbol_map = { Copilot = '' }, show_labelDetails = true,
symbol_map = {
Copilot = '',
Text = '',
Constructor = '',
},
}, },
}, },
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
view = { view = {
entries = 'native', width = function(_, _) return math.min(80, vim.o.columns) end,
-- entries = {
-- name = 'custom',
-- selection_order = 'near_cursor',
-- },
}, },
snippet = { snippet = {
expand = function(args) expand = function(args) luasnip.lsp_expand(args.body) end,
luasnip.lsp_expand(args.body)
end,
}, },
mapping = cmp.mapping.preset.insert { mapping = cmp.mapping.preset.insert {
['<C-d>'] = cmp.mapping.scroll_docs(-4), ['<C-d>'] = cmp.mapping.scroll_docs(-4),
@@ -53,14 +143,14 @@ return {
-- Manually trigger a completion from nvim-cmp. -- Manually trigger a completion from nvim-cmp.
-- Generally you don't need this, because nvim-cmp will display -- Generally you don't need this, because nvim-cmp will display
-- completions whenever it has completion options available. -- completions whenever it has completion options available.
['<C-Space>'] = cmp.mapping.complete(), ['<C-c>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm { ['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace, behavior = cmp.ConfirmBehavior.Replace,
select = true, select = true,
}, },
['<Tab>'] = cmp.mapping(function(fallback) ['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() and has_words_before() then
cmp.select_next_item() cmp.select_next_item { behavior = cmp.SelectBehavior.Select }
elseif luasnip.expand_or_jumpable() then elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump() luasnip.expand_or_jump()
else else
@@ -78,13 +168,67 @@ 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 = 'dotenv', group_index = 2 },
{ name = 'path', group_index = 2 },
{ name = 'emoji', group_index = 2 },
{ name = 'nerdfont', group_index = 2 },
}, },
sorting = {
priority_weight = 2,
comparators = {
require('copilot_cmp.comparators').prioritize,
-- Below is the default comparator list and order for nvim-cmp
cmp.config.compare.offset,
cmp.config.compare.scopes, --this is commented in nvim-cmp too
cmp.config.compare.exact,
cmp.config.compare.score,
cmp.config.compare.recently_used,
cmp.config.compare.locality,
cmp.config.compare.kind,
cmp.config.compare.sort_text,
cmp.config.compare.length,
cmp.config.compare.order,
},
},
}
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,
}, },

View 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 = {},
}

View File

@@ -0,0 +1,86 @@
-- ── Formatting ──────────────────────────────────────────────────────
-- Lightweight yet powerful formatter plugin for Neovim
-- https://github.com/stevearc/conform.nvim
return {
{
'stevearc/conform.nvim',
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
opts = {
-- Enable or disable logging
notify_on_error = false,
-- 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 = {},
},
-- The options you set here will be merged with the builtin formatters.
-- You can also define any custom formatters here.
formatters = {
injected = { options = { ignore_errors = true } },
-- # Example of using dprint only when a dprint.json file is present
-- dprint = {
-- condition = function(ctx)
-- return vim.fs.find({ "dprint.json" }, { path = ctx.filename, upward = true })[1]
-- end,
-- },
--
-- # Example of using shfmt with extra args
-- shfmt = {
-- prepend_args = { "-i", "2", "-ci" },
-- },
},
formatters_by_ft = {
lua = { 'stylua' },
-- Conform will run multiple formatters sequentially
go = { 'goimports', 'gofmt' },
-- 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,
},
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
},
-- Automatically install formatters registered with conform.nvim via mason.nvim
-- https://github.com/zapling/mason-conform.nvim
{
'zapling/mason-conform.nvim',
depends = {
'stevearc/conform.nvim',
'williamboman/mason.nvim',
},
opts = {},
},
}

View File

@@ -1,17 +0,0 @@
-- CoPilot
-- https://github.com/zbirenbaum/copilot.lua
return {
'zbirenbaum/copilot.lua',
cmd = 'Copilot',
build = ':Copilot setup',
event = { 'InsertEnter', 'LspAttach' },
fix_pairs = true,
opts = {
suggestion = { enabled = false },
panel = { enabled = false },
filetypes = {
markdown = true,
help = true,
},
},
}

View File

@@ -1,29 +1,25 @@
return { return {
'ray-x/go.nvim',
'ray-x/guihua.lua',
{ {
'rcarriga/nvim-dap-ui', 'rcarriga/nvim-dap-ui',
dependencies = { dependencies = {
'mfussenegger/nvim-dap', 'mfussenegger/nvim-dap',
'nvim-neotest/nvim-nio', 'nvim-neotest/nvim-nio',
'theHamsta/nvim-dap-virtual-text', 'theHamsta/nvim-dap-virtual-text',
'ray-x/go.nvim',
'ray-x/guihua.lua',
'leoluz/nvim-dap-go', 'leoluz/nvim-dap-go',
}, },
setup = function() setup = function()
require('dapui').setup() require('dapui').setup()
require('dap-go').setup() require('dap-go').setup()
require('nvim-dap-virtual-text').setup() require('nvim-dap-virtual-text').setup {}
vim.fn.sign_define('DapBreakpoint', { text = '🔴', texthl = 'DapBreakpoint', linehl = 'DapBreakpoint', numhl = 'DapBreakpoint' }) vim.fn.sign_define('DapBreakpoint', {
text = '🔴',
-- Debugger texthl = 'DapBreakpoint',
vim.api.nvim_set_keymap('n', '<leader>dt', ':DapUiToggle<CR>', { noremap = true }) linehl = 'DapBreakpoint',
vim.api.nvim_set_keymap('n', '<leader>db', ':DapToggleBreakpoint<CR>', { noremap = true }) numhl = 'DapBreakpoint',
vim.api.nvim_set_keymap('n', '<leader>dc', ':DapContinue<CR>', { noremap = true }) })
vim.api.nvim_set_keymap('n', '<leader>dr', ":lua require('dapui').open({reset = true})<CR>", { noremap = true })
vim.api.nvim_set_keymap('n', '<leader>ht', ":lua require('harpoon.ui').toggle_quick_menu()<CR>", { noremap = true })
end, end,
}, },
} }

View 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

View File

@@ -1,32 +0,0 @@
return {
-- fzf <3 vim
-- https://github.com/junegunn/fzf.vim
'junegunn/fzf.vim',
dependencies = {
{ 'junegunn/fzf', run = ':call fzf#install()' },
},
config = function()
-- Stolen from https://github.com/erikw/dotfiles/blob/d68d6274d67ac47afa20b9a0b9f3b0fa54bcdaf3/.config/nvim/lua/plugins.lua
-- Comment must be on line of its own...
-- Search for files in given path.
vim.keymap.set('n', '<Leader>zf', ':FZF<space>', { silent = true, desc = 'FZF: search for files in given path.' })
-- Sublime-like shortcut 'go to file' ctrl+p.
vim.keymap.set('n', '<C-p>', ':Files<CR>', { silent = true, desc = 'FZF: search for files starting at current directory.' })
vim.keymap.set('n', '<Leader>zc', ':Commands<CR>', { silent = true, desc = 'FZF: search commands.' })
vim.keymap.set('n', '<Leader>zt', ':Tags<CR>', { silent = true, desc = 'FZF: search in tags file' })
vim.keymap.set('n', '<Leader>zb', ':Buffers<CR>', { silent = true, desc = 'FZF: search open buffers.' })
-- Ref: https://medium.com/@paulodiovani/vim-buffers-windows-and-tabs-an-overview-8e2a57c57afa).
vim.keymap.set('n', '<Leader>zt', ':Windows<CR>', { silent = true, desc = 'FZF: search open tabs.' })
vim.keymap.set('n', '<Leader>zh', ':History<CR>', { silent = true, desc = 'FZF: search history of opened files' })
vim.keymap.set('n', '<Leader>zm', ':Maps<CR>', { silent = true, desc = 'FZF: search mappings.' })
vim.keymap.set('n', '<Leader>zg', ':Rg<CR>', { silent = true, desc = 'FZF: search with rg (aka live grep).' })
-- To ignore a certain path in a git project from both RG and FD used by FZF,
-- the eaiest way is to create ignore files and exclude the in local git clone.
-- Ref: https://stackoverflow.com/a/1753078/265508
-- $ cd git_proj/
-- $ echo "path/to/exclude" > .rgignore
-- $ echo "path/to/exclude" > .fdignore
-- $ printf ".rgignore\n.fdignore" >> .git/info/exclude
end,
}

View File

@@ -1,116 +0,0 @@
return {
-- fugitive.vim: A Git wrapper so awesome, it should be illegal
-- https://github.com/tpope/vim-fugitive
{ 'tpope/vim-fugitive' },
-- Git integration for buffers
-- https://github.com/lewis6991/gitsigns.nvim
{
'lewis6991/gitsigns.nvim',
config = function()
require('gitsigns').setup {
signs = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
},
current_line_blame = false,
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then
return ']c'
end
vim.schedule(function()
gs.next_hunk()
end)
return '<Ignore>'
end, { expr = true })
map('n', '[c', function()
if vim.wo.diff then
return '[c'
end
vim.schedule(function()
gs.prev_hunk()
end)
return '<Ignore>'
end, { expr = true })
-- Actions
map({ 'n', 'v' }, '<leader>hs', ':Gitsigns stage_hunk<CR>')
map({ 'n', 'v' }, '<leader>hr', ':Gitsigns reset_hunk<CR>')
map('n', '<leader>hS', gs.stage_buffer)
map('n', '<leader>ha', gs.stage_hunk)
map('n', '<leader>hu', gs.undo_stage_hunk)
map('n', '<leader>hR', gs.reset_buffer)
map('n', '<leader>hp', gs.preview_hunk)
map('n', '<leader>hb', function()
gs.blame_line { full = true }
end)
map('n', '<leader>tB', gs.toggle_current_line_blame)
map('n', '<leader>hd', gs.diffthis)
map('n', '<leader>hD', function()
gs.diffthis '~'
end)
-- Text object
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
end,
}
end,
},
-- git-worktree.nvim: Manage git worktrees
-- https://github.com/ThePrimeagen/git-worktree.nvim
{
'ThePrimeagen/git-worktree.nvim',
config = function()
require('git-worktree').setup()
end,
},
-- An interactive and powerful Git interface for Neovim, inspired by Magit
-- https://github.com/NeogitOrg/neogit
{
'NeogitOrg/neogit',
config = function()
-- This contains mainly Neogit but also a bunch of Git settings
-- like fetching branches with telescope or blaming with fugitive
local neogit = require 'neogit'
vim.keymap.set('n', '<leader>gs', neogit.open, { silent = true, noremap = true })
vim.keymap.set('n', '<leader>gc', ':Neogit commit<CR>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>gp', ':Neogit pull<CR>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>gP', ':Neogit push<CR>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>gb', ':Telescope git_branches<CR>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>gB', ':G blame<CR>', { silent = true, noremap = true })
neogit.setup {
disable_commit_confirmation = true,
disable_signs = false,
disable_context_highlighting = false,
disable_builtin_notifications = false,
signs = {
section = { '', '' },
item = { '', '' },
hunk = { '', '' },
},
integrations = {
diffview = true,
},
}
end,
},
}

View File

@@ -1,29 +1,31 @@
-- A small Neovim plugin for previewing definitions using floating windows.
-- https://github.com/rmagatti/goto-preview
return { return {
-- A small Neovim plugin for previewing definitions using floating windows.
-- https://github.com/rmagatti/goto-preview
'rmagatti/goto-preview', 'rmagatti/goto-preview',
config = function() dependencies = {
require('goto-preview').setup { { 'nvim-telescope/telescope.nvim' },
width = 120, -- Width of the floating window },
height = 15, -- Height of the floating window opts = {
border = { '', '', '', '', '', '', '', '' }, -- Border characters of the floating window width = 120, -- Width of the floating window
default_mappings = true, height = 15, -- Height of the floating window
debug = false, -- Print debug information border = { '', '', '', '', '', '', '', '' }, -- Border characters of the floating window
opacity = nil, -- 0-100 opacity level of the floating window where 100 is fully transparent. default_mappings = true,
resizing_mappings = false, -- Binds arrow keys to resizing the floating window. debug = false, -- Print debug information
post_open_hook = nil, -- A function taking two arguments, a buffer and a window to be ran as a hook. opacity = nil, -- 0-100 opacity level of the floating window where 100 is fully transparent.
references = { -- Configure the telescope UI for slowing the references cycling window. resizing_mappings = false, -- Binds arrow keys to resizing the floating window.
telescope = require('telescope.themes').get_dropdown { post_open_hook = nil, -- A function taking two arguments, a buffer and a window to be ran as a hook.
hide_preview = false, references = { -- Configure the telescope UI for slowing the references cycling window.
}, telescope = require('telescope.themes').get_dropdown {
hide_preview = false,
}, },
-- These two configs can also be passed down to the goto-preview definition and implementation calls for one off "peak" functionality. },
focus_on_open = true, -- Focus the floating window when opening it. -- These two configs can also be passed down to the goto-preview definition
dismiss_on_move = false, -- Dismiss the floating window when moving the cursor. -- and implementation calls for one off "peak" functionality.
force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close focus_on_open = true, -- Focus the floating window when opening it.
bufhidden = 'wipe', -- the bufhidden option to set on the floating window. See :h bufhidden dismiss_on_move = false, -- Dismiss the floating window when moving the cursor.
stack_floating_preview_windows = true, -- Whether to nest floating windows force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
preview_window_title = { enable = true, position = 'left' }, bufhidden = 'wipe', -- the bufhidden option to set on the floating window. See :h bufhidden
} stack_floating_preview_windows = true, -- Whether to nest floating windows
end, preview_window_title = { enable = true, position = 'left' },
},
} }

View File

@@ -1,31 +1,25 @@
-- Getting you where you want with the fewest keystrokes.
-- https://github.com/ThePrimeagen/harpoon
return { return {
-- Getting you where you want with the fewest keystrokes. 'ThePrimeagen/harpoon',
-- https://github.com/ThePrimeagen/harpoon branch = 'harpoon2',
{ dependencies = {
'ThePrimeagen/harpoon', 'nvim-lua/plenary.nvim',
branch = 'harpoon2', 'nvim-telescope/telescope.nvim',
dependencies = { },
'nvim-lua/plenary.nvim', config = function()
'nvim-telescope/telescope.nvim', local harpoon = require 'harpoon'
}, harpoon:setup {}
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
vim.keymap.set('n', '<leader>ht', function() require('telescope.pickers')
harpoon.ui:toggle_quick_menu(harpoon:list())
end)
-- 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({}, { .new({}, {
prompt_title = 'Harpoon', prompt_title = 'Harpoon',
finder = require('telescope.finders').new_table { finder = require('telescope.finders').new_table {
@@ -35,69 +29,19 @@ return {
sorter = conf.generic_sorter {}, sorter = conf.generic_sorter {},
}) })
:find() :find()
end end
vim.keymap.set('n', '<leader>xa', function() vim.keymap.set(
toggle_telescope(harpoon:list()) 'n',
end, { desc = 'Open harpoon window' }) '<leader>hw',
end, function() toggle_telescope(harpoon:list()) end,
keys = { { desc = 'Open harpoon window with telescope' }
{ )
'<leader>xa', vim.keymap.set(
function() 'n',
require('harpoon'):list():add() '<leader>ht',
end, function() harpoon.ui:toggle_quick_menu(harpoon:list()) end,
desc = 'harpoon file', { desc = 'Open Harpoon Quick menu' }
}, )
{ end,
'<leader>xN',
function()
require('harpoon'):list():prev()
end,
desc = 'harpoon to previous file',
},
{
'<leader>xn',
function()
require('harpoon'):list():next()
end,
desc = 'harpoon to next file',
},
{
'<leader>1',
function()
require('harpoon'):list():select(1)
end,
desc = 'harpoon to file 1',
},
{
'<leader>2',
function()
require('harpoon'):list():select(2)
end,
desc = 'harpoon to file 2',
},
{
'<leader>3',
function()
require('harpoon'):list():select(3)
end,
desc = 'harpoon to file 3',
},
{
'<leader>4',
function()
require('harpoon'):list():select(4)
end,
desc = 'harpoon to file 4',
},
{
'<leader>5',
function()
require('harpoon'):list():select(5)
end,
desc = 'harpoon to file 5',
},
},
},
} }

View File

@@ -1,59 +0,0 @@
return {
-- vscode-like pictograms for neovim lsp completion items
-- https://github.com/onsails/lspkind-nvim
{ 'onsails/lspkind.nvim' },
-- Rethinking Vim as a tool for writing
-- https://github.com/preservim/vim-pencil
{ 'preservim/vim-pencil' },
-- obsession.vim: continuously updated session files
-- https://github.com/tpope/vim-obsession
{ 'tpope/vim-obsession' },
-- surround.vim: Delete/change/add parentheses/quotes/XML-tags/much more with ease
-- https://github.com/tpope/vim-surround
{ 'tpope/vim-surround' },
-- Highlight, list and search todo comments in your projects
-- https://github.com/folke/todo-comments.nvim
{
'folke/todo-comments.nvim',
dependencies = 'nvim-lua/plenary.nvim',
config = function()
require('todo-comments').setup {}
end,
},
-- LSP Configuration & Plugins
-- Meta type definitions for the Lua platform Luvit.
-- https://github.com/Bilal2453/luvit-meta
{ 'Bilal2453/luvit-meta', lazy = true },
-- Indent guides for Neovim
-- https://github.com/lukas-reineke/indent-blankline.nvim
{
'lukas-reineke/indent-blankline.nvim',
main = 'ibl',
opts = {},
},
-- Commenting
-- https://github.com/numToStr/Comment.nvim
{
'numToStr/Comment.nvim', -- "gc" to comment visual regions/lines
event = { 'BufRead', 'BufNewFile' },
config = function()
require('Comment').setup()
end,
},
-- 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 },
}

View File

@@ -1,55 +0,0 @@
return {
{ -- Linting
'mfussenegger/nvim-lint',
event = { 'BufReadPre', 'BufNewFile' },
config = function()
local lint = require 'lint'
lint.linters_by_ft = {
markdown = { 'markdownlint' },
}
-- To allow other plugins to add linters to require('lint').linters_by_ft,
-- instead set linters_by_ft like this:
-- lint.linters_by_ft = lint.linters_by_ft or {}
-- lint.linters_by_ft['markdown'] = { 'markdownlint' }
--
-- However, note that this will enable a set of default linters,
-- which will cause errors unless these tools are available:
-- {
-- clojure = { "clj-kondo" },
-- dockerfile = { "hadolint" },
-- inko = { "inko" },
-- janet = { "janet" },
-- json = { "jsonlint" },
-- markdown = { "vale" },
-- rst = { "vale" },
-- ruby = { "ruby" },
-- terraform = { "tflint" },
-- text = { "vale" }
-- }
--
-- You can disable the default linters by setting their filetypes to nil:
-- lint.linters_by_ft['clojure'] = nil
-- lint.linters_by_ft['dockerfile'] = nil
-- lint.linters_by_ft['inko'] = nil
-- lint.linters_by_ft['janet'] = nil
-- lint.linters_by_ft['json'] = nil
-- lint.linters_by_ft['markdown'] = nil
-- lint.linters_by_ft['rst'] = nil
-- lint.linters_by_ft['ruby'] = nil
-- lint.linters_by_ft['terraform'] = nil
-- lint.linters_by_ft['text'] = nil
-- Create autocommand which carries out the actual linting
-- on the specified events.
local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})
end,
},
}

View 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>' },
},
},
},
}

View File

@@ -1,254 +1,239 @@
-- Quickstart 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', {
dependencies = { 'folke/neoconf.nvim',
-- Automatically install LSPs to stdpath for neovim cmd = 'Neoconf',
opts = {},
},
-- Portable package manager for Neovim that runs everywhere Neovim runs.
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
-- https://github.com/williamboman/mason.nvim
{
'williamboman/mason.nvim', 'williamboman/mason.nvim',
'williamboman/mason-lspconfig.nvim', cmd = 'Mason',
'WhoIsSethDaniel/mason-tool-installer.nvim', run = ':MasonUpdate',
-- Useful status updates for LSP opts = {
{ PATH = 'prepend',
'j-hui/fidget.nvim', -- Mason servers to install
opts = { -- See: https://mason-registry.dev/registry/list
notification = { ensure_installed = {
window = { 'clang-format',
winblend = 50, 'codespell',
align = 'top', 'commitlint',
}, 'editorconfig-checker',
}, 'fixjson',
}, 'jsonlint',
}, 'luacheck',
'b0o/schemastore.nvim', 'phpcbf',
{ 'phpcs',
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins 'phpmd',
-- used for completion, annotations and signatures of Neovim apis 'prettier',
'folke/lazydev.nvim', 'shellcheck',
ft = 'lua', 'shfmt',
opts = { 'stylua',
library = { 'yamllint',
-- Load luvit types when the `vim.uv` word is found
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
},
}, },
}, },
}, },
config = function() -- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
-- Diagnostic keymaps -- https://github.com/williamboman/mason-lspconfig.nvim
vim.keymap.set('n', 'dp', vim.diagnostic.goto_prev, { desc = 'Diagnostic: Goto Prev' }) {
vim.keymap.set('n', 'dn', vim.diagnostic.goto_next, { desc = 'Diagnostic: Goto Next' }) 'williamboman/mason-lspconfig.nvim',
vim.keymap.set('n', '<leader>do', vim.diagnostic.open_float, { desc = 'Diagnostic: Open float' }) opts = {
vim.keymap.set('n', '<leader>dq', vim.diagnostic.setloclist, { desc = 'Diagnostic: Set loc list' }) -- ── Enable the following language servers ───────────────────────────
-- LSP settings.
-- This function gets run when an LSP connects to a particular buffer.
local on_attach = function(_, bufnr)
local nmap = function(keys, func, desc)
if desc then
desc = 'LSP: ' .. desc
end
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
end
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-- See `:help K` for why this keymap
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
-- Lesser used LSP functionality
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
nmap('<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, '[W]orkspace [L]ist Folders')
-- Create a command `:Format` local to the LSP buffer
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
if vim.lsp.buf.format then
vim.lsp.buf.format()
elseif vim.lsp.buf.formatting then
vim.lsp.buf.formatting()
end
end, { desc = 'Format current buffer with LSP' })
end
-- Setup mason so it can manage external tooling
require('mason').setup()
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
local servers = {
-- :help lspconfig-all for all pre-configured LSPs -- :help lspconfig-all for all pre-configured LSPs
ast_grep = {}, ensure_installed = {
'bashls',
actionlint = {}, -- GitHub Actions -- 'csharp_ls',
ansiblels = {}, -- Ansible 'diagnosticls',
bashls = {}, -- Bash 'gopls',
css_variables = {}, -- CSS 'html',
cssls = {}, -- CSS 'intelephense',
docker_compose_language_service = {}, -- Docker compose 'jsonls',
dockerls = {}, -- Docker 'lua_ls',
eslint = {}, -- ESLint 'tailwindcss',
gitlab_ci_ls = {}, -- GitLab CI 'ts_ls',
gopls = {}, -- Go 'vimls',
grammarly = {}, -- Grammar and better writing 'volar',
html = {}, -- HTML
intelephense = {}, -- PHP
jinja_lsp = {}, -- Jinja templates
pest_ls = {}, -- Pest (PHP)
phpactor = {}, -- PHP
psalm = {}, -- PHP
pyright = {}, -- Python
semgrep = {}, -- Security
shellcheck = {}, -- Shell scripts
shfmt = {}, -- Shell scripts formatting
stylelint_lsp = {}, -- Stylelint for S/CSS
stylua = {}, -- Used to format Lua code
tailwindcss = {}, -- Tailwind CSS
terraformls = {}, -- Terraform
tflint = {}, -- Terraform
ts_ls = {}, -- TypeScript/JS
typos_lsp = {}, -- Better writing
volar = {}, -- Vue
yamlls = {}, -- YAML
lua_ls = {
-- cmd = {...},
-- filetypes = { ...},
-- capabilities = {},
settings = {
Lua = {
completion = {
callSnippet = 'Replace',
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
diagnostics = { disable = { 'missing-fields' } },
},
},
}, },
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(),
},
},
},
}
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
'actionlint',
'ansible-language-server',
'ansible-lint',
'bash-language-server',
'blade-formatter',
'codespell',
'commitlint',
'diagnostic-languageserver',
'docker-compose-language-service',
'dockerfile-language-server',
'editorconfig-checker',
'fixjson',
'flake8',
'html-lsp',
'jq',
'jsonlint',
'luacheck',
'php-cs-fixer',
'phpcs',
'phpmd',
'semgrep',
'shellcheck',
'shfmt',
'stylelint',
'stylua',
'yamllint',
})
require('mason-tool-installer').setup {
ensure_installed = ensure_installed,
auto_update = true,
}
-- Ensure the servers above are installed
require('mason-lspconfig').setup {
automatic_installation = true, automatic_installation = true,
ensure_installed = servers, handlers = {
} -- The first entry (without a key) will be the default handler
-- and will be called for each installed server that doesn't have
-- a dedicated handler.
function(server_name) -- default handler (optional)
require('lspconfig')[server_name].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,
}
end,
-- Next, you can provide targeted overrides for specific servers.
['lua_ls'] = function()
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 },
-- nvim-cmp supports additional completion capabilities completion = {
local capabilities = vim.lsp.protocol.make_client_capabilities() callSnippet = 'Replace',
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) },
},
for _, lsp in ipairs(servers) do },
require('lspconfig')[lsp].setup { }
on_attach = on_attach, end,
capabilities = capabilities, ['jsonls'] = function()
} require('lspconfig')['jsonls'].setup {
end on_attach = function(_, bufnr)
-- Create a command `:Format` local to the LSP buffer
-- Turn on lsp status information vim.api.nvim_buf_create_user_command(
require('fidget').setup() bufnr,
'Format',
-- Example custom configuration for lua function(_)
-- require('conform').format {
-- Make runtime files discoverable to the server formatters = { 'injected' },
local runtime_path = vim.split(package.path, ';') async = true,
table.insert(runtime_path, 'lua/?.lua') lsp_fallback = true,
table.insert(runtime_path, 'lua/?/init.lua') }
end,
require('lspconfig').lua_ls.setup { { desc = 'Format current buffer with LSP' }
on_attach = on_attach, )
capabilities = capabilities, end,
settings = { capabilities = capabilities,
Lua = { settings = {
runtime = { json = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT) schemas = require('schemastore').json.schemas(),
version = 'LuaJIT', validate = { enable = true },
-- Setup your lua path },
path = runtime_path, yaml = {
}, schemaStore = {
diagnostics = { -- You must disable built-in SchemaStore support if you want to use
globals = { 'vim' }, -- this plugin and its advanced options like `ignore`.
}, enable = false,
workspace = { -- Avoid TypeError: Cannot read properties of undefined (reading 'length')
library = vim.api.nvim_get_runtime_file('', true), url = '',
checkThirdParty = false, },
}, schemas = require('schemastore').yaml.schemas(),
-- Do not send telemetry data containing a randomized but unique identifier validate = { enable = true },
telemetry = { enable = false }, },
}, },
}
end,
['ts_ls'] = function()
local mason_registry = require 'mason-registry'
local ts_plugin_location = mason_registry
.get_package('vue-language-server')
:get_install_path() .. '/node_modules/@vue/typescript-plugin'
require('lspconfig')['volar'].setup {
init_options = {
plugins = {
{
name = '@vue/typescript-plugin',
location = ts_plugin_location,
languages = { 'javascript', 'typescript', 'vue' },
},
},
},
filetypes = {
'typescript',
'javascript',
'javascriptreact',
'typescriptreact',
'vue',
},
}
end,
}, },
} },
},
vim.api.nvim_create_autocmd('FileType', { -- ── Misc ───────────────────────────────────────────────────
pattern = 'sh', -- vscode-like pictograms for neovim lsp completion items
callback = function() -- https://github.com/onsails/lspkind-nvim
vim.lsp.start { { 'onsails/lspkind.nvim', opts = {} },
name = 'bash-language-server', -- JSON schemas for Neovim
cmd = { 'bash-language-server', 'start' }, -- https://github.com/b0o/SchemaStore.nvim
} { 'b0o/schemastore.nvim' },
end,
}) -- ── LSP ────────────────────────────────────────────────────
end, -- 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
-- https://github.com/Zeioth/garbage-day.nvim
{
'zeioth/garbage-day.nvim',
dependencies = 'neovim/nvim-lspconfig',
event = 'VeryLazy',
opts = {},
},
} }

View File

@@ -2,32 +2,71 @@
-- https://github.com/nvim-lualine/lualine.nvim -- https://github.com/nvim-lualine/lualine.nvim
return { return {
'nvim-lualine/lualine.nvim', 'nvim-lualine/lualine.nvim',
dependencies = {
'kyazdani42/nvim-web-devicons',
'folke/noice.nvim',
},
config = function() config = function()
local function diff_source()
local gitsigns = vim.b.gitsigns_status_dict
if gitsigns then
return {
added = gitsigns.added,
modified = gitsigns.changed,
removed = gitsigns.removed,
}
end
end
require('lualine').setup { require('lualine').setup {
options = { options = {
icons_enabled = true, icons_enabled = true,
component_separators = '|', component_separators = '|',
section_separators = '', section_separators = '',
}, },
-- Sections
-- +-------------------------------------------------+
-- | A | B | C X | Y | Z |
-- +-------------------------------------------------+
sections = { sections = {
lualine_a = {
'mode',
},
lualine_b = {
{ 'b:gitsigns_head', icon = '' },
{ 'diff', source = diff_source },
'diagnostics',
},
lualine_c = {
'buffers',
-- 'filename',
},
lualine_x = { lualine_x = {
-- 'fileformat',
'filetype',
},
lualine_y = {
-- 'progress'
},
lualine_z = {
{ {
require('noice').api.statusline.mode.get, require('noice').api.statusline.mode.get,
cond = require('noice').api.statusline.mode.has, cond = require('noice').api.statusline.mode.has,
-- color = { fg = '#ff9e64' },
}, },
{ {
require('noice').api.status.command.get, require('noice').api.status.command.get,
cond = require('noice').api.status.command.has, cond = require('noice').api.status.command.has,
-- color = { fg = '#ff9e64' },
},
},
lualine_a = {
{
'buffers',
}, },
}, },
}, },
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { 'filename' },
lualine_x = { 'location' },
lualine_y = {},
lualine_z = {},
},
} }
end, end,
} }

View 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' },
}

View File

@@ -1,6 +1,5 @@
-- Neo-tree is a Neovim plugin to browse the file system -- Neo-tree is a Neovim plugin to browse the file system
-- https://github.com/nvim-neo-tree/neo-tree.nvim -- https://github.com/nvim-neo-tree/neo-tree.nvim
return { return {
'nvim-neo-tree/neo-tree.nvim', 'nvim-neo-tree/neo-tree.nvim',
version = '*', version = '*',
@@ -9,29 +8,27 @@ return {
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
'MunifTanjim/nui.nvim', 'MunifTanjim/nui.nvim',
{ {
-- This plugins prompts the user to pick a window and returns
-- the window id of the picked window
-- https://github.com/s1n7ax/nvim-window-picker
's1n7ax/nvim-window-picker', 's1n7ax/nvim-window-picker',
version = '2.*', version = '2.*',
config = function() opts = {
require('window-picker').setup { filter_rules = {
filter_rules = { include_current_win = false,
include_current_win = false, autoselect_one = true,
autoselect_one = true, -- filter using buffer options
-- filter using buffer options bo = {
bo = { -- if the file type is one of following, the window will be ignored
-- if the file type is one of following, the window will be ignored filetype = { 'neo-tree', 'neo-tree-popup', 'notify' },
filetype = { 'neo-tree', 'neo-tree-popup', 'notify' }, -- if the buffer type is one of following, the window will be ignored
-- if the buffer type is one of following, the window will be ignored buftype = { 'terminal', 'quickfix' },
buftype = { 'terminal', 'quickfix' },
},
}, },
} },
end, },
}, },
}, },
cmd = 'Neotree', cmd = 'Neotree',
keys = {
{ '<leader>e', ':Neotree reveal<CR>', { desc = 'NeoTree reveal' } },
},
opts = { opts = {
close_if_last_window = true, close_if_last_window = true,
filesystem = { filesystem = {

View File

@@ -1,80 +1,85 @@
-- Highly experimental plugin that completely replaces the UI
-- for messages, cmdline and the popupmenu.
-- https://github.com/folke/noice.nvim
return { return {
-- Highly experimental plugin that completely replaces the UI 'folke/noice.nvim',
-- for messages, cmdline and the popupmenu. lazy = false,
-- https://github.com/folke/noice.nvim enabled = true,
{ dependencies = {
'folke/noice.nvim', 'MunifTanjim/nui.nvim',
dependencies = { -- A fancy, configurable, notification manager for NeoVim
'MunifTanjim/nui.nvim', -- https://github.com/rcarriga/nvim-notify
-- A fancy, configurable, notification manager for NeoVim 'rcarriga/nvim-notify',
-- https://github.com/rcarriga/nvim-notify 'hrsh7th/nvim-cmp',
{ },
'rcarriga/nvim-notify', opts = {
config = function() lsp = {
require('notify').setup { -- override markdown rendering so that **cmp** and other plugins use **Treesitter**
background_colour = '#000000', override = {
enabled = false, ['vim.lsp.util.convert_input_to_markdown_lines'] = true,
} ['vim.lsp.util.stylize_markdown'] = true,
end, ['cmp.entry.get_documentation'] = true, -- requires hrsh7th/nvim-cmp
}, },
}, },
setup = function() -- you can enable a preset for easier configuration
vim.g.noice_ignored_filetypes = { 'fugitiveblame', 'fugitive', 'gitcommit' } presets = {
require('noice').setup { bottom_search = false, -- use a classic bottom cmdline for search
-- you can enable a preset for easier configuration command_palette = true, -- position the cmdline and popupmenu together
presets = { long_message_to_split = true, -- long messages will be sent to a split
bottom_search = true, -- use a classic bottom cmdline for search inc_rename = false, -- enables an input dialog for inc-rename.nvim
command_palette = true, -- position the cmdline and popupmenu together lsp_doc_border = false, -- add a border to hover docs and signature help
long_message_to_split = true, -- long messages will be sent to a split },
inc_rename = false, -- enables an input dialog for inc-rename.nvim routes = {
lsp_doc_border = false, -- add a border to hover docs and signature help {
}, filter = {
views = { event = 'msg_show',
cmdline_popup = { any = {
position = { { find = '%d+L, %d+B' },
row = 5, { find = '; after #%d+' },
col = '50%', { find = '; before #%d+' },
}, { find = '%d fewer lines' },
size = { { find = '%d more lines' },
width = 60,
height = 'auto',
},
},
popupmenu = {
relative = 'editor',
position = {
row = 8,
col = '50%',
},
size = {
width = 60,
height = 10,
},
border = {
style = 'rounded',
padding = { 0, 1 },
},
win_options = {
winhighlight = { Normal = 'Normal', FloatBorder = 'DiagnosticInfo' },
},
}, },
}, },
routes = { opts = { skip = true },
{ },
filter = { {
event = 'msg_show', filter = {
any = { event = 'notify',
{ find = '%d+L, %d+B' }, find = 'No information available',
{ find = '; after #%d+' },
{ find = '; before #%d+' },
{ find = '%d fewer lines' },
{ find = '%d more lines' },
},
},
opts = { skip = true },
},
}, },
} opts = { skip = true },
end, },
},
views = {
cmdline_popup = {
position = {
row = 5,
col = '50%',
},
size = {
width = 60,
height = 'auto',
},
},
popupmenu = {
relative = 'editor',
position = {
row = 8,
col = '50%',
},
size = {
width = 60,
height = 10,
},
border = {
style = 'rounded',
padding = { 0, 1 },
},
win_options = {
winhighlight = { Normal = 'Normal', FloatBorder = 'DiagnosticInfo' },
},
},
},
}, },
} }

View File

@@ -1,19 +0,0 @@
return {
'epwalsh/obsidian.nvim',
version = '*', -- recommended, use latest release instead of latest commit
lazy = true,
ft = 'markdown',
dependencies = {
'nvim-lua/plenary.nvim',
},
config = function()
require('obsidian').setup {
workspaces = {
{
name = 'Notes',
path = vim.fn.expand '$HOME/Code/ivuorinen/obsidian',
},
},
}
end,
}

View 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 = {},
}

View 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 = {},
}

View File

@@ -1,85 +1,105 @@
return { return {
-- Fuzzy Finder (files, lsp, etc) -- Fuzzy Finder (files, lsp, etc)
-- https://github.com/nvim-telescope/telescope.nvim -- https://github.com/nvim-telescope/telescope.nvim
{ 'nvim-telescope/telescope.nvim',
'nvim-telescope/telescope.nvim', version = '*',
version = '*', lazy = false,
dependencies = { dependencies = {
{ 'nvim-lua/plenary.nvim' }, { 'nvim-lua/plenary.nvim' },
{ 'nvim-telescope/telescope-symbols.nvim' }, { 'nvim-telescope/telescope-symbols.nvim' },
{ 'folke/which-key.nvim' },
-- Fuzzy Finder Algorithm which requires local dependencies to be built. -- A Telescope picker to quickly access configurations
-- Only load if `make` is available -- of plugins managed by lazy.nvim.
{ -- https://github.com/polirritmico/telescope-lazy-plugins.nvim
'nvim-telescope/telescope-fzf-native.nvim', { 'polirritmico/telescope-lazy-plugins.nvim' },
build = 'make',
cond = vim.fn.executable 'make' == 1, -- 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.
-- Only load if `make` is available
{
'nvim-telescope/telescope-fzf-native.nvim',
build = 'make',
cond = vim.fn.executable 'make' == 1,
}, },
setup = function()
local t = require 'telescope'
local a = require 'telescope.actions'
local b = require 'telescope.builtin'
local themes = require 'telescope.themes'
require('telescope').load_extension 'harpoon'
t.load_extension 'git_worktree'
-- [[ Configure Telescope ]] -- Import modules with ease
-- See `:help telescope` and `:help telescope.setup()` -- https://github.com/piersolenski/telescope-import.nvim
t.setup { { 'piersolenski/telescope-import.nvim' },
defaults = { },
layout_strategy = 'horizontal', config = function()
layout_config = { local t = require 'telescope'
preview_width = 0.65, local a = require 'telescope.actions'
horizontal = { local themes = require 'telescope.themes'
size = {
width = '95%', -- [[ Configure Telescope ]]
height = '95%', -- See `:help telescope` and `:help telescope.setup()`
}, t.setup {
}, defaults = {
layout_strategy = 'horizontal',
pickers = {
find_files = {
theme = 'dropdown',
}, },
pickers = { },
find_files = { mappings = {
theme = 'dropdown', i = {
}, ['<C-u>'] = false,
['<C-j>'] = a.move_selection_next,
['<C-k>'] = a.move_selection_previous,
['<C-d>'] = a.move_selection_previous,
}, },
mappings = { },
i = { },
['<C-u>'] = false, extensions = {
['<C-j>'] = a.move_selection_next, lazy_plugins = {
['<C-k>'] = a.move_selection_previous, -- Must be a valid path to the file containing the lazy spec and setup() call.
['<C-d>'] = a.move_selection_previous, 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].*)]],
}, },
}, },
}, },
} },
}
-- Enable telescope fzf native, if installed -- Load extensions
pcall(t.load_extension, 'fzf') pcall(t.load_extension, 'harpoon')
pcall(t.load_extension, 'git_worktree')
pcall(t.load_extension, 'lazy_plugins')
pcall(t.load_extension, 'luasnip')
pcall(t.load_extension, 'import')
-- See `:help telescope.builtin` -- Enable telescope fzf native, if installed
vim.keymap.set('n', '<leader>so', b.oldfiles, { desc = '[?] Find recently opened files' }) pcall(t.load_extension, 'fzf')
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change theme, layout, etc. -- [[ Telescope Keymaps ]]
b.current_buffer_fuzzy_find(themes.get_dropdown { -- See `:help telescope.builtin`
winblend = 10, -- See `:help telescope.keymap`
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
require('telescope.builtin').current_buffer_fuzzy_find(
themes.get_dropdown {
winblend = 20,
previewer = true, previewer = true,
}) }
end, { desc = '[/] Fuzzily search in current buffer]' }) )
end, { desc = '[/] Fuzzily search in current buffer]' })
vim.keymap.set('n', '<leader>sf', b.find_files, { desc = '[S]earch [F]iles' }) end,
vim.keymap.set('n', '<leader>sw', b.grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', b.live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', b.diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sb', b.buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<leader>sS', b.git_status, { desc = '' })
vim.keymap.set('n', '<leader>sm', ':Telescope harpoon marks<CR>', { desc = 'Harpoon [M]arks' })
vim.keymap.set('n', '<Leader>sr', "<CMD>lua require('telescope').extensions.git_worktree.git_worktrees()<CR>")
vim.keymap.set('n', '<Leader>sR', "<CMD>lua require('telescope').extensions.git_worktree.create_git_worktree()<CR>")
vim.keymap.set('n', '<Leader>sn', "<CMD>lua require('telescope').extensions.notify.notify()<CR>")
vim.api.nvim_set_keymap('n', 'st', ':TodoTelescope<CR>', { noremap = true })
vim.api.nvim_set_keymap('n', '<Leader><tab>', "<Cmd>lua require('telescope.builtin').commands()<CR>", { noremap = false })
end,
},
} }

View 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 = {},
}

View File

@@ -1,15 +1,23 @@
-- Highlight, edit, and navigate code
-- https://github.com/nvim-treesitter/nvim-treesitter
return { return {
-- Highlight, edit, and navigate code
-- https://github.com/nvim-treesitter/nvim-treesitter
'nvim-treesitter/nvim-treesitter', 'nvim-treesitter/nvim-treesitter',
version = false, -- last release is way too old and doesn't work on Windows
build = function() build = function()
pcall(require('nvim-treesitter.install').update { with_sync = true }) pcall(require('nvim-treesitter.install').update { with_sync = true })
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 {
auto_install = true,
ignore_install = {},
sync_install = true,
modules = {},
-- Add languages to be installed here that you want installed for treesitter -- Add languages to be installed here that you want installed for treesitter
ensure_installed = { ensure_installed = {
@@ -42,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>',
}, },
@@ -95,10 +129,10 @@ return {
swap = { swap = {
enable = true, enable = true,
swap_next = { swap_next = {
['<leader>a'] = '@parameter.inner', ['<leader>cn'] = '@parameter.inner',
}, },
swap_previous = { swap_previous = {
['<leader>A'] = '@parameter.inner', ['<leader>cP'] = '@parameter.inner',
}, },
}, },
}, },

View 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,
},
}

View File

@@ -1,32 +1,15 @@
-- A pretty diagnostics, references, telescope results,
-- quickfix and location list to help you solve all the
-- trouble your code is causing.
-- https://github.com/folke/trouble.nvim
return { return {
'folke/trouble.nvim', 'folke/trouble.nvim',
lazy = false, lazy = false,
dependencies = 'nvim-tree/nvim-web-devicons', dependencies = { 'nvim-tree/nvim-web-devicons' },
config = function() opts = {
require('trouble').setup { auto_preview = true,
auto_preview = false, auto_fold = true,
auto_fold = true, auto_close = true,
auto_close = true, use_lsp_diagnostic_signs = true,
use_lsp_diagnostic_signs = true, },
}
vim.keymap.set('n', '<leader>xx', '<cmd>TroubleToggle<cr>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>xw', '<cmd>TroubleToggle workspace_diagnostics<cr>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>xd', '<cmd>TroubleToggle document_diagnostics<cr>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>xl', '<cmd>TroubleToggle loclist<cr>', { silent = true, noremap = true })
vim.keymap.set('n', '<leader>xq', '<cmd>TroubleToggle quickfix<cr>', { silent = true, noremap = true })
vim.keymap.set('n', 'gR', '<cmd>TroubleToggle lsp_references<cr>', { silent = true, noremap = true })
-- Diagnostic signs
-- https://github.com/folke/trouble.nvim/issues/52
local signs = {
Error = '',
Warning = '',
Hint = '',
Information = '',
}
for type, icon in pairs(signs) do
local hl = 'DiagnosticSign' .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
end,
} }

View File

@@ -1,65 +1,80 @@
local handler = function(virtText, lnum, endLnum, width, truncate) -- Not UFO in the sky, but an ultra fold in Neovim.
local newVirtText = {} -- https://github.com/kevinhwang91/nvim-ufo/
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
return { return {
-- Not UFO in the sky, but an ultra fold in Neovim. 'kevinhwang91/nvim-ufo',
-- https://github.com/kevinhwang91/nvim-ufo/ version = '*',
{ dependencies = {
'kevinhwang91/nvim-ufo', { 'neovim/nvim-lspconfig' },
lazy = false, { 'kevinhwang91/promise-async' },
enabled = true, { 'nvim-treesitter/nvim-treesitter' },
version = '*', {
dependencies = { -- Status column plugin that provides a configurable
'kevinhwang91/promise-async', -- 'statuscolumn' and click handlers.
{ 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }, -- https://github.com/luukvbaal/statuscol.nvim
{ 'luukvbaal/statuscol.nvim',
'luukvbaal/statuscol.nvim', config = function()
config = function() local builtin = require 'statuscol.builtin'
local builtin = require 'statuscol.builtin' require('statuscol').setup {
require('statuscol').setup { relculright = true,
relculright = true, ft_ignore = {
segments = { 'dashboard',
{ text = { builtin.foldfunc }, click = 'v:lua.ScFa' }, 'NvimTree',
{ text = { '%s' }, click = 'v:lua.ScSa' }, 'help',
{ text = { builtin.lnumfunc, ' ' }, click = 'v:lua.ScLa' }, 'vim',
'alpha',
'dashboard',
'neo-tree',
'Trouble',
'lazy',
'toggleterm',
},
bt_ignore = {
'help',
'vim',
'alpha',
'dashboard',
'neo-tree',
'Trouble',
'lazy',
'toggleterm',
},
segments = {
{
text = { builtin.foldfunc },
click = 'v:lua.ScFa',
}, },
} {
end, sign = {
}, namespace = { 'diagnostic/signs' },
maxwidth = 2,
-- auto = true,
},
click = 'v:lua.ScSa',
},
{
text = { builtin.lnumfunc, ' ' },
click = 'v:lua.ScLa',
},
},
}
end,
}, },
init = function() },
vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]] config = function()
vim.o.foldcolumn = '1' -- '0' is not bad local capabilities = vim.lsp.protocol.make_client_capabilities()
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value capabilities.textDocument.foldingRange = {
vim.o.foldlevelstart = 99 dynamicRegistration = true,
vim.o.foldenable = true lineFoldingOnly = true,
end, }
opts = { 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, open_fold_hl_timeout = 150,
close_fold_kinds_for_ft = { 'imports', 'comment' }, close_fold_kinds_for_ft = { 'imports', 'comment' },
preview = { preview = {
@@ -75,10 +90,55 @@ return {
jumpBot = ']', jumpBot = ']',
}, },
}, },
provider_selector = function(_, _, _) -- bufnr, filetype, buftype provider_selector = function(_, _, _) -- bufnr, filetype, buftype
return { 'treesitter', 'indent' } return { 'treesitter', 'indent' }
end, end,
fold_virt_text_handler = handler,
}, -- 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,
} }

View File

@@ -4,9 +4,7 @@ return {
{ {
'folke/tokyonight.nvim', 'folke/tokyonight.nvim',
priority = 1000, -- Make sure to load this before all the other start plugins. priority = 1000, -- Make sure to load this before all the other start plugins.
init = function() init = function() vim.cmd.colorscheme(vim.g.colors_theme) end,
vim.cmd.colorscheme 'tokyonight'
end,
opts = { opts = {
transparent = true, transparent = true,
}, },
@@ -20,33 +18,194 @@ return {
update_interval = 1000, update_interval = 1000,
set_dark_mode = function() set_dark_mode = function()
vim.api.nvim_set_option_value('background', 'dark', {}) vim.api.nvim_set_option_value('background', 'dark', {})
vim.cmd 'colorscheme tokyonight-storm' vim.cmd.colorscheme(vim.g.colors_variant_dark)
end, end,
set_light_mode = function() set_light_mode = function()
vim.api.nvim_set_option_value('background', 'light', {}) vim.api.nvim_set_option_value('background', 'light', {})
vim.cmd 'colorscheme tokyonight-day' vim.cmd.colorscheme(vim.g.colors_variant_light)
end, end,
}, },
}, },
-- A neovim plugin that shows colorcolumn dynamically
-- https://github.com/Bekaboo/deadcolumn.nvim
{ 'Bekaboo/deadcolumn.nvim' },
-- vim dashboard
-- https://github.com/nvimdev/dashboard-nvim
{
'nvimdev/dashboard-nvim',
event = 'VimEnter',
config = function()
require('dashboard').setup {
theme = 'doom',
config = {
disable_move = true,
week_header = {
enable = true,
},
shortcut = {},
center = {
{
icon = '',
icon_hl = '@variable',
desc = 'Files',
group = 'Label',
action = 'Telescope find_files',
key = 'f',
},
{
icon = '',
desc = 'Marks',
group = 'DiagnosticHint',
action = 'Telescope harpoon marks',
key = 'a',
},
{
icon = '',
desc = 'TODO',
group = 'DiagnosticOptions',
action = 'TodoTelescope',
key = 't',
},
{
icon = '',
desc = 'Search',
group = 'Number',
action = 'Telescope live_grep',
key = 's',
},
{
icon = '󰊳 ',
desc = 'Lazy Update',
group = '@property',
action = 'Lazy update',
key = 'u',
},
{
icon = '',
desc = 'Quit',
group = 'DiagnosticError',
action = 'q',
key = 'q',
},
},
},
}
end,
dependencies = { { 'nvim-tree/nvim-web-devicons' } },
},
-- Remove all background colors to make nvim transparent -- Remove all background colors to make nvim transparent
-- https://github.com/xiyaowong/nvim-transparent -- https://github.com/xiyaowong/nvim-transparent
{ 'xiyaowong/nvim-transparent' }, { 'xiyaowong/nvim-transparent', opts = {} },
-- Twilight is a Lua plugin for Neovim 0.5 that dims inactive -- Twilight is a Lua plugin for Neovim 0.5 that dims inactive
-- portions of the code you're editing using TreeSitter. -- portions of the code you're editing using TreeSitter.
-- https://github.com/folke/twilight.nvim -- https://github.com/folke/twilight.nvim
{ 'folke/twilight.nvim', opts = {} },
-- Indent guides for Neovim
-- https://github.com/lukas-reineke/indent-blankline.nvim
{ {
'folke/twilight.nvim', 'lukas-reineke/indent-blankline.nvim',
ft = 'markdown', -- Highlight markdown files main = 'ibl',
opts = {
scope = { show_start = false, show_end = false },
indent = {
char = '',
tab_char = '',
},
exclude = {
filetypes = {
'Trouble',
'alpha',
'dashboard',
'help',
'lazy',
'lazyterm',
'mason',
'neo-tree',
'notify',
'terminal',
'toggleterm',
'trouble',
},
buftypes = { 'dashboard' },
},
},
},
-- Display a character as the colorcolumn
-- https://github.com/lukas-reineke/virt-column.nvim
{ 'lukas-reineke/virt-column.nvim', opts = {} },
-- icons
{
'echasnovski/mini.icons',
opts = {
file = {
['.keep'] = { glyph = '󰊢', hl = 'MiniIconsGrey' },
['devcontainer.json'] = { glyph = '', hl = 'MiniIconsAzure' },
},
filetype = {
dotenv = { glyph = '', hl = 'MiniIconsYellow' },
},
},
init = function()
package.preload['nvim-web-devicons'] = function()
require('mini.icons').mock_nvim_web_devicons()
return package.loaded['nvim-web-devicons']
end
end,
},
-- ui components
{ 'MunifTanjim/nui.nvim', lazy = true },
-- Git integration for buffers
-- https://github.com/lewis6991/gitsigns.nvim
{
'lewis6991/gitsigns.nvim',
version = false,
opts = {
signs = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
},
current_line_blame = false,
on_attach = function(bufnr)
local gs = require 'gitsigns'
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', 'gn', function()
if vim.wo.diff then return ']c' end
vim.schedule(function() gs.next_hunk() end)
return '<Ignore>'
end, { expr = true })
map('n', 'gp', function()
if vim.wo.diff then return '[c' end
vim.schedule(function() gs.prev_hunk() end)
return '<Ignore>'
end, { expr = true })
end,
},
}, },
-- Seamless navigation between tmux panes and vim splits -- Seamless navigation between tmux panes and vim splits
-- https://github.com/christoomey/vim-tmux-navigator -- https://github.com/christoomey/vim-tmux-navigator
{ {
'christoomey/vim-tmux-navigator', 'christoomey/vim-tmux-navigator',
lazy = false,
enabled = true,
cmd = { cmd = {
'TmuxNavigateLeft', 'TmuxNavigateLeft',
'TmuxNavigateDown', 'TmuxNavigateDown',
@@ -54,60 +213,49 @@ return {
'TmuxNavigateRight', 'TmuxNavigateRight',
'TmuxNavigatePrevious', 'TmuxNavigatePrevious',
}, },
keys = { opts = {},
{ '<c-h>', '<cmd><C-U>TmuxNavigateLeft<cr>' },
{ '<c-j>', '<cmd><C-U>TmuxNavigateDown<cr>' },
{ '<c-k>', '<cmd><C-U>TmuxNavigateUp<cr>' },
{ '<c-l>', '<cmd><C-U>TmuxNavigateRight<cr>' },
{ '<c-\\>', '<cmd><C-U>TmuxNavigatePrevious<cr>' },
},
}, },
-- Cloak allows you to overlay *'s over defined patterns in defined files. -- Cloak allows you to overlay *'s over defined patterns in defined files.
-- https://github.com/laytan/cloak.nvim -- https://github.com/laytan/cloak.nvim
{ {
'laytan/cloak.nvim', 'laytan/cloak.nvim',
enabled = true,
lazy = false,
version = '*', version = '*',
config = function() opts = {
require('cloak').setup { enabled = true,
enabled = true, cloak_character = '*',
cloak_character = '*', -- The applied highlight group (colors) on the cloaking, see `:h highlight`.
-- The applied highlight group (colors) on the cloaking, see `:h highlight`. highlight_group = 'Comment',
highlight_group = 'Comment', patterns = {
patterns = { {
{ -- Match any file starting with ".env".
-- Match any file starting with ".env". -- This can be a table to match multiple file patterns.
-- This can be a table to match multiple file patterns. file_pattern = {
file_pattern = { '.env*',
'.env*', 'wrangler.toml',
'wrangler.toml', '.dev.vars',
'.dev.vars',
},
-- Match an equals sign and any character after it.
-- This can also be a table of patterns to cloak,
-- example: cloak_pattern = { ":.+", "-.+" } for yaml files.
cloak_pattern = '=.+',
}, },
-- Match an equals sign and any character after it.
-- This can also be a table of patterns to cloak,
-- example: cloak_pattern = { ":.+", "-.+" } for yaml files.
cloak_pattern = '=.+',
}, },
} },
end,
keys = {
{ '<leader>tc', '<cmd>CloakToggle<cr>', desc = '[tc] Toggle Cloak' },
}, },
}, },
-- Close buffer without messing up with the window. -- Close buffer without messing up with the window.
-- https://github.com/famiu/bufdelete.nvim -- https://github.com/famiu/bufdelete.nvim
{ 'famiu/bufdelete.nvim' }, { 'famiu/bufdelete.nvim' },
-- Neovim plugin for locking a buffer to a window -- Neovim plugin for locking a buffer to a window
-- https://github.com/stevearc/stickybuf.nvim -- https://github.com/stevearc/stickybuf.nvim
{ 'stevearc/stickybuf.nvim', opts = {} }, { 'stevearc/stickybuf.nvim', opts = {} },
-- Describe the regexp under the cursor -- Describe the regexp under the cursor
-- https://github.com/bennypowers/nvim-regexplainer -- https://github.com/bennypowers/nvim-regexplainer
{ {
'bennypowers/nvim-regexplainer', 'bennypowers/nvim-regexplainer',
lazy = false, event = 'BufEnter',
enabled = true,
dependencies = { dependencies = {
'nvim-treesitter/nvim-treesitter', 'nvim-treesitter/nvim-treesitter',
'MunifTanjim/nui.nvim', 'MunifTanjim/nui.nvim',
@@ -117,24 +265,11 @@ return {
auto = true, auto = true,
}, },
}, },
-- Clarify and beautify your comments using boxes and lines. -- Clarify and beautify your comments using boxes and lines.
-- https://github.com/LudoPinelli/comment-box.nvim -- https://github.com/LudoPinelli/comment-box.nvim
{ { 'LudoPinelli/comment-box.nvim', opts = {} },
'LudoPinelli/comment-box.nvim',
opts = {},
init = function()
local wk = require 'which-key'
wk.add {
{ '<leader>cb', group = 'CommentBox' },
{ '<Leader>cbt', '<Cmd>CBccbox<CR>', desc = 'CommentBox: Box Title' },
{ '<Leader>cbd', '<Cmd>CBd<CR>', desc = 'Remove a box' },
{ '<Leader>cbl', '<Cmd>CBline<CR>', desc = 'CommentBox: Simple Line' },
{ '<Leader>cbm', '<Cmd>CBllbox14<CR>', desc = 'CommentBox: Marked' },
{ '<Leader>cbt', '<Cmd>CBllline<CR>', desc = 'CommentBox: Titled Line' },
}
end,
},
-- Automatically expand width of the current window. -- Automatically expand width of the current window.
-- Maximizes and restore it. And all this with nice animations! -- Maximizes and restore it. And all this with nice animations!
-- https://github.com/anuvyklack/windows.nvim -- https://github.com/anuvyklack/windows.nvim
@@ -144,11 +279,18 @@ return {
'anuvyklack/middleclass', 'anuvyklack/middleclass',
'anuvyklack/animation.nvim', 'anuvyklack/animation.nvim',
}, },
config = function() opts = {},
vim.o.winwidth = 15 },
vim.o.winminwidth = 10
vim.o.equalalways = false -- Plugin to improve viewing Markdown files in Neovim
require('windows').setup() -- https://github.com/MeanderingProgrammer/render-markdown.nvim
end, {
'MeanderingProgrammer/render-markdown.nvim',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'nvim-tree/nvim-web-devicons',
},
ft = 'markdown',
opts = {},
}, },
} }

View File

@@ -0,0 +1,3 @@
-- Detect tabstop and shiftwidth automatically
-- https://github.com/tpope/vim-sleuth
return { 'tpope/vim-sleuth' }

View 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 }

View File

@@ -0,0 +1,626 @@
-- Useful plugin to show you pending keybinds.
-- https://github.com/folke/which-key.nvim
return {
'folke/which-key.nvim',
lazy = false,
version = '*',
priority = 1001, -- Make sure to load this as soon as possible
dependencies = {
'nvim-lua/plenary.nvim',
'echasnovski/mini.icons',
},
config = function()
local wk = require 'which-key'
wk.setup()
wk.add {
-- ╭─────────────────────────────────────────────────────────╮
-- │ With leader │
-- ╰─────────────────────────────────────────────────────────╯
-- ── Buffer ──────────────────────────────────────────────────────────
{
'<leader>b',
group = '[b] Buffer',
-- Add the current buffers to the menu
expand = function() return require('which-key.extras').expand.buf() end,
},
{
{ '<leader>bk', '<cmd>blast<cr>', desc = 'Buffer: Last' },
{ '<leader>bj', '<cmd>bfirst<cr>', desc = 'Buffer: First' },
{ '<leader>bh', '<cmd>bprev<cr>', desc = 'Buffer: Prev' },
{ '<leader>bl', '<cmd>bnext<cr>', desc = 'Buffer: Next' },
{ '<leader>bd', '<cmd>Bdelete<cr>', desc = 'Buffer: Delete' },
{ '<leader>bw', '<cmd>Bwipeout<cr>', desc = 'Buffer: Wipeout' },
},
-- ── Code ────────────────────────────────────────────────────────────
{ '<leader>c', group = '[c] Code' },
{
'<leader>ca',
'<cmd>lua vim.lsp.buf.code_action()<CR>',
desc = 'LSP: Code Action',
},
{
'<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 ────────────────────────────────────────────────
{ '<leader>cb', group = 'CommentBox' },
{ '<leader>cbb', '<Cmd>CBccbox<CR>', desc = 'CommentBox: Box Title' },
{ '<leader>cbd', '<Cmd>CBd<CR>', desc = 'CommentBox: Remove a box' },
{ '<leader>cbl', '<Cmd>CBline<CR>', desc = 'CommentBox: Simple Line' },
{ '<leader>cbm', '<Cmd>CBllbox14<CR>', desc = 'CommentBox: Marked' },
{ '<leader>cbt', '<Cmd>CBllline<CR>', desc = 'CommentBox: Titled Line' },
-- ── Code: Refactoring ───────────────────────────────────────────────
{ '<leader>cx', group = '[x] Refactoring' },
{
mode = { 'x' },
-- Extract function supports only visual mode
{
'<leader>cxe',
"<cmd>lua require('refactoring').refactor('Extract Function')<cr>",
desc = 'Extract Function',
},
{
'<leader>cxf',
"<cmd>lua require('refactoring').refactor('Extract Function To File')<cr>",
desc = 'Extract Function to File',
},
-- Extract variable supports only visual mode
{
'<leader>cxv',
"<cmd>lua require('refactoring').refactor('Extract Variable')<cr>",
desc = 'Extract Variable',
},
},
-- Inline func supports only normal
{
'<leader>cxif',
"<cmd>lua require('refactoring').refactor('Inline Function')<cr>",
desc = 'Inline Function',
},
-- Extract block supports only normal mode
{
'<leader>cxb',
"<cmd>lua require('refactoring').refactor('Extract Block')<cr>",
desc = 'Extract Block',
},
{
'<leader>cxbf',
"<cmd>lua require('refactoring').refactor('Extract Block To File')<cr>",
desc = 'Extract Block to File',
},
{
mode = { 'n', 'x' },
-- Inline var supports both normal and visual mode
{
'<leader>cxiv',
"<cmd>lua require('refactoring').refactor('Inline Variable')<cr>",
desc = 'Inline Variable',
},
},
-- ── Code: LSPSaga ───────────────────────────────────────────────────
-- See: lua/plugins/lsp.lua
{
'<C-a>',
'<cmd>Lspsaga term_toggle<cr>',
desc = 'LSPSaga: Open Floaterm',
},
{
'<leader>ca',
'<cmd>Lspsaga code_action<cr>',
desc = 'LSPSaga: Code Actions',
},
{
'<leader>cci',
'<cmd>Lspsaga incoming_calls<cr>',
desc = 'LSPSaga: Incoming Calls',
},
{
'<leader>cco',
'<cmd>Lspsaga outgoing_calls<cr>',
desc = 'LSPSaga: Outgoing Calls',
},
{
'<leader>cd',
'<cmd>Lspsaga show_line_diagnostics<cr>',
desc = 'LSPSaga: Show Line Diagnostics',
},
{
'<leader>cf',
'<cmd>lua require("conform").format({ async = true, lsp_fallback = true })<cr>',
mode = {},
desc = 'Format buffer with Conform',
},
{
'<leader>ci',
'<cmd>Lspsaga implement<cr>',
desc = 'LSPSaga: Implementations',
},
{
'<leader>cl',
'<cmd>Lspsaga show_cursor_diagnostics<cr>',
desc = 'LSPSaga: Show Cursor Diagnostics',
},
{
'<leader>cp',
'<cmd>Lspsaga peek_definition<cr>',
desc = 'LSPSaga: Peek Definition',
},
{ '<leader>cr', '<cmd>Lspsaga rename<cr>', desc = 'LSPSaga: Rename' },
{
'<leader>cR',
'<cmd>Lspsaga rename ++project<cr>',
desc = 'LSPSaga: Rename Project wide',
},
{
'<leader>cs',
'<cmd>Lspsaga signature_help<cr>',
desc = 'LSPSaga: Signature Documentation',
},
{
'<leader>ct',
'<cmd>Lspsaga peek_type_definition<cr>',
desc = 'LSPSaga: Peek Type Definition',
},
{
'<leader>cu',
'<cmd>Lspsaga preview_definition<cr>',
desc = 'LSPSaga: Preview Definition',
},
{
'<leader>cv',
'<cmd>Lspsaga diagnostic_jump_prev<cr>',
desc = 'LSPSaga: Diagnostic Jump Prev',
},
{
'<leader>cw',
'<cmd>Lspsaga diagnostic_jump_next<cr>',
desc = 'LSPSaga: Diagnostic Jump Next',
},
{
'<leader>cx',
'<cmd>Telescope import<cr>',
desc = 'Telescope import',
},
-- ── DAP ─────────────────────────────────────────────────────────────
{ '<leader>d', group = '[d] DAP' },
{
{
'<leader>db',
'<cmd>DapToggleBreakpoint',
desc = 'DAP: Toggle Breakpoint',
},
{ '<leader>dc', '<cmd>DapContinue', desc = 'DAP: Continue' },
{
'<leader>do',
'<cmd>lua vim.diagnostic.open_float()<CR>',
desc = 'Diagnostic: Open float',
},
{
'<leader>dq',
'<cmd>lua vim.diagnostic.setloclist()<CR>',
desc = 'Diagnostic: Set loc list',
},
{
'<leader>dr',
"<cmd>lua require('dapui').open({reset = true})<CR>",
desc = 'DAP: Reset',
},
{
'<leader>ds',
'<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>',
desc = 'LSP: Document Symbols',
},
{ '<leader>dt', '<cmd>DapUiToggle', desc = 'DAP: Toggle UI' },
},
-- ── Harpoon ─────────────────────────────────────────────────────────
-- See: lua/plugins/telescope.lua
{ '<leader>h', group = '[h] Harpoon' },
{
{
'<leader>ha',
'<cmd>lua require("harpoon"):list():add()<cr>',
desc = 'harpoon file',
},
{
'<leader>hn',
'<cmd>lua require("harpoon"):list():next()<cr>',
desc = 'harpoon to next file',
},
{
'<leader>hp',
'<cmd>lua require("harpoon"):list():prev()<cr>',
desc = 'harpoon to previous file',
},
{
'<leader>ht',
"<cmd>lua require('harpoon.ui').toggle_quick_menu()<CR>",
desc = 'DAP: Harpoon UI',
},
},
-- ── LSP ─────────────────────────────────────────────────────────────
{ '<leader>l', group = '[l] LSP' },
-- See: lua/plugins/lsp.lua
-- ── Quit ────────────────────────────────────────────────────────────
{ '<leader>q', group = '[q] Quit' },
{
{ '<leader>qf', '<cmd>q<CR>', desc = 'Quicker close split' },
{ '<leader>qq', '<cmd>wq!<CR>', desc = 'Quit with force saving' },
{ '<leader>qw', '<cmd>wq<CR>', desc = 'Write and quit' },
},
-- ── Search ──────────────────────────────────────────────────────────
{ '<leader>s', group = '[s] Search' },
-- See: lua/plugins/telescope.lua
{
'<leader><space>',
'<cmd>Telescope buffers<cr>',
desc = 'Find existing buffers',
},
{
'<leader>sc',
'<cmd>Telescope commands<CR>',
desc = 'Telescope: Commands',
},
{
'<leader>sd',
'<cmd>Telescope diagnostics<cr>',
desc = 'Search Diagnostics',
},
{
'<leader>sg',
'<cmd>Telescope live_grep<cr>',
desc = 'Search by Grep',
},
{
'<leader>sh',
'<cmd>Telescope highlights<cr>',
desc = 'List highlights',
},
{
'<leader>sl',
'<cmd>Telescope luasnip<CR>',
desc = 'Search LuaSnip',
},
{
'<leader>sm',
'<cmd>Telescope harpoon marks<CR>',
desc = 'Harpoon Marks',
},
{
'<leader>sn',
"<cmd>lua require('telescope').extensions.notify.notify()<CR>",
desc = 'Show Notifications',
},
{
'<leader>so',
'<cmd>Telescope oldfiles<cr>',
desc = 'Find recently Opened files',
},
{
'<leader>sp',
"<cmd>lua require('telescope').extensions.lazy_plugins.lazy_plugins()<cr>",
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>sw',
'<cmd>Telescope grep_string<cr>',
desc = 'Search current Word',
},
-- ── Toggle ──────────────────────────────────────────────────────────
{ '<leader>t', group = '[t] Toggle' },
{
{ '<leader>tc', '<cmd>CloakToggle<cr>', desc = 'Toggle Cloak' },
{ '<leader>tn', '<cmd>Noice dismiss<CR>', desc = 'Noice dismiss' },
{ '<leader>ts', '<cmd>noh<CR>', desc = 'Toggle Search Highlighting' },
{
'<leader>tt',
'<cmd>TransparentToggle<CR>',
desc = 'Toggle Transparency',
},
{ '<leader>tw', '<cmd>Twilight<cr>', desc = 'Toggle Twilight' },
},
-- ── Workspace ───────────────────────────────────────────────────────
{ '<leader>w', group = '[w] Workspace' },
{
{
'<leader>wa',
'<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>',
desc = 'LSP: Workspace Add Folder',
},
{
'<leader>wl',
'<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>',
desc = 'LSP: Workspace List Folders',
},
{
'<leader>wr',
'<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>',
desc = 'LSP: Workspace Remove Folder',
},
{
'<leader>ws',
'<cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>',
desc = 'LSP: Workspace Symbols',
},
},
-- ── Trouble ─────────────────────────────────────────────────────────
{ '<leader>x', group = '[x] Trouble' },
{
{
'<leader>xx',
'<cmd>Trouble diagnostics<cr>',
desc = 'Toggle Trouble Diagnostics',
},
{
'<leader>xw',
'<cmd>Trouble workspace_diagnostics<cr>',
desc = 'Toggle Workspace Diagnostics',
},
{
'<leader>xd',
'<cmd>Trouble document_diagnostics<cr>',
desc = 'Toggle Document Diagnostics',
},
{ '<leader>xl', '<cmd>Trouble loclist<cr>', desc = 'Toggle Loclist' },
{ '<leader>xq', '<cmd>Trouble quickfix<cr>', desc = 'Toggle Quickfix' },
},
-- ── Help ────────────────────────────────────────────────────────────
{ '<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',
'<cmd>lua require("which-key").show({global = true})<cr>',
desc = 'Buffer Local Keymaps (which-key)',
},
},
-- ── Misc ────────────────────────────────────────────────────────────
{
'<leader>D',
'<cmd>lua vim.lsp.buf.type_definition()<CR>',
desc = 'LSP: Type Definition',
},
{ '<leader>e', '<cmd>Neotree reveal<CR>', desc = 'NeoTree reveal' },
-- ╭─────────────────────────────────────────────────────────╮
-- │ Without leader │
-- ╰─────────────────────────────────────────────────────────╯
{ 'y', group = 'Yank & Surround' },
{ 'gp', group = 'Goto Preview' },
{
{
'gpd',
'<cmd>lua require("goto-preview").goto_preview_definition()<CR>',
desc = 'Goto: Preview Definition',
},
{
'gpi',
'<cmd>lua require("goto-preview").goto_preview_implementation()<CR>',
desc = 'Goto: Preview Implementation',
},
{
'gpP',
'<cmd>lua require("goto-preview").close_all_windows()<CR>',
desc = 'Goto: Close All Preview Windows',
},
},
-- ── tmux navigation ─────────────────────────────────────────────────
{
{
'<c-h>',
'<cmd><C-U>TmuxNavigateLeft<cr>',
desc = 'tmux: Navigate Left',
},
{
'<c-j>',
'<cmd><C-U>TmuxNavigateDown<cr>',
desc = 'tmux: Navigate Down',
},
{ '<c-k>', '<cmd><C-U>TmuxNavigateUp<cr>', desc = 'tmux: Navigate Up' },
{
'<c-l>',
'<cmd><C-U>TmuxNavigateRight<cr>',
desc = 'tmux: Navigate Right',
},
{
'<c-\\>',
'<cmd><C-U>TmuxNavigatePrevious<cr>',
desc = 'tmux: Navigate Previous',
},
},
-- ── Old habits ──────────────────────────────────────────────────────
{ '<C-s>', '<cmd>w!<CR>', desc = 'Save file' },
-- ── Text manipulation in visual mode ────────────────────────────────
{
mode = 'v',
{ '>', '>gv', desc = 'Indent Right' },
{ '<', '<gv', desc = 'Indent Left' },
{ 'J', "<cmd>m '>+1<CR>gv=gv", desc = 'Move Block Down' },
{ 'K', "<cmd>m '<-2<CR>gv=gv", desc = 'Move Block Up' },
},
-- ── LSP ─────────────────────────────────────────────────────────────
{
'<C-k>',
'<cmd>lua vim.lsp.buf.signature_help()<CR>',
desc = 'LSP: Signature Documentation',
},
{
'K',
'<cmd>Lspsaga hover_doc<cr>',
desc = 'LSPSaga: Hover Documentation',
},
{ 'd', group = 'Diagnostics' },
{
{
'dn',
'<cmd>lua vim.diagnostic.goto_next()<CR>',
desc = 'Diagnostic: Goto Next',
},
{
'dp',
'<cmd>lua vim.diagnostic.goto_prev()<CR>',
desc = 'Diagnostic: Goto Prev',
},
},
{
{ 'g', group = 'Goto' },
{
'gD',
'<cmd>lua vim.lsp.buf.declaration()<CR>',
desc = 'LSP: Goto Declaration',
},
{
'gI',
'<cmd>lua vim.lsp.buf.implementation()<CR>',
desc = 'LSP: Goto Implementation',
},
{
'gR',
'<cmd>Trouble lsp_references<cr>',
desc = 'Toggle LSP References',
},
{
'gd',
'<cmd>lua vim.lsp.buf.definition()<CR>',
desc = 'LSP: Goto Definition',
},
{
'gr',
'<cmd>lua require("telescope.builtin").lsp_references()<CR>',
desc = 'LSP: Goto References',
},
},
-- ── Misc keybinds ───────────────────────────────────────────────────
-- Sublime-like shortcut 'go to file' ctrl+p.
{
'<C-p>',
'<cmd>Telescope find_files<CR>',
desc = 'Search for files starting at current directory.',
},
{ 'QQ', '<cmd>q!<CR>', desc = 'Quit without saving' },
{ 'WW', '<cmd>w!<CR>', desc = 'Force write to file' },
{ 'ss', '<cmd>noh<CR>', desc = 'Clear Search Highlighting' },
{
'jj',
'<Esc>',
desc = 'Esc without touching esc in insert mode',
mode = 'i',
},
-- ── Splits ──────────────────────────────────────────────────────────
-- Use CTRL+<hjkl> to switch between windows in normal mode
-- See `:help wincmd` for a list of all window commands
{ '<C-h>', '<C-w><C-h>', desc = 'Move focus to the left window' },
{ '<C-l>', '<C-w><C-l>', desc = 'Move focus to the right window' },
{ '<C-j>', '<C-w><C-j>', desc = 'Move focus to the lower window' },
{ '<C-k>', '<C-w><C-k>', desc = 'Move focus to the upper window' },
-- Split resizing
{ '<C-w>,', '<cmd>vertical resize -10<CR>', desc = 'V Resize -' },
{ '<C-w>.', '<cmd>vertical resize +10<CR>', desc = 'V Resize +' },
-- ── Disable arrow keys in normal mode ───────────────────────────────
{ '<left>', '<cmd>echo "Use h to move!!"<CR>' },
{ '<right>', '<cmd>echo "Use l to move!!"<CR>' },
{ '<up>', '<cmd>echo "Use k to move!!"<CR>' },
{ '<down>', '<cmd>echo "Use j to move!!"<CR>' },
-- ── Terminal ────────────────────────────────────────────────────────
-- Exit terminal mode in the builtin terminal with a shortcut that is
-- a bit easier for people to discover. Otherwise, you normally need
-- to press <C-\><C-n>, which is not what someone will guess without
-- a bit more experience.
--
-- NOTE: This won't work in all terminal emulators/tmux/etc.
-- Try your own mapping or just use <C-\><C-n> to exit terminal mode.
{ '<Esc><Esc>', '<C-\\><C-n>', desc = 'Exit terminal mode', mode = 't' },
-- ── Search ──────────────────────────────────────────────────────────
-- :noh if you have search highlights
{ '<Esc><Esc>', '<cmd>noh<CR>', desc = 'Clear search highlights' },
}
end,
}

View File

@@ -1,13 +0,0 @@
#'ve
i/!
i've/!
I've
I
good
#rd
#rd/!
#rd
#rd
#rd/!
#rd
wrd/!

View 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"
}
}

View 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})"
}
}

View 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)"
}
}

View 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}

View 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)"
}
}

View 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)"
}
}

View File

View File

@@ -1,122 +1,116 @@
"$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json" "$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"
final_space = true console_title_template = '{{.UserName}}@{{.HostName}} {{.Shell}} in {{.PWD}}'
console_title_template = "{{.UserName}}@{{.HostName}} {{.Shell}} in {{.PWD}}" version = 3
version = 2
auto_upgrade = true auto_upgrade = true
final_space = true
[[blocks]]
alignment = "left"
type = "prompt"
[[blocks.segments]]
foreground = "cyan"
style = "powerline"
template = "{{ .Icon }}"
type = "os"
[[blocks.segments]]
type = "session"
style = "plain"
template = " {{ if .SSHSession }} {{ .UserName }}@{{ end }}{{ .HostName }}"
[[blocks.segments]]
foreground = "cyan"
style = "plain"
template = " {{ .Path }} "
type = "path"
[blocks.segments.properties]
style = "mixed"
[blocks.segments.mapped_locations]
"~/Code/*" = ""
"~/Code/ivuorinen/" = ""
[[blocks.segments]]
type = "git"
style = "plain"
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 }}"
[blocks.segments.properties]
fetch_status = true
fetch_upstream_icon = true
[blocks.segments.properties.untracked_modes]
"~/Code/oh-my-posh/" = "no"
[[blocks.segments]]
type = "terraform"
style = "plain"
foreground = "#000000"
background = "#ebcc34"
template = "{{.WorkspaceName}}"
[[blocks]]
alignment = "left"
type = "prompt"
[[blocks.segments]]
foreground = "#68a063"
style = "plain"
template = " {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }}"
type = "node"
[blocks.segments.properties]
display_mode = "files"
fetch_package_manager = true
fetch_version = true
[[blocks.segments]]
foreground = "#4063D8"
style = "plain"
template = " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}"
type = "crystal"
[blocks.segments.properties]
display_mode = "files"
fetch_version = true
[[blocks.segments]]
foreground = "#DE3F24"
style = "plain"
template = " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}"
type = "ruby"
[blocks.segments.properties]
display_mode = "files"
fetch_version = true
[[blocks.segments]]
foreground = "#FED142"
style = "plain"
template = " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}"
type = "python"
[blocks.segments.properties]
display_mode = "context"
fetch_virtual_env = false
[[blocks]]
alignment = "left"
newline = true
type = "prompt"
[[blocks.segments]]
background = "transparent"
foreground = "lightGreen"
foreground_templates = [ "{{ if gt .Code 0 }}red{{ end }}" ]
style = "plain"
template = "➜"
type = "status"
[blocks.segments.properties]
always_enabled = true
[transient_prompt] [transient_prompt]
background = "transparent" template = '➜ '
foreground = "lightGreen" foreground = 'lightGreen'
foreground_templates = [ "{{ if gt .Code 0 }}red{{ end }}" ] background = 'transparent'
template = "➜ " foreground_templates = ['{{ if gt .Code 0 }}red{{ end }}']
[[blocks]]
type = 'prompt'
alignment = 'left'
[[blocks.segments]]
style = 'powerline'
template = '{{ .Icon }}'
foreground = 'cyan'
type = 'os'
[[blocks.segments]]
style = 'plain'
template = ' {{ if .SSHSession }} {{ .UserName }}@{{ end }}{{ .HostName }}'
type = 'session'
[[blocks.segments]]
style = 'plain'
template = ' {{ .Path }} '
foreground = 'cyan'
type = 'path'
[blocks.segments.properties]
style = 'mixed'
[[blocks.segments]]
style = 'plain'
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 }}'
foreground = 'lightGreen'
type = 'git'
[blocks.segments.properties]
fetch_status = true
fetch_upstream_icon = true
[blocks.segments.properties.untracked_modes]
'~/Code/oh-my-posh/' = 'no'
[[blocks.segments]]
style = 'plain'
template = '{{.WorkspaceName}}'
foreground = '#000000'
background = '#ebcc34'
type = 'terraform'
[[blocks]]
type = 'prompt'
alignment = 'left'
[[blocks.segments]]
style = 'plain'
template = ' {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }}'
foreground = '#68a063'
type = 'node'
[blocks.segments.properties]
display_mode = 'files'
fetch_package_manager = true
fetch_version = true
[[blocks.segments]]
style = 'plain'
template = ' {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}'
foreground = '#4063D8'
type = 'crystal'
[blocks.segments.properties]
display_mode = 'files'
fetch_version = true
[[blocks.segments]]
style = 'plain'
template = ' {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}'
foreground = '#DE3F24'
type = 'ruby'
[blocks.segments.properties]
display_mode = 'files'
fetch_version = true
[[blocks.segments]]
style = 'plain'
template = ' {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}'
foreground = '#FED142'
type = 'python'
[blocks.segments.properties]
display_mode = 'context'
fetch_virtual_env = false
[[blocks]]
type = 'prompt'
alignment = 'left'
newline = true
[[blocks.segments]]
style = 'plain'
template = '➜'
foreground = 'lightGreen'
background = 'transparent'
type = 'status'
foreground_templates = ['{{ if gt .Code 0 }}red{{ end }}']
[blocks.segments.properties]
always_enabled = true

5
config/tms/config.toml Normal file
View File

@@ -0,0 +1,5 @@
default_session = "main"
[[search_dirs]]
path = "~/Code"
depth = 10

View File

@@ -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,11 @@ 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', '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
set -g @resurrect-strategy-nvim 'session'
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 +165,8 @@ 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-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

View File

@@ -1,9 +1,14 @@
local wezterm = require("wezterm") local wezterm = require 'wezterm'
local config = wezterm.config_builder() local config = wezterm.config_builder()
-- Font and font size -- Font and font size
config.font_size = 14.0 config.font_size = 14.0
config.font = wezterm.font("JetBrainsMonoNL Nerd Font Mono") config.font = wezterm.font_with_fallback {
'JetBrainsMonoNL Nerd Font Mono',
'JetBrains Mono',
'Noto Color Emoji',
'Symbols Nerd Font Mono',
}
-- Make the window a bit transparent -- Make the window a bit transparent
config.window_background_opacity = 0.97 config.window_background_opacity = 0.97
@@ -15,16 +20,16 @@ config.send_composed_key_when_left_alt_is_pressed = true
-- Function to detect the theme based on appearance -- Function to detect the theme based on appearance
function Scheme_for_appearance(appearance) function Scheme_for_appearance(appearance)
if appearance:find("Dark") then if appearance:find 'Dark' then
return "Tokyo Night Storm" return 'Tokyo Night Storm'
else else
return "Tokyo Night Day" return 'Tokyo Night Day'
end end
end end
-- Set the color scheme based on appearance -- Set the color scheme based on appearance
---@diagnostic disable-next-line: unused-local ---@diagnostic disable-next-line: unused-local
wezterm.on("window-config-reloaded", function(window, pane) wezterm.on('window-config-reloaded', function(window, pane)
local overrides = window:get_config_overrides() or {} local overrides = window:get_config_overrides() or {}
local appearance = window:get_appearance() local appearance = window:get_appearance()
local scheme = Scheme_for_appearance(appearance) local scheme = Scheme_for_appearance(appearance)

View File

@@ -0,0 +1,212 @@
#compdef oh-my-posh
compdef _oh-my-posh oh-my-posh
# zsh completion for oh-my-posh -*- shell-script -*-
__oh-my-posh_debug()
{
local file="$BASH_COMP_DEBUG_FILE"
if [[ -n ${file} ]]; then
echo "$*" >> "${file}"
fi
}
_oh-my-posh()
{
local shellCompDirectiveError=1
local shellCompDirectiveNoSpace=2
local shellCompDirectiveNoFileComp=4
local shellCompDirectiveFilterFileExt=8
local shellCompDirectiveFilterDirs=16
local shellCompDirectiveKeepOrder=32
local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace keepOrder
local -a completions
__oh-my-posh_debug "\n========= starting completion logic =========="
__oh-my-posh_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}"
# The user could have moved the cursor backwards on the command-line.
# We need to trigger completion from the $CURRENT location, so we need
# to truncate the command-line ($words) up to the $CURRENT location.
# (We cannot use $CURSOR as its value does not work when a command is an alias.)
words=("${=words[1,CURRENT]}")
__oh-my-posh_debug "Truncated words[*]: ${words[*]},"
lastParam=${words[-1]}
lastChar=${lastParam[-1]}
__oh-my-posh_debug "lastParam: ${lastParam}, lastChar: ${lastChar}"
# For zsh, when completing a flag with an = (e.g., oh-my-posh -n=<TAB>)
# completions must be prefixed with the flag
setopt local_options BASH_REMATCH
if [[ "${lastParam}" =~ '-.*=' ]]; then
# We are dealing with a flag with an =
flagPrefix="-P ${BASH_REMATCH}"
fi
# Prepare the command to obtain completions
requestComp="${words[1]} __complete ${words[2,-1]}"
if [ "${lastChar}" = "" ]; then
# If the last parameter is complete (there is a space following it)
# We add an extra empty parameter so we can indicate this to the go completion code.
__oh-my-posh_debug "Adding extra empty parameter"
requestComp="${requestComp} \"\""
fi
__oh-my-posh_debug "About to call: eval ${requestComp}"
# Use eval to handle any environment variables and such
out=$(eval ${requestComp} 2>/dev/null)
__oh-my-posh_debug "completion output: ${out}"
# Extract the directive integer following a : from the last line
local lastLine
while IFS='\n' read -r line; do
lastLine=${line}
done < <(printf "%s\n" "${out[@]}")
__oh-my-posh_debug "last line: ${lastLine}"
if [ "${lastLine[1]}" = : ]; then
directive=${lastLine[2,-1]}
# Remove the directive including the : and the newline
local suffix
(( suffix=${#lastLine}+2))
out=${out[1,-$suffix]}
else
# There is no directive specified. Leave $out as is.
__oh-my-posh_debug "No directive found. Setting do default"
directive=0
fi
__oh-my-posh_debug "directive: ${directive}"
__oh-my-posh_debug "completions: ${out}"
__oh-my-posh_debug "flagPrefix: ${flagPrefix}"
if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
__oh-my-posh_debug "Completion received error. Ignoring completions."
return
fi
local activeHelpMarker="_activeHelp_ "
local endIndex=${#activeHelpMarker}
local startIndex=$((${#activeHelpMarker}+1))
local hasActiveHelp=0
while IFS='\n' read -r comp; do
# Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker)
if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then
__oh-my-posh_debug "ActiveHelp found: $comp"
comp="${comp[$startIndex,-1]}"
if [ -n "$comp" ]; then
compadd -x "${comp}"
__oh-my-posh_debug "ActiveHelp will need delimiter"
hasActiveHelp=1
fi
continue
fi
if [ -n "$comp" ]; then
# If requested, completions are returned with a description.
# The description is preceded by a TAB character.
# For zsh's _describe, we need to use a : instead of a TAB.
# We first need to escape any : as part of the completion itself.
comp=${comp//:/\\:}
local tab="$(printf '\t')"
comp=${comp//$tab/:}
__oh-my-posh_debug "Adding completion: ${comp}"
completions+=${comp}
lastComp=$comp
fi
done < <(printf "%s\n" "${out[@]}")
# Add a delimiter after the activeHelp statements, but only if:
# - there are completions following the activeHelp statements, or
# - file completion will be performed (so there will be choices after the activeHelp)
if [ $hasActiveHelp -eq 1 ]; then
if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then
__oh-my-posh_debug "Adding activeHelp delimiter"
compadd -x "--"
hasActiveHelp=0
fi
fi
if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
__oh-my-posh_debug "Activating nospace."
noSpace="-S ''"
fi
if [ $((directive & shellCompDirectiveKeepOrder)) -ne 0 ]; then
__oh-my-posh_debug "Activating keep order."
keepOrder="-V"
fi
if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then
# File extension filtering
local filteringCmd
filteringCmd='_files'
for filter in ${completions[@]}; do
if [ ${filter[1]} != '*' ]; then
# zsh requires a glob pattern to do file filtering
filter="\*.$filter"
fi
filteringCmd+=" -g $filter"
done
filteringCmd+=" ${flagPrefix}"
__oh-my-posh_debug "File filtering command: $filteringCmd"
_arguments '*:filename:'"$filteringCmd"
elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then
# File completion for directories only
local subdir
subdir="${completions[1]}"
if [ -n "$subdir" ]; then
__oh-my-posh_debug "Listing directories in $subdir"
pushd "${subdir}" >/dev/null 2>&1
else
__oh-my-posh_debug "Listing directories in ."
fi
local result
_arguments '*:dirname:_files -/'" ${flagPrefix}"
result=$?
if [ -n "$subdir" ]; then
popd >/dev/null 2>&1
fi
return $result
else
__oh-my-posh_debug "Calling _describe"
if eval _describe $keepOrder "completions" completions $flagPrefix $noSpace; then
__oh-my-posh_debug "_describe found some completions"
# Return the success of having called _describe
return 0
else
__oh-my-posh_debug "_describe did not find completions."
__oh-my-posh_debug "Checking if we should do file completion."
if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
__oh-my-posh_debug "deactivating file completion"
# We must return an error code here to let zsh know that there were no
# completions found by _describe; this is what will trigger other
# matching algorithms to attempt to find completions.
# For example zsh can match letters in the middle of words.
return 1
else
# Perform file completion
__oh-my-posh_debug "Activating file completion"
# We must return the result of this command, so it must be the
# last command, or else we must store its result to return it.
_arguments '*:filename:_files'" ${flagPrefix}"
fi
fi
fi
}
# don't run the completion function when being source-ed or eval-ed
if [ "$funcstack[1]" = "_oh-my-posh" ]; then
_oh-my-posh
fi

View File

@@ -2,52 +2,12 @@
```txt ```txt
n <Esc> * <Cmd>nohlsearch<CR> n <Space>/ * <Lua 196: ~/.config/nvim/lua/plugins/telescope.lua:68>
n <Space>zg * :Rg<CR> [/] Fuzzily search in current buffer]
FZF: search with rg (aka live grep). n <Space>ht * <Lua 192: ~/.config/nvim/lua/plugins/harpoon.lua:43>
n <Space>zm * :Maps<CR> Open Harpoon Quick menu
FZF: search mappings. n <Space>hw * <Lua 189: ~/.config/nvim/lua/plugins/harpoon.lua:37>
n <Space>zh * :History<CR> Open harpoon window with telescope
FZF: search history of opened files
n <Space>zb * :Buffers<CR>
FZF: search open buffers.
n <Space>zt * :Windows<CR>
FZF: search open tabs.
n <Space>zc * :Commands<CR>
FZF: search commands.
n <Space>zf * :FZF<Space>
FZF: search for files in given path.
n <Space>tc * <Cmd>CloakToggle<CR>
[tc] Toggle Cloak
n <Space>4 * <Lua 84: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon to file 4
n <Space>3 * <Lua 83: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon to file 3
n <Space>2 * <Lua 82: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon to file 2
n <Space>1 * <Lua 81: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon to file 1
n <Space>xn * <Lua 80: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon to next file
n <Space>xa * <Lua 79: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon quick menu
n <Space>xN * <Lua 78: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon to previous file
n <Space>xA * <Lua 77: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon file
n <Space>5 * <Lua 76: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
harpoon to file 5
n <Space>tz * <Lua 51: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
[tz] Toggle ZenMode
n <Space>e * <Lua 47: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
<Space>f * <Lua 40: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
[f] Format buffer
n <Space>qq * <Cmd>wq!<CR>
Quickly Quit
n <Space>bq * <Lua 28: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1984>
Open diagnostic [Q]uickfix list
n <Space>be * <Lua 27: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1694>
Show diagnostic [E]rror messages
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)
@@ -61,8 +21,18 @@ x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
:help v_@-default :help v_@-default
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 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)
@@ -74,39 +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)
o al <Lua 247: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172> n gR * :RegexplainerToggle<CR>
Around last textobject Toggle Regexplainer
o an <Lua 246: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
Around next textobject
x al <Lua 243: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
Around last textobject
x an <Lua 242: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
Around next textobject
o a <Lua 240: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
Around textobject
x a <Lua 238: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
Around textobject
n dj * <Lua 26: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1222>
Go to next [D]iagnostic message
n dk * <Lua 25: ~/.local/share/bob/v0.10.0/nvim-macos-arm64/share/nvim/runtime/lua/vim/diagnostic.lua:1145>
Go to previous [D]iagnostic message
o g% <Plug>(MatchitOperationBackward) o g% <Plug>(MatchitOperationBackward)
x g% <Plug>(MatchitVisualBackward) x g% <Plug>(MatchitVisualBackward)
n g% <Plug>(MatchitNormalBackward) n g% <Plug>(MatchitNormalBackward)
n gR * :RegexplainerToggle<CR> n gP * <Lua 52: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:132>
Toggle Regexplainer Close preview windows
o g] <Lua 237: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169> n gpr * <Lua 25: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:114>
Move to right "around" Preview references
x g] <Lua 236: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169> n gpD * <Lua 244: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:105>
Move to right "around" Preview declaration
n g] <Lua 235: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169> n gpi * <Lua 242: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:91>
Move to right "around" Preview implementation
o g[ <Lua 234: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168> n gpt * <Lua 241: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:77>
Move to left "around" Preview type definition
x g[ <Lua 233: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168> n gpd * <Lua 237: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:63>
Move to left "around" Preview definition
n g[ <Lua 232: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168>
Move to left "around"
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>
@@ -119,54 +73,18 @@ x gx * <Lua 9: vim/_defaults.lua:0>
Opens filepath or URI under cursor with the system handler (file explorer, web browser, …) Opens filepath or URI under cursor with the system handler (file explorer, web browser, …)
n gx * <Lua 8: vim/_defaults.lua:0> n gx * <Lua 8: vim/_defaults.lua:0>
Opens filepath or URI under cursor with the system handler (file explorer, web browser, …) Opens filepath or URI under cursor with the system handler (file explorer, web browser, …)
o il <Lua 249: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172> n j * v:count == 0 ? 'gj' : 'j'
Inside last textobject Move down
o in <Lua 248: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172> n k * v:count == 0 ? 'gk' : 'k'
Inside next textobject Move up
x il <Lua 245: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172> o r * <Lua 68: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
Inside last textobject Remote Flash
x in <Lua 244: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172> o zk * <Lua 65: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
Inside next textobject Flash
o i <Lua 241: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172> x zk * <Lua 64: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
Inside textobject Flash
x i <Lua 239: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172> n zk * <Lua 63: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
Inside textobject Flash
n shn * <Lua 266: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Highlight next surrounding
n sFn * <Lua 265: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Find next left surrounding
n sfn * <Lua 264: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Find next right surrounding
n srn * <Lua 263: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Replace next surrounding
n sdn * <Lua 262: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Delete next surrounding
n shl * <Lua 261: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Highlight previous surrounding
n sFl * <Lua 260: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Find previous left surrounding
n sfl * <Lua 259: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Find previous right surrounding
n srl * <Lua 258: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Replace previous surrounding
n sdl * <Lua 257: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Delete previous surrounding
x sa * :<C-U>lua MiniSurround.add('visual')<CR>
Add surrounding to selection
n sn * <Lua 256: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:892>
Update `MiniSurround.config.n_lines`
n sh * <Lua 255: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Highlight surrounding
n sF * <Lua 254: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Find left surrounding
n sf * <Lua 253: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Find right surrounding
n sr * <Lua 252: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Replace surrounding
n sd * <Lua 251: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Delete surrounding
n sa * <Lua 250: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
Add surrounding
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,28 +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>
n <C-P> * :Files<CR> s <Plug>luasnip-jump-prev * <Lua 315: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:57>
FZF: search for files starting at current directory. LuaSnip: Jump to the previous node
o <Plug>(fzf-maps-o) * <C-C>:<C-U>call fzf#vim#maps('o', 0)<CR> s <Plug>luasnip-jump-next * <Lua 314: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:54>
x <Plug>(fzf-maps-x) * :<C-U>call fzf#vim#maps('x', 0)<CR> LuaSnip: Jump to the next node
n <Plug>(fzf-maps-n) * :<C-U>call fzf#vim#maps('n', 0)<CR> s <Plug>luasnip-prev-choice * <Lua 313: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:51>
n <Plug>(fzf-normal) * <Nop> LuaSnip: Change to the previous choice from the choiceNode
n <Plug>(fzf-insert) * i s <Plug>luasnip-next-choice * <Lua 312: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:48>
n <C-Bslash> * <Lua 60: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121> LuaSnip: Change to the next choice from the choiceNode
n <C-S> * <Cmd>w<CR> s <Plug>luasnip-expand-snippet * <Lua 311: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:45>
Save file LuaSnip: Expand the current snippet
n <C-K> * <Lua 57: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121> s <Plug>luasnip-expand-or-jump * <Lua 310: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:42>
n <C-J> * <Lua 56: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121> LuaSnip: Expand or jump in the current snippet
n <C-H> * <Lua 58: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121> <Plug>luasnip-expand-repeat * <Lua 308: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:35>
n <Down> * <Cmd>echo "Use j to move!!"<CR> LuaSnip: Repeat last node expansion
n <Up> * <Cmd>echo "Use k to move!!"<CR> n <Plug>luasnip-delete-check * <Lua 306: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:28>
n <Right> * <Cmd>echo "Use l to move!!"<CR> LuaSnip: Removes current snippet from jumplist
n <Left> * <Cmd>echo "Use h to move!!"<CR> n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
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> * <Lua 59: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121> n <C-L> * <Cmd>nohlsearch|diffupdate|normal! <C-L><CR>
:help CTRL-L-default
``` ```
- Generated on Sat 10 Aug 2024 13:01:59 EEST - Generated on Fri 4 Oct 2024 14:49:00 EEST

View File

@@ -392,18 +392,106 @@ section_brew()
! x-have brew && menu_section "$USAGE_PREFIX" "brew not available on this system" ! x-have brew && menu_section "$USAGE_PREFIX" "brew not available on this system"
} }
section_asdf()
{
USAGE_PREFIX="$SCRIPT asdf <command>"
MENU=(
"install:Install asdf"
"current:Show asdf current versions"
"global:Show asdf global versions"
"installed:Show asdf installed versions"
"local:Show asdf local versions"
"versions:Show asdf versions"
"where:Show asdf where"
"which:Show asdf which"
)
case "$1" in
install)
msg "Installing asdf..."
bash "$DOTFILES/scripts/install-asdf.sh both" \
&& msg_yay "asdf installed!"
;;
current)
asdf current
;;
global)
asdf global
;;
installed)
asdf list
;;
local)
asdf local
;;
versions)
asdf list all
;;
where)
asdf where
;;
which)
asdf which
;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
esac
}
section_helpers() section_helpers()
{ {
USAGE_PREFIX="$SCRIPT helpers <command>" USAGE_PREFIX="$SCRIPT helpers <command>"
MENU=( MENU=(
"aliases:<shell> (bash, zsh) Show aliases for bash or zsh"
"colors:Show colors"
"env:Show environment variables"
"functions:Show functions"
"nvim:Show nvim keybindings"
"path:Show \$PATH dir by dir" "path:Show \$PATH dir by dir"
"tmux:Show tmux keybindings"
"wezterm:Show wezterm keybindings"
) )
case "$1" in CMD="$1"
shift
SECTION="$1"
shift
case "$CMD" in
path) path)
# shellcheck disable=2001 # shellcheck disable=2001
for i in $(echo "$PATH" | sed 's/:/ /g'); do echo "$i"; done for i in $(echo "$PATH" | sed 's/:/ /g'); do echo "$i"; done
;; ;;
aliases)
case "$SECTION" in
"zsh")
zsh -ixc : 2>&1 | grep -E '> alias' | sed "s|$HOME|~|" | grep -v "(eval)"
;;
"bash")
bash -ixc : 2>&1 | grep -E '> alias' | sed "s|$HOME|~|" | grep -v "(eval)"
;;
*)
echo "$SCRIPT helpers aliases <shell> (bash, zsh)"
;;
esac
;;
"colors")
for i in {0..255}; do echo -en "\e[38;5;${i}m${i} "; done
;;
"env")
env | sort
;;
"functions")
declare -F
;;
"nvim")
cat "$DOTFILES/docs/nvim-keybindings.md"
;;
"tmux")
cat "$DOTFILES/docs/tmux-keybindings.md"
;;
"wezterm")
cat "$DOTFILES/docs/wezterm-keybindings.md"
;;
*) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;; *) menu_usage "$USAGE_PREFIX" "${MENU[@]}" ;;
esac esac
} }
@@ -524,9 +612,16 @@ section_tests()
MENU=( MENU=(
"msg:List all log functions from shared.sh" "msg:List all log functions from shared.sh"
"params:List all parameters"
) )
case "$1" in case "$1" in
params)
echo "All parameters:"
for i in "$@"; do
echo " $i"
done
;;
msg) msg)
msg "msg" msg "msg"
msg_done "msg_done" msg_done "msg_done"
@@ -555,6 +650,8 @@ usage()
echo "" echo ""
section_install section_install
echo "" echo ""
section_asdf
echo ""
section_brew section_brew
echo "" echo ""
section_check section_check
@@ -566,14 +663,22 @@ usage()
section_helpers section_helpers
} }
# The main loop. first keyword after $0 triggers section, or help. main()
case "$1" in {
install) section_install "$2" ;; SECTION="$1"
brew) section_brew "$2" ;; shift
check) section_check "$2" ;; # The main loop. The first keyword after $0 triggers section, or help.
dotfiles) section_dotfiles "$2" ;; case "$SECTION" in
helpers) section_helpers "$2" ;; install) section_install "$@" ;;
docs) section_docs "$2" ;; asdf) section_asdf "$@" ;;
tests) section_tests "$2" ;; brew) section_brew "$@" ;;
*) usage && exit 0 ;; check) section_check "$@" ;;
esac dotfiles) section_dotfiles "$@" ;;
helpers) section_helpers "$@" ;;
docs) section_docs "$@" ;;
tests) section_tests "$@" ;;
*) usage && exit 0 ;;
esac
}
main "$@"

View File

@@ -15,7 +15,7 @@ main()
printf "\`\`\`txt" printf "\`\`\`txt"
} > "$DEST" } > "$DEST"
NVIM_APPNAME="nvim-kickstart" nvim -c "redir! >> $DEST" -c 'silent verbose map' -c 'redir END' -c 'q' nvim -c "redir! >> $DEST" -c 'silent verbose map' -c 'redir END' -c 'q'
printf "\n\`\`\`\n\n- Generated on %s\n" "$(date)" >> "$DEST" printf "\n\`\`\`\n\n- Generated on %s\n" "$(date)" >> "$DEST"

View File

@@ -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

View File

@@ -3,7 +3,7 @@
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
echo "This file has been deprecated in favor of asdf. Please use asdf instead." echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
exit 0 exit 0
eval "$HOME/.dotfiles/config/shared.sh" eval "$HOME/.dotfiles/config/shared.sh"

View File

@@ -2,6 +2,10 @@
# #
# Install fzf # Install fzf
# #
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
exit 0
# shellcheck source=shared.sh # shellcheck source=shared.sh
eval "$DOTFILES/config/shared.sh" eval "$DOTFILES/config/shared.sh"

View File

@@ -3,7 +3,7 @@
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
echo "This file has been deprecated in favor of asdf. Please use asdf instead." echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
exit 0 exit 0
eval "$DOTFILES/config/shared.sh" eval "$DOTFILES/config/shared.sh"

View File

@@ -3,7 +3,7 @@
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
echo "This file has been deprecated in favor of asdf. Please use asdf instead." echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
exit 0 exit 0
eval "$DOTFILES/config/shared.sh" eval "$DOTFILES/config/shared.sh"

View File

@@ -3,7 +3,7 @@
# #
# shellcheck source=shared.sh # shellcheck source=shared.sh
echo "This file has been deprecated in favor of asdf. Please use asdf instead." echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
exit 0 exit 0
source "${DOTFILES}/config/shared.sh" source "${DOTFILES}/config/shared.sh"