mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 20:45:31 +00:00
Compare commits
121 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2f13ad324a | |||
|
|
d203fc9d51 | ||
| bf279b6def | |||
| 87926f8d9b | |||
| 6b056f6072 | |||
| 823cdbc07f | |||
| 0f6157eb04 | |||
| 721fe614a7 | |||
| 5ea16d4653 | |||
| 900e6a8f85 | |||
| 16673de789 | |||
| c732a75184 | |||
|
|
96280e6e9b | ||
| 5ab0f89765 | |||
| d585d61537 | |||
| 746646ae55 | |||
|
|
6e69ec6410 | ||
| af123e5138 | |||
| 3879289559 | |||
| 392628e733 | |||
| aa70eab5fb | |||
| e5311ca285 | |||
| d5618c9b5f | |||
| d091f5a88f | |||
| cb9195e3ad | |||
| c91cc387b6 | |||
| 083091ea46 | |||
| 7ff74f0e15 | |||
| 9d1f62fcca | |||
| a563e82e33 | |||
| 62ff7836e7 | |||
| 88cb573027 | |||
| 82772d8208 | |||
|
|
240035569c | ||
|
|
9697c200f9 | ||
| fd11f9966b | |||
| 722b3c0cde | |||
| 4fcb9d9741 | |||
| fc232f26f7 | |||
| 8b078309cf | |||
| 5a8f990e52 | |||
| c76c5d08b0 | |||
| b2857e226c | |||
| dfbac0c736 | |||
| fdd713908c | |||
| 60210c9bec | |||
| eaf8d2bdca | |||
| cc00055626 | |||
|
|
567de68844 | ||
|
|
ed0b229757 | ||
| c8b6243c0b | |||
|
|
21a92eb145 | ||
| 8ec317f582 | |||
|
|
42201d8b68 | ||
|
|
0c003ae5b9 | ||
| d383031ec8 | |||
|
|
fa5e5f16da | ||
| f82396236e | |||
| b127c2514d | |||
|
|
b06ac3bc0f | ||
|
|
7e4ea90a05 | ||
|
|
d264a33d21 | ||
| 224ee56461 | |||
|
|
8147490c65 | ||
|
|
c6d501347a | ||
|
|
d8044f2b6a | ||
|
|
1b3fe6d12e | ||
| 76b66d8c61 | |||
| 9c8644de17 | |||
| 120345b562 | |||
| 8accd4a60b | |||
| 8fb03660ad | |||
| 8b2dc74f2a | |||
| 8fa63e63bb | |||
| 4ca5b63b75 | |||
| 5a59872377 | |||
| 38419eda28 | |||
| fc85dbaa6c | |||
| 250e7f5666 | |||
| 8f96922033 | |||
| 4c4de2dc26 | |||
| b8c163e028 | |||
| 0a974c2a17 | |||
| fd8d72ab38 | |||
| 0908a23231 | |||
| 2e070eed83 | |||
| e22762255d | |||
| 093f58f129 | |||
| 9b6e39b4af | |||
|
|
6f1e1a0416 | ||
| 36e0f36e06 | |||
| e2c37d29e8 | |||
| 78716fa8ce | |||
| 81e9b20eb6 | |||
|
|
94e58b307b | ||
| 98aca096a9 | |||
| 121e31c7d4 | |||
| f6bcd10ac5 | |||
| 619c772fcc | |||
| 746d44151c | |||
| b9585209be | |||
| 930dcf00c4 | |||
| bb8e3bba56 | |||
| 6431c2e6dc | |||
| 248eca1ae6 | |||
| 4b1ab2e1b8 | |||
| c0f537439b | |||
| 9ab132d37c | |||
| 2b9ddc232b | |||
| 1a244ce0b1 | |||
| fdc0f45b23 | |||
| 3fa90eef3b | |||
| 7ea7c12f0b | |||
| f76492b942 | |||
| 7947340663 | |||
| 300c48b1e9 | |||
| 772527cc66 | |||
|
|
370fdcbcbe | ||
| b32c86bac2 | |||
| 8d85809b1c | |||
| 7fc40e3eab |
@@ -8,6 +8,9 @@ indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
max_line_length = 100
|
||||
|
||||
[*.php]
|
||||
indent_size = 4
|
||||
|
||||
@@ -19,7 +22,7 @@ indent_size = 1
|
||||
indent_size = 1
|
||||
indent_style = tab
|
||||
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*}]
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
|
||||
shell_variant = bash # --language-variant
|
||||
binary_next_line = true
|
||||
switch_case_indent = true # --case-indent
|
||||
|
||||
5
.gitattributes
vendored
5
.gitattributes
vendored
@@ -220,8 +220,3 @@ git/* text
|
||||
**/alias text
|
||||
ssh/* text
|
||||
|
||||
# Git Crypt special files
|
||||
*-secret filter=git-crypt diff=git-crypt
|
||||
*.key filter=git-crypt diff=git-crypt
|
||||
secrets/** filter=git-crypt diff=git-crypt
|
||||
|
||||
|
||||
10
.github/README.md
vendored
10
.github/README.md
vendored
@@ -6,10 +6,10 @@ aware of yet. As I find more interesting tools, configs and other stuff,
|
||||
this repository will live accordingly.
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@@ -28,9 +28,9 @@ see what interesing stuff you've done with it. Sharing is caring.
|
||||
|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
## 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` |
|
||||
| `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.
|
||||
|
||||
|
||||
1
.github/workflows/changelog.yml
vendored
1
.github/workflows/changelog.yml
vendored
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: Debug Changelog # Workflow name displayed on GitHub
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
|
||||
1
.github/workflows/linters.yml
vendored
1
.github/workflows/linters.yml
vendored
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: reviewdog
|
||||
on: [push]
|
||||
jobs:
|
||||
|
||||
16
.github/workflows/new-release.yml
vendored
16
.github/workflows/new-release.yml
vendored
@@ -1,21 +1,24 @@
|
||||
name: Release Daily State # Workflow name displayed on GitHub
|
||||
---
|
||||
name: Release Daily State
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '30 20 * * *' # UTC is 2-3 hours behind Europe/Helsinki, my timezone
|
||||
permissions:
|
||||
contents: write
|
||||
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
|
||||
jobs:
|
||||
new-daily-release:
|
||||
runs-on: self-hosted
|
||||
permissions:
|
||||
contents: write
|
||||
outputs:
|
||||
created: ${{ steps.daily-version.outputs.created }}
|
||||
version: ${{ steps.daily-version.outputs.version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4 # Checkout our working repository
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Create tag if necessary
|
||||
uses: fregante/daily-version-action@v2
|
||||
id: daily-version
|
||||
|
||||
- name: Create changelog text
|
||||
if: steps.daily-version.outputs.created
|
||||
id: changelog
|
||||
@@ -23,6 +26,7 @@ jobs:
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: Create release
|
||||
if: steps.daily-version.outputs.created
|
||||
uses: actions/create-release@latest
|
||||
|
||||
23
.github/workflows/pre-commit-autoupdate.yml
vendored
Normal file
23
.github/workflows/pre-commit-autoupdate.yml
vendored
Normal 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.
|
||||
1
.github/workflows/semantic-pr.yml
vendored
1
.github/workflows/semantic-pr.yml
vendored
@@ -1,3 +1,4 @@
|
||||
---
|
||||
name: Semantic PR
|
||||
|
||||
on:
|
||||
|
||||
9
.github/workflows/update-submodules.yml
vendored
9
.github/workflows/update-submodules.yml
vendored
@@ -1,13 +1,14 @@
|
||||
---
|
||||
name: Update submodules
|
||||
on:
|
||||
schedule: [{ cron: 0 3 * * * }]
|
||||
workflow_dispatch:
|
||||
permissions:
|
||||
contents: write
|
||||
issues: write
|
||||
pull-requests: write
|
||||
jobs:
|
||||
update-submodules:
|
||||
permissions:
|
||||
contents: write
|
||||
issues: write
|
||||
pull-requests: write
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
Brewfile.lock.json
|
||||
lazy-lock.json
|
||||
config/nvim/lazy-lock.json
|
||||
*.log
|
||||
*-secret
|
||||
@@ -25,4 +26,7 @@ config/iterm2/AppSupport
|
||||
config/gnupg/S.*
|
||||
config/gnupg/s
|
||||
config/gnupg/private-keys-v1.d
|
||||
config/nvim/spell/*
|
||||
!config/nvim/spell/.gitkeep
|
||||
antidote_plugins.zsh
|
||||
|
||||
|
||||
11
.gitmodules
vendored
11
.gitmodules
vendored
@@ -23,10 +23,6 @@
|
||||
path = config/tmux/plugins/tmux-continuum
|
||||
url = https://github.com/tmux-plugins/tmux-continuum
|
||||
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"]
|
||||
path = config/tmux/plugins/tmux-sensible
|
||||
url = https://github.com/tmux-plugins/tmux-sensible.git
|
||||
@@ -58,12 +54,13 @@
|
||||
[submodule "cheat-tldr"]
|
||||
path = config/cheat/cheatsheets/tldr
|
||||
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
||||
[submodule "nvim-kickstart"]
|
||||
path = config/nvim-kickstart
|
||||
url = https://github.com/ivuorinen/kickstart.nvim
|
||||
[submodule "tmux/tmux-dark-notify"]
|
||||
path = config/tmux/plugins/tmux-dark-notify
|
||||
url = https://github.com/erikw/tmux-dark-notify.git
|
||||
[submodule "asdf"]
|
||||
path = local/bin/asdf
|
||||
url = https://github.com/asdf-vm/asdf.git
|
||||
[submodule "antidote"]
|
||||
path = tools/antidote
|
||||
url = https://github.com/mattmc3/antidote.git
|
||||
shallow = true
|
||||
|
||||
5
.ignore
5
.ignore
@@ -1,6 +1,7 @@
|
||||
.git/**
|
||||
config/cheat/cheatsheets/community/**
|
||||
tools/dotbot/**
|
||||
node_modules
|
||||
tools/antidote/**
|
||||
tools/dotbot-brew/**
|
||||
tools/dotbot-include/**
|
||||
node_modules
|
||||
tools/dotbot/**
|
||||
|
||||
50
.pre-commit-config.yaml
Normal file
50
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
args: [--markdown-linebreak-ext=md]
|
||||
- id: check-case-conflict
|
||||
- id: check-merge-conflict
|
||||
- id: check-shebang-scripts-are-executable
|
||||
- id: check-symlinks
|
||||
- id: check-toml
|
||||
- id: check-xml
|
||||
- id: check-yaml
|
||||
args: [--allow-multiple-documents]
|
||||
- id: end-of-file-fixer
|
||||
- id: mixed-line-ending
|
||||
args: [--fix=auto]
|
||||
- id: pretty-format-json
|
||||
args: [--autofix, --no-sort-keys]
|
||||
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.43.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
args: [-c, .markdownlint.yaml, --fix]
|
||||
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.35.1
|
||||
hooks:
|
||||
- id: yamllint
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v4.0.0-alpha.8
|
||||
hooks:
|
||||
- id: prettier
|
||||
|
||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||
rev: v0.10.0.1
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
|
||||
- repo: https://github.com/scop/pre-commit-shfmt
|
||||
rev: v3.10.0-2
|
||||
hooks:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.4
|
||||
hooks:
|
||||
- id: actionlint
|
||||
@@ -1,5 +1,4 @@
|
||||
module.exports = {
|
||||
plugins: ['prettier-plugin-sh'],
|
||||
...require('@ivuorinen/prettier-config'),
|
||||
trailingComma: 'all',
|
||||
// Add custom options below:
|
||||
|
||||
@@ -1 +1 @@
|
||||
3.12.5
|
||||
3.13.0
|
||||
|
||||
@@ -2,8 +2,8 @@ column_width = 120
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferDouble"
|
||||
call_parentheses = "Always"
|
||||
quote_style = "AutoPreferSingle"
|
||||
call_parentheses = "None"
|
||||
collapse_simple_statement = "Always"
|
||||
|
||||
[sort_requires]
|
||||
|
||||
0
.yamlignore
Normal file
0
.yamlignore
Normal file
@@ -10,9 +10,6 @@ git submodule add --name dotbot-include \
|
||||
git submodule add --name dotbot-pip \
|
||||
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
|
||||
|
||||
git submodule add --name nvim-kickstart \
|
||||
-f https://github.com/ivuorinen/kickstart.nvim config/nvim-kickstart
|
||||
|
||||
# other repos
|
||||
git submodule add --name cheat-community \
|
||||
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
||||
@@ -20,14 +17,16 @@ git submodule add --name cheat-tldr \
|
||||
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
|
||||
git submodule add --name asdf \
|
||||
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
|
||||
git submodule add --name antidote \
|
||||
--depth 1 \
|
||||
-f https://github.com/mattmc3/antidote.git tools/antidote \
|
||||
|
||||
|
||||
# tmux plugin manager and plugins
|
||||
git submodule add --name tmux/tmux-continuum \
|
||||
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
|
||||
git submodule add --name tmux/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 \
|
||||
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
|
||||
git submodule add --name tmux/tmux-sessionist \
|
||||
@@ -48,9 +47,14 @@ for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $
|
||||
git config "submodule.${MODULE}.ignore" all
|
||||
done
|
||||
|
||||
# Mark certain repositories shallow
|
||||
git config -f .gitmodules submodule.antidote.shallow true
|
||||
|
||||
# remove old submodules
|
||||
[ -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-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-snap" ] && rm -rf tools/dotbot-snap
|
||||
[ -d "config/nvim-kickstart" ] && rm -rf config/nvim-kickstart
|
||||
|
||||
@@ -14,10 +14,10 @@ source "$DOTFILES/config/shared.sh"
|
||||
# Import ssh keys in keychain
|
||||
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 && {
|
||||
eval "$(antidot init)"
|
||||
}
|
||||
|
||||
PROMPT_DIRTRIM=3
|
||||
PROMPT_COMMAND='PS1_CMD1=$(git branch --show-current 2>/dev/null)'
|
||||
PS1='\[\e[95m\]\u\[\e[0m\]@\[\e[38;5;22;2m\]\h\[\e[0m\] \[\e[38;5;33m\]\w\[\e[0m\] \[\e[92;2m\]${PS1_CMD1}\n\[\e[39m\]➜\[\e[0m\] '
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
use node
|
||||
use asdf
|
||||
|
||||
1
base/nvmrc
Normal file
1
base/nvmrc
Normal file
@@ -0,0 +1 @@
|
||||
lts/*
|
||||
@@ -1,30 +1,27 @@
|
||||
1password-cli 2.30.0
|
||||
asdf-plugin-manager 1.4.0
|
||||
golang 1.23.3
|
||||
ruby 3.3.4
|
||||
rust 1.82.0
|
||||
direnv 2.35.0
|
||||
fd 10.2.0
|
||||
1password-cli 2.30.3
|
||||
age 1.2.0
|
||||
asdf-plugin-manager 1.3.1
|
||||
bottom 0.10.2
|
||||
direnv 2.34.0
|
||||
dotenv-linter 3.3.0
|
||||
editorconfig-checker 2.8.0
|
||||
eza 0.19.0
|
||||
fd 10.2.0
|
||||
github-cli 2.55.0
|
||||
golang 1.23.0
|
||||
github-cli 2.61.0
|
||||
hadolint 2.12.0
|
||||
kubectl 1.31.0
|
||||
lazygit 0.43.1
|
||||
markdownlint-cli2 0.13.0
|
||||
nodejs 22.7.0
|
||||
pipx 1.7.1
|
||||
pre-commit 3.8.0
|
||||
python 3.12.5
|
||||
ripgrep 14.1.0
|
||||
ruby 3.3.4
|
||||
rust 1.80.1
|
||||
semgrep system
|
||||
kubectl 1.31.2
|
||||
pre-commit 4.0.1
|
||||
ripgrep 14.1.1
|
||||
shellcheck 0.10.0
|
||||
shfmt 3.9.0
|
||||
terragrunt 0.67.0
|
||||
tf-summarize 0.3.10
|
||||
vault 1.17.4+ent
|
||||
shfmt 3.10.0
|
||||
terragrunt 0.68.8
|
||||
tf-summarize 0.3.13
|
||||
yamllint 1.35.1
|
||||
yq 4.44.3
|
||||
bats 1.11.0
|
||||
gitleaks 8.18.4
|
||||
delta 0.18.1
|
||||
eza 0.20.8
|
||||
sops 3.9.1
|
||||
|
||||
81
base/zshrc
Executable file → Normal file
81
base/zshrc
Executable file → Normal file
@@ -1,71 +1,23 @@
|
||||
# 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
|
||||
|
||||
# export VERBOSE=1
|
||||
# export DEBUG=1
|
||||
autoload -U promptinit; promptinit
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
LOCAL_SHARE="$HOME/.local/share"
|
||||
export PATH="$HOME/.local/bin:$DOTFILES/local/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
|
||||
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
|
||||
|
||||
eval "$(oh-my-posh init zsh --config "$DOTFILES/config/omp/own.toml")"
|
||||
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||
|
||||
# Function to load antigen if available
|
||||
load_antigen()
|
||||
{
|
||||
local antigen_zsh_path="$XDG_BIN_HOME/antigen.zsh"
|
||||
# shellcheck source=../../.local/bin/antigen.zsh
|
||||
if [[ -f "$antigen_zsh_path" ]]; then
|
||||
source "$antigen_zsh_path"
|
||||
|
||||
antigen use oh-my-zsh
|
||||
|
||||
# Disable ls colors to avoid issues with eza
|
||||
export DISABLE_LS_COLORS=true
|
||||
|
||||
export ZSH_TMUX_AUTOSTART=false
|
||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
|
||||
zstyle ':omz:plugins:eza' 'dirs-first' yes
|
||||
zstyle ':omz:plugins:eza' 'git-status' yes
|
||||
zstyle ':omz:plugins:eza' 'icons' yes
|
||||
zstyle ':omz:plugins:eza' 'ls' yes
|
||||
zstyle ':omz:plugins:eza' 'prompt' yes
|
||||
|
||||
if [[ "$OSTYPE" == darwin* ]]; then
|
||||
zstyle :omz:plugins:ssh-agent keychain yes
|
||||
fi
|
||||
zstyle :omz:plugins:ssh-agent lazy yes
|
||||
zstyle :omz:plugins:ssh-agent quiet yes
|
||||
|
||||
# z, the zsh version
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
antigen bundle z
|
||||
|
||||
x-have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
|
||||
# these should be always available
|
||||
antigen bundle jreese/zsh-titles
|
||||
antigen bundle gnu-utils
|
||||
antigen bundle ssh-agent
|
||||
antigen bundle gpg-agent
|
||||
antigen bundle brew
|
||||
# antigen bundle tmux
|
||||
antigen bundle colored-man-pages
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
antigen bundle eza
|
||||
|
||||
# this needs to be the last item
|
||||
antigen bundle zsh-users/zsh-syntax-highlighting
|
||||
antigen apply
|
||||
fi
|
||||
}
|
||||
source "$DOTFILES/config/zsh/antidote.zsh"
|
||||
# source "$DOTFILES/config/zsh/prompt.zsh"
|
||||
|
||||
# Function to source FZF configuration
|
||||
source_fzf_config()
|
||||
@@ -81,7 +33,7 @@ source_fzf_config()
|
||||
setup_tmux_window_name_plugin()
|
||||
{
|
||||
if [[ -n "$TMUX" ]]; then
|
||||
local tmux_window_name_plugin="$DOTFILES/config/tmux/plugins/tmux-window-name/scripts/rename_session_windows.py"
|
||||
local tmux_window_name_plugin="$TMUX_PLUGINS/tmux-window-name/scripts/rename_session_windows.py"
|
||||
if [[ -f "$tmux_window_name_plugin" ]]; then
|
||||
tmux_window_name()
|
||||
{
|
||||
@@ -93,15 +45,10 @@ setup_tmux_window_name_plugin()
|
||||
fi
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
load_antigen
|
||||
source_fzf_config
|
||||
setup_tmux_window_name_plugin
|
||||
if x-have antidot; then
|
||||
eval "$(antidot init)"
|
||||
fi
|
||||
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
|
||||
}
|
||||
source_fzf_config
|
||||
setup_tmux_window_name_plugin
|
||||
x-have antidot && eval "$(antidot init)"
|
||||
|
||||
main "$@"
|
||||
autoload -Uz compinit bashcompinit
|
||||
compinit -d $ZSH_COMPDUMP
|
||||
bashcompinit
|
||||
|
||||
16
config/alias
16
config/alias
@@ -52,14 +52,21 @@ alias flush="dscacheutil -flushcache"
|
||||
# Update locatedb
|
||||
alias updatedb="sudo /usr/libexec/locate.updatedb"
|
||||
|
||||
# Date helpers
|
||||
alias isodate="date +'%Y-%m-%d'"
|
||||
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
||||
alias x-timestamp="date +'%s'"
|
||||
|
||||
# tmux: automatically attach or create session with name 'main'
|
||||
alias tmux='tmux new-session -A -s main'
|
||||
alias tm='command tmux new-session -A -s main'
|
||||
# tmux: attach or create new session
|
||||
alias ta='tmux attach || tmux'
|
||||
alias ta='command tmux attach || command tmux'
|
||||
|
||||
# nvim
|
||||
alias nvim-ks='NVIM_APPNAME="nvim-kickstart" nvim'
|
||||
alias ks='NVIM_APPNAME="nvim-kickstart" nvim'
|
||||
alias c='nvim'
|
||||
alias ks='nvim'
|
||||
alias vi='nvim'
|
||||
alias vim='nvim'
|
||||
|
||||
# xdg-ninja aliases for better experience
|
||||
alias xdg='xdg-ninja --skip-ok --skip-unsupported'
|
||||
@@ -122,6 +129,7 @@ X_ALIAS_FILES=(
|
||||
"$HOME/.config/alias-$(hostname)-secret"
|
||||
)
|
||||
for aliasFile in "${X_ALIAS_FILES[@]}"; do
|
||||
# shellcheck source=$HOME/.config/alias-secret
|
||||
[ -f "$aliasFile" ] && source "$aliasFile" && msg "Sourced $aliasFile"
|
||||
done
|
||||
unset X_ALIAS_FILES
|
||||
|
||||
3
config/asdf-direnv/zshrc
Normal file
3
config/asdf-direnv/zshrc
Normal file
@@ -0,0 +1,3 @@
|
||||
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
|
||||
export ASDF_DIRENV_BIN="$(asdf where direnv)/bin/direnv"
|
||||
eval "$($ASDF_DIRENV_BIN hook zsh)"
|
||||
@@ -19,3 +19,7 @@ bob-nvim
|
||||
// bottom, btm - A cross-platform graphical process/system monitor with
|
||||
// a customizable interface and a multitude of features.
|
||||
bottom
|
||||
// A modern alternative to ls
|
||||
eza
|
||||
// Tmux Sessionizer: A tool for opening git repositories as tmux sessions
|
||||
tmux-sessionizer
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// These are golang packages I use,
|
||||
// so they should be available with all versions
|
||||
|
||||
// sysadmin/scripting utilities, distributed as a single binary
|
||||
github.com/skx/sysbox@release-0.18.0
|
||||
// Git Profile allows you to switch between user profiles in git repos
|
||||
github.com/dotzero/git-profile@v1.4.0
|
||||
// An extensible command line tool or library to format yaml files.
|
||||
@@ -19,3 +17,5 @@ github.com/charmbracelet/glow@v1.5.1
|
||||
github.com/rhysd/actionlint/cmd/actionlint@v1.7.1
|
||||
// Cleans up your $HOME from those pesky dotfiles
|
||||
github.com/doron-cohen/antidot@v0.6.3
|
||||
// FZF is a general-purpose command-line fuzzy finder.
|
||||
github.com/junegunn/fzf@latest
|
||||
|
||||
@@ -1,32 +1,27 @@
|
||||
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
||||
age https://github.com/threkk/asdf-age.git 4df80a0
|
||||
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git ecd1642
|
||||
bottom https://github.com/carbonteq/asdf-btm.git fd8a55a
|
||||
direnv https://github.com/asdf-community/asdf-direnv.git a2219c2
|
||||
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
||||
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
||||
eza https://github.com/lwiechec/asdf-eza.git eee3d59
|
||||
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
||||
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
||||
golang https://github.com/asdf-community/asdf-golang.git 0e86b1d
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
|
||||
kubectl https://github.com/asdf-community/asdf-kubectl.git cbe6df4
|
||||
lazygit https://github.com/nklmilojevic/asdf-lazygit.git 78e04f1
|
||||
markdownlint-cli2 https://github.com/paulo-ferraz-oliveira/asdf-markdownlint-cli2.git 6acd080
|
||||
nodejs https://github.com/asdf-vm/asdf-nodejs.git c5b7c40
|
||||
pipx https://github.com/yozachar/asdf-pipx.git 31db618
|
||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||
python https://github.com/asdf-community/asdf-python 7b0af87
|
||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||
ruby https://github.com/asdf-vm/asdf-ruby.git 27f78c9
|
||||
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
||||
semgrep https://github.com/brentjanderson/asdf-semgrep.git 13ff78b
|
||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 780d78d
|
||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||
terraform-ls https://github.com/asdf-community/asdf-hashicorp.git f1602b6
|
||||
terraform-lsp https://github.com/bartlomiejdanek/asdf-terraform-lsp.git bba7106
|
||||
terragrunt https://github.com/ohmer/asdf-terragrunt.git 4a6651a
|
||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||
vault https://github.com/asdf-community/asdf-hashicorp.git f1602b6
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git 2f4fd4c
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
||||
age https://github.com/threkk/asdf-age.git 396bdf6
|
||||
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git b5862c1
|
||||
bats https://github.com/timgluz/asdf-bats.git 299551f
|
||||
bottom https://github.com/carbonteq/asdf-btm.git fd8a55a
|
||||
delta https://github.com/andweeb/asdf-delta.git 501318b
|
||||
direnv https://github.com/asdf-community/asdf-direnv.git 6ff3dbe
|
||||
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
||||
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
||||
eza https://github.com/lwiechec/asdf-eza.git 11f578d
|
||||
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
||||
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
||||
gitleaks https://github.com/jmcvetta/asdf-gitleaks.git 0cc0d7e
|
||||
golang https://github.com/asdf-community/asdf-golang.git e2527a3
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git 335e230
|
||||
kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
|
||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||
ruby https://github.com/asdf-vm/asdf-ruby.git 194fe45
|
||||
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 66200ff
|
||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||
sops https://github.com/feniix/asdf-sops.git 5c7a2fb
|
||||
terragrunt https://github.com/ohmer/asdf-terragrunt.git 4a6651a
|
||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git bc2813e
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
ansible
|
||||
pipenv
|
||||
neovim
|
||||
libtmux
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
[global]
|
||||
disable_stdin = true
|
||||
disable_stdin = false
|
||||
load_dotenv = true
|
||||
hide_env_diff = false
|
||||
|
||||
[whitelist]
|
||||
prefix = [
|
||||
"~/Code/ivuorinen/"
|
||||
"~/Code/"
|
||||
]
|
||||
exact = [
|
||||
"~/.dotfiles/.envrc"
|
||||
|
||||
190
config/exports
190
config/exports
@@ -9,34 +9,25 @@
|
||||
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
|
||||
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
|
||||
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
# if DOTFILES is not set, set it to the default location
|
||||
[ -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"
|
||||
|
||||
# Load bash completions if available for zsh
|
||||
if [[ -n "$ZSH_VERSION" ]]; then
|
||||
autoload bashcompinit
|
||||
bashcompinit
|
||||
fi
|
||||
|
||||
# Load asdf
|
||||
export ASDF_DIR="$XDG_BIN_HOME/asdf"
|
||||
if [[ -d $ASDF_DIR ]]; then
|
||||
[[ -d $ASDF_DIR/bin ]] && x-path-prepend "$ASDF_DIR/bin"
|
||||
[[ -d $ASDF_DIR/shims ]] && x-path-prepend "$ASDF_DIR/shims"
|
||||
[[ -d $ASDF_DIR/completions ]] && fpath=("$ASDF_DIR/completions" $fpath)
|
||||
[[ -d $ASDF_DIR/plugins ]] && fpath=("$ASDF_DIR/plugins" $fpath)
|
||||
source "$ASDF_DIR/asdf.sh"
|
||||
fi
|
||||
# Add zsh completions to FPATH, compinit will be called later
|
||||
FPATH="$ZSH_COMPLETIONS:$FPATH"
|
||||
|
||||
if ! command -v msg &> /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ "$VERBOSE" -eq 1 ]] && echo "-> $1"
|
||||
[[ $VERBOSE -eq 1 ]] && msgr msg "-> $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
@@ -52,7 +43,7 @@ else
|
||||
# Optionally write a msg to stderr suggesting users install bkt.
|
||||
bkt()
|
||||
{
|
||||
while [[ "$1" == --* ]]; do shift; done
|
||||
while [[ $1 == --* ]]; do shift; done
|
||||
"$@"
|
||||
}
|
||||
fi
|
||||
@@ -93,7 +84,7 @@ darknotify_alacritty()
|
||||
}
|
||||
return 0
|
||||
}
|
||||
darknotify_alacritty
|
||||
# darknotify_alacritty
|
||||
|
||||
# Function to list installed Homebrew packages using bkt caching
|
||||
brew_installed()
|
||||
@@ -124,7 +115,7 @@ preexec()
|
||||
dfu()
|
||||
{
|
||||
(
|
||||
cd "$DOTFILES" && git pull --ff-only && ./install
|
||||
cd "$DOTFILES" && git rebase --ff --autostash && ./install
|
||||
)
|
||||
}
|
||||
|
||||
@@ -147,7 +138,7 @@ rector()
|
||||
{
|
||||
local php="${1:-82}"
|
||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||
"/project/$1" \
|
||||
"/project/" \
|
||||
--set "php${php}" \
|
||||
--autoload-file /project/vendor/autoload.php
|
||||
}
|
||||
@@ -191,6 +182,7 @@ nonascii()
|
||||
# Usage: strip_nonascii "string"
|
||||
strip_nonascii()
|
||||
{
|
||||
# shellcheck disable=SC2001
|
||||
echo "$1" | LC_ALL=C sed 's/[^[:print:][:space:]]//g'
|
||||
}
|
||||
|
||||
@@ -198,7 +190,7 @@ strip_nonascii()
|
||||
# Usage: slugify "string"
|
||||
slugify()
|
||||
{
|
||||
echo "$1" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z
|
||||
echo "$1" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr '[:upper:]' '[:lower:]'
|
||||
}
|
||||
|
||||
# https://stackoverflow.com/a/85932
|
||||
@@ -232,33 +224,33 @@ replacable()
|
||||
FILE1="$1"
|
||||
FILE2="$2"
|
||||
|
||||
[[ ! -r "$FILE1" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "File 1 ($FILE1) does not exist"
|
||||
[[ ! -r $FILE1 ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "File 1 ($FILE1) does not exist"
|
||||
return 0
|
||||
}
|
||||
[[ ! -r "$FILE2" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "File 2 ($FILE2) does not exist, replaceable"
|
||||
[[ ! -r $FILE2 ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "File 2 ($FILE2) does not exist, replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
FILE1_HASH=$(get_sha256sum "$FILE1")
|
||||
FILE2_HASH=$(get_sha256sum "$FILE2")
|
||||
|
||||
[[ $FILE1_HASH = "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "Could not get hash for file 1 ($FILE1)"
|
||||
[[ $FILE1_HASH == "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 1 ($FILE1)"
|
||||
return 0
|
||||
}
|
||||
[[ $FILE2_HASH = "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_err "Could not get hash for file 2 ($FILE2), replaceable"
|
||||
[[ $FILE2_HASH == "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 2 ($FILE2), replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
[[ "$FILE1_HASH" == "$FILE2_HASH" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msg_ok "Files match, not replaceable: $FILE1"
|
||||
[[ $FILE1_HASH == "$FILE2_HASH" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr ok "Files match, not replaceable: $FILE1"
|
||||
return 0
|
||||
}
|
||||
|
||||
[[ $VERBOSE -eq 1 ]] && msg_warn "Files do not match ($FILE1_HASH != $FILE2_HASH), replaceable"
|
||||
[[ $VERBOSE -eq 1 ]] && msgr warn "Files do not match ($FILE1_HASH != $FILE2_HASH), replaceable"
|
||||
|
||||
return 1
|
||||
}
|
||||
@@ -270,6 +262,7 @@ export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_comple
|
||||
|
||||
# History env variables
|
||||
export HIST_STAMPS="yyyy-mm-dd"
|
||||
export HISTFILE="${XDG_STATE_HOME}/zsh/history"
|
||||
# Larger bash history (allow 32³ entries; default is 500)
|
||||
export HISTSIZE=32768
|
||||
export HISTFILESIZE=$HISTSIZE
|
||||
@@ -301,8 +294,45 @@ export GREP_OPTIONS="--color=auto"
|
||||
# update the values of LINES and COLUMNS.
|
||||
hash shopt 2> /dev/null && shopt -s checkwinsize
|
||||
|
||||
# shellcheck disable=SC2155
|
||||
export SHORT_HOST=$(hostname -s)
|
||||
|
||||
# asdf
|
||||
# https://github.com/asdf-vm/asdf
|
||||
msg "Setting up asdf configuration"
|
||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||
if [[ -d $ASDF_DIR ]]; then
|
||||
[[ -d $ASDF_DIR/completions ]] && FPATH="$ASDF_DIR/completions:$FPATH"
|
||||
[[ -d $ASDF_DIR/plugins ]] && FPATH="$ASDF_DIR/plugins:$FPATH"
|
||||
|
||||
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
|
||||
export ASDF_DATA_DIR="${ASDF_DIR}"
|
||||
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
|
||||
export ASDF_LOG_FILE="${XDG_CACHE_HOME}/asdf/asdf.log"
|
||||
export ASDF_FORCE_PREPEND=yes
|
||||
## Default package files
|
||||
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/cargo-packages"
|
||||
export ASDF_GEM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/gem-packages"
|
||||
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/golang-packages"
|
||||
export ASDF_NPM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/npm-packages"
|
||||
export ASDF_PYTHON_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/python-packages"
|
||||
## Plugin configuration
|
||||
export ASDF_DIRENV_IGNORE_MISSING_PLUGINS=1
|
||||
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
|
||||
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY="latest_available"
|
||||
## Add asdf to path
|
||||
export PATH="${ASDF_DIR}/bin:${PATH}"
|
||||
|
||||
source "$ASDF_DIR/asdf.sh"
|
||||
fi
|
||||
|
||||
# Antidote configuration
|
||||
# https://getantidote.github.io/
|
||||
msg "Setting up Antidote configuration"
|
||||
export ANTIDOTE_DIR="$DOTFILES/tools/antidote"
|
||||
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
||||
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
||||
|
||||
# Antigen configuration
|
||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||
msg "Setting up Antigen configuration"
|
||||
@@ -320,26 +350,22 @@ export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
# asdf
|
||||
# https://github.com/asdf-vm/asdf
|
||||
msg "Setting up asdf configuration"
|
||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
|
||||
export ASDF_DATA_DIR="${ASDF_DIR}"
|
||||
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
|
||||
export ASDF_LOG_FILE="${XDG_CACHE_HOME}/asdf/asdf.log"
|
||||
## Default package files
|
||||
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/cargo-packages"
|
||||
export ASDF_GEM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/gem-packages"
|
||||
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/golang-packages"
|
||||
export ASDF_NPM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/npm-packages"
|
||||
export ASDF_PYTHON_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/python-packages"
|
||||
## Plugin configuration
|
||||
export ASDF_DIRENV_IGNORE_MISSING_PLUGINS=1
|
||||
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
|
||||
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY="latest_available"
|
||||
## Add asdf to path
|
||||
export PATH="${ASDF_DIR}/bin:${PATH}"
|
||||
# aws
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
|
||||
msg "Setting up AWS configuration"
|
||||
export AWS_CONFIG_FILE="${XDG_STATE_HOME}/aws/config"
|
||||
export AWS_SHARED_CREDENTIALS_FILE="${XDG_STATE_HOME}/aws/credentials"
|
||||
export AWS_DATA_PATH="${XDG_DATA_HOME}/aws"
|
||||
export AWS_DEFAULT_REGION="eu-west-1"
|
||||
export AWS_DEFAULT_OUTPUT="table"
|
||||
export AWS_CONFIGURE_KEYS=true
|
||||
export AWS_CONFIGURE_REGION=true
|
||||
export AWS_CONFIGURE_OUTPUT=true
|
||||
export AWS_CONFIGURE_PROFILE=true
|
||||
export AWS_CONFIGURE_PROMPT=true
|
||||
export AWS_CONFIGURE_PROMPT_DEFAULT="default"
|
||||
|
||||
# bob manages nvim versions
|
||||
msg "Setting up bob configuration"
|
||||
@@ -370,25 +396,24 @@ export PATH="$COMPOSER_BIN:$PATH"
|
||||
# direnv, https://direnv.net/
|
||||
# https://direnv.net/docs/hook.html
|
||||
# Set the hook to show the direnv message in a different color
|
||||
export DIRENV_LOG_FORMAT=$'\033[2mdirenv: %s\033[0m'
|
||||
# export DIRENV_LOG_FORMAT=$'\033[2mdirenv: %s\033[0m'
|
||||
export DIRENV_LOG_FORMAT=
|
||||
|
||||
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
||||
msg "Setting up Docker configuration"
|
||||
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
|
||||
export DOCKER_CONFIG="${XDG_CONFIG_HOME}/docker"
|
||||
x-dc "$DOCKER_CONFIG"
|
||||
# Docker: Disable snyk ad
|
||||
export DOCKER_SCAN_SUGGEST=false
|
||||
|
||||
# ffmpeg
|
||||
# https://ffmpeg.org/ffmpeg.html
|
||||
msg "Setting up FFmpeg configuration"
|
||||
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
|
||||
x-have ffmpeg && x-dc "$FFMPEG_DATADIR"
|
||||
# fzf
|
||||
export FZF_BASE="${XDG_CONFIG_HOME}/fzf"
|
||||
export FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
|
||||
|
||||
# GnuPG
|
||||
# https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html
|
||||
msg "Setting up GnuPG configuration"
|
||||
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||
export GNUPGHOME="${XDG_DATA_HOME}/gnupg"
|
||||
|
||||
# Go
|
||||
# https://golang.org/doc/code.html
|
||||
@@ -396,10 +421,8 @@ msg "Setting up Go configuration"
|
||||
export GOPATH="$XDG_DATA_HOME/go"
|
||||
export GOBIN="$XDG_BIN_HOME"
|
||||
|
||||
# nb, https://xwmx.github.io/nb/
|
||||
msg "Setting up nb configuration"
|
||||
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
|
||||
export NB_DIR="$XDG_STATE_HOME/nb"
|
||||
# Lando
|
||||
export PATH="$HOME/.lando/bin${PATH+:$PATH}" #landopath
|
||||
|
||||
# NPM: Add npm packages to path
|
||||
msg "Setting up NPM configuration"
|
||||
@@ -425,29 +448,12 @@ export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
||||
## for MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
export AUTOSWITCH_VIRTUAL_ENV_DIR="$WORKON_HOME"
|
||||
export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
|
||||
x-have pyenv && {
|
||||
eval "$(pyenv init -)"
|
||||
eval "$(pyenv virtualenv-init -)"
|
||||
}
|
||||
|
||||
# Ruby
|
||||
#
|
||||
# including: bundler, rbenv
|
||||
msg "Setting up Ruby configuration"
|
||||
export GEM_HOME="${XDG_DATA_HOME}"/gem
|
||||
export GEM_SPEC_CACHE="${XDG_CACHE_HOME}"/gem
|
||||
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
|
||||
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
|
||||
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
|
||||
export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
|
||||
x-dc "$RBENV_ROOT"
|
||||
x-have gem && export PATH="${GEM_HOME}/bin:$PATH"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
x-have pyenv && eval "$(pyenv init -)"
|
||||
|
||||
# Rust / cargo
|
||||
msg "Setting up Rust/Cargo configuration"
|
||||
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
export PATH="$CARGO_HOME/bin:$PATH"
|
||||
export RUST_WITHOUT=rust-docs
|
||||
|
||||
# screen
|
||||
# https://www.gnu.org/software/screen/manual/screen.html
|
||||
@@ -467,14 +473,20 @@ export TF_DATA_DIR="$XDG_STATE_HOME/terraform"
|
||||
export TF_CLI_CONFIG_FILE="$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
|
||||
# tldr / tealdeer
|
||||
msg "Setting up tldr configuration"
|
||||
export TEALDEER_CONFIG_DIR="$XDG_CONFIG_HOME/tealdeer/"
|
||||
|
||||
# tmux
|
||||
# https://tmux.github.io/
|
||||
msg "Setting up tmux configuration"
|
||||
export TMUX_PLUGINS="$XDG_CONFIG_HOME/tmux/plugins"
|
||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
## These settings are for zsh-tmux
|
||||
export ZSH_TMUX_AUTOSTART=false
|
||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
|
||||
# tms, https://github.com/jrmoulton/tmux-sessionizer
|
||||
export TMS_CONFIG_FILE="${XDG_CONFIG_HOME}/tms/config.toml"
|
||||
|
||||
# wakatime, https://github.com/wakatime/wakatime-cli
|
||||
msg "Setting up Wakatime configuration"
|
||||
@@ -483,6 +495,7 @@ x-dc "$WAKATIME_HOME"
|
||||
|
||||
# Misc
|
||||
msg "Setting up miscellaneous configuration"
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
|
||||
|
||||
@@ -492,6 +505,7 @@ X_EXPORTS_FILES=(
|
||||
"$HOME/.config/exports-$(hostname)-secret"
|
||||
)
|
||||
for exportFile in "${X_EXPORTS_FILES[@]}"; do
|
||||
# shellcheck source=$HOME/.config/exports-secret
|
||||
[ -f "$exportFile" ] && source "$exportFile" && msg "Sourced $exportFile"
|
||||
done
|
||||
unset X_EXPORTS_FILES
|
||||
|
||||
@@ -20,3 +20,4 @@ auth.json
|
||||
dfm.sh
|
||||
.scannerwork
|
||||
.phpactor.json
|
||||
.zsh_history
|
||||
|
||||
@@ -17,11 +17,12 @@
|
||||
llog = log --pretty=fuller
|
||||
logs = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit
|
||||
nah = !git reset --hard && git clean -df
|
||||
recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
|
||||
reset-origin = !git fetch origin && git reset --hard origin/master && git clean -f -d
|
||||
reset-upstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d
|
||||
recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
|
||||
rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
|
||||
tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\"
|
||||
undo = reset --soft HEAD^
|
||||
undo-commit = reset HEAD~ --soft
|
||||
|
||||
[filter "lfs"]
|
||||
@@ -30,15 +31,6 @@
|
||||
process = git-lfs filter-process
|
||||
required = true
|
||||
|
||||
[diff]
|
||||
tool = difftastic
|
||||
|
||||
[difftool]
|
||||
prompt = false
|
||||
|
||||
[difftool "difftastic"]
|
||||
cmd = difft "$LOCAL" "$REMOTE"
|
||||
|
||||
[color]
|
||||
ui = true
|
||||
diff = auto
|
||||
|
||||
@@ -16,24 +16,11 @@ tap "mongodb/brew"
|
||||
tap "reviewdog/tap"
|
||||
tap "shivammathur/extensions"
|
||||
tap "shivammathur/php"
|
||||
tap "snyk/tap"
|
||||
tap "teamookla/speedtest"
|
||||
tap "xwmx/taps"
|
||||
# Run your GitHub Actions locally
|
||||
brew "act"
|
||||
# Simple, modern, secure file encryption
|
||||
brew "age"
|
||||
# Mozilla CA certificate store
|
||||
brew "ca-certificates"
|
||||
# Mozilla CA bundle for Python
|
||||
brew "certifi"
|
||||
# Cryptographic recipes and primitives for Python
|
||||
brew "cryptography"
|
||||
# YAML Parser
|
||||
brew "libyaml"
|
||||
# Automate deployment, configuration, and upgrading
|
||||
brew "ansible"
|
||||
# Checks ansible playbooks for practices and behaviour
|
||||
brew "ansible-lint"
|
||||
# Generic-purpose lossless compression algorithm by Google
|
||||
brew "brotli"
|
||||
# Library and utilities for processing GIFs
|
||||
@@ -52,32 +39,32 @@ brew "jpeg-xl"
|
||||
brew "aom"
|
||||
# Apache Portable Runtime library
|
||||
brew "apr"
|
||||
# Mozilla CA certificate store
|
||||
brew "ca-certificates"
|
||||
# Cryptography and SSL/TLS Toolkit
|
||||
brew "openssl@3"
|
||||
# Companion library to apr, the Apache Portable Runtime library
|
||||
brew "apr-util"
|
||||
# Password hashing library and CLI utility
|
||||
brew "argon2"
|
||||
# Spell checker with better logic than ispell
|
||||
brew "aspell"
|
||||
# Automatic configure script builder
|
||||
brew "autoconf"
|
||||
# Tool for generating GNU Standards-compliant Makefiles
|
||||
brew "automake"
|
||||
# Collection of over 500 reusable autoconf macros
|
||||
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
|
||||
brew "bash"
|
||||
# GNU multiple precision arithmetic library
|
||||
brew "gmp"
|
||||
# GNU File, Shell, and Text utilities
|
||||
brew "coreutils"
|
||||
# Extendable version manager with support for Ruby, Node.js, Erlang & more
|
||||
brew "asdf"
|
||||
# Spell checker with better logic than ispell
|
||||
brew "aspell"
|
||||
# Collection of over 500 reusable autoconf macros
|
||||
brew "autoconf-archive"
|
||||
# Manage compile and link flags for libraries
|
||||
brew "pkg-config"
|
||||
# Automated text file generator
|
||||
brew "autogen"
|
||||
# Bourne-Again SHell, a UNIX command interpreter
|
||||
brew "bash"
|
||||
# Clone of cat(1) with syntax highlighting and Git integration
|
||||
brew "bat"
|
||||
# Bash Automated Testing System
|
||||
brew "bats-core"
|
||||
# Software library to render fonts
|
||||
brew "freetype"
|
||||
# XML-based font configuration API for X Windows
|
||||
@@ -86,70 +73,42 @@ brew "fontconfig"
|
||||
brew "gettext"
|
||||
# Core application library for C
|
||||
brew "glib"
|
||||
# Human-friendly and fast alternative to cut and (sometimes) awk
|
||||
brew "choose-rust"
|
||||
# Cross-platform make
|
||||
brew "cmake"
|
||||
# Mozilla CA bundle for Python
|
||||
brew "certifi"
|
||||
# Get a file from an HTTP, HTTPS or FTP server
|
||||
brew "curl"
|
||||
# Lightweight DNS forwarder and DHCP server
|
||||
brew "dnsmasq"
|
||||
# Spellchecker wrapping library
|
||||
brew "enchant"
|
||||
# Perl lib for reading and writing EXIF metadata
|
||||
brew "exiftool"
|
||||
# Banner-like program prints strings as ASCII art
|
||||
brew "figlet"
|
||||
# Lock file during command
|
||||
brew "flock"
|
||||
# Libraries to talk to Microsoft SQL Server and Sybase databases
|
||||
brew "freetds"
|
||||
# Monitor a directory for changes and run a shell command
|
||||
brew "fswatch"
|
||||
# Command-line fuzzy finder written in Go
|
||||
brew "fzf"
|
||||
# Graphics library to dynamically manipulate images
|
||||
brew "gd"
|
||||
# Disk usage analyzer with console interface written in Go
|
||||
brew "gdu"
|
||||
# GitHub command-line tool
|
||||
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
|
||||
brew "git"
|
||||
# Enable transparent encryption/decryption of files in a git repo
|
||||
brew "git-crypt"
|
||||
# Small git utilities
|
||||
brew "git-extras"
|
||||
# See your latest local git branches, formatted real fancy
|
||||
brew "git-recent"
|
||||
# Render markdown on the CLI
|
||||
brew "glow"
|
||||
# GNU implementation of the famous stream editor
|
||||
brew "gnu-sed"
|
||||
# Validating, recursive, caching DNS resolver
|
||||
brew "unbound"
|
||||
# GNU Transport Layer Security (TLS) Library
|
||||
brew "gnutls"
|
||||
# GNU Pretty Good Privacy (PGP) package
|
||||
brew "gnupg"
|
||||
# Library access to GnuPG
|
||||
brew "gpgme"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# Manage your GnuPG keys with ease!
|
||||
brew "gpg-tui"
|
||||
# Image manipulation
|
||||
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
|
||||
brew "librsvg"
|
||||
# Graph visualization software from AT&T and Bell Labs
|
||||
brew "graphviz"
|
||||
# GNU grep, egrep and fgrep
|
||||
brew "grep"
|
||||
# Popular GNU data compression program
|
||||
brew "gzip"
|
||||
# Improved top (interactive process viewer)
|
||||
@@ -166,68 +125,44 @@ brew "irssi"
|
||||
brew "jq"
|
||||
# JSON parser for C
|
||||
brew "json-c"
|
||||
# Scanning your k8s clusters, diagnosing, and triaging issues in simple English
|
||||
brew "k8sgpt"
|
||||
# Network authentication protocol
|
||||
brew "krb5"
|
||||
# Tool to detect/remediate misconfig and security risks of GitHub/GitLab assets
|
||||
brew "legitify"
|
||||
# Secure hashing function
|
||||
brew "libb2"
|
||||
# Postgres C API library
|
||||
brew "libpq"
|
||||
# Multi-platform support library with a focus on asynchronous I/O
|
||||
brew "libuv"
|
||||
# YAML Parser
|
||||
brew "libyaml"
|
||||
# Package manager for the Lua programming language
|
||||
brew "luarocks"
|
||||
# LZMA-based compression program similar to gzip or bzip2
|
||||
brew "lzip"
|
||||
# Swiss Army Knife for macOS
|
||||
brew "m-cli"
|
||||
# Collection of tools that nobody wrote when UNIX was young
|
||||
brew "moreutils"
|
||||
# Mongrel of mail user agents (part elm, pine, mush, mh, etc.)
|
||||
brew "mutt"
|
||||
# NCurses Disk Usage
|
||||
brew "ncdu"
|
||||
# HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
|
||||
brew "nginx"
|
||||
# Port scanning utility for large networks
|
||||
brew "nmap"
|
||||
# ISO-C API and CLI for generating UUIDs
|
||||
brew "ossp-uuid"
|
||||
# Coreutils progress viewer
|
||||
brew "progress"
|
||||
# Python version management
|
||||
brew "pyenv"
|
||||
# Migrate pip packages from one Python version to another
|
||||
brew "pyenv-pip-migrate"
|
||||
# Pyenv plugin to manage virtualenv
|
||||
brew "pyenv-virtualenv"
|
||||
# Interpreted, interactive, object-oriented programming language
|
||||
brew "python@3.11"
|
||||
# Install various Ruby versions and implementations
|
||||
brew "ruby-build"
|
||||
# Ruby version manager
|
||||
brew "rbenv"
|
||||
# Static analysis and lint tool, for (ba)sh scripts
|
||||
brew "shellcheck"
|
||||
# Feature-rich console based todo list manager
|
||||
brew "task"
|
||||
# Libraries for security-enabled client and server applications
|
||||
brew "nss"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# General-purpose scripting language
|
||||
brew "php"
|
||||
# General-purpose scripting language
|
||||
brew "php@8.2"
|
||||
# Manage compile and link flags for libraries
|
||||
brew "pkg-config"
|
||||
# Send macOS User Notifications from the command-line
|
||||
brew "terminal-notifier"
|
||||
# Tool which checks for the support of TLS/SSL ciphers and flaws
|
||||
brew "testssl"
|
||||
# Terraform version manager inspired by rbenv
|
||||
brew "tfenv"
|
||||
# Linter for Terraform files
|
||||
brew "tflint"
|
||||
# Static analysis security scanner for your terraform code
|
||||
brew "tfsec"
|
||||
# Terminal multiplexer
|
||||
brew "tmux"
|
||||
# Display directories as trees (with optional color/HTML output)
|
||||
brew "tree"
|
||||
# Tool for creating isolated virtual python environments
|
||||
brew "virtualenv"
|
||||
# Command-line interface to the WakaTime api
|
||||
brew "wakatime-cli"
|
||||
# Executes a program periodically, showing output fullscreen
|
||||
@@ -238,12 +173,8 @@ brew "wget"
|
||||
brew "xdg-ninja", args: ["HEAD"]
|
||||
# Watcher for macOS 10.14+ light/dark mode changes
|
||||
brew "cormacrelf/tap/dark-notify"
|
||||
# Cleans up your $HOME from those pesky dotfiles
|
||||
brew "doron-cohen/tap/antidot"
|
||||
# lets you quickly switch between multiple git user profiles
|
||||
brew "gesquive/tap/git-user"
|
||||
# Automated code review tool integrated with any code analysis tools regardless of programming language.
|
||||
brew "reviewdog/tap/reviewdog"
|
||||
# Igbinary PHP extension
|
||||
brew "shivammathur/extensions/igbinary@8.3"
|
||||
# Imagick PHP extension
|
||||
brew "shivammathur/extensions/imagick@8.3"
|
||||
# Mcrypt PHP extension
|
||||
@@ -259,13 +190,9 @@ brew "shivammathur/extensions/uuid@8.3"
|
||||
# Yaml PHP extension
|
||||
brew "shivammathur/extensions/yaml@8.3"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php"
|
||||
# General-purpose scripting language
|
||||
brew "shivammathur/php/php-debug"
|
||||
# Command-line interface for 1Password
|
||||
cask "1password-cli"
|
||||
# GPU-accelerated terminal emulator
|
||||
cask "alacritty"
|
||||
# Find & fix known vulnerabilities in open-source dependencies
|
||||
brew "snyk/tap/snyk"
|
||||
# Text editor
|
||||
cask "coda"
|
||||
# Universal database tool and SQL client
|
||||
@@ -274,6 +201,15 @@ cask "dbeaver-community"
|
||||
cask "dbngin"
|
||||
# App to build and share containerised applications and microservices
|
||||
cask "docker"
|
||||
cask "font-jetbrains-mono"
|
||||
cask "font-jetbrains-mono-nerd-font"
|
||||
cask "font-lato"
|
||||
cask "font-open-sans"
|
||||
cask "font-roboto"
|
||||
cask "font-source-code-pro"
|
||||
cask "font-source-code-pro-for-powerline"
|
||||
cask "font-source-sans-pro"
|
||||
cask "font-source-serif-pro"
|
||||
# GIT client
|
||||
cask "fork"
|
||||
# HTTP and GraphQL Client
|
||||
@@ -284,18 +220,12 @@ cask "jetbrains-toolbox"
|
||||
cask "keybase"
|
||||
# Kubernetes IDE
|
||||
cask "lens"
|
||||
# Keep all tasks from your todo apps on your menu bar
|
||||
cask "monofocus"
|
||||
# Reverse proxy, secure introspectable tunnels to localhost
|
||||
cask "ngrok"
|
||||
# Simple application that will prevent iTunes or Apple Music from launching
|
||||
cask "notunes"
|
||||
# Knowledge base that works on top of a local folder of plain text Markdown files
|
||||
cask "obsidian"
|
||||
# Scheduling application focusing on organisation
|
||||
cask "omnifocus"
|
||||
# Collaboration platform for API development
|
||||
cask "postman"
|
||||
# Display image info and preview unsupported formats in QuickLook
|
||||
cask "qlimagesize"
|
||||
# Quick Look generator for Markdown files
|
||||
@@ -326,6 +256,8 @@ cask "suspicious-package"
|
||||
cask "syntax-highlight"
|
||||
# Python IDE for beginners
|
||||
cask "thonny"
|
||||
# To-do list
|
||||
cask "todoist"
|
||||
# Configuration application for the Ultimate Hacking Keyboard
|
||||
cask "uhk-agent"
|
||||
# Open-source code editor
|
||||
@@ -334,6 +266,8 @@ cask "visual-studio-code"
|
||||
cask "vlc"
|
||||
# Spell-checking service for Finnish
|
||||
cask "voikkospellservice"
|
||||
# GPU-accelerated cross-platform terminal emulator and multiplexer
|
||||
cask "wezterm"
|
||||
# Application for generating TOTP and HOTP codes
|
||||
cask "yubico-authenticator"
|
||||
# Multiplayer code editor
|
||||
|
||||
53
config/htop/htoprc
Normal file
53
config/htop/htoprc
Normal file
@@ -0,0 +1,53 @@
|
||||
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||
# The parser is also very primitive, and not human-friendly.
|
||||
htop_version=3.3.0
|
||||
config_reader_min_version=3
|
||||
fields=0 48 17 18 38 39 2 46 47 49 1
|
||||
hide_kernel_threads=1
|
||||
hide_userland_threads=0
|
||||
hide_running_in_container=0
|
||||
shadow_other_users=0
|
||||
show_thread_names=0
|
||||
show_program_path=1
|
||||
highlight_base_name=0
|
||||
highlight_deleted_exe=1
|
||||
shadow_distribution_path_prefix=0
|
||||
highlight_megabytes=1
|
||||
highlight_threads=1
|
||||
highlight_changes=0
|
||||
highlight_changes_delay_secs=5
|
||||
find_comm_in_cmdline=1
|
||||
strip_exe_from_cmdline=1
|
||||
show_merged_command=0
|
||||
header_margin=1
|
||||
screen_tabs=1
|
||||
detailed_cpu_time=0
|
||||
cpu_count_from_one=0
|
||||
show_cpu_usage=1
|
||||
show_cpu_frequency=0
|
||||
update_process_names=0
|
||||
account_guest_in_cpu_meter=0
|
||||
color_scheme=0
|
||||
enable_mouse=1
|
||||
delay=15
|
||||
hide_function_bar=0
|
||||
header_layout=two_50_50
|
||||
column_meters_0=LeftCPUs2 Memory Swap
|
||||
column_meter_modes_0=1 1 1
|
||||
column_meters_1=RightCPUs2 Tasks LoadAverage Uptime
|
||||
column_meter_modes_1=1 2 2 2
|
||||
tree_view=0
|
||||
sort_key=46
|
||||
tree_sort_key=0
|
||||
sort_direction=-1
|
||||
tree_sort_direction=1
|
||||
tree_view_always_by_pid=0
|
||||
all_branches_collapsed=0
|
||||
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||
.sort_key=PERCENT_CPU
|
||||
.tree_sort_key=PID
|
||||
.tree_view_always_by_pid=0
|
||||
.tree_view=0
|
||||
.sort_direction=-1
|
||||
.tree_sort_direction=1
|
||||
.all_branches_collapsed=0
|
||||
73
config/ideavim/ideavimrc
Normal file
73
config/ideavim/ideavimrc
Normal file
@@ -0,0 +1,73 @@
|
||||
"" Source your .vimrc
|
||||
"source ~/.vimrc
|
||||
|
||||
"" -- Suggested options --
|
||||
" Show a few lines of context around the cursor. Note that this makes the
|
||||
" text scroll if you mouse-click near the start or end of the window.
|
||||
set scrolloff=5
|
||||
|
||||
" Don't use Ex mode, use Q for formatting.
|
||||
map Q gq
|
||||
|
||||
|
||||
"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
|
||||
"" Map \r to the Reformat Code action
|
||||
"map \r <Action>(ReformatCode)
|
||||
|
||||
"" Map <leader>d to start debug
|
||||
"map <leader>d <Action>(Debug)
|
||||
|
||||
"" Map \b to toggle the breakpoint on the current line
|
||||
"map \b <Action>(ToggleLineBreakpoint)
|
||||
|
||||
|
||||
" Find more examples here: https://jb.gg/share-ideavimrc
|
||||
|
||||
" https://github.com/ville6000/dotfiles/blob/main/vimrc
|
||||
set nocompatible " disable compatibility mode with vi
|
||||
filetype off " disable filetype detection (but re-enable later, see below)
|
||||
|
||||
set encoding=utf-8 " UTF-8
|
||||
set number " Show line numbers
|
||||
set laststatus=2 " Always show statusline (even with only single window)
|
||||
set showmatch " Highlight matching brace
|
||||
set visualbell " Use visual bell (no beeping)
|
||||
set hlsearch " Highlight all search results
|
||||
set smartcase " Enable smart-case search
|
||||
set ignorecase " Always case-insensitive
|
||||
set incsearch " Searches for strings incrementally
|
||||
set cindent " Use 'C' style program indenting
|
||||
set expandtab " Use spaces instead of tabs
|
||||
set shiftwidth=4 " Number of auto-indent spaces
|
||||
set smartindent " Enable smart-indent
|
||||
set smarttab " Enable smart-tabs
|
||||
set softtabstop=4 " Number of spaces per Tab
|
||||
set ruler " Show row and column ruler information
|
||||
set cursorline " Highlight current line
|
||||
set undolevels=1000 " Number of undo levels
|
||||
set backspace=indent,eol,start " Backspace behaviour
|
||||
set so=5
|
||||
|
||||
" move vertically by visual line (don't skip wrapped lines)
|
||||
nmap j gj
|
||||
nmap k gk
|
||||
|
||||
syntax enable
|
||||
filetype plugin indent on
|
||||
|
||||
call plug#begin('~/.vim/plugged')
|
||||
|
||||
Plug 'ayu-theme/ayu-vim'
|
||||
Plug 'ctrlpvim/ctrlp.vim'
|
||||
|
||||
call plug#end()
|
||||
|
||||
set termguicolors
|
||||
set background=dark
|
||||
let ayucolor="dark"
|
||||
colorscheme ayu
|
||||
|
||||
if has('gui_running')
|
||||
set macligatures
|
||||
set guifont=JetBrainsMono:h14
|
||||
endif
|
||||
Submodule config/nvim-kickstart deleted from f5aa89acb8
20
config/nvim/.editorconfig
Normal file
20
config/nvim/.editorconfig
Normal file
@@ -0,0 +1,20 @@
|
||||
# EditorConfig is awesome: https://editorconfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
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
|
||||
11
config/nvim/.gitignore
vendored
11
config/nvim/.gitignore
vendored
@@ -1,8 +1,3 @@
|
||||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
spell/*
|
||||
!spell/.gitkeep
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"diagnostics.globals": ["vim"]
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
config/nvim/.stylua.toml
Normal file
11
config/nvim/.stylua.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
column_width = 80
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferSingle"
|
||||
call_parentheses = "None"
|
||||
collapse_simple_statement = "Always"
|
||||
|
||||
[sort_requires]
|
||||
enabled = true
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
# 💤 LazyVim
|
||||
|
||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||
@@ -1,2 +1,61 @@
|
||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ ivuorinen's Neovim configuration │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
||||
-- ── Install lazylazy ────────────────────────────────────────────────
|
||||
-- https://github.com/folke/lazy.nvim
|
||||
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||
local out = vim.fn.system {
|
||||
'git',
|
||||
'clone',
|
||||
'--filter=blob:none',
|
||||
'--branch=stable',
|
||||
lazyrepo,
|
||||
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
|
||||
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 'autogroups'
|
||||
|
||||
-- ── Load plugins ────────────────────────────────────────────────────
|
||||
require('lazy').setup(
|
||||
-- Automatically load plugins from lua/plugins
|
||||
'plugins',
|
||||
-- Lazy Configuration
|
||||
{
|
||||
checker = {
|
||||
-- Automatically check for updates
|
||||
enabled = true,
|
||||
-- We don't want to be notified about updates
|
||||
notify = false,
|
||||
},
|
||||
change_detection = {
|
||||
-- No need to notify about changes
|
||||
notify = false,
|
||||
},
|
||||
install = {
|
||||
colorscheme = { vim.g.colors_theme },
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.coding.copilot",
|
||||
"lazyvim.plugins.extras.coding.yanky",
|
||||
"lazyvim.plugins.extras.editor.aerial",
|
||||
"lazyvim.plugins.extras.editor.aerial",
|
||||
"lazyvim.plugins.extras.editor.harpoon2",
|
||||
"lazyvim.plugins.extras.editor.leap",
|
||||
"lazyvim.plugins.extras.editor.outline",
|
||||
"lazyvim.plugins.extras.editor.refactoring",
|
||||
"lazyvim.plugins.extras.formatting.black",
|
||||
"lazyvim.plugins.extras.formatting.prettier",
|
||||
"lazyvim.plugins.extras.lang.ansible",
|
||||
"lazyvim.plugins.extras.lang.docker",
|
||||
"lazyvim.plugins.extras.lang.go",
|
||||
"lazyvim.plugins.extras.lang.json",
|
||||
"lazyvim.plugins.extras.lang.markdown",
|
||||
"lazyvim.plugins.extras.lang.php",
|
||||
"lazyvim.plugins.extras.lang.python",
|
||||
"lazyvim.plugins.extras.lang.tailwind",
|
||||
"lazyvim.plugins.extras.lang.terraform",
|
||||
"lazyvim.plugins.extras.lang.typescript",
|
||||
"lazyvim.plugins.extras.lang.vue",
|
||||
"lazyvim.plugins.extras.lang.yaml",
|
||||
"lazyvim.plugins.extras.linting.eslint",
|
||||
"lazyvim.plugins.extras.ui.edgy",
|
||||
"lazyvim.plugins.extras.ui.mini-animate",
|
||||
"lazyvim.plugins.extras.util.dot",
|
||||
"lazyvim.plugins.extras.util.mini-hipatterns"
|
||||
],
|
||||
"news": {
|
||||
"NEWS.md": "6077"
|
||||
},
|
||||
"version": 6
|
||||
}
|
||||
77
config/nvim/lua/autogroups.lua
Normal file
77
config/nvim/lua/autogroups.lua
Normal file
@@ -0,0 +1,77 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ 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.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||
desc = 'Set filetype for SSH config directory',
|
||||
pattern = '*/?.ssh/{config|shared}.d/*',
|
||||
command = 'set filetype=sshconfig',
|
||||
})
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
@@ -1,3 +0,0 @@
|
||||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
-- Add any additional autocmds here
|
||||
@@ -1,22 +0,0 @@
|
||||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
local wk = require("which-key")
|
||||
|
||||
-- ╭──────────────────────────────────────────────────────────╮
|
||||
-- │ Comment box │
|
||||
-- ╰──────────────────────────────────────────────────────────╯
|
||||
wk.register({
|
||||
["<Leader>"] = {
|
||||
b = {
|
||||
c = {
|
||||
name = "□ Comment boxes",
|
||||
b = { "<Cmd>CBccbox<CR>", "Box Title" },
|
||||
t = { "<Cmd>CBllline<CR>", "Titled Line" },
|
||||
l = { "<Cmd>CBline<CR>", "Simple Line" },
|
||||
m = { "<Cmd>CBllbox14<CR>", "Marked" },
|
||||
d = { "<Cmd>CBd<CR>", "Remove a box" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -1,63 +0,0 @@
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
-- bootstrap lazy.nvim
|
||||
-- stylua: ignore
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
import = "lazyvim.plugins",
|
||||
opts = {
|
||||
colorscheme = "tokyonight",
|
||||
},
|
||||
},
|
||||
{
|
||||
"folke/tokyonight.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {
|
||||
style = "night",
|
||||
transparent = true,
|
||||
sidebars = { "qf", "vista_kind", "terminal", "packer" },
|
||||
styles = {
|
||||
sidebars = "transparent",
|
||||
floats = "transparent",
|
||||
},
|
||||
dim_inactive = true,
|
||||
lualine_bold = true,
|
||||
},
|
||||
},
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
-- version = false, -- always use the latest git commit
|
||||
version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
install = { colorscheme = { "tokyonight" } },
|
||||
checker = { enabled = true }, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
-- "matchit",
|
||||
-- "matchparen",
|
||||
-- "netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -1,13 +0,0 @@
|
||||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
||||
|
||||
local opt = vim.opt
|
||||
|
||||
opt.number = true
|
||||
opt.relativenumber = true
|
||||
opt.modeline = true
|
||||
vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" }
|
||||
|
||||
-- The line beneath this is called `modeline`. See `:help modeline`
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
134
config/nvim/lua/options.lua
Normal file
134
config/nvim/lua/options.lua
Normal file
@@ -0,0 +1,134 @@
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ 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.maplocalleader = ' '
|
||||
|
||||
-- Set the colorscheme and variants
|
||||
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
|
||||
vim.g.editorconfig = true
|
||||
|
||||
-- Enable the colorcolumn
|
||||
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
||||
|
||||
-- Enable line numbers and relative line numbers
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
-- Enable mouse mode, can be useful for resizing splits for example!
|
||||
vim.opt.mouse = 'a'
|
||||
|
||||
-- Don't show the mode, since it's already in the status line
|
||||
vim.opt.showmode = false
|
||||
|
||||
-- Sync clipboard between OS and Neovim.
|
||||
-- Schedule the setting after `UiEnter` because it can increase startup-time.
|
||||
-- See `:help 'clipboard'`
|
||||
vim.schedule(function()
|
||||
local c = vim.env.SSH_TTY and '' or 'unnamedplus'
|
||||
vim.opt.clipboard = c
|
||||
end)
|
||||
|
||||
vim.opt.breakindent = true -- Enable break indent
|
||||
vim.opt.smartindent = true -- Insert indents automatically
|
||||
|
||||
-- Save undo history
|
||||
vim.opt.undofile = true
|
||||
|
||||
-- Case-insensitive searching UNLESS \C or one or
|
||||
-- more capital letters in the search term
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
|
||||
-- Keep signcolumn on by default
|
||||
vim.opt.signcolumn = 'yes'
|
||||
|
||||
-- Decrease update time
|
||||
vim.opt.updatetime = 250
|
||||
vim.wo.signcolumn = 'yes'
|
||||
|
||||
-- Decrease mapped sequence wait time
|
||||
-- Displays which-key popup sooner
|
||||
vim.opt.timeoutlen = 250
|
||||
|
||||
-- Configure how new splits should be opened
|
||||
vim.opt.splitright = true
|
||||
vim.opt.splitbelow = true
|
||||
|
||||
-- Sets how neovim will display certain whitespace characters in the editor.
|
||||
-- See `:help 'list'`
|
||||
-- and `:help 'listchars'`
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||
|
||||
-- Preview substitutions live, as you type!
|
||||
vim.opt.inccommand = 'split'
|
||||
|
||||
-- Show which line your cursor is on
|
||||
vim.opt.cursorline = true
|
||||
|
||||
-- Minimal number of screen lines to keep above and below the cursor.
|
||||
vim.opt.scrolloff = 15
|
||||
|
||||
-- Set completeopt to have a better completion experience
|
||||
vim.o.completeopt = 'menuone,noselect'
|
||||
|
||||
-- Fixes Notify opacity issues
|
||||
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
|
||||
235
config/nvim/lua/plugins/cmp.lua
Normal file
235
config/nvim/lua/plugins/cmp.lua
Normal file
@@ -0,0 +1,235 @@
|
||||
-- Auto completion
|
||||
-- https://github.com/hrsh7th/nvim-cmp
|
||||
return {
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
lazy = false,
|
||||
version = false, -- Use the latest version of the plugin
|
||||
event = 'InsertEnter',
|
||||
dependencies = {
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
|
||||
-- ── LuaSnip Dependencies ────────────────────────────────────────────
|
||||
-- Snippet Engine for Neovim written in Lua.
|
||||
-- https://github.com/L3MON4D3/LuaSnip
|
||||
{
|
||||
'L3MON4D3/LuaSnip',
|
||||
version = '*',
|
||||
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',
|
||||
dependencies = {
|
||||
-- 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() require('copilot_cmp').setup() end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
local lspkind = require 'lspkind'
|
||||
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 {
|
||||
formatting = {
|
||||
format = lspkind.cmp_format {
|
||||
mode = 'symbol',
|
||||
max_width = function() return math.floor(0.45 * vim.o.columns) end,
|
||||
show_labelDetails = true,
|
||||
symbol_map = {
|
||||
Copilot = '',
|
||||
Text = '',
|
||||
Constructor = '',
|
||||
},
|
||||
},
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
view = {
|
||||
width = function(_, _) return math.min(80, vim.o.columns) end,
|
||||
-- entries = {
|
||||
-- name = 'custom',
|
||||
-- selection_order = 'near_cursor',
|
||||
-- },
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args) luasnip.lsp_expand(args.body) end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
-- Manually trigger a completion from nvim-cmp.
|
||||
-- Generally you don't need this, because nvim-cmp will display
|
||||
-- completions whenever it has completion options available.
|
||||
['<C-c>'] = cmp.mapping.complete(),
|
||||
['<CR>'] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true,
|
||||
},
|
||||
['<Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() and has_words_before() then
|
||||
cmp.select_next_item { behavior = cmp.SelectBehavior.Select }
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
},
|
||||
sources = {
|
||||
-- function arg popups while typing
|
||||
{ name = 'nvim_lsp_signature_help', group_index = 2 },
|
||||
|
||||
-- Copilot Source
|
||||
{ name = 'copilot', group_index = 2 },
|
||||
-- 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 = '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,
|
||||
},
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
return {
|
||||
-- A better annotation generator. Supports multiple languages and annotation conventions.
|
||||
-- https://github.com/danymat/neogen
|
||||
{
|
||||
"danymat/neogen",
|
||||
dependencies = "nvim-treesitter/nvim-treesitter",
|
||||
version = "*",
|
||||
cmd = "Neogen",
|
||||
opts = {
|
||||
snippet_engine = "luasnip",
|
||||
languages = {
|
||||
lua = { template = { annotation_convention = "ldoc" } },
|
||||
typescript = { template = { annotation_convention = "tsdoc" } },
|
||||
typescriptreact = { template = { annotation_convention = "tsdoc" } },
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>ba",
|
||||
desc = "Annotations / Comments",
|
||||
},
|
||||
{
|
||||
"<leader>baa",
|
||||
function()
|
||||
require("neogen").generate({ type = "current" })
|
||||
end,
|
||||
desc = "Current",
|
||||
},
|
||||
{
|
||||
"<leader>bac",
|
||||
function()
|
||||
require("neogen").generate({ type = "class" })
|
||||
end,
|
||||
desc = "Class",
|
||||
},
|
||||
{
|
||||
"<leader>baf",
|
||||
function()
|
||||
require("neogen").generate({ type = "func" })
|
||||
end,
|
||||
desc = "Function",
|
||||
},
|
||||
{
|
||||
"<leader>bat",
|
||||
function()
|
||||
require("neogen").generate({ type = "type" })
|
||||
end,
|
||||
desc = "Type",
|
||||
},
|
||||
{
|
||||
"<leader>baF",
|
||||
function()
|
||||
require("neogen").generate({ type = "file" })
|
||||
end,
|
||||
desc = "File",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"laytan/tailwind-sorter.nvim",
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-lua/plenary.nvim" },
|
||||
build = "cd formatter && npm i && npm run build",
|
||||
config = true,
|
||||
opts = {
|
||||
on_save_enabled = true,
|
||||
},
|
||||
},
|
||||
-- Describe the regexp under the cursor
|
||||
-- https://github.com/bennypowers/nvim-regexplainer
|
||||
{
|
||||
"bennypowers/nvim-regexplainer",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
opts = {
|
||||
-- automatically show the explainer when the cursor enters a regexp
|
||||
auto = true,
|
||||
},
|
||||
},
|
||||
-- Clarify and beautify your comments using boxes and lines.
|
||||
-- https://github.com/LudoPinelli/comment-box.nvim
|
||||
{ "LudoPinelli/comment-box.nvim", opts = {} },
|
||||
-- Mason
|
||||
-- https://github.com/williamboman/mason.nvim
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"actionlint",
|
||||
"ansible-language-server",
|
||||
"ansible-lint",
|
||||
"bash-language-server",
|
||||
"blade-formatter",
|
||||
"cfn-lint",
|
||||
"codeql",
|
||||
"codespell",
|
||||
"commitlint",
|
||||
"diagnostic-languageserver",
|
||||
"docker-compose-language-service",
|
||||
"dockerfile-language-server",
|
||||
"editorconfig-checker",
|
||||
"fixjson",
|
||||
"flake8",
|
||||
"html-lsp",
|
||||
"jq",
|
||||
"jsonlint",
|
||||
"luacheck",
|
||||
"nginx-language-server",
|
||||
"php-cs-fixer",
|
||||
"phpcs",
|
||||
"phpmd",
|
||||
"semgrep",
|
||||
"shellcheck",
|
||||
"shfmt",
|
||||
"sonarlint-language-server",
|
||||
"stylelint",
|
||||
"stylua",
|
||||
"yamllint",
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- 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 },
|
||||
}
|
||||
9
config/nvim/lua/plugins/comment.lua
Normal file
9
config/nvim/lua/plugins/comment.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
-- Commenting
|
||||
-- "gc" to comment visual regions/lines
|
||||
-- https://github.com/numToStr/Comment.nvim
|
||||
return {
|
||||
'numToStr/Comment.nvim',
|
||||
version = '*',
|
||||
event = { 'BufRead', 'BufNewFile' },
|
||||
opts = {},
|
||||
}
|
||||
86
config/nvim/lua/plugins/conform.lua
Normal file
86
config/nvim/lua/plugins/conform.lua
Normal 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 = {},
|
||||
},
|
||||
}
|
||||
@@ -1,266 +0,0 @@
|
||||
-- since this is just an example spec, don't actually load anything here and return an empty spec
|
||||
-- stylua: ignore
|
||||
if true then return {} end
|
||||
|
||||
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
|
||||
--
|
||||
-- In your plugin files, you can:
|
||||
-- * add extra plugins
|
||||
-- * disable/enabled LazyVim plugins
|
||||
-- * override the configuration of LazyVim plugins
|
||||
return {
|
||||
-- add gruvbox
|
||||
{ "ellisonleao/gruvbox.nvim" },
|
||||
|
||||
-- Configure LazyVim to load gruvbox
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "gruvbox",
|
||||
},
|
||||
},
|
||||
|
||||
-- change trouble config
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
-- opts will be merged with the parent spec
|
||||
opts = { use_diagnostic_signs = true },
|
||||
},
|
||||
|
||||
-- disable trouble
|
||||
{ "folke/trouble.nvim", enabled = false },
|
||||
|
||||
-- add symbols-outline
|
||||
{
|
||||
"simrat39/symbols-outline.nvim",
|
||||
cmd = "SymbolsOutline",
|
||||
keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
|
||||
config = true,
|
||||
},
|
||||
|
||||
-- override nvim-cmp and add cmp-emoji
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = { "hrsh7th/cmp-emoji" },
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
local cmp = require("cmp")
|
||||
opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
|
||||
end,
|
||||
},
|
||||
|
||||
-- change some telescope options and a keymap to browse plugin files
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
keys = {
|
||||
-- add a keymap to browse plugin files
|
||||
-- stylua: ignore
|
||||
{
|
||||
"<leader>fp",
|
||||
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
|
||||
desc = "Find Plugin File",
|
||||
},
|
||||
},
|
||||
-- change some options
|
||||
opts = {
|
||||
defaults = {
|
||||
layout_strategy = "horizontal",
|
||||
layout_config = { prompt_position = "top" },
|
||||
sorting_strategy = "ascending",
|
||||
winblend = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add telescope-fzf-native
|
||||
{
|
||||
"telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-telescope/telescope-fzf-native.nvim",
|
||||
build = "make",
|
||||
config = function()
|
||||
require("telescope").load_extension("fzf")
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
-- add pyright to lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
---@class PluginLspOpts
|
||||
opts = {
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
-- pyright will be automatically installed with mason and loaded with lspconfig
|
||||
pyright = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add tsserver and setup with typescript.nvim instead of lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
"jose-elias-alvarez/typescript.nvim",
|
||||
init = function()
|
||||
require("lazyvim.util.lsp").on_attach(function(_, buffer)
|
||||
-- stylua: ignore
|
||||
vim.keymap.set("n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
|
||||
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
|
||||
end)
|
||||
end,
|
||||
},
|
||||
---@class PluginLspOpts
|
||||
opts = {
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
-- tsserver will be automatically installed with mason and loaded with lspconfig
|
||||
tsserver = {},
|
||||
},
|
||||
-- you can do any additional lsp server setup here
|
||||
-- return true if you don't want this server to be setup with lspconfig
|
||||
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
|
||||
setup = {
|
||||
-- example to setup with typescript.nvim
|
||||
tsserver = function(_, opts)
|
||||
require("typescript").setup({ server = opts })
|
||||
return true
|
||||
end,
|
||||
-- Specify * to use this function as a fallback for any server
|
||||
-- ["*"] = function(server, opts) end,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
|
||||
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
|
||||
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
||||
|
||||
-- add more treesitter parsers
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"html",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"query",
|
||||
"regex",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vim",
|
||||
"yaml",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
|
||||
-- would overwrite `ensure_installed` with the new value.
|
||||
-- If you'd rather extend the default config, use the code below instead:
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
-- add tsx and treesitter
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"tsx",
|
||||
"typescript",
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- the opts function can also be used to change the default opts:
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sections.lualine_x, "😄")
|
||||
end,
|
||||
},
|
||||
|
||||
-- or you can return new options to override all the defaults
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function()
|
||||
return {
|
||||
--[[add your custom lualine config here]]
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- use mini.starter instead of alpha
|
||||
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
|
||||
|
||||
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
|
||||
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||
|
||||
-- add any tools you want to have installed below
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"stylua",
|
||||
"shellcheck",
|
||||
"shfmt",
|
||||
"flake8",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Use <tab> for completion and snippets (supertab)
|
||||
-- first: disable default <tab> and <s-tab> behavior in LuaSnip
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
-- then: setup supertab in cmp
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-emoji",
|
||||
},
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
local has_words_before = function()
|
||||
unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
local cmp = require("cmp")
|
||||
|
||||
opts.mapping = vim.tbl_extend("force", opts.mapping, {
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
|
||||
-- this way you will only jump inside the snippet region
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
42
config/nvim/lua/plugins/flash.lua
Normal file
42
config/nvim/lua/plugins/flash.lua
Normal file
@@ -0,0 +1,42 @@
|
||||
-- Navigate your code with search labels, enhanced
|
||||
-- character motions and Treesitter integration
|
||||
-- https://github.com/folke/flash.nvim
|
||||
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
|
||||
31
config/nvim/lua/plugins/goto-preview.lua
Normal file
31
config/nvim/lua/plugins/goto-preview.lua
Normal file
@@ -0,0 +1,31 @@
|
||||
-- A small Neovim plugin for previewing definitions using floating windows.
|
||||
-- https://github.com/rmagatti/goto-preview
|
||||
return {
|
||||
'rmagatti/goto-preview',
|
||||
dependencies = {
|
||||
{ 'nvim-telescope/telescope.nvim' },
|
||||
},
|
||||
opts = {
|
||||
width = 120, -- Width of the floating window
|
||||
height = 15, -- Height of the floating window
|
||||
border = { '↖', '─', '┐', '│', '┘', '─', '└', '│' }, -- Border characters of the floating window
|
||||
default_mappings = true,
|
||||
debug = false, -- Print debug information
|
||||
opacity = nil, -- 0-100 opacity level of the floating window where 100 is fully transparent.
|
||||
resizing_mappings = false, -- Binds arrow keys to resizing the floating window.
|
||||
post_open_hook = nil, -- A function taking two arguments, a buffer and a window to be ran as a hook.
|
||||
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.
|
||||
dismiss_on_move = false, -- Dismiss the floating window when moving the cursor.
|
||||
force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
|
||||
bufhidden = 'wipe', -- the bufhidden option to set on the floating window. See :h bufhidden
|
||||
stack_floating_preview_windows = true, -- Whether to nest floating windows
|
||||
preview_window_title = { enable = true, position = 'left' },
|
||||
},
|
||||
}
|
||||
47
config/nvim/lua/plugins/harpoon.lua
Normal file
47
config/nvim/lua/plugins/harpoon.lua
Normal file
@@ -0,0 +1,47 @@
|
||||
-- Getting you where you want with the fewest keystrokes.
|
||||
-- https://github.com/ThePrimeagen/harpoon
|
||||
return {
|
||||
'ThePrimeagen/harpoon',
|
||||
branch = 'harpoon2',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
local harpoon = require 'harpoon'
|
||||
harpoon:setup {}
|
||||
|
||||
-- basic telescope configuration
|
||||
local conf = require('telescope.config').values
|
||||
local function toggle_telescope(harpoon_files)
|
||||
local file_paths = {}
|
||||
for _, item in ipairs(harpoon_files.items) do
|
||||
table.insert(file_paths, item.value)
|
||||
end
|
||||
|
||||
require('telescope.pickers')
|
||||
.new({}, {
|
||||
prompt_title = 'Harpoon',
|
||||
finder = require('telescope.finders').new_table {
|
||||
results = file_paths,
|
||||
},
|
||||
previewer = conf.file_previewer {},
|
||||
sorter = conf.generic_sorter {},
|
||||
})
|
||||
:find()
|
||||
end
|
||||
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>hw',
|
||||
function() toggle_telescope(harpoon:list()) end,
|
||||
{ desc = 'Open harpoon window with telescope' }
|
||||
)
|
||||
vim.keymap.set(
|
||||
'n',
|
||||
'<leader>ht',
|
||||
function() harpoon.ui:toggle_quick_menu(harpoon:list()) end,
|
||||
{ desc = 'Open Harpoon Quick menu' }
|
||||
)
|
||||
end,
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"php",
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"phpactor",
|
||||
"intelephense",
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
phpactor = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
optional = true,
|
||||
dependencies = {
|
||||
"williamboman/mason.nvim",
|
||||
opts = function(_, opts)
|
||||
if type(opts.ensure_installed) == "table" then
|
||||
table.insert(opts.ensure_installed, "php-debug-adapter")
|
||||
end
|
||||
end,
|
||||
},
|
||||
opts = function()
|
||||
local dap = require("dap")
|
||||
local path = require("mason-registry").get_package("php-debug-adapter"):get_install_path()
|
||||
dap.adapters.php = {
|
||||
type = "executable",
|
||||
command = "node",
|
||||
args = { path .. "/extension/out/phpDebug.js" },
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
21
config/nvim/lua/plugins/lsp-saga.lua
Normal file
21
config/nvim/lua/plugins/lsp-saga.lua
Normal file
@@ -0,0 +1,21 @@
|
||||
-- improve neovim lsp experience
|
||||
-- https://github.com/nvimdev/lspsaga.nvim
|
||||
-- https://nvimdev.github.io/lspsaga/
|
||||
return {
|
||||
'nvimdev/lspsaga.nvim',
|
||||
event = 'LspAttach',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter', -- optional
|
||||
'nvim-tree/nvim-web-devicons', -- optional
|
||||
},
|
||||
opts = {
|
||||
code_action = {
|
||||
show_server_name = true,
|
||||
},
|
||||
diagnostic = {
|
||||
keys = {
|
||||
quit = { 'q', '<ESC>' },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
239
config/nvim/lua/plugins/lsp.lua
Normal file
239
config/nvim/lua/plugins/lsp.lua
Normal file
@@ -0,0 +1,239 @@
|
||||
-- ── Mason and LSPConfig integration ────────────────────────────────────
|
||||
|
||||
-- ── 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 {
|
||||
{
|
||||
'folke/neoconf.nvim',
|
||||
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',
|
||||
cmd = 'Mason',
|
||||
run = ':MasonUpdate',
|
||||
opts = {
|
||||
PATH = 'prepend',
|
||||
-- Mason servers to install
|
||||
-- See: https://mason-registry.dev/registry/list
|
||||
ensure_installed = {
|
||||
'clang-format',
|
||||
'codespell',
|
||||
'commitlint',
|
||||
'editorconfig-checker',
|
||||
'fixjson',
|
||||
'jsonlint',
|
||||
'luacheck',
|
||||
'phpcbf',
|
||||
'phpcs',
|
||||
'phpmd',
|
||||
'prettier',
|
||||
'shellcheck',
|
||||
'shfmt',
|
||||
'stylua',
|
||||
'yamllint',
|
||||
},
|
||||
},
|
||||
},
|
||||
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
|
||||
-- https://github.com/williamboman/mason-lspconfig.nvim
|
||||
{
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
opts = {
|
||||
-- ── Enable the following language servers ───────────────────────────
|
||||
-- :help lspconfig-all for all pre-configured LSPs
|
||||
ensure_installed = {
|
||||
'bashls',
|
||||
-- 'csharp_ls',
|
||||
'diagnosticls',
|
||||
'gopls',
|
||||
'html',
|
||||
'intelephense',
|
||||
'jsonls',
|
||||
'lua_ls',
|
||||
'tailwindcss',
|
||||
'ts_ls',
|
||||
'vimls',
|
||||
'volar',
|
||||
},
|
||||
automatic_installation = true,
|
||||
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 },
|
||||
|
||||
completion = {
|
||||
callSnippet = 'Replace',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
['jsonls'] = function()
|
||||
require('lspconfig')['jsonls'].setup {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(
|
||||
bufnr,
|
||||
'Format',
|
||||
function(_)
|
||||
require('conform').format {
|
||||
formatters = { 'injected' },
|
||||
async = true,
|
||||
lsp_fallback = true,
|
||||
}
|
||||
end,
|
||||
{ desc = 'Format current buffer with LSP' }
|
||||
)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
json = {
|
||||
schemas = require('schemastore').json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
yaml = {
|
||||
schemaStore = {
|
||||
-- You must disable built-in SchemaStore support if you want to use
|
||||
-- this plugin and its advanced options like `ignore`.
|
||||
enable = false,
|
||||
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
||||
url = '',
|
||||
},
|
||||
schemas = require('schemastore').yaml.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
['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,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- ── Misc ───────────────────────────────────────────────────
|
||||
-- vscode-like pictograms for neovim lsp completion items
|
||||
-- https://github.com/onsails/lspkind-nvim
|
||||
{ 'onsails/lspkind.nvim', opts = {} },
|
||||
-- JSON schemas for Neovim
|
||||
-- https://github.com/b0o/SchemaStore.nvim
|
||||
{ 'b0o/schemastore.nvim' },
|
||||
|
||||
-- ── LSP ────────────────────────────────────────────────────
|
||||
-- Quick start configs for Nvim LSP
|
||||
-- https://github.com/neovim/nvim-lspconfig
|
||||
{ 'neovim/nvim-lspconfig', dependencies = { 'folke/neoconf.nvim' } },
|
||||
|
||||
-- Garbage collector that stops inactive LSP clients to free RAM
|
||||
-- https://github.com/Zeioth/garbage-day.nvim
|
||||
{
|
||||
'zeioth/garbage-day.nvim',
|
||||
dependencies = 'neovim/nvim-lspconfig',
|
||||
event = 'VeryLazy',
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
70
config/nvim/lua/plugins/lualine.lua
Normal file
70
config/nvim/lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,70 @@
|
||||
-- Fancier statusline
|
||||
-- https://github.com/nvim-lualine/lualine.nvim
|
||||
return {
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = {
|
||||
'kyazdani42/nvim-web-devicons',
|
||||
'folke/noice.nvim',
|
||||
},
|
||||
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 {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
component_separators = '|',
|
||||
section_separators = '',
|
||||
},
|
||||
-- Sections
|
||||
-- +-------------------------------------------------+
|
||||
-- | A | B | C X | Y | Z |
|
||||
-- +-------------------------------------------------+
|
||||
sections = {
|
||||
lualine_a = {
|
||||
'mode',
|
||||
},
|
||||
lualine_b = {
|
||||
{ 'b:gitsigns_head', icon = '' },
|
||||
{ 'diff', source = diff_source },
|
||||
'diagnostics',
|
||||
},
|
||||
lualine_c = {
|
||||
'filename',
|
||||
},
|
||||
lualine_x = {
|
||||
'filetype',
|
||||
},
|
||||
lualine_y = {
|
||||
'location',
|
||||
},
|
||||
lualine_z = {
|
||||
{
|
||||
require('noice').api.statusline.mode.get,
|
||||
cond = require('noice').api.statusline.mode.has,
|
||||
},
|
||||
{
|
||||
require('noice').api.status.command.get,
|
||||
cond = require('noice').api.status.command.has,
|
||||
},
|
||||
},
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_c = { 'filename' },
|
||||
lualine_x = { 'location' },
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
61
config/nvim/lua/plugins/mini.lua
Normal file
61
config/nvim/lua/plugins/mini.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
-- https://github.com/echasnovski/mini.nvim
|
||||
-- https://github.com/echasnovski/mini.nvim/tree/main?tab=readme-ov-file#modules
|
||||
return {
|
||||
-- Presets for common options and mappings
|
||||
{ 'echasnovski/mini.basics', version = '*' },
|
||||
|
||||
-- Visualize and work with indent scope
|
||||
-- Replaced lukas-reineke/indent-blankline.nvim
|
||||
{ 'echasnovski/mini.indentscope', version = '*', opts = {} },
|
||||
|
||||
-- Animate common Neovim actions
|
||||
-- Replaced anuvyklack/windows.nvim
|
||||
{ 'echasnovski/mini.animate', version = '*', opts = {} },
|
||||
|
||||
-- Fast and feature-rich surround actions
|
||||
-- Replaced kylechui/nvim-surround
|
||||
{ 'echasnovski/mini.surround', version = '*', opts = {} },
|
||||
|
||||
-- Move lines and blocks of text
|
||||
{ 'echasnovski/mini.move', version = '*', opts = {} },
|
||||
|
||||
-- Jump to next/previous single character
|
||||
{
|
||||
'echasnovski/mini.jump',
|
||||
version = '*',
|
||||
opts = {
|
||||
mappings = {
|
||||
forward = 'f',
|
||||
backward = 'F',
|
||||
forward_till = 't',
|
||||
backward_till = 'T',
|
||||
repeat_jump = ';',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Icons
|
||||
{
|
||||
'echasnovski/mini.icons',
|
||||
opts = {
|
||||
file = {
|
||||
['.keep'] = { glyph = '', hl = 'MiniIconsGrey' },
|
||||
['devcontainer.json'] = { glyph = '', hl = 'MiniIconsAzure' },
|
||||
},
|
||||
filetype = {
|
||||
dotenv = { glyph = '', hl = 'MiniIconsYellow' },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Highlight cursor word and its matches
|
||||
{ 'echasnovski/mini.cursorword', version = '*' },
|
||||
|
||||
-- Split and join arguments, lists, and other sequences
|
||||
-- Replaced Wansmer/treesj
|
||||
{ 'echasnovski/mini.splitjoin', version = '*', opts = {} },
|
||||
|
||||
-- Work with diff hunks
|
||||
-- Replaced lewis6991/gitsigns.nvim
|
||||
{ 'echasnovski/mini.diff', version = '*', opts = {} },
|
||||
}
|
||||
8
config/nvim/lua/plugins/neogen.lua
Normal file
8
config/nvim/lua/plugins/neogen.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
-- A better annotation generator.
|
||||
-- Supports multiple languages and annotation conventions.
|
||||
-- https://github.com/danymat/neogen
|
||||
return {
|
||||
'danymat/neogen',
|
||||
version = '*',
|
||||
opts = { enabled = true, snippet_engine = 'luasnip' },
|
||||
}
|
||||
92
config/nvim/lua/plugins/neotree.lua
Normal file
92
config/nvim/lua/plugins/neotree.lua
Normal file
@@ -0,0 +1,92 @@
|
||||
-- Neo-tree is a Neovim plugin to browse the file system
|
||||
-- https://github.com/nvim-neo-tree/neo-tree.nvim
|
||||
return {
|
||||
'nvim-neo-tree/neo-tree.nvim',
|
||||
version = '*',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
|
||||
'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',
|
||||
version = '2.*',
|
||||
opts = {
|
||||
filter_rules = {
|
||||
include_current_win = false,
|
||||
autoselect_one = true,
|
||||
-- filter using buffer options
|
||||
bo = {
|
||||
-- if the file type is one of following, the window will be ignored
|
||||
filetype = { 'neo-tree', 'neo-tree-popup', 'notify' },
|
||||
-- if the buffer type is one of following, the window will be ignored
|
||||
buftype = { 'terminal', 'quickfix' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
cmd = 'Neotree',
|
||||
opts = {
|
||||
close_if_last_window = true,
|
||||
filesystem = {
|
||||
window = {
|
||||
mappings = {
|
||||
['<Esc>'] = 'close_window',
|
||||
},
|
||||
},
|
||||
filtered_items = {
|
||||
hide_dotfiles = true,
|
||||
hide_gitignored = true,
|
||||
hide_hidden = true, -- only works on Windows for hidden files/directories
|
||||
hide_by_name = {
|
||||
'.DS_Store',
|
||||
'node_modules',
|
||||
},
|
||||
always_show = {
|
||||
'.actrc',
|
||||
'.browserslistrc',
|
||||
'.commitlintrc.json',
|
||||
'.editorconfig',
|
||||
'.env',
|
||||
'.env.example',
|
||||
'.envrc',
|
||||
'.eslintrc.json',
|
||||
'.github',
|
||||
'.gitignore',
|
||||
'.gitkeep',
|
||||
'.ignore',
|
||||
'.markdownlint.json',
|
||||
'.markdownlint.yaml',
|
||||
'.markdownlintignore',
|
||||
'.nvmrc',
|
||||
'.prettierignore',
|
||||
'.prettierrc.js',
|
||||
'.prettierrc.json',
|
||||
'.prettierrc.yaml',
|
||||
'.python-version',
|
||||
'.releaserc.json',
|
||||
'.shellcheckrc',
|
||||
'.simple-git-hooks.json',
|
||||
'.stylelintrc.json',
|
||||
'.stylua.toml',
|
||||
'.yamlignore',
|
||||
'.yamllint.yaml',
|
||||
},
|
||||
always_show_by_pattern = {
|
||||
'.*.json',
|
||||
'.*.toml',
|
||||
'.*.yaml',
|
||||
'.*.yml',
|
||||
'.*rc',
|
||||
'.*rc.*',
|
||||
'.env*',
|
||||
'.prettierrc*',
|
||||
'.stylua.*',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
85
config/nvim/lua/plugins/noice.lua
Normal file
85
config/nvim/lua/plugins/noice.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
-- Highly experimental plugin that completely replaces the UI
|
||||
-- for messages, cmdline and the popupmenu.
|
||||
-- https://github.com/folke/noice.nvim
|
||||
return {
|
||||
'folke/noice.nvim',
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
dependencies = {
|
||||
'MunifTanjim/nui.nvim',
|
||||
-- A fancy, configurable, notification manager for NeoVim
|
||||
-- https://github.com/rcarriga/nvim-notify
|
||||
'rcarriga/nvim-notify',
|
||||
'hrsh7th/nvim-cmp',
|
||||
},
|
||||
opts = {
|
||||
lsp = {
|
||||
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||
override = {
|
||||
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
|
||||
['vim.lsp.util.stylize_markdown'] = true,
|
||||
['cmp.entry.get_documentation'] = true, -- requires hrsh7th/nvim-cmp
|
||||
},
|
||||
},
|
||||
-- you can enable a preset for easier configuration
|
||||
presets = {
|
||||
bottom_search = false, -- use a classic bottom cmdline for search
|
||||
command_palette = true, -- position the cmdline and popupmenu together
|
||||
long_message_to_split = true, -- long messages will be sent to a split
|
||||
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||
},
|
||||
routes = {
|
||||
{
|
||||
filter = {
|
||||
event = 'msg_show',
|
||||
any = {
|
||||
{ find = '%d+L, %d+B' },
|
||||
{ find = '; after #%d+' },
|
||||
{ find = '; before #%d+' },
|
||||
{ find = '%d fewer lines' },
|
||||
{ find = '%d more lines' },
|
||||
},
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
{
|
||||
filter = {
|
||||
event = 'notify',
|
||||
find = 'No information available',
|
||||
},
|
||||
opts = { skip = true },
|
||||
},
|
||||
},
|
||||
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' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
return {
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
eslint = {},
|
||||
tflint = {},
|
||||
},
|
||||
setup = {
|
||||
eslint = function()
|
||||
require("lazyvim.util.lsp").on_attach(function(client)
|
||||
if client.name == "eslint" then
|
||||
client.server_capabilities.documentFormattingProvider = true
|
||||
elseif client.name == "tsserver" then
|
||||
client.server_capabilities.documentFormattingProvider = false
|
||||
end
|
||||
end)
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
return {
|
||||
-- Use <tab> for completion and snippets (supertab)
|
||||
-- first: disable default <tab> and <s-tab> behavior in LuaSnip
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
keys = function()
|
||||
return {}
|
||||
end,
|
||||
},
|
||||
-- then: setup supertab in cmp
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-emoji",
|
||||
},
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
local has_words_before = function()
|
||||
unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
local cmp = require("cmp")
|
||||
|
||||
opts.mapping = vim.tbl_extend("force", opts.mapping, {
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
|
||||
-- this way you will only jump inside the snippet region
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
105
config/nvim/lua/plugins/telescope.lua
Normal file
105
config/nvim/lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,105 @@
|
||||
return {
|
||||
-- Fuzzy Finder (files, lsp, etc)
|
||||
-- https://github.com/nvim-telescope/telescope.nvim
|
||||
'nvim-telescope/telescope.nvim',
|
||||
version = '*',
|
||||
lazy = false,
|
||||
dependencies = {
|
||||
{ 'nvim-lua/plenary.nvim' },
|
||||
{ 'nvim-telescope/telescope-symbols.nvim' },
|
||||
{ 'folke/which-key.nvim' },
|
||||
|
||||
-- A Telescope picker to quickly access configurations
|
||||
-- of plugins managed by lazy.nvim.
|
||||
-- https://github.com/polirritmico/telescope-lazy-plugins.nvim
|
||||
{ 'polirritmico/telescope-lazy-plugins.nvim' },
|
||||
|
||||
-- Neovim plugin. Telescope.nvim extension that adds LuaSnip integration.
|
||||
-- https://github.com/benfowler/telescope-luasnip.nvim
|
||||
{ 'benfowler/telescope-luasnip.nvim' },
|
||||
|
||||
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
|
||||
-- Only load if `make` is available
|
||||
{
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
build = 'make',
|
||||
cond = vim.fn.executable 'make' == 1,
|
||||
},
|
||||
|
||||
-- Import modules with ease
|
||||
-- https://github.com/piersolenski/telescope-import.nvim
|
||||
{ 'piersolenski/telescope-import.nvim' },
|
||||
},
|
||||
config = function()
|
||||
local t = require 'telescope'
|
||||
local a = require 'telescope.actions'
|
||||
local themes = require 'telescope.themes'
|
||||
|
||||
-- [[ Configure Telescope ]]
|
||||
-- See `:help telescope` and `:help telescope.setup()`
|
||||
t.setup {
|
||||
defaults = {
|
||||
layout_strategy = 'horizontal',
|
||||
pickers = {
|
||||
find_files = {
|
||||
theme = 'dropdown',
|
||||
},
|
||||
},
|
||||
mappings = {
|
||||
i = {
|
||||
['<C-u>'] = false,
|
||||
['<C-j>'] = a.move_selection_next,
|
||||
['<C-k>'] = a.move_selection_previous,
|
||||
['<C-d>'] = a.move_selection_previous,
|
||||
},
|
||||
},
|
||||
},
|
||||
extensions = {
|
||||
lazy_plugins = {
|
||||
-- Must be a valid path to the file containing the lazy spec and setup() call.
|
||||
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].*)]],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Load extensions
|
||||
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')
|
||||
|
||||
-- Enable telescope fzf native, if installed
|
||||
pcall(t.load_extension, 'fzf')
|
||||
|
||||
-- [[ Telescope Keymaps ]]
|
||||
-- See `:help telescope.builtin`
|
||||
-- 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,
|
||||
}
|
||||
)
|
||||
end, { desc = '[/] Fuzzily search in current buffer]' })
|
||||
end,
|
||||
}
|
||||
8
config/nvim/lua/plugins/todo-comments.lua
Normal file
8
config/nvim/lua/plugins/todo-comments.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
-- Highlight, list and search todo comments in your projects
|
||||
-- https://github.com/folke/todo-comments.nvim
|
||||
return {
|
||||
'folke/todo-comments.nvim',
|
||||
version = '*',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
opts = {},
|
||||
}
|
||||
@@ -1,23 +1,141 @@
|
||||
-- Highlight, edit, and navigate code
|
||||
-- https://github.com/nvim-treesitter/nvim-treesitter
|
||||
return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"bash",
|
||||
"html",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"query",
|
||||
"regex",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vim",
|
||||
"yaml",
|
||||
})
|
||||
end,
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
version = false, -- last release is way too old and doesn't work on Windows
|
||||
build = function()
|
||||
pcall(require('nvim-treesitter.install').update { with_sync = true })
|
||||
end,
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
'nvim-treesitter/nvim-treesitter-refactor',
|
||||
'nvim-treesitter/nvim-treesitter-context',
|
||||
'JoosepAlviste/nvim-ts-context-commentstring',
|
||||
},
|
||||
config = function()
|
||||
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
|
||||
ensure_installed = {
|
||||
'bash',
|
||||
'c',
|
||||
'css',
|
||||
'diff',
|
||||
'go',
|
||||
'html',
|
||||
'javascript',
|
||||
'jsdoc',
|
||||
'json',
|
||||
'jsonc',
|
||||
'lua',
|
||||
'luadoc',
|
||||
'markdown',
|
||||
'markdown_inline',
|
||||
'python',
|
||||
'query',
|
||||
'regex',
|
||||
'rust',
|
||||
'sql',
|
||||
'terraform',
|
||||
'toml',
|
||||
'tsx',
|
||||
'typescript',
|
||||
'vim',
|
||||
'vimdoc',
|
||||
'xml',
|
||||
'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 },
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<a-space>',
|
||||
node_incremental = '<a-space>',
|
||||
scope_incremental = '<c-s>',
|
||||
node_decremental = '<c-backspace>',
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
['aa'] = '@parameter.outer',
|
||||
['ia'] = '@parameter.inner',
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
['ii'] = '@conditional.inner',
|
||||
['ai'] = '@conditional.outer',
|
||||
['il'] = '@loop.inner',
|
||||
['al'] = '@loop.outer',
|
||||
['at'] = '@comment.outer',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
[']f'] = '@function.outer',
|
||||
[']]'] = '@class.outer',
|
||||
},
|
||||
goto_next_end = {
|
||||
[']F'] = '@function.outer',
|
||||
[']['] = '@class.outer',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['[f'] = '@function.outer',
|
||||
['[['] = '@class.outer',
|
||||
},
|
||||
goto_previous_end = {
|
||||
['[F'] = '@function.outer',
|
||||
['[]'] = '@class.outer',
|
||||
},
|
||||
},
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
['<leader>cn'] = '@parameter.inner',
|
||||
},
|
||||
swap_previous = {
|
||||
['<leader>cP'] = '@parameter.inner',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
|
||||
15
config/nvim/lua/plugins/trouble.lua
Normal file
15
config/nvim/lua/plugins/trouble.lua
Normal file
@@ -0,0 +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 {
|
||||
'folke/trouble.nvim',
|
||||
lazy = false,
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
opts = {
|
||||
auto_preview = true,
|
||||
auto_fold = true,
|
||||
auto_close = true,
|
||||
use_lsp_diagnostic_signs = true,
|
||||
},
|
||||
}
|
||||
130
config/nvim/lua/plugins/ufo.lua
Normal file
130
config/nvim/lua/plugins/ufo.lua
Normal file
@@ -0,0 +1,130 @@
|
||||
-- Not UFO in the sky, but an ultra fold in Neovim.
|
||||
-- https://github.com/kevinhwang91/nvim-ufo/
|
||||
return {
|
||||
'kevinhwang91/nvim-ufo',
|
||||
version = '*',
|
||||
dependencies = {
|
||||
{ 'kevinhwang91/promise-async' },
|
||||
{ 'nvim-treesitter/nvim-treesitter' },
|
||||
{
|
||||
-- Status column plugin that provides a configurable
|
||||
-- 'statuscolumn' and click handlers.
|
||||
-- https://github.com/luukvbaal/statuscol.nvim
|
||||
'luukvbaal/statuscol.nvim',
|
||||
config = function()
|
||||
local builtin = require 'statuscol.builtin'
|
||||
require('statuscol').setup {
|
||||
relculright = true,
|
||||
ft_ignore = {
|
||||
'dashboard',
|
||||
'NvimTree',
|
||||
'help',
|
||||
'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',
|
||||
},
|
||||
{
|
||||
sign = {
|
||||
namespace = { 'diagnostic/signs' },
|
||||
maxwidth = 2,
|
||||
-- auto = true,
|
||||
},
|
||||
click = 'v:lua.ScSa',
|
||||
},
|
||||
{
|
||||
text = { builtin.lnumfunc, ' ' },
|
||||
click = 'v:lua.ScLa',
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require('ufo').setup {
|
||||
open_fold_hl_timeout = 150,
|
||||
close_fold_kinds_for_ft = { 'imports', 'comment' },
|
||||
preview = {
|
||||
win_config = {
|
||||
border = { '', '─', '', '', '', '─', '', '' },
|
||||
winhighlight = 'Normal:Folded',
|
||||
winblend = 0,
|
||||
},
|
||||
mappings = {
|
||||
scrollU = '<C-u>',
|
||||
scrollD = '<C-d>',
|
||||
jumpTop = '[',
|
||||
jumpBot = ']',
|
||||
},
|
||||
},
|
||||
|
||||
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
|
||||
return { 'treesitter', 'indent' }
|
||||
end,
|
||||
|
||||
-- fold_virt_text_handler
|
||||
--
|
||||
-- This handler is called when the fold text is too long to fit in the window.
|
||||
-- It is expected to truncate the text and return a new list of virtual text.
|
||||
--
|
||||
---@param virtText table The current virtual text list.
|
||||
---@param lnum number The line number of the first line in the fold.
|
||||
---@param endLnum number The line number of the last line in the fold.
|
||||
---@param width number The width of the window.
|
||||
---@param truncate function Truncate function
|
||||
---@return table
|
||||
fold_virt_text_handler = function(
|
||||
virtText,
|
||||
lnum,
|
||||
endLnum,
|
||||
width,
|
||||
truncate
|
||||
)
|
||||
local newVirtText = {}
|
||||
local suffix = (' %d '):format(endLnum - lnum)
|
||||
local sufWidth = vim.fn.strdisplaywidth(suffix)
|
||||
local targetWidth = width - sufWidth
|
||||
local curWidth = 0
|
||||
for _, chunk in ipairs(virtText) do
|
||||
local chunkText = chunk[1]
|
||||
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
if targetWidth > curWidth + chunkWidth then
|
||||
table.insert(newVirtText, chunk)
|
||||
else
|
||||
chunkText = truncate(chunkText, targetWidth - curWidth)
|
||||
local hlGroup = chunk[2]
|
||||
table.insert(newVirtText, { chunkText, hlGroup })
|
||||
chunkWidth = vim.fn.strdisplaywidth(chunkText)
|
||||
-- str width returned from truncate() may less than 2nd argument, need padding
|
||||
if curWidth + chunkWidth < targetWidth then
|
||||
suffix = suffix .. (' '):rep(targetWidth - curWidth - chunkWidth)
|
||||
end
|
||||
break
|
||||
end
|
||||
curWidth = curWidth + chunkWidth
|
||||
end
|
||||
table.insert(newVirtText, { suffix, 'MoreMsg' })
|
||||
return newVirtText
|
||||
end,
|
||||
}
|
||||
end,
|
||||
}
|
||||
@@ -1,135 +1,193 @@
|
||||
-- luacheck: globals vim
|
||||
return {
|
||||
-- Neotree configuration
|
||||
-- Theme of choice, tokyonight
|
||||
-- https://github.com/folke/tokyonight.nvim
|
||||
{
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
'folke/tokyonight.nvim',
|
||||
priority = 1000, -- Make sure to load this before all the other start plugins.
|
||||
init = function() vim.cmd.colorscheme(vim.g.colors_theme) end,
|
||||
opts = {
|
||||
filesystem = {
|
||||
filtered_items = {
|
||||
always_show = {
|
||||
".github",
|
||||
".gitignore",
|
||||
".editorconfig",
|
||||
".python-version",
|
||||
".nvmrc",
|
||||
".env",
|
||||
".env.example",
|
||||
transparent = true,
|
||||
},
|
||||
},
|
||||
|
||||
-- Automatic dark mode
|
||||
-- https://github.com/f-person/auto-dark-mode.nvim
|
||||
{
|
||||
'f-person/auto-dark-mode.nvim',
|
||||
opts = {
|
||||
update_interval = 1000,
|
||||
set_dark_mode = function()
|
||||
vim.api.nvim_set_option_value('background', 'dark', {})
|
||||
vim.cmd.colorscheme(vim.g.colors_variant_dark)
|
||||
end,
|
||||
set_light_mode = function()
|
||||
vim.api.nvim_set_option_value('background', 'light', {})
|
||||
vim.cmd.colorscheme(vim.g.colors_variant_light)
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
-- Neovim plugin to animate the cursor with a smear effect in all terminals
|
||||
-- https://github.com/sphamba/smear-cursor.nvim
|
||||
{ 'sphamba/smear-cursor.nvim', opts = {} },
|
||||
|
||||
-- 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
|
||||
-- https://github.com/xiyaowong/nvim-transparent
|
||||
{ 'xiyaowong/nvim-transparent', opts = {} },
|
||||
|
||||
-- Display a character as the colorcolumn
|
||||
-- https://github.com/lukas-reineke/virt-column.nvim
|
||||
{ 'lukas-reineke/virt-column.nvim', opts = {} },
|
||||
|
||||
-- ui components
|
||||
{ 'MunifTanjim/nui.nvim', lazy = true },
|
||||
|
||||
-- Seamless navigation between tmux panes and vim splits
|
||||
-- https://github.com/christoomey/vim-tmux-navigator
|
||||
{
|
||||
'christoomey/vim-tmux-navigator',
|
||||
cmd = {
|
||||
'TmuxNavigateLeft',
|
||||
'TmuxNavigateDown',
|
||||
'TmuxNavigateUp',
|
||||
'TmuxNavigateRight',
|
||||
'TmuxNavigatePrevious',
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Cloak allows you to overlay *'s over defined patterns in defined files.
|
||||
-- https://github.com/laytan/cloak.nvim
|
||||
{ "laytan/cloak.nvim" },
|
||||
-- Not UFO in the sky, but an ultra fold in Neovim.
|
||||
-- https://github.com/kevinhwang91/nvim-ufo/
|
||||
{
|
||||
"kevinhwang91/nvim-ufo",
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
dependencies = {
|
||||
"kevinhwang91/promise-async",
|
||||
{ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" },
|
||||
{
|
||||
"luukvbaal/statuscol.nvim",
|
||||
config = function()
|
||||
local builtin = require("statuscol.builtin")
|
||||
require("statuscol").setup({
|
||||
relculright = true,
|
||||
segments = {
|
||||
{ text = { builtin.foldfunc }, click = "v:lua.ScFa" },
|
||||
{ text = { "%s" }, click = "v:lua.ScSa" },
|
||||
{ text = { builtin.lnumfunc, " " }, click = "v:lua.ScLa" },
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
},
|
||||
init = function()
|
||||
vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
|
||||
vim.o.foldcolumn = "1" -- '0' is not bad
|
||||
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value
|
||||
vim.o.foldlevelstart = 99
|
||||
vim.o.foldenable = true
|
||||
end,
|
||||
'laytan/cloak.nvim',
|
||||
version = '*',
|
||||
opts = {
|
||||
open_fold_hl_timeout = 150,
|
||||
close_fold_kinds_for_ft = { "imports", "comment" },
|
||||
preview = {
|
||||
win_config = {
|
||||
border = { "", "─", "", "", "", "─", "", "" },
|
||||
winhighlight = "Normal:Folded",
|
||||
winblend = 0,
|
||||
},
|
||||
mappings = {
|
||||
scrollU = "<C-u>",
|
||||
scrollD = "<C-d>",
|
||||
jumpTop = "[",
|
||||
jumpBot = "]",
|
||||
enabled = true,
|
||||
cloak_character = '*',
|
||||
-- The applied highlight group (colors) on the cloaking, see `:h highlight`.
|
||||
highlight_group = 'Comment',
|
||||
patterns = {
|
||||
{
|
||||
-- Match any file starting with ".env".
|
||||
-- This can be a table to match multiple file patterns.
|
||||
file_pattern = {
|
||||
'.env*',
|
||||
'wrangler.toml',
|
||||
'.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 = '=.+',
|
||||
},
|
||||
},
|
||||
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
|
||||
return { "treesitter", "indent" }
|
||||
end,
|
||||
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,
|
||||
},
|
||||
},
|
||||
-- Indent guides for Neovim
|
||||
-- https://github.com/lukas-reineke/indent-blankline.nvim
|
||||
{ "lukas-reineke/indent-blankline.nvim" },
|
||||
-- Git integration for buffers
|
||||
-- https://github.com/lewis6991/gitsigns.nvim
|
||||
{ "lewis6991/gitsigns.nvim" },
|
||||
-- Close buffer without messing up with the window.
|
||||
-- https://github.com/famiu/bufdelete.nvim
|
||||
{ "famiu/bufdelete.nvim" },
|
||||
{ 'famiu/bufdelete.nvim' },
|
||||
|
||||
-- Neovim plugin for locking a buffer to a window
|
||||
-- https://github.com/stevearc/stickybuf.nvim
|
||||
{ "stevearc/stickybuf.nvim", opts = {} },
|
||||
-- A pretty window for previewing, navigating and editing your LSP locations
|
||||
-- https://github.com/DNLHC/glance.nvim
|
||||
{ "dnlhc/glance.nvim" },
|
||||
-- Automatically expand width of the current window.
|
||||
-- Maximizes and restore it. And all this with nice animations!
|
||||
-- https://github.com/anuvyklack/windows.nvim
|
||||
{ 'stevearc/stickybuf.nvim', opts = {} },
|
||||
|
||||
-- Describe the regexp under the cursor
|
||||
-- https://github.com/bennypowers/nvim-regexplainer
|
||||
{
|
||||
"anuvyklack/windows.nvim",
|
||||
'bennypowers/nvim-regexplainer',
|
||||
event = 'BufEnter',
|
||||
dependencies = {
|
||||
"anuvyklack/middleclass",
|
||||
"anuvyklack/animation.nvim",
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'MunifTanjim/nui.nvim',
|
||||
},
|
||||
config = function()
|
||||
vim.o.winwidth = 15
|
||||
vim.o.winminwidth = 10
|
||||
vim.o.equalalways = false
|
||||
require("windows").setup()
|
||||
end,
|
||||
opts = {
|
||||
-- automatically show the explainer when the cursor enters a regexp
|
||||
auto = true,
|
||||
},
|
||||
},
|
||||
|
||||
-- Clarify and beautify your comments using boxes and lines.
|
||||
-- https://github.com/LudoPinelli/comment-box.nvim
|
||||
{ 'LudoPinelli/comment-box.nvim', opts = {} },
|
||||
|
||||
-- Plugin to improve viewing Markdown files in Neovim
|
||||
-- https://github.com/MeanderingProgrammer/render-markdown.nvim
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
ft = 'markdown',
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
|
||||
3
config/nvim/lua/plugins/vim-sleuth.lua
Normal file
3
config/nvim/lua/plugins/vim-sleuth.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
-- Detect tabstop and shiftwidth automatically
|
||||
-- https://github.com/tpope/vim-sleuth
|
||||
return { 'tpope/vim-sleuth' }
|
||||
4
config/nvim/lua/plugins/wakatime.lua
Normal file
4
config/nvim/lua/plugins/wakatime.lua
Normal file
@@ -0,0 +1,4 @@
|
||||
-- Vim plugin for automatic time tracking and metrics
|
||||
-- generated from your programming activity.
|
||||
-- https://github.com/wakatime/vim-wakatime
|
||||
return { 'wakatime/vim-wakatime', lazy = false, enabled = true }
|
||||
553
config/nvim/lua/plugins/which-key.lua
Normal file
553
config/nvim/lua/plugins/which-key.lua
Normal file
@@ -0,0 +1,553 @@
|
||||
-- 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: 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: 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',
|
||||
},
|
||||
|
||||
{
|
||||
'<leader>f',
|
||||
'<cmd>Telescope find_files<cr>',
|
||||
desc = 'Find files',
|
||||
},
|
||||
|
||||
-- ── 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>sf',
|
||||
'<cmd>Telescope find_files<cr>',
|
||||
desc = 'Find files',
|
||||
},
|
||||
{
|
||||
'<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>tl',
|
||||
'<cmd>exec &bg=="light"? "set bg=dark" : "set bg=light"<CR>',
|
||||
desc = 'Toggle Light/Dark Theme',
|
||||
},
|
||||
},
|
||||
|
||||
-- ── 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', 'n' },
|
||||
{ '>', '>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,
|
||||
}
|
||||
462
config/nvim/snippets/javascript.json
Normal file
462
config/nvim/snippets/javascript.json
Normal file
@@ -0,0 +1,462 @@
|
||||
{
|
||||
"While ..": {
|
||||
"body": [
|
||||
"while (${1:condition}) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "while .."
|
||||
},
|
||||
"argv (node)": {
|
||||
"body": "const argv = process.argv.slice(2);",
|
||||
"description": "Arguments from the command line. [0] is the node executable path, [1] the path of the file being executed, making [2] the first positional argument.",
|
||||
"prefix": "argv (node)"
|
||||
},
|
||||
"cast (JSDoc)": {
|
||||
"body": "/** @type {${1:string}} */ (${2:bracketedVar})",
|
||||
"prefix": "cast (JSDoc)"
|
||||
},
|
||||
"class (JSDoc) + typedef (JSDoc)": {
|
||||
"body": [
|
||||
"/** @typedef {Object} ${1:name}",
|
||||
" * @property {${2:string}} ${3:prop1}",
|
||||
" */"
|
||||
],
|
||||
"description": "https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#typedef-callback-and-param",
|
||||
"prefix": [
|
||||
"class (JSDoc)",
|
||||
"typedef (JSDoc)"
|
||||
]
|
||||
},
|
||||
"do .. while ..": {
|
||||
"body": [
|
||||
"do {",
|
||||
"\t$0",
|
||||
"} while (${1:condition});"
|
||||
],
|
||||
"prefix": [
|
||||
"do .. while",
|
||||
"repeat until"
|
||||
]
|
||||
},
|
||||
"ec (export const)": {
|
||||
"body": "export const ${1:CONSTANT}",
|
||||
"prefix": "ec (export const)"
|
||||
},
|
||||
"ef (export function)": {
|
||||
"body": [
|
||||
"export function ${1:name}($2) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "ef (export function)"
|
||||
},
|
||||
"filter ( => )": {
|
||||
"body": "filter(${1:item} => ${1:item}$0)",
|
||||
"prefix": "filter ( => )"
|
||||
},
|
||||
"for (i++)": {
|
||||
"body": [
|
||||
"for (let i = 0; i < ${1:array}.length; i++) {",
|
||||
"\tconst ${2:element} = ${1:array}[i];",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "for (i++)"
|
||||
},
|
||||
"for (i--)": {
|
||||
"body": [
|
||||
"for (let i = ${1:array}.length - 1; i >= 0; i--) {",
|
||||
"\tconst ${2:element} = ${1:array}[i];",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "for (i--)"
|
||||
},
|
||||
"for (key, value)": {
|
||||
"body": [
|
||||
"for (const [key, value] of Object.entries(${1:dict})) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "for (key, value)"
|
||||
},
|
||||
"for .. in (key)": {
|
||||
"body": [
|
||||
"for (const ${1:key} in ${2:object}) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "for .. in (key)"
|
||||
},
|
||||
"for .. of (array)": {
|
||||
"body": [
|
||||
"for (const ${1:iterator} of ${2:array}) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "for .. of (array)"
|
||||
},
|
||||
"forEach": {
|
||||
"body": [
|
||||
"forEach(${1:item} => {",
|
||||
"\t$0",
|
||||
"});"
|
||||
],
|
||||
"prefix": "forEach =>"
|
||||
},
|
||||
"function_trad": {
|
||||
"body": [
|
||||
"function ${1:name}() {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "function"
|
||||
},
|
||||
"if ..": {
|
||||
"body": [
|
||||
"if (${1:condition}) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"prefix": "if"
|
||||
},
|
||||
"if .. else": {
|
||||
"body": [
|
||||
"if (${1:condition}) {",
|
||||
"\t$0",
|
||||
"} else {",
|
||||
"\t",
|
||||
"}"
|
||||
],
|
||||
"prefix": "if .. else"
|
||||
},
|
||||
"ignore (biome formatter)": {
|
||||
"body": "// biome-ignore format: ${1:explanation}",
|
||||
"description": "Ignores the next block of code.",
|
||||
"prefix": "ignore (biome formatter)"
|
||||
},
|
||||
"ignore file (TypeScript) + nocheck (TypeScript)": {
|
||||
"body": "// @ts-nocheck",
|
||||
"prefix": [
|
||||
"ignore file (TypeScript)",
|
||||
"nocheck (TypeScript)"
|
||||
]
|
||||
},
|
||||
"map ( () => {} )": {
|
||||
"body": [
|
||||
"map(${1:item} => {",
|
||||
"\t$0",
|
||||
"\treturn;",
|
||||
"})"
|
||||
],
|
||||
"prefix": "map ( () => {} )"
|
||||
},
|
||||
"map ( => )": {
|
||||
"body": "map(${1:item} => ${1:item}$0)",
|
||||
"prefix": "map ( => )"
|
||||
},
|
||||
"reduce()": {
|
||||
"body": [
|
||||
".reduce((acc, ${1:item}) => {",
|
||||
"\t$0",
|
||||
"\treturn acc;",
|
||||
"}, ${2:initialValue})"
|
||||
],
|
||||
"prefix": "reduce()"
|
||||
},
|
||||
"relative date": {
|
||||
"body": [
|
||||
"/**",
|
||||
" * @param {string} absoluteDate string to be converted to a date",
|
||||
" * @return {string} relative date",
|
||||
" */",
|
||||
"function relativeDate(absoluteDate) {",
|
||||
"\tconst deltaSecs = (+new Date() - +new Date(absoluteDate)) / 1000;",
|
||||
"\t/** @type {\"year\"|\"month\"|\"week\"|\"day\"|\"hour\"|\"minute\"|\"second\"} */",
|
||||
"\tlet unit;",
|
||||
"\tlet delta;",
|
||||
"\tif (deltaSecs < 60) {",
|
||||
"\t\tunit = \"second\";",
|
||||
"\t\tdelta = deltaSecs;",
|
||||
"\t} else if (deltaSecs < 60 * 60) {",
|
||||
"\t\tunit = \"minute\";",
|
||||
"\t\tdelta = Math.ceil(deltaSecs / 60);",
|
||||
"\t} else if (deltaSecs < 60 * 60 * 24) {",
|
||||
"\t\tunit = \"hour\";",
|
||||
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60);",
|
||||
"\t} else if (deltaSecs < 60 * 60 * 24 * 7) {",
|
||||
"\t\tunit = \"day\";",
|
||||
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24);",
|
||||
"\t} else if (deltaSecs < 60 * 60 * 24 * 7 * 4) {",
|
||||
"\t\tunit = \"week\";",
|
||||
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24 / 7);",
|
||||
"\t} else if (deltaSecs < 60 * 60 * 24 * 7 * 4 * 12) {",
|
||||
"\t\tunit = \"month\";",
|
||||
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24 / 7 / 4);",
|
||||
"\t} else {",
|
||||
"\t\tunit = \"year\";",
|
||||
"\t\tdelta = Math.ceil(deltaSecs / 60 / 60 / 24 / 7 / 4 / 12);",
|
||||
"\t}",
|
||||
"\tconst formatter = new Intl.RelativeTimeFormat(\"en\", { style: \"long\", numeric: \"auto\" });",
|
||||
"\treturn formatter.format(-delta, unit);",
|
||||
"}"
|
||||
],
|
||||
"prefix": "relative date"
|
||||
},
|
||||
"replace": {
|
||||
"body": "replace(/${1:regexp}/, \"$2\")",
|
||||
"prefix": "replace"
|
||||
},
|
||||
"sort ( () => {} )": {
|
||||
"body": [
|
||||
"sort((a, b) => {",
|
||||
"\treturn ${1:b - a};",
|
||||
"})"
|
||||
],
|
||||
"description": "Sort Array with basic a-b-comparator function",
|
||||
"prefix": "sort ( () => {} )"
|
||||
},
|
||||
"split by \\n": {
|
||||
"body": ".split(\"\\n\")",
|
||||
"prefix": ".split by \\n"
|
||||
},
|
||||
"split by \\r": {
|
||||
"body": ".split(\"\\r\")",
|
||||
"description": "required for output from app.doShellScript()",
|
||||
"prefix": ".split by \\r"
|
||||
},
|
||||
"switch .. case": {
|
||||
"body": [
|
||||
"switch (${1:key}) {",
|
||||
"\tcase ${2:value}:",
|
||||
"\t\t$0",
|
||||
"\t\tbreak;",
|
||||
"\tdefault:",
|
||||
"}"
|
||||
],
|
||||
"prefix": "switch .. case"
|
||||
},
|
||||
"ternary": {
|
||||
"body": "${1:condition} ? ${2:value1} : ${3:value2}",
|
||||
"prefix": "ternary"
|
||||
},
|
||||
"thousand separator": {
|
||||
"body": ".toLocaleString(\"de-DE\")",
|
||||
"description": "insert thousand separator into a digit string",
|
||||
"prefix": "thousand separator"
|
||||
},
|
||||
"timeout + delay": {
|
||||
"body": [
|
||||
"setTimeout(() => {",
|
||||
"\t$0",
|
||||
"}, ${1:timeoutMs});"
|
||||
],
|
||||
"prefix": [
|
||||
"timeout",
|
||||
"delay"
|
||||
]
|
||||
},
|
||||
"today as ISO 8601 string": {
|
||||
"body": "new Date().toISOString().slice(0, 10);",
|
||||
"prefix": "ISO date"
|
||||
},
|
||||
"today's date": {
|
||||
"body": "const today = new Date();",
|
||||
"prefix": [
|
||||
"today",
|
||||
"date"
|
||||
]
|
||||
},
|
||||
"tomorrow's date": {
|
||||
"body": [
|
||||
"const tomorrow = new Date();",
|
||||
"tomorrow.setDate(tomorrow.getDate() + 1);"
|
||||
],
|
||||
"prefix": [
|
||||
"tomorrow",
|
||||
"date"
|
||||
]
|
||||
},
|
||||
"try .. catch": {
|
||||
"body": [
|
||||
"try {",
|
||||
"\t$0",
|
||||
"} catch (_error) {",
|
||||
"\t",
|
||||
"}"
|
||||
],
|
||||
"description": "leading underscore so the variable is ignored by biome when not used.",
|
||||
"prefix": "try .. catch"
|
||||
},
|
||||
"type (JSDoc)": {
|
||||
"body": "/** @type {${1:string}} */",
|
||||
"prefix": "type (JSDoc)"
|
||||
},
|
||||
"type: Record (JSDoc)": {
|
||||
"body": "/** @type {Record<string, string>} */",
|
||||
"prefix": "type: Record (JSDoc)"
|
||||
},
|
||||
"unique items": {
|
||||
"body": "${1:arr} = [...new Set(${2:arr})];",
|
||||
"prefix": "unique items"
|
||||
},
|
||||
"Class": {
|
||||
"prefix": [
|
||||
"clax"
|
||||
],
|
||||
"body": [
|
||||
"export class $1 ${2:extends ${3:Parent} }{",
|
||||
"\tconstructor(${4:props}) {",
|
||||
"\t\tthis.$4 = $4;",
|
||||
"\t}",
|
||||
"",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"description": "Class definition template."
|
||||
},
|
||||
"test": {
|
||||
"prefix": [
|
||||
"it"
|
||||
],
|
||||
"body": [
|
||||
"it('${1:should ${2}}', async () => {",
|
||||
"\t$0",
|
||||
"});"
|
||||
],
|
||||
"description": "Test template"
|
||||
},
|
||||
"method": {
|
||||
"prefix": [
|
||||
"mtd"
|
||||
],
|
||||
"body": [
|
||||
"${1:async ${2:method}}(${3:params}) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"description": "method"
|
||||
},
|
||||
"function": {
|
||||
"prefix": [
|
||||
"fun"
|
||||
],
|
||||
"body": [
|
||||
"${1:async }${2:(${3:params})} => {$0}"
|
||||
],
|
||||
"description": "function"
|
||||
},
|
||||
"const": {
|
||||
"prefix": [
|
||||
"const"
|
||||
],
|
||||
"body": [
|
||||
"const $1 = $0;"
|
||||
],
|
||||
"description": "const"
|
||||
},
|
||||
"let": {
|
||||
"prefix": [
|
||||
"let"
|
||||
],
|
||||
"body": [
|
||||
"let $1 = $0;"
|
||||
],
|
||||
"description": "let"
|
||||
},
|
||||
"Console log": {
|
||||
"prefix": [
|
||||
"cl"
|
||||
],
|
||||
"body": [
|
||||
"console.log($0);"
|
||||
],
|
||||
"description": "Console log"
|
||||
},
|
||||
"Console debug": {
|
||||
"prefix": [
|
||||
"cd"
|
||||
],
|
||||
"body": [
|
||||
"console.debug($0);"
|
||||
],
|
||||
"description": "Console debug"
|
||||
},
|
||||
"Console log all": {
|
||||
"prefix": [
|
||||
"clj"
|
||||
],
|
||||
"body": [
|
||||
"console.log(JSON.stringify($0, null, 2));"
|
||||
],
|
||||
"description": "Console log whole object"
|
||||
},
|
||||
"Console debug all": {
|
||||
"prefix": [
|
||||
"cdj"
|
||||
],
|
||||
"body": [
|
||||
"console.debug(JSON.stringify($0, null, 2));"
|
||||
],
|
||||
"description": "Console debug whole object"
|
||||
},
|
||||
"If": {
|
||||
"prefix": [
|
||||
"if"
|
||||
],
|
||||
"body": [
|
||||
"if (${1:condition}) {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"description": "Console debug whole object"
|
||||
},
|
||||
"If-else": {
|
||||
"prefix": [
|
||||
"ifelse"
|
||||
],
|
||||
"body": [
|
||||
"if (${1:condition}) {",
|
||||
"\t$2",
|
||||
"} else {",
|
||||
"\t$0",
|
||||
"}"
|
||||
],
|
||||
"description": "Console debug whole object"
|
||||
},
|
||||
"docblock": {
|
||||
"prefix": [
|
||||
"/**"
|
||||
],
|
||||
"body": [
|
||||
"/**",
|
||||
" * $0",
|
||||
" */"
|
||||
]
|
||||
},
|
||||
"trycatch": {
|
||||
"prefix": [
|
||||
"tc"
|
||||
],
|
||||
"body": [
|
||||
"try {",
|
||||
"\t$0",
|
||||
"} catch (e) {",
|
||||
"\tthrow e;",
|
||||
"}"
|
||||
],
|
||||
"description": "Try catch block"
|
||||
},
|
||||
"Describe test": {
|
||||
"prefix": [
|
||||
"desc"
|
||||
],
|
||||
"body": [
|
||||
"describe('${1}', () => {",
|
||||
"\t$0",
|
||||
"})"
|
||||
],
|
||||
"description": "Describe test"
|
||||
}
|
||||
}
|
||||
262
config/nvim/snippets/lua.json
Normal file
262
config/nvim/snippets/lua.json
Normal file
@@ -0,0 +1,262 @@
|
||||
{
|
||||
"@class (LuaDoc)": {
|
||||
"body": [
|
||||
"---@class (exact) ${1:class_name}",
|
||||
"---@field ${2:field_name} string"
|
||||
],
|
||||
"description": "https://github.com/LuaLS/lua-language-server/wiki/Annotations#class",
|
||||
"prefix": "@class (LuaDoc)"
|
||||
},
|
||||
"@type (LuaDoc)": {
|
||||
"body": "---@type ${1:string}",
|
||||
"prefix": "@type (LuaDoc)"
|
||||
},
|
||||
"Record (type)": {
|
||||
"body": "---@type table<string, string>",
|
||||
"prefix": "Record (type)"
|
||||
},
|
||||
"count occurrences in string": {
|
||||
"body": "local _, count = ${1:str}:gsub(\"${2:find}\", \"\")",
|
||||
"prefix": "count occurrences in string"
|
||||
},
|
||||
"export module": {
|
||||
"body": [
|
||||
"local M = {}",
|
||||
"--------------------------------------------------------------------------------",
|
||||
"",
|
||||
"$0--------------------------------------------------------------------------------",
|
||||
"return M"
|
||||
],
|
||||
"prefix": "export module"
|
||||
},
|
||||
"find all in string": {
|
||||
"body": [
|
||||
"local ${1:matches} = {}",
|
||||
"for match in ${2:str}:gmatch(${3:pattern}) do",
|
||||
"\ttable.insert(${1:matches}, match)",
|
||||
"end"
|
||||
],
|
||||
"prefix": "find all in string"
|
||||
},
|
||||
"for each (list)": {
|
||||
"body": [
|
||||
"for _, ${1:v} in pairs(${2:table}) do",
|
||||
"\t$0",
|
||||
"end"
|
||||
],
|
||||
"prefix": "for each (list)"
|
||||
},
|
||||
"for each line (of file)": {
|
||||
"body": [
|
||||
"for line in io.lines(${1:filepath}) do",
|
||||
"\t$0",
|
||||
"end"
|
||||
],
|
||||
"prefix": [
|
||||
"for each line (file)",
|
||||
"read file (as lines)"
|
||||
]
|
||||
},
|
||||
"home": {
|
||||
"body": "os.getenv(\"HOME\")",
|
||||
"prefix": "home"
|
||||
},
|
||||
"if .. then .. else": {
|
||||
"body": [
|
||||
"if ${1:true} then",
|
||||
"\t$2",
|
||||
"else",
|
||||
"\t$0",
|
||||
"end"
|
||||
],
|
||||
"filetype": "lua",
|
||||
"prefix": "if .. then .. else"
|
||||
},
|
||||
"nodiscard": {
|
||||
"body": "---@nodiscard",
|
||||
"description": "Luadoc Annotation that a function's return value should not be discarded. https://github.com/LuaLS/lua-language-server/wiki/Annotations#nodiscard",
|
||||
"prefix": "nodiscard"
|
||||
},
|
||||
"path of this file": {
|
||||
"body": "local pathOfThisFile = debug.getinfo(1).source:sub(2)",
|
||||
"prefix": "path of this file"
|
||||
},
|
||||
"path separator (os-independent)": {
|
||||
"body": "local osPathSep = package.config:sub(1, 1)",
|
||||
"prefix": "path separator (os-independent)"
|
||||
},
|
||||
"pcall": {
|
||||
"body": [
|
||||
"local success = pcall(${1:func})",
|
||||
"if not success then",
|
||||
"\t$0",
|
||||
"\treturn",
|
||||
"end"
|
||||
],
|
||||
"prefix": [
|
||||
"try",
|
||||
"pcall"
|
||||
]
|
||||
},
|
||||
"read file": {
|
||||
"body": [
|
||||
"---@param filePath string",
|
||||
"---@return string? -- content or error message",
|
||||
"---@return boolean success",
|
||||
"local function readFile(filePath)",
|
||||
"\tlocal file, err = io.open(filePath, \"r\")",
|
||||
"\tif not file then return err, false end",
|
||||
"\tlocal content = file:read(\"*a\")",
|
||||
"\tfile:close()",
|
||||
"\treturn content, true",
|
||||
"end"
|
||||
],
|
||||
"prefix": "read file"
|
||||
},
|
||||
"redirect (metatable __index)": {
|
||||
"body": [
|
||||
"setmetatable(M, {",
|
||||
"\t__index = function(_, key)",
|
||||
"\t\treturn function(...)",
|
||||
"\t\t\trequire(${1:moduleToRedirectTo})[key](...)",
|
||||
"\t\tend",
|
||||
"\tend,",
|
||||
"})"
|
||||
],
|
||||
"prefix": "redirect (metatable __index)"
|
||||
},
|
||||
"round number": {
|
||||
"body": "local roundedNum = tonumber(string.format(\"%.${1:decimals}f\", exactNum))",
|
||||
"prefix": "round number"
|
||||
},
|
||||
"safe require": {
|
||||
"body": [
|
||||
"local ok, ${1:module} = require(\"${1:module}\")",
|
||||
"if not (ok and ${1:module}) then return end",
|
||||
"${1:module}.$0"
|
||||
],
|
||||
"prefix": "safe require"
|
||||
},
|
||||
"sort (table)": {
|
||||
"body": "table.sort(${1:table}, function(a, b) return ${2:a} > ${3:b} end)",
|
||||
"prefix": "sort (table)"
|
||||
},
|
||||
"split (gmatch)": {
|
||||
"body": [
|
||||
"local acc = {}",
|
||||
"for part in ${1:str}:gmatch(\"(.-)\" .. ${2:delimiter}) do",
|
||||
"\ttable.insert(acc, part)",
|
||||
"end"
|
||||
],
|
||||
"filetype": "lua",
|
||||
"prefix": "split (gmatch)"
|
||||
},
|
||||
"ternary": {
|
||||
"body": "${1:condition} and ${2:value1} or ${3:value2}",
|
||||
"prefix": "ternary"
|
||||
},
|
||||
"trim trailing line break": {
|
||||
"body": ":gsub(\"\\n$\", \"\")",
|
||||
"prefix": "trim"
|
||||
},
|
||||
"write file": {
|
||||
"body": [
|
||||
"---@param str string",
|
||||
"---@param filePath string",
|
||||
"---@return string|nil -- error message",
|
||||
"local function overwriteFile(filePath, str)",
|
||||
"\tlocal file, _ = io.open(filePath, \"w\")",
|
||||
"\tif not file then return end",
|
||||
"\tfile:write(str)",
|
||||
"\tfile:close()",
|
||||
"end"
|
||||
],
|
||||
"description": "Overwriting file, for appending use `a` instead of `w`.",
|
||||
"prefix": "write file"
|
||||
},
|
||||
"Create Auto Command": {
|
||||
"prefix": "autocmd",
|
||||
"body": [
|
||||
"vim.api.nvim_create_autocmd(\"${1:event}\", {",
|
||||
" group = vim.api.nvim_create_augroup(\"${2:group}\", { clear = true }),",
|
||||
" callback = function(ev)",
|
||||
" ${0}",
|
||||
" end",
|
||||
"})"
|
||||
]
|
||||
},
|
||||
"Create Auto Command Group": {
|
||||
"prefix": "augroup",
|
||||
"body": [
|
||||
"vim.api.nvim_create_augroup(\"${1:group}\", { clear = true })$0"
|
||||
]
|
||||
},
|
||||
"Current Win": {
|
||||
"prefix": "win",
|
||||
"body": "local win = vim.api.nvim_get_current_win()\n$0"
|
||||
},
|
||||
"Current Buf": {
|
||||
"prefix": "buf",
|
||||
"body": "local buf = vim.api.nvim_get_current_buf()\n$0"
|
||||
},
|
||||
"Buf Valid": {
|
||||
"prefix": "bufvalid",
|
||||
"body": "vim.api.nvim_buf_is_valid(${1:buf})"
|
||||
},
|
||||
"Win Valid": {
|
||||
"prefix": "winvalid",
|
||||
"body": "vim.api.nvim_win_is_valid(${1:win})"
|
||||
},
|
||||
"Win Call": {
|
||||
"prefix": "wincall",
|
||||
"body": [
|
||||
"vim.api.nvim_win_call(${1:win}, function(win)",
|
||||
" ${0}",
|
||||
"end)"
|
||||
]
|
||||
},
|
||||
"Buf Call": {
|
||||
"prefix": "bufcall",
|
||||
"body": [
|
||||
"vim.api.nvim_buf_call(${1:buf}, function(buf)",
|
||||
" ${0}",
|
||||
"end)"
|
||||
]
|
||||
},
|
||||
"Schedule": {
|
||||
"prefix": "schedule",
|
||||
"body": [
|
||||
"vim.schedule(function()",
|
||||
" ${0}",
|
||||
"end)"
|
||||
]
|
||||
},
|
||||
"Table Deep Extend": {
|
||||
"prefix": "deepextend",
|
||||
"body": "vim.tbl_deep_extend(\"force\", ${1:table}, ${2:table})$0"
|
||||
},
|
||||
"Table Filter": {
|
||||
"prefix": "filter",
|
||||
"body": [
|
||||
"vim.tbl_filter(function()",
|
||||
" $0",
|
||||
"end, ${1:table})"
|
||||
]
|
||||
},
|
||||
"Table Map": {
|
||||
"prefix": "map",
|
||||
"body": [
|
||||
"vim.tbl_map(function()",
|
||||
" $0",
|
||||
"end, ${1:table})"
|
||||
]
|
||||
},
|
||||
"Table Values": {
|
||||
"prefix": "values",
|
||||
"body": "vim.tbl_values(${1:table})"
|
||||
},
|
||||
"Table Keys": {
|
||||
"prefix": "keys",
|
||||
"body": "vim.tbl_keys(${1:table})"
|
||||
}
|
||||
}
|
||||
133
config/nvim/snippets/markdown.json
Normal file
133
config/nvim/snippets/markdown.json
Normal file
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"Misc": {
|
||||
"body": "Miscellaneous",
|
||||
"prefix": "Misc"
|
||||
},
|
||||
"bash (Codeblock)": {
|
||||
"body": [
|
||||
"```bash",
|
||||
"$CLIPBOARD$0",
|
||||
"```"
|
||||
],
|
||||
"prefix": "bash (Codeblock)"
|
||||
},
|
||||
"caution (callout)": {
|
||||
"body": [
|
||||
"> [!CAUTION]",
|
||||
"> $0"
|
||||
],
|
||||
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||
"prefix": "caution (callout)"
|
||||
},
|
||||
"details & summary": {
|
||||
"body": [
|
||||
"<details>",
|
||||
"<summary>${1:Text}</summary>",
|
||||
"$0",
|
||||
"</details>"
|
||||
],
|
||||
"description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details",
|
||||
"prefix": [
|
||||
"toggle / fold",
|
||||
"details & summary"
|
||||
]
|
||||
},
|
||||
"ignore file (ltex)": {
|
||||
"body": "<!-- LTeX: enabled=false -->",
|
||||
"prefix": "ignore file (ltex)"
|
||||
},
|
||||
"image": {
|
||||
"body": "<img src=\"${1:image_path}\" alt=\"${2:alt text}\" width=\"${3:50%}\">",
|
||||
"description": "HTML syntax for images used to display images with reduced size",
|
||||
"prefix": "image"
|
||||
},
|
||||
"important (callout)": {
|
||||
"body": [
|
||||
"> [!IMPORTANT]",
|
||||
"> $0"
|
||||
],
|
||||
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||
"prefix": "important (callout)"
|
||||
},
|
||||
"insert table 2x2": {
|
||||
"body": [
|
||||
"| ${1:Column1} | ${2:Column2} |",
|
||||
"|--------------- | -------------- |",
|
||||
"| ${3:Item1.1} | ${4:Item2.1} |"
|
||||
],
|
||||
"prefix": "table (2x2)"
|
||||
},
|
||||
"insert toc": {
|
||||
"body": [
|
||||
"## Table of Content",
|
||||
"",
|
||||
"<!-- toc -->"
|
||||
],
|
||||
"description": "https://github.com/jonschlinkert/markdown-toc#tocinsert",
|
||||
"prefix": "insert toc"
|
||||
},
|
||||
"js (Codeblock)": {
|
||||
"body": [
|
||||
"```js",
|
||||
"$CLIPBOARD$0",
|
||||
"```"
|
||||
],
|
||||
"prefix": "js (Codeblock)"
|
||||
},
|
||||
"kbd": {
|
||||
"body": "<kbd>$0</kbd>",
|
||||
"description": "HTML tag for keys",
|
||||
"prefix": "kbd"
|
||||
},
|
||||
"lua (Codeblock)": {
|
||||
"body": [
|
||||
"```lua",
|
||||
"$CLIPBOARD$0",
|
||||
"```"
|
||||
],
|
||||
"prefix": "lua (Codeblock)"
|
||||
},
|
||||
"note (GitHub callout)": {
|
||||
"body": [
|
||||
"> [!NOTE]",
|
||||
"> $0"
|
||||
],
|
||||
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||
"prefix": [
|
||||
"info (callout)",
|
||||
"note (callout)"
|
||||
]
|
||||
},
|
||||
"py (Codeblock)": {
|
||||
"body": [
|
||||
"```py",
|
||||
"$CLIPBOARD$0",
|
||||
"```"
|
||||
],
|
||||
"prefix": "py (Codeblock)"
|
||||
},
|
||||
"tip (callout)": {
|
||||
"body": [
|
||||
"> [!TIP]",
|
||||
"> $0"
|
||||
],
|
||||
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||
"prefix": "tip (callout)"
|
||||
},
|
||||
"ts (Codeblock)": {
|
||||
"body": [
|
||||
"```ts",
|
||||
"$CLIPBOARD$0",
|
||||
"```"
|
||||
],
|
||||
"prefix": "ts (Codeblock)"
|
||||
},
|
||||
"warning (callout)": {
|
||||
"body": [
|
||||
"> [!WARNING]",
|
||||
"> $0"
|
||||
],
|
||||
"description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts",
|
||||
"prefix": "warning (callout)"
|
||||
}
|
||||
}
|
||||
165
config/nvim/snippets/php.snippets
Normal file
165
config/nvim/snippets/php.snippets
Normal file
@@ -0,0 +1,165 @@
|
||||
snippet php "php"
|
||||
<?php
|
||||
${1}
|
||||
|
||||
snippet ec "ec"
|
||||
echo '${1}'${2};
|
||||
|
||||
snippet vd "vd"
|
||||
var_dump(${1});
|
||||
|
||||
# Includes and requires
|
||||
|
||||
snippet inc "inc"
|
||||
include_once '${1}';${2}
|
||||
|
||||
snippet req "req"
|
||||
require_once '${1}';${2}
|
||||
|
||||
# define(...)
|
||||
|
||||
snippet def "def"
|
||||
define('${1}'${2});${3}
|
||||
|
||||
# Doxygen comments
|
||||
|
||||
snippet d "/**"
|
||||
/**
|
||||
* ${1}
|
||||
*/${2}
|
||||
|
||||
snippet code "code"
|
||||
* @code
|
||||
* ${1}
|
||||
* @endcode
|
||||
|
||||
# Class
|
||||
|
||||
snippet cl "cl"
|
||||
class ${1} {
|
||||
${2}
|
||||
function ${3:__construct}(${4}) {
|
||||
${5}
|
||||
}
|
||||
}
|
||||
|
||||
snippet pubf "public method"
|
||||
public function ${1}(${2}): $3
|
||||
{
|
||||
${0}
|
||||
}
|
||||
|
||||
snippet prof "protected method"
|
||||
protected function ${1}(${2}): $3
|
||||
{
|
||||
${0}
|
||||
}
|
||||
|
||||
snippet prif "private method"
|
||||
protected function ${1}(${2}): $3
|
||||
{
|
||||
${0}
|
||||
}
|
||||
|
||||
snippet testt "test method (prefix)"
|
||||
public function test_${1}()
|
||||
{
|
||||
${0}
|
||||
}
|
||||
|
||||
snippet testa "test method (annotation)"
|
||||
/** @test */
|
||||
public function ${1}()
|
||||
{
|
||||
${0}
|
||||
}
|
||||
|
||||
# $this->
|
||||
|
||||
snippet . "$this->" i
|
||||
$this->
|
||||
|
||||
# If statement
|
||||
|
||||
snippet if "if"
|
||||
if (${1}) {
|
||||
${2}
|
||||
}
|
||||
|
||||
snippet ife "ife"
|
||||
if (${1}) {
|
||||
${2}
|
||||
} else {
|
||||
${3}
|
||||
}
|
||||
|
||||
snippet elif "elif"
|
||||
else if (${1}) {
|
||||
${2}
|
||||
}
|
||||
|
||||
snippet el "el"
|
||||
else {
|
||||
${1}
|
||||
}
|
||||
|
||||
# Switch
|
||||
|
||||
snippet sw "sw"
|
||||
switch (${1}) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
snippet case "case"
|
||||
case '${1}':
|
||||
${2}
|
||||
break;${3}
|
||||
|
||||
# Do-while loop
|
||||
|
||||
snippet do "do"
|
||||
do {
|
||||
${2}
|
||||
} while (${1});
|
||||
|
||||
# While loop
|
||||
|
||||
snippet wh "wh"
|
||||
while (${1}) {
|
||||
${2}
|
||||
}
|
||||
|
||||
# For loop
|
||||
|
||||
snippet for "for"
|
||||
for (${1}; ${2}; ${3}) {
|
||||
${4}
|
||||
}
|
||||
|
||||
snippet fore "fore"
|
||||
foreach (${1} as ${2}) {
|
||||
${3}
|
||||
}
|
||||
|
||||
# Functions and methods
|
||||
|
||||
snippet fun "fun"
|
||||
function ${1}(${2}) {
|
||||
${3}
|
||||
}
|
||||
|
||||
snippet met "met"
|
||||
${1}function ${2}(${3}) {
|
||||
${4}
|
||||
}
|
||||
|
||||
# Return
|
||||
|
||||
snippet r "return"
|
||||
return ${1}
|
||||
|
||||
# Todos
|
||||
|
||||
snippet todo "todo"
|
||||
// TODO ${1}
|
||||
334
config/nvim/snippets/sh.json
Normal file
334
config/nvim/snippets/sh.json
Normal file
@@ -0,0 +1,334 @@
|
||||
{
|
||||
"PATH (export)": {
|
||||
"body": "export PATH=/usr/local/lib:/usr/local/bin:/opt/homebrew/bin/:\\$PATH",
|
||||
"description": "Extends PATH in a way that homebrew installed CLIs are recognized in ARM and Intel Macs.",
|
||||
"prefix": "PATH (export)"
|
||||
},
|
||||
"awk (get field)": {
|
||||
"body": "awk '{ print $${1:1} }'",
|
||||
"description": "Retrieve a field from the piped in string, with whitespace as the default field delimiter. `$n` means that the nth field will be used.",
|
||||
"prefix": "awk (field)"
|
||||
},
|
||||
"check device name": {
|
||||
"body": "scutil --get ComputerName | grep -q \"$0\"",
|
||||
"prefix": "device name"
|
||||
},
|
||||
"check if dark mode (macOS)": {
|
||||
"body": "defaults read -g AppleInterfaceStyle &>/dev/null; && echo 'isDark'",
|
||||
"prefix": "check if dark mode (macOS)"
|
||||
},
|
||||
"check if in git repo": {
|
||||
"body": "if ! git rev-parse --is-inside-work-tree &>/dev/null ; then print \"\\e[0;33mfile is not ins a git repository.\\e[0m\" && return 1 ; fi",
|
||||
"prefix": "check if in git repo"
|
||||
},
|
||||
"check if installed": {
|
||||
"body": [
|
||||
"if [[ ! -x \"\\$(command -v ${1:cli})\" ]]; then print \"\\e[0;33m${1:cli} not installed.\\e[0m\" && return 1; fi",
|
||||
"$0"
|
||||
],
|
||||
"description": "https://stackoverflow.com/a/26759734/22114136",
|
||||
"prefix": "check if installed"
|
||||
},
|
||||
"check if on macOS": {
|
||||
"body": "[[ \"\\$OSTYPE\" =~ \"darwin\" ]]",
|
||||
"prefix": "check if on macOS"
|
||||
},
|
||||
"check if process is running": {
|
||||
"body": "pgrep -xq \"${1:process}\" && $0",
|
||||
"prefix": "check if process is running"
|
||||
},
|
||||
"check if sudo user": {
|
||||
"body": "sudo -nv && ${1:some_sudo_action}",
|
||||
"prefix": "check if sudo user"
|
||||
},
|
||||
"confirmation prompt": {
|
||||
"body": [
|
||||
"# confirmation prompt",
|
||||
"print \"\\e[1;34m$0Proceed? (y/n)\\e[0m\"",
|
||||
"read -rk pressed",
|
||||
"echo",
|
||||
"if [[ \"\\$pressed\" != \"y\" ]]; then",
|
||||
"\techo \"Aborted.\"",
|
||||
"\treturn 1",
|
||||
"fi",
|
||||
"echo"
|
||||
],
|
||||
"prefix": "confirmation prompt"
|
||||
},
|
||||
"default value": {
|
||||
"body": "\\${${1:var}:-${2:default_value}}",
|
||||
"prefix": "default value"
|
||||
},
|
||||
"directory of script": {
|
||||
"body": "\"$(dirname \"$(readlink -f \"\\$0\")\")\"",
|
||||
"prefix": "directory of this script"
|
||||
},
|
||||
"elseif": {
|
||||
"body": "elif [[ ${1:condition} ]]; then\n\t${0}",
|
||||
"description": "Add an elseif to an if statement.",
|
||||
"prefix": "elseif"
|
||||
},
|
||||
"extension": {
|
||||
"body": "ext=${${1:file_name}##*.}",
|
||||
"prefix": "get extension"
|
||||
},
|
||||
"filename": {
|
||||
"body": "file_name=$(basename \"$${1:file_path}\")",
|
||||
"prefix": "filename"
|
||||
},
|
||||
"filename w/o ext": {
|
||||
"body": "${1:file_name}=${${1:file_name}%.*}",
|
||||
"prefix": "filename w/o ext"
|
||||
},
|
||||
"find & xargs": {
|
||||
"body": "find . -print0 | xargs -0 -I '{}'",
|
||||
"prefix": "find & xargs"
|
||||
},
|
||||
"find -exec": {
|
||||
"body": "find . $0 -exec open '{}' \\;",
|
||||
"prefix": "find -exec"
|
||||
},
|
||||
"for each file": {
|
||||
"body": [
|
||||
"for filename in *.txt; do",
|
||||
"\techo \"\\$filename\"",
|
||||
"done"
|
||||
],
|
||||
"prefix": "for each file"
|
||||
},
|
||||
"for each line (read)": {
|
||||
"body": [
|
||||
"while read -r line; do",
|
||||
"\techo \"\\$line\"$0",
|
||||
"done < \"\\$${1:input_file}\""
|
||||
],
|
||||
"prefix": "for each line (read)"
|
||||
},
|
||||
"for each line (variable)": {
|
||||
"body": [
|
||||
"echo \"\\$lines\" | while read -r line; do",
|
||||
"\techo \"\\$line\"",
|
||||
"done"
|
||||
],
|
||||
"prefix": "for each line (variable)"
|
||||
},
|
||||
"for i ..": {
|
||||
"body": [
|
||||
"for ((i = 0; i <= ${1:length}; i++)); do",
|
||||
" echo \\$i$0",
|
||||
"done"
|
||||
],
|
||||
"prefix": "for i .."
|
||||
},
|
||||
"function": {
|
||||
"body": "function ${1:name} {\n\t${0}\n}",
|
||||
"prefix": "function"
|
||||
},
|
||||
"get nth line from string": {
|
||||
"body": "line=$(echo \"\\$${1:str}\" | sed -n \"${2:n}p\")",
|
||||
"prefix": "get nth line from string"
|
||||
},
|
||||
"i++": {
|
||||
"body": "((${1:i}++))",
|
||||
"prefix": "i++"
|
||||
},
|
||||
"i--": {
|
||||
"body": "((${1:i}--))",
|
||||
"prefix": "i--"
|
||||
},
|
||||
"if (short)": {
|
||||
"body": "[[ \"\\$${1:var}\" ]] && $0",
|
||||
"prefix": "if (short)"
|
||||
},
|
||||
"if .. then": {
|
||||
"body": [
|
||||
"if [[ \"\\$${1:var}\" ]]; then",
|
||||
"\t$0",
|
||||
"fi"
|
||||
],
|
||||
"prefix": "if .. then"
|
||||
},
|
||||
"if .. then .. else": {
|
||||
"body": [
|
||||
"if [[ \"$${1:cond}\" ]]; then",
|
||||
"\t$0",
|
||||
"else",
|
||||
"\t",
|
||||
"fi"
|
||||
],
|
||||
"prefix": "if .. then .. else"
|
||||
},
|
||||
"input (stdin or $1)": {
|
||||
"body": [
|
||||
"if [[ $# -eq 0 ]]; then",
|
||||
"\tinput=$(< /dev/stdin)",
|
||||
"else",
|
||||
"\tinput=\"$1\"",
|
||||
"fi"
|
||||
],
|
||||
"description": "reads either from STDIN or $1. stdin may have unescaped newlines, which have to be removed, e.g. via `tr -d '\n'`.",
|
||||
"prefix": "input (stdin or $1)"
|
||||
},
|
||||
"notify (msg)": {
|
||||
"body": "osascript -e 'display notification \"\" with title \"${1:msg}\"'",
|
||||
"prefix": "notify (msg)"
|
||||
},
|
||||
"notify (var)": {
|
||||
"body": "osascript -e \"display notification \\\"\\\" with title \\\"$${1:var}\\\"\"",
|
||||
"prefix": "notify (var)"
|
||||
},
|
||||
"null (pipe)": {
|
||||
"body": "&> /dev/null",
|
||||
"prefix": "null (pipe)"
|
||||
},
|
||||
"osascript jxa (run script)": {
|
||||
"body": "osascript -l JavaScript \"${1:file}\"",
|
||||
"prefix": [
|
||||
"jxa (run script)",
|
||||
"osascript -l JavaScript"
|
||||
]
|
||||
},
|
||||
"plist: extract key": {
|
||||
"body": "plutil -extract name.childkey xml1 -o - example.plist | sed -n 4p | cut -d'>' -f2 | cut -d'<' -f1",
|
||||
"prefix": "plist: extract key"
|
||||
},
|
||||
"print in blue": {
|
||||
"body": "print \"\\e[1;34m$0\\e[0m\"",
|
||||
"prefix": "print in blue"
|
||||
},
|
||||
"progress bar": {
|
||||
"body": [
|
||||
"for _ in {1..100}; do",
|
||||
"\tprintf \"🬋\"",
|
||||
"\tsleep 0.5",
|
||||
"done"
|
||||
],
|
||||
"prefix": "progress bar"
|
||||
},
|
||||
"quicklook": {
|
||||
"body": "qlmanage -p \"${1:filepath}\"",
|
||||
"description": "QuickLook the file. MacOS only.",
|
||||
"prefix": "quicklook"
|
||||
},
|
||||
"redirect to stderr": {
|
||||
"body": ">&2",
|
||||
"prefix": "redirect to stderr"
|
||||
},
|
||||
"resolve home": {
|
||||
"body": "${1:path}=\"\\${${1:path}/#\\~/\\$HOME}\"",
|
||||
"prefix": "resolve home"
|
||||
},
|
||||
"restart app": {
|
||||
"body": [
|
||||
"killall \"${1:app_name}\"",
|
||||
"while pgrep -xq \"${1:app_name}\"; do sleep 0.1; done",
|
||||
"open -a \"${1:app_name}\""
|
||||
],
|
||||
"description": "safely restart app, avoiding race condition",
|
||||
"prefix": "restart app"
|
||||
},
|
||||
"sed substitution": {
|
||||
"body": "sed 's/$0//'",
|
||||
"prefix": "sed substitution"
|
||||
},
|
||||
"shebang": {
|
||||
"body": "#!/usr/bin/env zsh",
|
||||
"prefix": "shebang"
|
||||
},
|
||||
"slice": {
|
||||
"body": "${1:var}=\"${${1:var}:${2:from}:${3:to}}\"",
|
||||
"prefix": "slice"
|
||||
},
|
||||
"spinner": {
|
||||
"body": [
|
||||
"# spinner with 20s timeout",
|
||||
"spinner=\"⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏\"",
|
||||
"for i in {1..100}; do",
|
||||
"\tpos=\\$((i % \\${#spinner}))",
|
||||
"\tprintf \"\\r%s\" \"\\${spinner:\\$pos:1}\"",
|
||||
"\tsleep 0.2",
|
||||
"done",
|
||||
"printf \"\\r\" # remove spinner"
|
||||
],
|
||||
"prefix": "spinner"
|
||||
},
|
||||
"stderr (merge with stdout)": {
|
||||
"body": "2>&1",
|
||||
"prefix": "stderr (merge with stdout)"
|
||||
},
|
||||
"stdin": {
|
||||
"body": "stdin=\\$(< /dev/stdin)",
|
||||
"description": "$(cat) also works. See https://stackoverflow.com/questions/32363887/in-a-bash-function-how-do-i-get-stdin-into-a-variable",
|
||||
"prefix": "stdin"
|
||||
},
|
||||
"stdout is to a terminal": {
|
||||
"body": "[[ -t true ]]",
|
||||
"prefix": "stdout is to a terminal"
|
||||
},
|
||||
"substitute": {
|
||||
"body": "\\${${1:var}//${2:search}/${3:replace}}",
|
||||
"description": "one slash for single substitution, two for global",
|
||||
"prefix": "substitute (expansion)"
|
||||
},
|
||||
"suppress stderr": {
|
||||
"body": "2>/dev/null",
|
||||
"prefix": "suppress stderr"
|
||||
},
|
||||
"switch case": {
|
||||
"body": [
|
||||
"case $${1:var} in",
|
||||
"\"one\" | \"two\")",
|
||||
"\techo \"foo\"",
|
||||
"\t;;",
|
||||
"\"three\")",
|
||||
"\techo \"bar\"",
|
||||
"\t;;",
|
||||
"*)",
|
||||
"\techo \"default\"",
|
||||
"\t;;",
|
||||
"esac"
|
||||
],
|
||||
"description": "A case command first expands word, and tries to match it against each pattern in turn.",
|
||||
"prefix": "switch case"
|
||||
},
|
||||
"ternary": {
|
||||
"body": "\\$([[ \"${1:cond}\" ]] && echo \"${2:value1}\" || echo \"${3:value2}\")",
|
||||
"prefix": "ternary"
|
||||
},
|
||||
"then": {
|
||||
"body": "then\n\t$0\nfi",
|
||||
"prefix": "then .. fi"
|
||||
},
|
||||
"today (ISO date) + now": {
|
||||
"body": "${1:now}=\\$(date +\"%Y-%m-%d %H:%M:%S\")",
|
||||
"prefix": [
|
||||
"today (ISO date)",
|
||||
"now"
|
||||
]
|
||||
},
|
||||
"trim whitespace": {
|
||||
"body": "${1:text}=$(echo -n \"$${1:text}\" | sed -e 's/^ *//' -e 's/ *$//')",
|
||||
"prefix": "trim whitespace"
|
||||
},
|
||||
"urlEncode": {
|
||||
"body": "osascript -l JavaScript -e \"encodeURIComponent('${1:text}')\"",
|
||||
"prefix": "urlEncode"
|
||||
},
|
||||
"wait until app running": {
|
||||
"body": "while ! pgrep -xq \"${1:app_name}\"; do sleep 0.1; done",
|
||||
"prefix": "wait until app running"
|
||||
},
|
||||
"wait until app terminated": {
|
||||
"body": "while pgrep -xq \"${1:app_name}\"; do sleep 0.1; done",
|
||||
"prefix": "wait until app terminated"
|
||||
},
|
||||
"while": {
|
||||
"body": "while [[ ${1:condition} ]]; do\n\t${0}\ndone\n",
|
||||
"description": "A while loop by condition.",
|
||||
"prefix": "while"
|
||||
},
|
||||
"xargs (for each line)": {
|
||||
"body": "xargs -I {} ${1:some_cmd} '{}'",
|
||||
"prefix": "xargs (for each line)"
|
||||
}
|
||||
}
|
||||
7
config/nvim/snippets/yaml.json
Normal file
7
config/nvim/snippets/yaml.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"schema (modeline)": {
|
||||
"body": "# yaml-language-server: $$schema=${1:url}",
|
||||
"description": "https://github.com/redhat-developer/yaml-language-server#using-inlined-schema",
|
||||
"prefix": "schema (modeline)"
|
||||
}
|
||||
}
|
||||
0
config/nvim/spell/.gitkeep
Normal file
0
config/nvim/spell/.gitkeep
Normal file
@@ -1,3 +0,0 @@
|
||||
Plugins
|
||||
lua
|
||||
plugins
|
||||
@@ -1,3 +0,0 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
@@ -1,7 +1,5 @@
|
||||
blade-formatter
|
||||
corepack
|
||||
editorconfig-checker
|
||||
github-release-notes
|
||||
neovim
|
||||
stylelint-lsp
|
||||
# $NVM_DIR/default-packages
|
||||
|
||||
yarn
|
||||
neovim
|
||||
corepack
|
||||
|
||||
@@ -1,120 +1,117 @@
|
||||
"$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"
|
||||
console_title_template = '{{.UserName}}@{{.HostName}} {{.Shell}} in {{.PWD}}'
|
||||
version = 3
|
||||
auto_upgrade = false
|
||||
final_space = true
|
||||
console_title_template = "{{.UserName}}@{{.HostName}} {{.Shell}} in {{.PWD}}"
|
||||
version = 2
|
||||
auto_upgrade = 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/*" = ""
|
||||
|
||||
[[blocks.segments]]
|
||||
type = "git"
|
||||
style = "plain"
|
||||
foreground = "lightGreen"
|
||||
template = "{{ .UpstreamIcon }}{{ 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 }}"
|
||||
|
||||
[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]
|
||||
background = "transparent"
|
||||
foreground = "lightGreen"
|
||||
foreground_templates = [ "{{ if gt .Code 0 }}red{{ end }}" ]
|
||||
template = "➜ "
|
||||
template = '➜ '
|
||||
foreground = 'lightGreen'
|
||||
background = 'transparent'
|
||||
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_version = true
|
||||
fetch_virtual_env = true
|
||||
|
||||
[[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
5
config/tms/config.toml
Normal file
@@ -0,0 +1,5 @@
|
||||
default_session = "main"
|
||||
|
||||
[[search_dirs]]
|
||||
path = "~/Code"
|
||||
depth = 10
|
||||
Submodule config/tmux/plugins/tmux-resurrect deleted from e87d7d592c
@@ -28,6 +28,15 @@ bind -n M-Down select-pane -D
|
||||
# Reload tmux config with <prefix> + r
|
||||
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
|
||||
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-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-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_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
||||
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_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local')]"
|
||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'oh-my-posh', 'antidot', 'antidote', 'direnv']" # Default is []
|
||||
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
||||
|
||||
## https://github.com/tmux-plugins/tmux-continuum
|
||||
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'
|
||||
# set -g @continuum-restore 'on'
|
||||
|
||||
## https://github.com/MunifTanjim/tmux-mode-indicator
|
||||
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-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-sessionist/sessionist.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-mode-indicator/mode_indicator.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux
|
||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
local wezterm = require("wezterm")
|
||||
local wezterm = require 'wezterm'
|
||||
local config = wezterm.config_builder()
|
||||
|
||||
-- Font and font size
|
||||
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
|
||||
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 Scheme_for_appearance(appearance)
|
||||
if appearance:find("Dark") then
|
||||
return "Tokyo Night Storm"
|
||||
if appearance:find 'Dark' then
|
||||
return 'Tokyo Night Storm'
|
||||
else
|
||||
return "Tokyo Night Day"
|
||||
return 'Tokyo Night Day'
|
||||
end
|
||||
end
|
||||
|
||||
-- Set the color scheme based on appearance
|
||||
---@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 appearance = window:get_appearance()
|
||||
local scheme = Scheme_for_appearance(appearance)
|
||||
|
||||
8
config/yamlfmt/.yamlfmt
Normal file
8
config/yamlfmt/.yamlfmt
Normal file
@@ -0,0 +1,8 @@
|
||||
formatter:
|
||||
type: basic
|
||||
indent: 2
|
||||
retain_line_breaks: false
|
||||
disallow_anchors: false
|
||||
max_line_length: 0
|
||||
scan_folded_as_literal: false
|
||||
indentless_arrays: false
|
||||
52
config/zsh/antidote.zsh
Executable file
52
config/zsh/antidote.zsh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
# Setup antidote for Oh My Zsh
|
||||
# vim: ft=zsh et sw=2 ts=2
|
||||
|
||||
[[ -z "$DOTFILES" ]] && DOTFILES="$HOME/.dotfiles"
|
||||
[[ -z "$ANTIDOTE_DIR" ]] && ANTIDOTE_DIR="$DOTFILES/tools/antidote"
|
||||
[[ -z "$ANTIDOTE_HOME" ]] && ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
||||
[[ -z "$ANTIDOTE_PLUGINS" ]] && ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
||||
|
||||
[[ ! -d "$ANTIDOTE_DIR" ]] && {
|
||||
git submodule add \
|
||||
--name antidote \
|
||||
--depth=1 \
|
||||
-f https://github.com/mattmc3/antidote.git "${ANTIDOTE_DIR}"
|
||||
git config -f .gitmodules submodule.antidote.shallow true
|
||||
}
|
||||
|
||||
# Plugin configurations
|
||||
zstyle ':antidote:bundle' use-friendly-names 'yes'
|
||||
zstyle ':omz:update' mode reminder
|
||||
zstyle ':omz:plugins:nvm' autoload yes
|
||||
|
||||
# Pure prompt settings
|
||||
export PURE_PROMPT_SYMBOL='➜'
|
||||
export PURE_GIT_UNTRACKED_DIRTY=0
|
||||
zstyle ':prompt:pure:git:stash' show yes
|
||||
zstyle ':prompt:pure:execution_time' show no
|
||||
zstyle ':prompt:pure:user' color magenta
|
||||
zstyle ':prompt:pure:user:root' color red
|
||||
zstyle ':prompt:pure:host' color green
|
||||
zstyle ':prompt:pure:path' color white
|
||||
zstyle ':prompt:pure:prompt:success' color green
|
||||
zstyle ':prompt:pure:prompt:error' color red
|
||||
|
||||
# Disable ls colors to avoid issues with eza
|
||||
export DISABLE_LS_COLORS=true
|
||||
zstyle ':omz:plugins:eza' 'dirs-first' yes
|
||||
zstyle ':omz:plugins:eza' 'git-status' yes
|
||||
zstyle ':omz:plugins:eza' 'icons' yes
|
||||
zstyle ':omz:plugins:eza' 'ls' yes
|
||||
zstyle ':omz:plugins:eza' 'prompt' yes
|
||||
|
||||
[[ -f "${ANTIDOTE_PLUGINS}.txt" ]] || touch "${ANTIDOTE_PLUGINS}.txt"
|
||||
FPATH="$ANTIDOTE_DIR/functions:$FPATH"
|
||||
autoload -Uz antidote
|
||||
if [[ ! "${ANTIDOTE_PLUGINS}.zsh" -nt "${ANTIDOTE_PLUGINS}.txt" ]]; then
|
||||
antidote bundle <"${ANTIDOTE_PLUGINS}.txt" >|"${ANTIDOTE_PLUGINS}.zsh"
|
||||
fi
|
||||
|
||||
# Source your static plugins file.
|
||||
# shellcheck source=$HOME/.dotfiles/config/zsh/antidote_plugins.zsh
|
||||
source "${ANTIDOTE_PLUGINS}.zsh"
|
||||
41
config/zsh/antidote_plugins.txt
Normal file
41
config/zsh/antidote_plugins.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
# This file is for Antidote plugins
|
||||
# https://getantidote.github.io/usage
|
||||
# vim: ft=ini
|
||||
|
||||
# set up Zsh completions with plugins
|
||||
mattmc3/ez-compinit
|
||||
zsh-users/zsh-completions kind:fpath path:src
|
||||
|
||||
# frameworks like oh-my-zsh are supported
|
||||
getantidote/use-omz # handle OMZ dependencies
|
||||
ohmyzsh/ohmyzsh path:lib # load OMZ's library
|
||||
|
||||
# Use pure prompt
|
||||
mafredri/zsh-async
|
||||
sindresorhus/pure
|
||||
|
||||
ohmyzsh/ohmyzsh path:plugins/colored-man-pages
|
||||
ohmyzsh/ohmyzsh path:plugins/brew
|
||||
ohmyzsh/ohmyzsh path:plugins/extract
|
||||
ohmyzsh/ohmyzsh path:plugins/eza
|
||||
ohmyzsh/ohmyzsh path:plugins/fzf
|
||||
ohmyzsh/ohmyzsh path:plugins/git
|
||||
ohmyzsh/ohmyzsh path:plugins/golang
|
||||
ohmyzsh/ohmyzsh path:plugins/gpg-agent
|
||||
ohmyzsh/ohmyzsh path:plugins/nvm
|
||||
ohmyzsh/ohmyzsh path:plugins/python
|
||||
ohmyzsh/ohmyzsh path:plugins/tmux
|
||||
ohmyzsh/ohmyzsh path:plugins/z
|
||||
|
||||
# Automatically activate nvm if .nvmrc file is present
|
||||
ivuorinen/nvm-auto-use
|
||||
|
||||
# Add core plugins that make Zsh a bit more like Fish
|
||||
zdharma-continuum/fast-syntax-highlighting
|
||||
|
||||
# Add some plugins that are not in OMZ
|
||||
jreese/zsh-titles
|
||||
yuki-ycino/tms
|
||||
|
||||
# This needs to be last bundle
|
||||
# zsh-users/zsh-syntax-highlighting
|
||||
212
config/zsh/completion/_oh-my-posh
Normal file
212
config/zsh/completion/_oh-my-posh
Normal 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
|
||||
57
config/zsh/prompt.zsh
Executable file
57
config/zsh/prompt.zsh
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
# Setup prompt
|
||||
# vim: ft=zsh:
|
||||
|
||||
setopt PROMPT_SUBST
|
||||
|
||||
# Setup vcs_info
|
||||
autoload -Uz vcs_info
|
||||
zstyle ':vcs_info:*' enable git
|
||||
zstyle ':vcs_info:*' max-exports 2
|
||||
zstyle ':vcs_info:*' check-for-changes true
|
||||
zstyle ':vcs_info:*' check-for-staged-changes true
|
||||
zstyle ':vcs_info:*' use-simple true
|
||||
zstyle ':vcs_info:*' unstagedstr '%F{red}*' # display this when there are unstaged changes
|
||||
zstyle ':vcs_info:*' stagedstr '%F{yellow}+' # display this when there are staged changes
|
||||
|
||||
zstyle ':vcs_info:*' formats '%F{5}%F{2}%b%c%u%F{5}%f '
|
||||
zstyle ':vcs_info:*' actionformats '%F{5}%F{2}%b%F{3}|%F{1}%a%c%u%F{5}%f '
|
||||
|
||||
theme_precmd () {
|
||||
vcs_info
|
||||
}
|
||||
|
||||
export NL=$'\n'
|
||||
|
||||
# Set defaults for display.
|
||||
# We want the host always, but only the user if we are in an SSH session or root.
|
||||
P_HOST="%F{green}%m%f"
|
||||
P_USER=''
|
||||
|
||||
# If we are in an SSH session, we want to show the username
|
||||
[[ "$SSH_CONNECTION" != '' ]] && P_USER="%{${fg}[magenta]%}%n%f"
|
||||
|
||||
# If we are root, color the user name differently
|
||||
[[ $UID -eq 0 ]] && P_USER="%{${fg}[red]%}%n%f"
|
||||
|
||||
# If P_USER is set, suffix user with @ giving us user@host
|
||||
[[ -n "$P_USER" ]] && P_USER="$P_USER@"
|
||||
|
||||
# Combine the prompt parts. Could be just the host, or user@host.
|
||||
P_PREFIX="$P_USER$P_HOST"
|
||||
|
||||
# Set the color of the current directory
|
||||
P_DIR="%F{blue}%~%f"
|
||||
|
||||
# Change the color of the prompt if the last command failed
|
||||
P_SHELL="%(?.%F{green}.%F{red})➜%f"
|
||||
|
||||
# Any extras we want to display
|
||||
P_EXTRA=""
|
||||
|
||||
# Set the prompt
|
||||
# user@host /path/to/current/dir (branch) ➜
|
||||
export PROMPT="${P_PREFIX} ${P_DIR} %{$reset_color%}${vcs_info_msg_0_}%{$reset_color%}%{${P_EXTRA}%}${NL}${P_SHELL} "
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook precmd theme_precmd
|
||||
@@ -2,52 +2,12 @@
|
||||
|
||||
```txt
|
||||
|
||||
n <Esc> * <Cmd>nohlsearch<CR>
|
||||
n <Space>zg * :Rg<CR>
|
||||
FZF: search with rg (aka live grep).
|
||||
n <Space>zm * :Maps<CR>
|
||||
FZF: search mappings.
|
||||
n <Space>zh * :History<CR>
|
||||
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
|
||||
n <Space>/ * <Lua 398: ~/.config/nvim/lua/plugins/telescope.lua:95>
|
||||
[/] Fuzzily search in current buffer]
|
||||
n <Space>ht * <Lua 393: ~/.config/nvim/lua/plugins/harpoon.lua:43>
|
||||
Open Harpoon Quick menu
|
||||
n <Space>hw * <Lua 390: ~/.config/nvim/lua/plugins/harpoon.lua:37>
|
||||
Open harpoon window with telescope
|
||||
x # * <Lua 7: vim/_defaults.lua:0>
|
||||
:help v_#-default
|
||||
o % <Plug>(MatchitOperationForward)
|
||||
@@ -61,52 +21,100 @@ x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||
:help v_@-default
|
||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||
:help v_Q-default
|
||||
o R * <Lua 102: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Treesitter Search
|
||||
x R * <Lua 99: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Treesitter Search
|
||||
n Y * y$
|
||||
:help Y-default
|
||||
n Zk * <Lua 98: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Flash Treesitter
|
||||
o Zk * <Lua 96: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Flash Treesitter
|
||||
x Zk * <Lua 95: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Flash Treesitter
|
||||
o [% <Plug>(MatchitOperationMultiBackward)
|
||||
x [% <Plug>(MatchitVisualMultiBackward)
|
||||
n [% <Plug>(MatchitNormalMultiBackward)
|
||||
o [h * V<Cmd>lua MiniDiff.goto_hunk('prev')<CR>
|
||||
Previous hunk
|
||||
x [h * <Cmd>lua MiniDiff.goto_hunk('prev')<CR>
|
||||
Previous hunk
|
||||
n [h * <Cmd>lua MiniDiff.goto_hunk('prev')<CR>
|
||||
Previous hunk
|
||||
o [H * V<Cmd>lua MiniDiff.goto_hunk('first')<CR>
|
||||
First hunk
|
||||
x [H * <Cmd>lua MiniDiff.goto_hunk('first')<CR>
|
||||
First hunk
|
||||
n [H * <Cmd>lua MiniDiff.goto_hunk('first')<CR>
|
||||
First hunk
|
||||
o [i * <Cmd>lua MiniIndentscope.operator('top')<CR>
|
||||
Go to indent scope top
|
||||
x [i * <Cmd>lua MiniIndentscope.operator('top')<CR>
|
||||
Go to indent scope top
|
||||
n [i * <Cmd>lua MiniIndentscope.operator('top', true)<CR>
|
||||
Go to indent scope top
|
||||
n [d * <Lua 15: vim/_defaults.lua:0>
|
||||
Jump to the previous diagnostic
|
||||
o ]% <Plug>(MatchitOperationMultiForward)
|
||||
x ]% <Plug>(MatchitVisualMultiForward)
|
||||
n ]% <Plug>(MatchitNormalMultiForward)
|
||||
o ]H * V<Cmd>lua MiniDiff.goto_hunk('last')<CR>
|
||||
Last hunk
|
||||
x ]H * <Cmd>lua MiniDiff.goto_hunk('last')<CR>
|
||||
Last hunk
|
||||
n ]H * <Cmd>lua MiniDiff.goto_hunk('last')<CR>
|
||||
Last hunk
|
||||
o ]h * V<Cmd>lua MiniDiff.goto_hunk('next')<CR>
|
||||
Next hunk
|
||||
x ]h * <Cmd>lua MiniDiff.goto_hunk('next')<CR>
|
||||
Next hunk
|
||||
n ]h * <Cmd>lua MiniDiff.goto_hunk('next')<CR>
|
||||
Next hunk
|
||||
o ]i * <Cmd>lua MiniIndentscope.operator('bottom')<CR>
|
||||
Go to indent scope bottom
|
||||
x ]i * <Cmd>lua MiniIndentscope.operator('bottom')<CR>
|
||||
Go to indent scope bottom
|
||||
n ]i * <Cmd>lua MiniIndentscope.operator('bottom', true)<CR>
|
||||
Go to indent scope bottom
|
||||
n ]d * <Lua 14: vim/_defaults.lua:0>
|
||||
Jump to the next diagnostic
|
||||
x a% <Plug>(MatchitVisualTextObject)
|
||||
o al <Lua 247: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Around last textobject
|
||||
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 ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||
Object scope with border
|
||||
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||
Object scope with border
|
||||
n gR * :RegexplainerToggle<CR>
|
||||
Toggle Regexplainer
|
||||
o g% <Plug>(MatchitOperationBackward)
|
||||
x g% <Plug>(MatchitVisualBackward)
|
||||
n g% <Plug>(MatchitNormalBackward)
|
||||
n gR * :RegexplainerToggle<CR>
|
||||
Toggle Regexplainer
|
||||
o g] <Lua 237: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169>
|
||||
Move to right "around"
|
||||
x g] <Lua 236: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169>
|
||||
Move to right "around"
|
||||
n g] <Lua 235: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1169>
|
||||
Move to right "around"
|
||||
o g[ <Lua 234: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168>
|
||||
Move to left "around"
|
||||
x g[ <Lua 233: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168>
|
||||
Move to left "around"
|
||||
n g[ <Lua 232: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1168>
|
||||
Move to left "around"
|
||||
n gP * <Lua 454: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:132>
|
||||
Close preview windows
|
||||
n gpr * <Lua 453: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:114>
|
||||
Preview references
|
||||
n gpD * <Lua 452: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:105>
|
||||
Preview declaration
|
||||
n gpi * <Lua 451: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:91>
|
||||
Preview implementation
|
||||
n gpt * <Lua 450: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:77>
|
||||
Preview type definition
|
||||
n gpd * <Lua 449: ~/.local/share/nvim/lazy/goto-preview/lua/goto-preview.lua:63>
|
||||
Preview definition
|
||||
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
|
||||
Toggle arguments
|
||||
n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
|
||||
Toggle arguments
|
||||
o gh * <Cmd>lua MiniDiff.textobject()<CR>
|
||||
Hunk range textobject
|
||||
x gH * <Lua 417: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:960>
|
||||
Reset hunks
|
||||
n gH * <Lua 416: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:960>
|
||||
Reset hunks
|
||||
x gh * <Lua 415: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:958>
|
||||
Apply hunks
|
||||
n gh * <Lua 414: ~/.local/share/nvim/lazy/mini.diff/lua/mini/diff.lua:958>
|
||||
Apply hunks
|
||||
o gc * <Lua 13: vim/_defaults.lua:0>
|
||||
Comment textobject
|
||||
n gcc * <Lua 12: vim/_defaults.lua:0>
|
||||
@@ -119,54 +127,58 @@ x gx * <Lua 9: vim/_defaults.lua:0>
|
||||
Opens filepath or URI under cursor with the system handler (file explorer, web browser, …)
|
||||
n gx * <Lua 8: vim/_defaults.lua:0>
|
||||
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>
|
||||
Inside last textobject
|
||||
o in <Lua 248: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside next textobject
|
||||
x il <Lua 245: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside last textobject
|
||||
x in <Lua 244: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside next textobject
|
||||
o i <Lua 241: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside textobject
|
||||
x i <Lua 239: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/ai.lua:1172>
|
||||
Inside textobject
|
||||
n shn * <Lua 266: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
o ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||
Object scope
|
||||
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||
Object scope
|
||||
n j * v:count == 0 ? 'gj' : 'j'
|
||||
Move down
|
||||
n k * v:count == 0 ? 'gk' : 'k'
|
||||
Move up
|
||||
o r * <Lua 97: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Remote Flash
|
||||
n shn * <Lua 547: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Highlight next surrounding
|
||||
n sFn * <Lua 265: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sFn * <Lua 546: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Find next left surrounding
|
||||
n sfn * <Lua 264: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sfn * <Lua 545: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Find next right surrounding
|
||||
n srn * <Lua 263: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n srn * <Lua 544: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Replace next surrounding
|
||||
n sdn * <Lua 262: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sdn * <Lua 543: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Delete next surrounding
|
||||
n shl * <Lua 261: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n shl * <Lua 542: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Highlight previous surrounding
|
||||
n sFl * <Lua 260: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sFl * <Lua 541: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Find previous left surrounding
|
||||
n sfl * <Lua 259: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sfl * <Lua 540: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Find previous right surrounding
|
||||
n srl * <Lua 258: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n srl * <Lua 539: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Replace previous surrounding
|
||||
n sdl * <Lua 257: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sdl * <Lua 538: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
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>
|
||||
n sn * <Lua 537: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:895>
|
||||
Update `MiniSurround.config.n_lines`
|
||||
n sh * <Lua 255: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sh * <Lua 536: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Highlight surrounding
|
||||
n sF * <Lua 254: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sF * <Lua 535: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Find left surrounding
|
||||
n sf * <Lua 253: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sf * <Lua 534: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Find right surrounding
|
||||
n sr * <Lua 252: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sr * <Lua 533: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Replace surrounding
|
||||
n sd * <Lua 251: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sd * <Lua 532: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Delete surrounding
|
||||
n sa * <Lua 250: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
n sa * <Lua 531: ~/.local/share/nvim/lazy/mini.surround/lua/mini/surround.lua:1260>
|
||||
Add surrounding
|
||||
n zk * <Lua 100: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Flash
|
||||
o zk * <Lua 94: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Flash
|
||||
x zk * <Lua 92: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Flash
|
||||
x <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
|
||||
o <Plug>(MatchitOperationMultiForward) * :<C-U>call matchit#MultiMatch("W", "o")<CR>
|
||||
o <Plug>(MatchitOperationMultiBackward) * :<C-U>call matchit#MultiMatch("bW", "o")<CR>
|
||||
@@ -180,28 +192,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``
|
||||
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 <C-P> * :Files<CR>
|
||||
FZF: search for files starting at current directory.
|
||||
o <Plug>(fzf-maps-o) * <C-C>:<C-U>call fzf#vim#maps('o', 0)<CR>
|
||||
x <Plug>(fzf-maps-x) * :<C-U>call fzf#vim#maps('x', 0)<CR>
|
||||
n <Plug>(fzf-maps-n) * :<C-U>call fzf#vim#maps('n', 0)<CR>
|
||||
n <Plug>(fzf-normal) * <Nop>
|
||||
n <Plug>(fzf-insert) * i
|
||||
n <C-Bslash> * <Lua 60: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <C-S> * <Cmd>w<CR>
|
||||
Save file
|
||||
n <C-K> * <Lua 57: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <C-J> * <Lua 56: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <C-H> * <Lua 58: ~/.local/share/nvim-kickstart/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
n <Down> * <Cmd>echo "Use j to move!!"<CR>
|
||||
n <Up> * <Cmd>echo "Use k to move!!"<CR>
|
||||
n <Right> * <Cmd>echo "Use l to move!!"<CR>
|
||||
n <Left> * <Cmd>echo "Use h to move!!"<CR>
|
||||
s <Plug>luasnip-jump-prev * <Lua 345: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:57>
|
||||
LuaSnip: Jump to the previous node
|
||||
s <Plug>luasnip-jump-next * <Lua 344: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:54>
|
||||
LuaSnip: Jump to the next node
|
||||
s <Plug>luasnip-prev-choice * <Lua 343: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:51>
|
||||
LuaSnip: Change to the previous choice from the choiceNode
|
||||
s <Plug>luasnip-next-choice * <Lua 342: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:48>
|
||||
LuaSnip: Change to the next choice from the choiceNode
|
||||
s <Plug>luasnip-expand-snippet * <Lua 341: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:45>
|
||||
LuaSnip: Expand the current snippet
|
||||
s <Plug>luasnip-expand-or-jump * <Lua 340: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:42>
|
||||
LuaSnip: Expand or jump in the current snippet
|
||||
<Plug>luasnip-expand-repeat * <Lua 338: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:35>
|
||||
LuaSnip: Repeat last node expansion
|
||||
n <Plug>luasnip-delete-check * <Lua 336: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:28>
|
||||
LuaSnip: Removes current snippet from jumplist
|
||||
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
||||
n <C-W><C-D> <C-W>d
|
||||
Show diagnostics under the cursor
|
||||
n <C-W>d * <Lua 16: vim/_defaults.lua:0>
|
||||
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 22 Nov 2024 15:30:39 EET
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user