mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 21:45:41 +00:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 |
@@ -19,7 +19,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
|
||||
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
Brewfile.lock.json
|
||||
lazy-lock.json
|
||||
config/nvim/lazy-lock.json
|
||||
*.log
|
||||
*-secret
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -58,9 +58,6 @@
|
||||
[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
|
||||
|
||||
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: v4.6.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.42.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.9.0-1
|
||||
hooks:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.2
|
||||
hooks:
|
||||
- id: actionlint
|
||||
@@ -1,5 +1,4 @@
|
||||
module.exports = {
|
||||
plugins: ['prettier-plugin-sh'],
|
||||
...require('@ivuorinen/prettier-config'),
|
||||
trailingComma: 'all',
|
||||
// Add custom options below:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
3.12.5
|
||||
2
.tool-versions
Normal file
2
.tool-versions
Normal file
@@ -0,0 +1,2 @@
|
||||
python 3.12.6
|
||||
nodejs 22.9.0
|
||||
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
|
||||
@@ -54,3 +51,4 @@ done
|
||||
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
|
||||
[ -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
|
||||
|
||||
@@ -1,32 +1,29 @@
|
||||
asdf-plugin-manager 1.4.0
|
||||
nodejs 22.9.0
|
||||
golang 1.23.1
|
||||
python 3.12.6
|
||||
ruby 3.3.4
|
||||
rust 1.81.0
|
||||
direnv 2.34.0
|
||||
fd 10.2.0
|
||||
1password-cli 2.30.0
|
||||
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.57.0
|
||||
hadolint 2.12.0
|
||||
kubectl 1.31.0
|
||||
lazygit 0.43.1
|
||||
markdownlint-cli2 0.13.0
|
||||
nodejs 22.8.0
|
||||
kubectl 1.31.1
|
||||
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
|
||||
ripgrep 14.1.1
|
||||
shellcheck 0.10.0
|
||||
shfmt 3.9.0
|
||||
terragrunt 0.67.1
|
||||
terragrunt 0.67.10
|
||||
tf-summarize 0.3.10
|
||||
vault 1.17.5+ent
|
||||
yamllint 1.35.1
|
||||
yq 4.44.3
|
||||
bats 1.11.0
|
||||
gitleaks 8.18.4
|
||||
delta 0.18.1
|
||||
sops 3.9.0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
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"
|
||||
@@ -48,15 +48,9 @@ load_antigen()
|
||||
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
|
||||
|
||||
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,5 @@ 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
|
||||
|
||||
@@ -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,26 @@
|
||||
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 dfb44cb
|
||||
bats https://github.com/timgluz/asdf-bats.git 299551f
|
||||
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
|
||||
gitleaks https://github.com/jmcvetta/asdf-gitleaks.git 0cc0d7e
|
||||
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 c36e6f0
|
||||
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 66200ff
|
||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 780d78d
|
||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||
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 d8c041a
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git 2f4fd4c
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
ansible
|
||||
pipenv
|
||||
semgrep
|
||||
neovim
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
[global]
|
||||
disable_stdin = true
|
||||
load_dotenv = true
|
||||
hide_env_diff = true
|
||||
|
||||
[whitelist]
|
||||
prefix = [
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
[ -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"
|
||||
@@ -17,8 +18,8 @@ export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_
|
||||
|
||||
# Load bash completions if available for zsh
|
||||
if [[ -n "$ZSH_VERSION" ]]; then
|
||||
autoload bashcompinit
|
||||
bashcompinit
|
||||
autoload bashcompinit
|
||||
bashcompinit
|
||||
fi
|
||||
|
||||
# Load asdf
|
||||
@@ -93,7 +94,7 @@ darknotify_alacritty()
|
||||
}
|
||||
return 0
|
||||
}
|
||||
darknotify_alacritty
|
||||
# darknotify_alacritty
|
||||
|
||||
# Function to list installed Homebrew packages using bkt caching
|
||||
brew_installed()
|
||||
@@ -147,7 +148,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
|
||||
}
|
||||
@@ -270,6 +271,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
|
||||
@@ -328,6 +330,7 @@ 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"
|
||||
@@ -341,6 +344,23 @@ 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"
|
||||
x-path-prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
@@ -370,25 +390,20 @@ 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"
|
||||
|
||||
# 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,11 +411,6 @@ 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"
|
||||
|
||||
# NPM: Add npm packages to path
|
||||
msg "Setting up NPM configuration"
|
||||
x-have node && {
|
||||
@@ -425,29 +435,10 @@ 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"
|
||||
|
||||
# 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,10 +458,6 @@ 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"
|
||||
|
||||
@@ -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,28 @@ 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"
|
||||
# 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,56 +69,32 @@ 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"
|
||||
# Cryptographic recipes and primitives for Python
|
||||
brew "cryptography"
|
||||
# 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"
|
||||
# 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
|
||||
@@ -148,8 +107,6 @@ brew "pango"
|
||||
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,8 +123,8 @@ 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
|
||||
@@ -176,58 +133,32 @@ brew "libb2"
|
||||
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"
|
||||
# Open source suite of directory software
|
||||
brew "openldap"
|
||||
# General-purpose scripting language
|
||||
brew "php"
|
||||
# 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 +169,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 +186,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 +197,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 +216,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 +252,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 +262,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 7fb183eee3
11
config/nvim/.editorconfig
Normal file
11
config/nvim/.editorconfig
Normal file
@@ -0,0 +1,11 @@
|
||||
# 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
|
||||
8
config/nvim/.gitignore
vendored
8
config/nvim/.gitignore
vendored
@@ -1,8 +0,0 @@
|
||||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
@@ -1,3 +1,5 @@
|
||||
{
|
||||
"diagnostics.globals": ["vim"]
|
||||
}
|
||||
"diagnostics.globals": [
|
||||
"vim"
|
||||
]
|
||||
}
|
||||
@@ -2,14 +2,23 @@
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
"plugins": [
|
||||
"nvim-lspconfig",
|
||||
"lsp",
|
||||
"completion",
|
||||
]
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
"lspconfig": {
|
||||
"lua_ls": {
|
||||
"Lua.completion.callSnippet": "Replace",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
7
config/nvim/.stylua.toml
Normal file
7
config/nvim/.stylua.toml
Normal file
@@ -0,0 +1,7 @@
|
||||
column_width = 160
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferSingle"
|
||||
call_parentheses = "None"
|
||||
|
||||
@@ -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,46 @@
|
||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
||||
-- 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('lazy').setup('plugins', {
|
||||
checker = {
|
||||
-- Automatically check for updates
|
||||
enabled = true,
|
||||
nofity = false,
|
||||
},
|
||||
change_detection = {
|
||||
notify = false,
|
||||
},
|
||||
})
|
||||
|
||||
-- [[ Highlight on yank ]]
|
||||
-- See `:help vim.highlight.on_yank()`
|
||||
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
group = highlight_group,
|
||||
pattern = '*',
|
||||
})
|
||||
|
||||
@@ -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": "6520"
|
||||
},
|
||||
"version": 6
|
||||
}
|
||||
@@ -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,16 +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.add({
|
||||
{ "<Leader>bc", group = "□ Comment box" },
|
||||
{ "<Leader>bcb", "<Cmd>CBccbox<CR>", desc = "Box Title" },
|
||||
{ "<Leader>bcd", "<Cmd>CBd<CR>", desc = "Remove a box" },
|
||||
{ "<Leader>bcl", "<Cmd>CBline<CR>", desc = "Simple Line" },
|
||||
{ "<Leader>bcm", "<Cmd>CBllbox14<CR>", desc = "Marked" },
|
||||
{ "<Leader>bct", "<Cmd>CBllline<CR>", desc = "Titled Line" },
|
||||
})
|
||||
@@ -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
|
||||
91
config/nvim/lua/options.lua
Normal file
91
config/nvim/lua/options.lua
Normal file
@@ -0,0 +1,91 @@
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
-- Set to true if you have a Nerd Font installed and selected in the terminal
|
||||
vim.g.have_nerd_font = true
|
||||
|
||||
-- Make sure editorconfig support is enabled
|
||||
vim.g.editorconfig = true
|
||||
|
||||
-- [[ Setting options ]]
|
||||
-- See `:help vim.opt`
|
||||
-- For more options, you can see `:help option-list`
|
||||
|
||||
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.
|
||||
-- Remove this option if you want your OS clipboard to remain independent.
|
||||
-- See `:help 'clipboard'`
|
||||
vim.schedule(function()
|
||||
vim.opt.clipboard = 'unnamedplus'
|
||||
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 = 300
|
||||
|
||||
-- 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 = 10
|
||||
|
||||
-- Enable break indent
|
||||
vim.o.breakindent = true
|
||||
|
||||
-- Save undo history
|
||||
vim.o.undofile = true
|
||||
|
||||
-- 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'
|
||||
|
||||
vim.g.loaded_perl_provider = 0
|
||||
|
||||
-- ── 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 })
|
||||
38
config/nvim/lua/plugins/autoformat.lua
Normal file
38
config/nvim/lua/plugins/autoformat.lua
Normal file
@@ -0,0 +1,38 @@
|
||||
-- Autoformat
|
||||
-- https://github.com/stevearc/conform.nvim
|
||||
return {
|
||||
'stevearc/conform.nvim',
|
||||
event = { 'BufWritePre' },
|
||||
cmd = { 'ConformInfo' },
|
||||
keys = {
|
||||
{
|
||||
'<leader>cf',
|
||||
function()
|
||||
require('conform').format { async = true, lsp_fallback = true }
|
||||
end,
|
||||
mode = '',
|
||||
desc = '[f] Format buffer',
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
notify_on_error = false,
|
||||
format_on_save = function(bufnr)
|
||||
-- Disable "format_on_save lsp_fallback" for languages that don't
|
||||
-- have a well standardized coding style. You can add additional
|
||||
-- languages here or re-enable it for the disabled ones.
|
||||
local disable_filetypes = { c = true, cpp = true }
|
||||
return {
|
||||
timeout_ms = 500,
|
||||
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
|
||||
}
|
||||
end,
|
||||
formatters_by_ft = {
|
||||
lua = { 'stylua' },
|
||||
-- Conform can also run multiple formatters sequentially
|
||||
-- python = { "isort", "black" },
|
||||
--
|
||||
-- You can use 'stop_after_first' to run the first available formatter from the list
|
||||
javascript = { 'prettierd', 'prettier', stop_after_first = true },
|
||||
},
|
||||
},
|
||||
}
|
||||
107
config/nvim/lua/plugins/cmp.lua
Normal file
107
config/nvim/lua/plugins/cmp.lua
Normal file
@@ -0,0 +1,107 @@
|
||||
return {
|
||||
-- Autocompletion
|
||||
-- https://github.com/hrsh7th/nvim-cmp
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
event = 'InsertEnter',
|
||||
dependencies = {
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
'L3MON4D3/LuaSnip',
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
-- 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-path',
|
||||
'onsails/lspkind.nvim',
|
||||
{
|
||||
'zbirenbaum/copilot-cmp',
|
||||
dependencies = {
|
||||
{
|
||||
'zbirenbaum/copilot.lua',
|
||||
cmd = 'Copilot',
|
||||
build = ':Copilot setup',
|
||||
event = { 'InsertEnter', 'LspAttach' },
|
||||
fix_pairs = true,
|
||||
opts = {
|
||||
suggestion = { enabled = false },
|
||||
panel = { enabled = false },
|
||||
filetypes = {
|
||||
markdown = true,
|
||||
help = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require('copilot_cmp').setup()
|
||||
end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
local lspkind = require 'lspkind'
|
||||
luasnip.config.setup {}
|
||||
|
||||
cmp.setup {
|
||||
formatting = {
|
||||
format = lspkind.cmp_format {
|
||||
mode = 'symbol',
|
||||
min_width = 40,
|
||||
max_width = 100,
|
||||
symbol_map = {
|
||||
Copilot = '',
|
||||
},
|
||||
},
|
||||
},
|
||||
view = {
|
||||
entries = 'native',
|
||||
},
|
||||
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-Space>'] = cmp.mapping.complete(),
|
||||
['<CR>'] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true,
|
||||
},
|
||||
['<Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
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 = {
|
||||
-- Copilot Source
|
||||
{ name = 'copilot', group_index = 2 },
|
||||
-- Other Sources
|
||||
{ name = 'nvim_lsp', group_index = 2 },
|
||||
{ name = 'path', group_index = 2 },
|
||||
{ name = 'luasnip', group_index = 2 },
|
||||
},
|
||||
}
|
||||
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 },
|
||||
}
|
||||
30
config/nvim/lua/plugins/dap.lua
Normal file
30
config/nvim/lua/plugins/dap.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
return {
|
||||
{
|
||||
'rcarriga/nvim-dap-ui',
|
||||
dependencies = {
|
||||
'mfussenegger/nvim-dap',
|
||||
'nvim-neotest/nvim-nio',
|
||||
'theHamsta/nvim-dap-virtual-text',
|
||||
'ray-x/go.nvim',
|
||||
'ray-x/guihua.lua',
|
||||
'leoluz/nvim-dap-go',
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>dt', '<cmd>DapUiToggle', desc = 'DAP: Toggle UI' },
|
||||
{ '<leader>db', '<cmd>DapToggleBreakpoint', desc = 'DAP: Toggle Breakpoint' },
|
||||
{ '<leader>dc', '<cmd>DapContinue', desc = 'DAP: Continue' },
|
||||
{ '<leader>dr', ":lua require('dapui').open({reset = true})<CR>", desc = 'DAP: Reset' },
|
||||
{ '<leader>ht', ":lua require('harpoon.ui').toggle_quick_menu()<CR>", desc = 'DAP: Harpoon UI' },
|
||||
},
|
||||
setup = function()
|
||||
require('dapui').setup()
|
||||
require('dap-go').setup()
|
||||
require('nvim-dap-virtual-text').setup()
|
||||
|
||||
vim.fn.sign_define(
|
||||
'DapBreakpoint',
|
||||
{ text = '🔴', texthl = 'DapBreakpoint', linehl = 'DapBreakpoint', numhl = 'DapBreakpoint' }
|
||||
)
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
32
config/nvim/lua/plugins/fzf.lua
Normal file
32
config/nvim/lua/plugins/fzf.lua
Normal file
@@ -0,0 +1,32 @@
|
||||
return {
|
||||
-- fzf <3 vim
|
||||
-- https://github.com/junegunn/fzf.vim
|
||||
'junegunn/fzf.vim',
|
||||
dependencies = {
|
||||
{ 'junegunn/fzf', run = ':call fzf#install()' },
|
||||
},
|
||||
keys = {
|
||||
-- Stolen from https://github.com/erikw/dotfiles/blob/d68d6274d67ac47afa20b9a0b9f3b0fa54bcdaf3/.config/nvim/lua/plugins.lua
|
||||
-- Search for files in given path.
|
||||
{ '<Leader>zf', ':FZF<space>', desc = 'FZF: search for files in given path.' },
|
||||
-- Sublime-like shortcut 'go to file' ctrl+p.
|
||||
{ '<C-p>', ':Files<CR>', desc = 'FZF: search for files starting at current directory.' },
|
||||
{ '<Leader>zc', ':Commands<CR>', desc = 'FZF: search commands.' },
|
||||
{ '<Leader>zt', ':Tags<CR>', desc = 'FZF: search in tags file' },
|
||||
{ '<Leader>zb', ':Buffers<CR>', desc = 'FZF: search open buffers.' },
|
||||
-- Ref: https://medium.com/@paulodiovani/vim-buffers-windows-and-tabs-an-overview-8e2a57c57afa
|
||||
{ '<Leader>zt', ':Windows<CR>', desc = 'FZF: search open tabs.' },
|
||||
{ '<Leader>zh', ':History<CR>', desc = 'FZF: search history of opened files' },
|
||||
{ '<Leader>zm', ':Maps<CR>', desc = 'FZF: search mappings.' },
|
||||
{ '<Leader>zg', ':Rg<CR>', desc = 'FZF: search with rg (aka live grep).' },
|
||||
},
|
||||
config = function()
|
||||
-- To ignore a certain path in a git project from both RG and FD used by FZF,
|
||||
-- the eaiest way is to create ignore files and exclude the in local git clone.
|
||||
-- Ref: https://stackoverflow.com/a/1753078/265508
|
||||
-- $ cd git_proj/
|
||||
-- $ echo "path/to/exclude" > .rgignore
|
||||
-- $ echo "path/to/exclude" > .fdignore
|
||||
-- $ printf ".rgignore\n.fdignore" >> .git/info/exclude
|
||||
end,
|
||||
}
|
||||
50
config/nvim/lua/plugins/git.lua
Normal file
50
config/nvim/lua/plugins/git.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
return {
|
||||
-- Git integration for buffers
|
||||
-- https://github.com/lewis6991/gitsigns.nvim
|
||||
{
|
||||
'lewis6991/gitsigns.nvim',
|
||||
lazy = false,
|
||||
config = function()
|
||||
require('gitsigns').setup {
|
||||
signs = {
|
||||
add = { text = '+' },
|
||||
change = { text = '~' },
|
||||
delete = { text = '_' },
|
||||
topdelete = { text = '‾' },
|
||||
changedelete = { text = '~' },
|
||||
},
|
||||
current_line_blame = false,
|
||||
on_attach = function(bufnr)
|
||||
local gs = require 'gitsigns'
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map('n', 'gn', function()
|
||||
if vim.wo.diff then
|
||||
return ']c'
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.next_hunk()
|
||||
end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true })
|
||||
|
||||
map('n', 'gp', function()
|
||||
if vim.wo.diff then
|
||||
return '[c'
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.prev_hunk()
|
||||
end)
|
||||
return '<Ignore>'
|
||||
end, { expr = true })
|
||||
end,
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
||||
38
config/nvim/lua/plugins/goto-preview.lua
Normal file
38
config/nvim/lua/plugins/goto-preview.lua
Normal file
@@ -0,0 +1,38 @@
|
||||
return {
|
||||
-- A small Neovim plugin for previewing definitions using floating windows.
|
||||
-- https://github.com/rmagatti/goto-preview
|
||||
'rmagatti/goto-preview',
|
||||
dependencies = {
|
||||
{ 'nvim-telescope/telescope.nvim' },
|
||||
},
|
||||
keys = {
|
||||
{ 'n', 'gp', group = 'Goto Preview' },
|
||||
{ 'n', 'gpd', '<cmd>lua require("goto-preview").goto_preview_definition()<CR>' },
|
||||
{ 'n', 'gpi', '<cmd>lua require("goto-preview").goto_preview_implementation()<CR>' },
|
||||
{ 'n', 'gpP', '<cmd>lua require("goto-preview").close_all_windows()<CR>' },
|
||||
},
|
||||
config = function()
|
||||
require('goto-preview').setup {
|
||||
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' },
|
||||
}
|
||||
end,
|
||||
}
|
||||
103
config/nvim/lua/plugins/harpoon.lua
Normal file
103
config/nvim/lua/plugins/harpoon.lua
Normal file
@@ -0,0 +1,103 @@
|
||||
return {
|
||||
-- Getting you where you want with the fewest keystrokes.
|
||||
-- https://github.com/ThePrimeagen/harpoon
|
||||
{
|
||||
'ThePrimeagen/harpoon',
|
||||
branch = 'harpoon2',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
local harpoon = require 'harpoon'
|
||||
|
||||
harpoon:setup {}
|
||||
|
||||
vim.keymap.set('n', '<leader>ht', function()
|
||||
harpoon.ui:toggle_quick_menu(harpoon:list())
|
||||
end, { desc = 'Open Harpoon Quick menu' })
|
||||
|
||||
-- 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' })
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
'<leader>ha',
|
||||
function()
|
||||
require('harpoon'):list():add()
|
||||
end,
|
||||
desc = 'harpoon file',
|
||||
},
|
||||
{
|
||||
'<leader>hp',
|
||||
function()
|
||||
require('harpoon'):list():prev()
|
||||
end,
|
||||
desc = 'harpoon to previous file',
|
||||
},
|
||||
{
|
||||
'<leader>hn',
|
||||
function()
|
||||
require('harpoon'):list():next()
|
||||
end,
|
||||
desc = 'harpoon to next file',
|
||||
},
|
||||
{
|
||||
'<leader>1',
|
||||
function()
|
||||
require('harpoon'):list():select(1)
|
||||
end,
|
||||
desc = 'harpoon to file 1',
|
||||
},
|
||||
{
|
||||
'<leader>2',
|
||||
function()
|
||||
require('harpoon'):list():select(2)
|
||||
end,
|
||||
desc = 'harpoon to file 2',
|
||||
},
|
||||
{
|
||||
'<leader>3',
|
||||
function()
|
||||
require('harpoon'):list():select(3)
|
||||
end,
|
||||
desc = 'harpoon to file 3',
|
||||
},
|
||||
{
|
||||
'<leader>4',
|
||||
function()
|
||||
require('harpoon'):list():select(4)
|
||||
end,
|
||||
desc = 'harpoon to file 4',
|
||||
},
|
||||
{
|
||||
'<leader>5',
|
||||
function()
|
||||
require('harpoon'):list():select(5)
|
||||
end,
|
||||
desc = 'harpoon to file 5',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
67
config/nvim/lua/plugins/lazy.lua
Normal file
67
config/nvim/lua/plugins/lazy.lua
Normal file
@@ -0,0 +1,67 @@
|
||||
return {
|
||||
-- A better annotation generator.
|
||||
-- Supports multiple languages and annotation conventions.
|
||||
-- https://github.com/danymat/neogen
|
||||
{
|
||||
'danymat/neogen',
|
||||
version = '*',
|
||||
keys = {
|
||||
{
|
||||
'<leader>cg',
|
||||
'<cmd>lua require("neogen").generate()<CR>',
|
||||
desc = 'Generate annotations',
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require('neogen').setup {
|
||||
enabled = true,
|
||||
snippet_engine = 'luasnip',
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- Rethinking Vim as a tool for writing
|
||||
-- https://github.com/preservim/vim-pencil
|
||||
{ 'preservim/vim-pencil' },
|
||||
|
||||
-- surround.vim: Delete/change/add parentheses/quotes/XML-tags/much more with ease
|
||||
-- https://github.com/tpope/vim-surround
|
||||
{ 'tpope/vim-surround' },
|
||||
|
||||
-- Highlight, list and search todo comments in your projects
|
||||
-- https://github.com/folke/todo-comments.nvim
|
||||
{
|
||||
'folke/todo-comments.nvim',
|
||||
dependencies = 'nvim-lua/plenary.nvim',
|
||||
config = function()
|
||||
require('todo-comments').setup {}
|
||||
end,
|
||||
},
|
||||
|
||||
-- Indent guides for Neovim
|
||||
-- https://github.com/lukas-reineke/indent-blankline.nvim
|
||||
{
|
||||
'lukas-reineke/indent-blankline.nvim',
|
||||
main = 'ibl',
|
||||
opts = {},
|
||||
},
|
||||
|
||||
-- Commenting
|
||||
-- https://github.com/numToStr/Comment.nvim
|
||||
{
|
||||
'numToStr/Comment.nvim', -- "gc" to comment visual regions/lines
|
||||
event = { 'BufRead', 'BufNewFile' },
|
||||
config = function()
|
||||
require('Comment').setup()
|
||||
end,
|
||||
},
|
||||
|
||||
-- Detect tabstop and shiftwidth automatically
|
||||
-- https://github.com/tpope/vim-sleuth
|
||||
{ 'tpope/vim-sleuth' },
|
||||
|
||||
-- Vim plugin for automatic time tracking and metrics
|
||||
-- generated from your programming activity.
|
||||
-- https://github.com/wakatime/vim-wakatime
|
||||
{ 'wakatime/vim-wakatime', lazy = false, enabled = true },
|
||||
}
|
||||
55
config/nvim/lua/plugins/lint.lua
Normal file
55
config/nvim/lua/plugins/lint.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
return {
|
||||
|
||||
{ -- Linting
|
||||
'mfussenegger/nvim-lint',
|
||||
event = { 'BufReadPre', 'BufNewFile' },
|
||||
config = function()
|
||||
local lint = require 'lint'
|
||||
lint.linters_by_ft = {
|
||||
markdown = { 'markdownlint' },
|
||||
}
|
||||
|
||||
-- To allow other plugins to add linters to require('lint').linters_by_ft,
|
||||
-- instead set linters_by_ft like this:
|
||||
-- lint.linters_by_ft = lint.linters_by_ft or {}
|
||||
-- lint.linters_by_ft['markdown'] = { 'markdownlint' }
|
||||
--
|
||||
-- However, note that this will enable a set of default linters,
|
||||
-- which will cause errors unless these tools are available:
|
||||
-- {
|
||||
-- clojure = { "clj-kondo" },
|
||||
-- dockerfile = { "hadolint" },
|
||||
-- inko = { "inko" },
|
||||
-- janet = { "janet" },
|
||||
-- json = { "jsonlint" },
|
||||
-- markdown = { "vale" },
|
||||
-- rst = { "vale" },
|
||||
-- ruby = { "ruby" },
|
||||
-- terraform = { "tflint" },
|
||||
-- text = { "vale" }
|
||||
-- }
|
||||
--
|
||||
-- You can disable the default linters by setting their filetypes to nil:
|
||||
-- lint.linters_by_ft['clojure'] = nil
|
||||
-- lint.linters_by_ft['dockerfile'] = nil
|
||||
-- lint.linters_by_ft['inko'] = nil
|
||||
-- lint.linters_by_ft['janet'] = nil
|
||||
-- lint.linters_by_ft['json'] = nil
|
||||
-- lint.linters_by_ft['markdown'] = nil
|
||||
-- lint.linters_by_ft['rst'] = nil
|
||||
-- lint.linters_by_ft['ruby'] = nil
|
||||
-- lint.linters_by_ft['terraform'] = nil
|
||||
-- lint.linters_by_ft['text'] = nil
|
||||
|
||||
-- Create autocommand which carries out the actual linting
|
||||
-- on the specified events.
|
||||
local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
|
||||
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
|
||||
group = lint_augroup,
|
||||
callback = function()
|
||||
lint.try_lint()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
236
config/nvim/lua/plugins/lsp.lua
Normal file
236
config/nvim/lua/plugins/lsp.lua
Normal file
@@ -0,0 +1,236 @@
|
||||
-- Quickstart configs for Nvim LSP
|
||||
-- https://github.com/neovim/nvim-lspconfig
|
||||
return {
|
||||
{
|
||||
'neovim/nvim-lspconfig',
|
||||
lazy = false,
|
||||
dependencies = {
|
||||
-- Neovim plugin to manage global and project-local settings
|
||||
-- Should be included before LSP Config
|
||||
-- https://github.com/folke/neoconf.nvim
|
||||
{
|
||||
'folke/neoconf.nvim',
|
||||
lazy = false,
|
||||
keys = {
|
||||
{ '<leader>?c', '<cmd>Neoconf<CR>', desc = 'Neoconf: Open' },
|
||||
{ '<leader>?g', '<cmd>Neoconf global<CR>', desc = 'Neoconf: Global' },
|
||||
{ '<leader>?l', '<cmd>Neoconf local<CR>', desc = 'Neoconf: Local' },
|
||||
{ '<leader>?m', '<cmd>Neoconf lsp<CR>', desc = 'Neoconf: Show merged LSP config' },
|
||||
{ '<leader>?s', '<cmd>Neoconf show<CR>', desc = 'Neoconf: Show merged config' },
|
||||
},
|
||||
config = function()
|
||||
require('neoconf').setup()
|
||||
end,
|
||||
},
|
||||
-- Automatically install LSPs to stdpath for neovim
|
||||
{
|
||||
'williamboman/mason.nvim',
|
||||
lazy = false,
|
||||
run = ':call MasonUpdate',
|
||||
},
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||
'b0o/schemastore.nvim',
|
||||
-- vscode-like pictograms for neovim lsp completion items
|
||||
-- https://github.com/onsails/lspkind-nvim
|
||||
{ 'onsails/lspkind.nvim' },
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>do', '<cmd>lua vim.diagnostic.open_float()<CR>', desc = 'Diagnostic: Open float' },
|
||||
{ '<leader>dq', '<cmd>lua vim.diagnostic.setloclist()<CR>', desc = 'Diagnostic: Set loc list' },
|
||||
{ 'dn', '<cmd>lua vim.diagnostic.goto_next()<CR>', desc = 'Diagnostic: Goto Next' },
|
||||
{ 'dp', '<cmd>lua vim.diagnostic.goto_prev()<CR>', desc = 'Diagnostic: Goto Prev' },
|
||||
{ '<leader>cr', '<cmd>lua vim.lsp.buf.rename()<CR>', desc = 'LSP: Rename' },
|
||||
{ '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', desc = 'LSP: Code Action' },
|
||||
{ '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' },
|
||||
{ 'gI', '<cmd>lua vim.lsp.buf.implementation()<CR>', desc = 'LSP: Goto Implementation' },
|
||||
{ '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', desc = 'LSP: Type Definition' },
|
||||
{ '<leader>ds', '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>', desc = 'LSP: Document Symbols' },
|
||||
{ '<leader>ws', '<cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>', desc = 'LSP: Workspace Symbols' },
|
||||
{ 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', desc = 'LSP: Hover Documentation' },
|
||||
{ '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', desc = 'LSP: Signature Documentation' },
|
||||
{ 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', desc = 'LSP: Goto Declaration' },
|
||||
{ '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', desc = 'LSP: Workspace Add Folder' },
|
||||
{ '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', desc = 'LSP: Workspace Remove Folder' },
|
||||
{ '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', desc = 'LSP: Workspace List Folders' },
|
||||
},
|
||||
config = function()
|
||||
-- LSP settings.
|
||||
-- This function gets run when an LSP connects to a particular buffer.
|
||||
local on_attach = function(_, bufnr)
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
||||
if vim.lsp.buf.format then
|
||||
vim.lsp.buf.format()
|
||||
elseif vim.lsp.buf.formatting then
|
||||
vim.lsp.buf.formatting()
|
||||
end
|
||||
end, { desc = 'Format current buffer with LSP' })
|
||||
end
|
||||
|
||||
-- Setup mason so it can manage external tooling
|
||||
require('mason').setup()
|
||||
|
||||
-- Enable the following language servers
|
||||
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
|
||||
local servers = {
|
||||
-- :help lspconfig-all for all pre-configured LSPs
|
||||
ast_grep = {},
|
||||
|
||||
actionlint = {}, -- GitHub Actions
|
||||
ansiblels = {}, -- Ansible
|
||||
bashls = {}, -- Bash
|
||||
css_variables = {}, -- CSS
|
||||
cssls = {}, -- CSS
|
||||
docker_compose_language_service = {}, -- Docker compose
|
||||
dockerls = {}, -- Docker
|
||||
eslint = {}, -- ESLint
|
||||
gitlab_ci_ls = {}, -- GitLab CI
|
||||
gopls = {}, -- Go
|
||||
html = {}, -- HTML
|
||||
intelephense = {}, -- PHP
|
||||
pest_ls = {}, -- Pest (PHP)
|
||||
phpactor = {}, -- PHP
|
||||
psalm = {}, -- PHP
|
||||
pyright = {}, -- Python
|
||||
semgrep = {}, -- Security
|
||||
shellcheck = {}, -- Shell scripts
|
||||
shfmt = {}, -- Shell scripts formatting
|
||||
stylelint_lsp = {}, -- Stylelint for S/CSS
|
||||
stylua = {}, -- Used to format Lua code
|
||||
tailwindcss = {}, -- Tailwind CSS
|
||||
terraformls = {}, -- Terraform
|
||||
tflint = {}, -- Terraform
|
||||
ts_ls = {}, -- TypeScript/JS
|
||||
typos_lsp = {}, -- Better writing
|
||||
volar = {}, -- Vue
|
||||
yamlls = {}, -- YAML
|
||||
|
||||
lua_ls = {
|
||||
settings = {
|
||||
Lua = {
|
||||
completion = {
|
||||
callSnippet = 'Replace',
|
||||
},
|
||||
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
|
||||
diagnostics = { disable = { 'missing-fields' } },
|
||||
},
|
||||
},
|
||||
},
|
||||
jsonls = {
|
||||
settings = {
|
||||
json = {
|
||||
schemas = require('schemastore').json.schemas(),
|
||||
validate = { enable = true },
|
||||
},
|
||||
yaml = {
|
||||
schemaStore = {
|
||||
-- You must disable built-in schemaStore support if you want to use
|
||||
-- this plugin and its advanced options like `ignore`.
|
||||
enable = false,
|
||||
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
||||
url = '',
|
||||
},
|
||||
schemas = require('schemastore').yaml.schemas(),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
local ensure_installed = vim.tbl_keys(servers or {})
|
||||
vim.list_extend(ensure_installed, {
|
||||
'actionlint',
|
||||
'ansible-language-server',
|
||||
'ansible-lint',
|
||||
'bash-language-server',
|
||||
'blade-formatter',
|
||||
'commitlint',
|
||||
'diagnostic-languageserver',
|
||||
'docker-compose-language-service',
|
||||
'dockerfile-language-server',
|
||||
'editorconfig-checker',
|
||||
'fixjson',
|
||||
'flake8',
|
||||
'html-lsp',
|
||||
'jq',
|
||||
'jsonlint',
|
||||
'luacheck',
|
||||
'php-cs-fixer',
|
||||
'phpcs',
|
||||
'phpmd',
|
||||
'semgrep',
|
||||
'shellcheck',
|
||||
'shfmt',
|
||||
'stylelint',
|
||||
'stylua',
|
||||
'yamllint',
|
||||
})
|
||||
require('mason-tool-installer').setup {
|
||||
ensure_installed = ensure_installed,
|
||||
auto_update = true,
|
||||
}
|
||||
|
||||
-- Ensure the servers above are installed
|
||||
require('mason-lspconfig').setup {
|
||||
automatic_installation = true,
|
||||
ensure_installed = servers,
|
||||
}
|
||||
|
||||
-- nvim-cmp supports additional completion capabilities
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||
|
||||
for _, lsp in ipairs(servers) do
|
||||
require('lspconfig')[lsp].setup {
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end
|
||||
|
||||
-- Turn on lsp status information
|
||||
-- require('fidget').setup()
|
||||
|
||||
-- Example custom configuration for lua
|
||||
--
|
||||
-- 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')
|
||||
|
||||
require('lspconfig').lua_ls.setup {
|
||||
on_attach = on_attach,
|
||||
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' },
|
||||
},
|
||||
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 },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = 'sh',
|
||||
callback = function()
|
||||
vim.lsp.start {
|
||||
name = 'bash-language-server',
|
||||
cmd = { 'bash-language-server', 'start' },
|
||||
}
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
37
config/nvim/lua/plugins/lualine.lua
Normal file
37
config/nvim/lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,37 @@
|
||||
-- Fancier statusline
|
||||
-- https://github.com/nvim-lualine/lualine.nvim
|
||||
return {
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = {
|
||||
'kyazdani42/nvim-web-devicons',
|
||||
'folke/noice.nvim',
|
||||
},
|
||||
config = function()
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
component_separators = '|',
|
||||
section_separators = '',
|
||||
},
|
||||
sections = {
|
||||
lualine_x = {
|
||||
{
|
||||
require('noice').api.statusline.mode.get,
|
||||
cond = require('noice').api.statusline.mode.has,
|
||||
-- color = { fg = '#ff9e64' },
|
||||
},
|
||||
{
|
||||
require('noice').api.status.command.get,
|
||||
cond = require('noice').api.status.command.has,
|
||||
-- color = { fg = '#ff9e64' },
|
||||
},
|
||||
},
|
||||
lualine_a = {
|
||||
{
|
||||
'buffers',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
95
config/nvim/lua/plugins/neotree.lua
Normal file
95
config/nvim/lua/plugins/neotree.lua
Normal file
@@ -0,0 +1,95 @@
|
||||
-- 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',
|
||||
{
|
||||
's1n7ax/nvim-window-picker',
|
||||
version = '2.*',
|
||||
config = function()
|
||||
require('window-picker').setup {
|
||||
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' },
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
cmd = 'Neotree',
|
||||
keys = {
|
||||
{ '<leader>e', ':Neotree reveal<CR>', desc = 'NeoTree reveal' },
|
||||
},
|
||||
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.*',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
84
config/nvim/lua/plugins/noice.lua
Normal file
84
config/nvim/lua/plugins/noice.lua
Normal file
@@ -0,0 +1,84 @@
|
||||
return {
|
||||
-- Highly experimental plugin that completely replaces the UI
|
||||
-- for messages, cmdline and the popupmenu.
|
||||
-- https://github.com/folke/noice.nvim
|
||||
'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',
|
||||
},
|
||||
keys = {
|
||||
{ 'n', '<leader>tn', ':Noice dismiss<CR>', desc = 'Noice dismiss' },
|
||||
},
|
||||
config = function()
|
||||
vim.g.noice_ignored_filetypes = { 'fugitiveblame', 'fugitive', 'gitcommit', 'noice' }
|
||||
require('noice').setup {
|
||||
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 },
|
||||
},
|
||||
},
|
||||
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' },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
90
config/nvim/lua/plugins/telescope.lua
Normal file
90
config/nvim/lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,90 @@
|
||||
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' },
|
||||
{ 'ThePrimeagen/harpoon' },
|
||||
|
||||
-- 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,
|
||||
},
|
||||
},
|
||||
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',
|
||||
layout_config = {
|
||||
preview_width = 0.65,
|
||||
horizontal = {
|
||||
size = {
|
||||
width = '95%',
|
||||
height = '95%',
|
||||
},
|
||||
},
|
||||
},
|
||||
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,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Load extensions
|
||||
pcall(t.load_extension, 'harpoon')
|
||||
pcall(t.load_extension, 'git_worktree')
|
||||
-- Enable telescope fzf native, if installed
|
||||
pcall(t.load_extension, 'fzf')
|
||||
|
||||
-- [[ Telescope Keymaps ]]
|
||||
-- See `:help telescope.builtin`
|
||||
-- See `:help telescope.keymap`
|
||||
local b = require 'telescope.builtin'
|
||||
|
||||
local wk = require 'which-key'
|
||||
wk.add {
|
||||
{ '<leader><space>', b.buffers, desc = '[ ] Find existing buffers' },
|
||||
{ '<leader><tab>', "<Cmd>lua require('telescope.builtin').commands()<CR>", desc = 'Telescope: Commands' },
|
||||
{ '<leader>sS', b.git_status, desc = 'Git Status' },
|
||||
{ '<leader>sd', b.diagnostics, desc = 'Search Diagnostics' },
|
||||
{ '<leader>sf', b.find_files, desc = 'Search Files' },
|
||||
{ '<leader>sg', b.live_grep, desc = 'Search by Grep' },
|
||||
{ '<leader>sm', ':Telescope harpoon marks<CR>', desc = 'Harpoon Marks' },
|
||||
{ '<leader>sn', "<cmd>lua require('telescope').extensions.notify.notify()<CR>", desc = 'Notify' },
|
||||
{ '<leader>so', b.oldfiles, desc = 'Find recently Opened files' },
|
||||
{ '<leader>st', ':TodoTelescope<CR>', desc = 'Telescope: Todo' },
|
||||
{ '<leader>sw', b.grep_string, desc = 'Search current Word' },
|
||||
}
|
||||
|
||||
vim.keymap.set('n', '<leader>/', function()
|
||||
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
||||
b.current_buffer_fuzzy_find(themes.get_dropdown {
|
||||
winblend = 10,
|
||||
previewer = true,
|
||||
})
|
||||
end, { desc = '[/] Fuzzily search in current buffer]' })
|
||||
end,
|
||||
}
|
||||
@@ -1,23 +1,111 @@
|
||||
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,
|
||||
-- Highlight, edit, and navigate code
|
||||
-- https://github.com/nvim-treesitter/nvim-treesitter
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
build = function()
|
||||
pcall(require('nvim-treesitter.install').update { with_sync = true })
|
||||
end,
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
},
|
||||
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',
|
||||
},
|
||||
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<c-space>',
|
||||
node_incremental = '<c-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,
|
||||
}
|
||||
|
||||
34
config/nvim/lua/plugins/trouble.lua
Normal file
34
config/nvim/lua/plugins/trouble.lua
Normal file
@@ -0,0 +1,34 @@
|
||||
return {
|
||||
'folke/trouble.nvim',
|
||||
lazy = false,
|
||||
dependencies = 'nvim-tree/nvim-web-devicons',
|
||||
keys = {
|
||||
{ '<leader>xx', '<cmd>Trouble<cr>', desc = 'Toggle Trouble' },
|
||||
{ '<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' },
|
||||
{ 'gR', '<cmd>Trouble lsp_references<cr>', desc = 'Toggle LSP References' },
|
||||
},
|
||||
config = function()
|
||||
require('trouble').setup {
|
||||
auto_preview = false,
|
||||
auto_fold = true,
|
||||
auto_close = true,
|
||||
use_lsp_diagnostic_signs = true,
|
||||
}
|
||||
|
||||
-- Diagnostic signs
|
||||
-- https://github.com/folke/trouble.nvim/issues/52
|
||||
local signs = {
|
||||
Error = ' ',
|
||||
Warning = ' ',
|
||||
Hint = ' ',
|
||||
Information = ' ',
|
||||
}
|
||||
for type, icon in pairs(signs) do
|
||||
local hl = 'DiagnosticSign' .. type
|
||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
||||
end
|
||||
end,
|
||||
}
|
||||
101
config/nvim/lua/plugins/ufo.lua
Normal file
101
config/nvim/lua/plugins/ufo.lua
Normal file
@@ -0,0 +1,101 @@
|
||||
-- Not UFO in the sky, but an ultra fold in Neovim.
|
||||
-- https://github.com/kevinhwang91/nvim-ufo/
|
||||
|
||||
-- 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.
|
||||
-- The handler is called with the following arguments:
|
||||
-- virtText: The current virtual text list.
|
||||
-- lnum: The line number of the first line in the fold.
|
||||
-- endLnum: The line number of the last line in the fold.
|
||||
-- width: The width of the window.
|
||||
--
|
||||
--@type function
|
||||
--@param virtText
|
||||
--@param lnum
|
||||
--@param endLnum
|
||||
--@param width
|
||||
--@param truncate
|
||||
--@return table
|
||||
local 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
|
||||
|
||||
return {
|
||||
{
|
||||
'kevinhwang91/nvim-ufo',
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
version = '*',
|
||||
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,
|
||||
opts = {
|
||||
open_fold_hl_timeout = 150,
|
||||
close_fold_kinds_for_ft = { 'imports', 'comment' },
|
||||
preview = {
|
||||
win_config = {
|
||||
border = { '', '─', '', '', '', '─', '', '' },
|
||||
winhighlight = 'Normal:Folded',
|
||||
winblend = 0,
|
||||
},
|
||||
mappings = {
|
||||
scrollU = '<C-u>',
|
||||
scrollD = '<C-d>',
|
||||
jumpTop = '[',
|
||||
jumpBot = ']',
|
||||
},
|
||||
},
|
||||
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
|
||||
return { 'treesitter', 'indent' }
|
||||
end,
|
||||
fold_virt_text_handler = handler,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,135 +1,145 @@
|
||||
-- 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 'tokyonight'
|
||||
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 tokyonight-storm'
|
||||
end,
|
||||
set_light_mode = function()
|
||||
vim.api.nvim_set_option_value('background', 'light', {})
|
||||
vim.cmd 'colorscheme tokyonight-day'
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
-- Remove all background colors to make nvim transparent
|
||||
-- https://github.com/xiyaowong/nvim-transparent
|
||||
{ 'xiyaowong/nvim-transparent' },
|
||||
|
||||
-- Twilight is a Lua plugin for Neovim 0.5 that dims inactive
|
||||
-- portions of the code you're editing using TreeSitter.
|
||||
-- https://github.com/folke/twilight.nvim
|
||||
{
|
||||
'folke/twilight.nvim',
|
||||
ft = 'markdown', -- Highlight markdown files
|
||||
keys = {
|
||||
{ 'n', 'tw', '<cmd>Twilight<cr>', desc = 'Twilight' },
|
||||
},
|
||||
},
|
||||
|
||||
-- Seamless navigation between tmux panes and vim splits
|
||||
-- https://github.com/christoomey/vim-tmux-navigator
|
||||
{
|
||||
'christoomey/vim-tmux-navigator',
|
||||
lazy = false,
|
||||
enabled = true,
|
||||
cmd = {
|
||||
'TmuxNavigateLeft',
|
||||
'TmuxNavigateDown',
|
||||
'TmuxNavigateUp',
|
||||
'TmuxNavigateRight',
|
||||
'TmuxNavigatePrevious',
|
||||
},
|
||||
keys = {
|
||||
{ '<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' },
|
||||
},
|
||||
},
|
||||
-- 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",
|
||||
'laytan/cloak.nvim',
|
||||
enabled = true,
|
||||
lazy = false,
|
||||
version = '*',
|
||||
keys = {
|
||||
{ '<leader>tc', '<cmd>CloakToggle<cr>', desc = '[tc] Toggle Cloak' },
|
||||
},
|
||||
config = function()
|
||||
require('cloak').setup {
|
||||
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 = '=.+',
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
-- Close buffer without messing up with the window.
|
||||
-- https://github.com/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 = {} },
|
||||
-- Describe the regexp under the cursor
|
||||
-- https://github.com/bennypowers/nvim-regexplainer
|
||||
{
|
||||
'bennypowers/nvim-regexplainer',
|
||||
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,
|
||||
},
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'MunifTanjim/nui.nvim',
|
||||
},
|
||||
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,
|
||||
opts = {
|
||||
open_fold_hl_timeout = 150,
|
||||
close_fold_kinds_for_ft = { "imports", "comment" },
|
||||
preview = {
|
||||
win_config = {
|
||||
border = { "", "─", "", "", "", "─", "", "" },
|
||||
winhighlight = "Normal:Folded",
|
||||
winblend = 0,
|
||||
},
|
||||
mappings = {
|
||||
scrollU = "<C-u>",
|
||||
scrollD = "<C-d>",
|
||||
jumpTop = "[",
|
||||
jumpBot = "]",
|
||||
},
|
||||
},
|
||||
provider_selector = function(_, _, _) -- bufnr, filetype, buftype
|
||||
return { "treesitter", "indent" }
|
||||
end,
|
||||
fold_virt_text_handler = 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,
|
||||
-- automatically show the explainer when the cursor enters a regexp
|
||||
auto = true,
|
||||
},
|
||||
},
|
||||
-- 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" },
|
||||
-- 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" },
|
||||
-- Clarify and beautify your comments using boxes and lines.
|
||||
-- https://github.com/LudoPinelli/comment-box.nvim
|
||||
{
|
||||
'LudoPinelli/comment-box.nvim',
|
||||
opts = {},
|
||||
},
|
||||
-- Automatically expand width of the current window.
|
||||
-- Maximizes and restore it. And all this with nice animations!
|
||||
-- https://github.com/anuvyklack/windows.nvim
|
||||
{
|
||||
"anuvyklack/windows.nvim",
|
||||
'anuvyklack/windows.nvim',
|
||||
dependencies = {
|
||||
"anuvyklack/middleclass",
|
||||
"anuvyklack/animation.nvim",
|
||||
'anuvyklack/middleclass',
|
||||
'anuvyklack/animation.nvim',
|
||||
},
|
||||
config = function()
|
||||
vim.o.winwidth = 15
|
||||
vim.o.winminwidth = 10
|
||||
vim.o.equalalways = false
|
||||
require("windows").setup()
|
||||
require('windows').setup()
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
140
config/nvim/lua/plugins/which-key.lua
Normal file
140
config/nvim/lua/plugins/which-key.lua
Normal file
@@ -0,0 +1,140 @@
|
||||
-- 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 {
|
||||
-- Better default experience
|
||||
{ '<space>', '<Nop>', mode = { 'n', 'v' } },
|
||||
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ With leader │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
||||
-- ── Buffer ──────────────────────────────────────────────────────────
|
||||
{
|
||||
'<leader>b',
|
||||
group = '[b] Buffer',
|
||||
expand = function()
|
||||
return require('which-key.extras').expand.buf()
|
||||
end,
|
||||
},
|
||||
{ '<leader>bk', ':blast<cr>', desc = 'Buffer: Last', mode = 'n' },
|
||||
{ '<leader>bj', ':bfirst<cr>', desc = 'Buffer: First', mode = 'n' },
|
||||
{ '<leader>bh', ':bprev<cr>', desc = 'Buffer: Prev', mode = 'n' },
|
||||
{ '<leader>bl', ':bnext<cr>', desc = 'Buffer: Next', mode = 'n' },
|
||||
{ '<leader>bd', ':Bdelete<cr>', desc = 'Buffer: Delete', mode = 'n' },
|
||||
{ '<leader>bw', ':Bwipeout<cr>', desc = 'Buffer: Wipeout', mode = 'n' },
|
||||
|
||||
-- ── Code ────────────────────────────────────────────────────────────
|
||||
{ '<leader>c', group = '[c] Code' },
|
||||
-- ── 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' },
|
||||
|
||||
{ '<leader>d', group = '[d] DAP' },
|
||||
-- See: lua/plugins/dap.lua
|
||||
|
||||
{ '<leader>g', group = '[g] Git' },
|
||||
-- See: lua/plugins/git.lua
|
||||
|
||||
{ '<leader>h', group = '[h] Harpoon' },
|
||||
-- See: lua/plugins/harpoon.lua
|
||||
|
||||
{ '<leader>l', group = '[l] LSP' },
|
||||
-- See: lua/plugins/lsp.lua
|
||||
|
||||
-- ── Quit ────────────────────────────────────────────────────────────
|
||||
{ '<leader>q', group = '[q] Quit' },
|
||||
{ '<leader>qf', ':q<CR>', desc = 'Quicker close split' },
|
||||
{ '<leader>qq', ':wq!<CR>', desc = 'Quit with force saving' },
|
||||
{ '<leader>qw', ':wq<CR>', desc = 'Write and quit' },
|
||||
|
||||
{ '<leader>s', group = '[s] Search' },
|
||||
-- See: lua/plugins/telescope.lua
|
||||
|
||||
-- ── Toggle ──────────────────────────────────────────────────────────
|
||||
{ '<leader>t', group = '[t] Toggle' },
|
||||
{ '<leader>tt', ':TransparentToggle<CR>', desc = 'Toggle Transparency' },
|
||||
{ '<leader>ts', ':noh<CR>', desc = 'Toggle Search Highlighting' },
|
||||
|
||||
{ '<leader>w', group = '[w] Workspace' },
|
||||
{ '<leader>x', group = '[x] Trouble' },
|
||||
{ '<leader>z', group = '[z] FZF' },
|
||||
|
||||
-- ── Help ────────────────────────────────────────────────────────────
|
||||
{ '<leader>?', group = '[?] Help' },
|
||||
{
|
||||
'<leader>?w',
|
||||
function()
|
||||
wk.show { global = false }
|
||||
end,
|
||||
desc = 'Buffer Local Keymaps (which-key)',
|
||||
},
|
||||
|
||||
-- ╭─────────────────────────────────────────────────────────╮
|
||||
-- │ Without leader │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
{ 'y', group = 'Yank & Surround' },
|
||||
|
||||
-- ── Old habits ──────────────────────────────────────────────────────
|
||||
{ '<C-s>', ':w<CR>', desc = 'Save file' },
|
||||
|
||||
-- ── Text manipulation in visual mode ────────────────────────────────
|
||||
{ '>', '>gv', desc = 'Indent Right', mode = 'v' },
|
||||
{ '<', '<gv', desc = 'Indent Left', mode = 'v' },
|
||||
{ 'J', ":m '>+1<CR>gv=gv", desc = 'Move Block Down', mode = 'v' },
|
||||
{ 'K', ":m '<-2<CR>gv=gv", desc = 'Move Block Up', mode = 'v' },
|
||||
|
||||
-- ── Misc keybinds ───────────────────────────────────────────────────
|
||||
{ 'QQ', ':q!<CR>', desc = 'Quit without saving' },
|
||||
{ 'WW', ':w!<CR>', desc = 'Force write to file' },
|
||||
{ 'ss', ':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>,', ':vertical resize -10<CR>', desc = 'V Resize -' },
|
||||
{ '<C-w>.', ':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>', ':noh<CR>', desc = 'Clear search highlights' },
|
||||
}
|
||||
end,
|
||||
}
|
||||
@@ -1,3 +1,13 @@
|
||||
Plugins
|
||||
lua
|
||||
plugins
|
||||
#'ve
|
||||
i/!
|
||||
i've/!
|
||||
I've
|
||||
I
|
||||
good
|
||||
#rd
|
||||
#rd/!
|
||||
#rd
|
||||
#rd
|
||||
#rd/!
|
||||
#rd
|
||||
wrd/!
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
@@ -1,7 +0,0 @@
|
||||
blade-formatter
|
||||
corepack
|
||||
editorconfig-checker
|
||||
github-release-notes
|
||||
neovim
|
||||
stylelint-lsp
|
||||
|
||||
@@ -29,13 +29,15 @@ type = "prompt"
|
||||
style = "mixed"
|
||||
|
||||
[blocks.segments.mapped_locations]
|
||||
"~/Code/*" = ""
|
||||
"~/Code/*" = ""
|
||||
"~/Code/ivuorinen/" = ""
|
||||
|
||||
[[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 }}"
|
||||
# template = "{{ .UpstreamIcon }}{{ .HEAD }} {{ if or (.Staging.Changed) (.Working.Changed) }}({{if .Behind }}\u2193 {{ .Behind }} {{ end }}{{if .Staging.Changed }}\uF046 {{ .Staging.String }} {{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }}| {{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}){{ end }}"
|
||||
template = "{{ .UpstreamIcon }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} {{ .StashCount }}{{ end }}"
|
||||
|
||||
[blocks.segments.properties]
|
||||
fetch_status = true
|
||||
|
||||
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
|
||||
@@ -2,52 +2,98 @@
|
||||
|
||||
```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>/ * <Lua 380: ~/.config/nvim/lua/plugins/telescope.lua:82>
|
||||
[/] Fuzzily search in current buffer]
|
||||
n <Space>hw * <Lua 42: ~/.config/nvim/lua/plugins/harpoon.lua:40>
|
||||
Open harpoon window with telescope
|
||||
n <Space>1 * <Lua 40: ~/.config/nvim/lua/plugins/harpoon.lua:68>
|
||||
harpoon to file 1
|
||||
n <Space>hn * <Lua 39: ~/.config/nvim/lua/plugins/harpoon.lua:61>
|
||||
harpoon to next file
|
||||
n <Space>hp * <Lua 38: ~/.config/nvim/lua/plugins/harpoon.lua:54>
|
||||
harpoon to previous file
|
||||
n <Space>ha * <Lua 37: ~/.config/nvim/lua/plugins/harpoon.lua:47>
|
||||
harpoon file
|
||||
n <Space>5 * <Lua 36: ~/.config/nvim/lua/plugins/harpoon.lua:96>
|
||||
harpoon to file 5
|
||||
n <Space>4 * <Lua 35: ~/.config/nvim/lua/plugins/harpoon.lua:89>
|
||||
harpoon to file 4
|
||||
n <Space>3 * <Lua 34: ~/.config/nvim/lua/plugins/harpoon.lua:82>
|
||||
harpoon to file 3
|
||||
n <Space>2 * <Lua 33: ~/.config/nvim/lua/plugins/harpoon.lua:75>
|
||||
harpoon to file 2
|
||||
n <Space>tc * <Cmd>CloakToggle<CR>
|
||||
[tc] Toggle Cloak
|
||||
n <Space>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>
|
||||
n <Space>xx * <Cmd>Trouble<CR>
|
||||
Toggle Trouble
|
||||
n <Space>xq * <Cmd>Trouble quickfix<CR>
|
||||
Toggle Quickfix
|
||||
n <Space>xl * <Cmd>Trouble loclist<CR>
|
||||
Toggle Loclist
|
||||
n <Space>xd * <Cmd>Trouble document_diagnostics<CR>
|
||||
Toggle Document Diagnostics
|
||||
n <Space>xw * <Cmd>Trouble workspace_diagnostics<CR>
|
||||
Toggle Workspace Diagnostics
|
||||
n <Space>?s * <Cmd>Neoconf show<CR>
|
||||
Neoconf: Show merged config
|
||||
n <Space>?m * <Cmd>Neoconf lsp<CR>
|
||||
Neoconf: Show merged LSP config
|
||||
n <Space>?l * <Cmd>Neoconf local<CR>
|
||||
Neoconf: Local
|
||||
n <Space>?g * <Cmd>Neoconf global<CR>
|
||||
Neoconf: Global
|
||||
n <Space>?c * <Cmd>Neoconf<CR>
|
||||
Neoconf: Open
|
||||
n <Space>wl * <Cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>
|
||||
LSP: Workspace List Folders
|
||||
n <Space>wr * <Cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>
|
||||
LSP: Workspace Remove Folder
|
||||
n <Space>wa * <Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>
|
||||
LSP: Workspace Add Folder
|
||||
n <Space>ws * <Cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>
|
||||
LSP: Workspace Symbols
|
||||
n <Space>ds * <Cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>
|
||||
LSP: Document Symbols
|
||||
n <Space>D * <Cmd>lua vim.lsp.buf.type_definition()<CR>
|
||||
LSP: Type Definition
|
||||
n <Space>ca * <Cmd>lua vim.lsp.buf.code_action()<CR>
|
||||
LSP: Code Action
|
||||
n <Space>cr * <Cmd>lua vim.lsp.buf.rename()<CR>
|
||||
LSP: Rename
|
||||
n <Space>dq * <Cmd>lua vim.diagnostic.setloclist()<CR>
|
||||
Diagnostic: Set loc list
|
||||
n <Space>do * <Cmd>lua vim.diagnostic.open_float()<CR>
|
||||
Diagnostic: Open float
|
||||
<Space>cf * <Lua 107: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
[f] Format buffer
|
||||
n <Space>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>e * <Lua 81: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
NeoTree reveal
|
||||
n <Space>cg * <Lua 50: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Generate annotations
|
||||
n <Space>zm * <Lua 49: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
FZF: search mappings.
|
||||
n <Space>zh * <Lua 48: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
FZF: search history of opened files
|
||||
n <Space>zb * <Lua 47: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
FZF: search open buffers.
|
||||
n <Space>zt * <Lua 46: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
FZF: search open tabs.
|
||||
n <Space>zc * <Lua 32: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
FZF: search commands.
|
||||
n <Space>zf * <Lua 31: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
FZF: search for files in given path.
|
||||
n <Space>zg * <Lua 25: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
FZF: search with rg (aka live grep).
|
||||
n <Space>dc * <Lua 45: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
DAP: Continue
|
||||
n <Space>db * <Lua 44: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
DAP: Toggle Breakpoint
|
||||
n <Space>dt * <Lua 43: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
DAP: Toggle UI
|
||||
n <Space>ht * <Lua 369: ~/.config/nvim/lua/plugins/harpoon.lua:16>
|
||||
Open Harpoon Quick menu
|
||||
n <Space>dr * <Lua 41: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
DAP: Reset
|
||||
x # * <Lua 7: vim/_defaults.lua:0>
|
||||
:help v_#-default
|
||||
o % <Plug>(MatchitOperationForward)
|
||||
@@ -59,8 +105,11 @@ x * * <Lua 3: vim/_defaults.lua:0>
|
||||
:help v_star-default
|
||||
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||
:help v_@-default
|
||||
n K * <Cmd>lua vim.lsp.buf.hover()<CR>
|
||||
LSP: Hover Documentation
|
||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||
:help v_Q-default
|
||||
x S <Plug>VSurround
|
||||
n Y * y$
|
||||
:help Y-default
|
||||
o [% <Plug>(MatchitOperationMultiBackward)
|
||||
@@ -74,39 +123,27 @@ n ]% <Plug>(MatchitNormalMultiForward)
|
||||
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
|
||||
n cS <Plug>CSurround
|
||||
n cs <Plug>Csurround
|
||||
n ds <Plug>Dsurround
|
||||
n dp * <Cmd>lua vim.diagnostic.goto_prev()<CR>
|
||||
Diagnostic: Goto Prev
|
||||
n dn * <Cmd>lua vim.diagnostic.goto_next()<CR>
|
||||
Diagnostic: Goto Next
|
||||
o g% <Plug>(MatchitOperationBackward)
|
||||
x g% <Plug>(MatchitVisualBackward)
|
||||
n g% <Plug>(MatchitNormalBackward)
|
||||
x gS <Plug>VgSurround
|
||||
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 gD * <Cmd>lua vim.lsp.buf.declaration()<CR>
|
||||
LSP: Goto Declaration
|
||||
n gd * <Cmd>lua vim.lsp.buf.definition()<CR>
|
||||
LSP: Goto Definition
|
||||
n gr * <Cmd>lua require("telescope.builtin").lsp_references()<CR>
|
||||
LSP: Goto References
|
||||
n gI * <Cmd>lua vim.lsp.buf.implementation()<CR>
|
||||
LSP: Goto Implementation
|
||||
o gc * <Lua 13: vim/_defaults.lua:0>
|
||||
Comment textobject
|
||||
n gcc * <Lua 12: vim/_defaults.lua:0>
|
||||
@@ -119,54 +156,17 @@ 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>
|
||||
Highlight next surrounding
|
||||
n sFn * <Lua 265: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find next left surrounding
|
||||
n sfn * <Lua 264: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find next right surrounding
|
||||
n srn * <Lua 263: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Replace next surrounding
|
||||
n sdn * <Lua 262: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Delete next surrounding
|
||||
n shl * <Lua 261: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Highlight previous surrounding
|
||||
n sFl * <Lua 260: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find previous left surrounding
|
||||
n sfl * <Lua 259: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find previous right surrounding
|
||||
n srl * <Lua 258: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Replace previous surrounding
|
||||
n sdl * <Lua 257: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Delete previous surrounding
|
||||
x sa * :<C-U>lua MiniSurround.add('visual')<CR>
|
||||
Add surrounding to selection
|
||||
n sn * <Lua 256: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:892>
|
||||
Update `MiniSurround.config.n_lines`
|
||||
n sh * <Lua 255: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Highlight surrounding
|
||||
n sF * <Lua 254: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find left surrounding
|
||||
n sf * <Lua 253: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Find right surrounding
|
||||
n sr * <Lua 252: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Replace surrounding
|
||||
n sd * <Lua 251: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Delete surrounding
|
||||
n sa * <Lua 250: ~/.local/share/nvim-kickstart/lazy/mini.nvim/lua/mini/surround.lua:1252>
|
||||
Add surrounding
|
||||
n j * v:count == 0 ? 'gj' : 'j'
|
||||
Move down
|
||||
n k * v:count == 0 ? 'gk' : 'k'
|
||||
Move up
|
||||
n n * <Lua 51: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
Twilight
|
||||
n ySS <Plug>YSsurround
|
||||
n ySs <Plug>YSsurround
|
||||
n yss <Plug>Yssurround
|
||||
n yS <Plug>YSurround
|
||||
n ys <Plug>Ysurround
|
||||
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 +180,44 @@ 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>
|
||||
v <Plug>VgSurround * :<C-U>call <SNR>27_opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR>
|
||||
v <Plug>VSurround * :<C-U>call <SNR>27_opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>
|
||||
n <Plug>YSurround * <SNR>27_opfunc2('setup')
|
||||
n <Plug>Ysurround * <SNR>27_opfunc('setup')
|
||||
n <Plug>YSsurround * <SNR>27_opfunc2('setup').'_'
|
||||
n <Plug>Yssurround * '^'.v:count1.<SNR>27_opfunc('setup').'g_'
|
||||
n <Plug>CSurround * :<C-U>call <SNR>27_changesurround(1)<CR>
|
||||
n <Plug>Csurround * :<C-U>call <SNR>27_changesurround()<CR>
|
||||
n <Plug>Dsurround * :<C-U>call <SNR>27_dosurround(<SNR>27_inputtarget())<CR>
|
||||
n <Plug>SurroundRepeat * .
|
||||
n <C-L> * :<C-U>TmuxNavigateRight<CR>
|
||||
n <C-Bslash> * :<C-U>TmuxNavigatePrevious<CR>
|
||||
n <C-J> * :<C-U>TmuxNavigateDown<CR>
|
||||
n <C-H> * :<C-U>TmuxNavigateLeft<CR>
|
||||
n <C-K> * :<C-U>TmuxNavigateUp<CR>
|
||||
s <Plug>luasnip-jump-prev * <Lua 283: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:57>
|
||||
LuaSnip: Jump to the previous node
|
||||
s <Plug>luasnip-jump-next * <Lua 282: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:54>
|
||||
LuaSnip: Jump to the next node
|
||||
s <Plug>luasnip-prev-choice * <Lua 281: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:51>
|
||||
LuaSnip: Change to the previous choice from the choiceNode
|
||||
s <Plug>luasnip-next-choice * <Lua 280: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:48>
|
||||
LuaSnip: Change to the next choice from the choiceNode
|
||||
s <Plug>luasnip-expand-snippet * <Lua 279: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:45>
|
||||
LuaSnip: Expand the current snippet
|
||||
s <Plug>luasnip-expand-or-jump * <Lua 278: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:42>
|
||||
LuaSnip: Expand or jump in the current snippet
|
||||
<Plug>luasnip-expand-repeat * <Lua 276: ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua:35>
|
||||
LuaSnip: Repeat last node expansion
|
||||
n <Plug>luasnip-delete-check * <Lua 274: ~/.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-P> * <Lua 26: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
|
||||
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>
|
||||
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>
|
||||
```
|
||||
|
||||
- Generated on Sat 10 Aug 2024 13:01:59 EEST
|
||||
- Generated on Wed 25 Sep 2024 14:52:25 EEST
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
relink: true
|
||||
path: config/*
|
||||
exclude: [config/nvm]
|
||||
~/.config/nvm/default-packages:
|
||||
create: true
|
||||
relink: true
|
||||
path: config/nvm/default-packages
|
||||
~/.local/bin:
|
||||
glob: true
|
||||
path: local/bin/*
|
||||
@@ -53,6 +49,7 @@
|
||||
mode: 0600
|
||||
path: ssh/*
|
||||
- shell:
|
||||
- bash add-submodules.sh || true
|
||||
- git submodule update --init --recursive --force
|
||||
- bash local/bin/dfm install all
|
||||
- pipx:
|
||||
|
||||
@@ -44,6 +44,23 @@ if ! declare -f msg_done > /dev/null; then
|
||||
}
|
||||
fi
|
||||
|
||||
if ! declare -f array_diff > /dev/null; then
|
||||
# Function to compare two arrays and return the difference
|
||||
# Example: array_diff DIFFERENCE ARRAY1 ARRAY2
|
||||
# $1 - variable to store the difference
|
||||
# $2 - first array
|
||||
# $3 - second array
|
||||
# Output to $1 the difference between $2 and $3
|
||||
# Source: https://stackoverflow.com/a/42399479/594940
|
||||
array_diff()
|
||||
{
|
||||
eval local ARR1=\(\"\${$2[@]}\"\)
|
||||
eval local ARR2=\(\"\${$3[@]}\"\)
|
||||
local IFS=$'\n'
|
||||
mapfile -t "$1" < <(comm -23 <(echo "${ARR1[*]}" | sort) <(echo "${ARR2[*]}" | sort))
|
||||
}
|
||||
fi
|
||||
|
||||
VERSION_NVM="v0.39.5"
|
||||
|
||||
# Loads configs for better installation experience
|
||||
@@ -161,7 +178,7 @@ section_install()
|
||||
;;
|
||||
asdf)
|
||||
msg "Installing asdf..."
|
||||
bash "$DOTFILES/scripts/install-asdf.sh install" \
|
||||
bash "$DOTFILES/scripts/install-asdf.sh both" \
|
||||
&& msg_yay "asdf installed!"
|
||||
;;
|
||||
cargo)
|
||||
@@ -293,6 +310,7 @@ section_brew()
|
||||
"autoupdate:Setups brew auto-update and runs it immediately"
|
||||
"leaves:List brew leaves (installed on request)"
|
||||
"clean:Clean up brew packages"
|
||||
"untracked:List untracked brew packages"
|
||||
)
|
||||
|
||||
x-have brew && {
|
||||
@@ -309,11 +327,55 @@ section_brew()
|
||||
brew bundle dump \
|
||||
--force \
|
||||
--file="$BREWFILE" \
|
||||
--cleanup \
|
||||
--tap \
|
||||
--formula \
|
||||
--cask \
|
||||
--describe && msg_yay "Done!"
|
||||
;;
|
||||
leaves)
|
||||
brew leaves --installed-on-request
|
||||
;;
|
||||
untracked)
|
||||
declare -a BREW_LIST_ALL
|
||||
while IFS= read -r line; do
|
||||
BREW_LIST_ALL+=("$line")
|
||||
done < <(brew list --formula --installed-on-request -1 --full-name)
|
||||
while IFS= read -r c; do
|
||||
BREW_LIST_ALL+=("$c")
|
||||
done < <(brew list --cask -1 --full-name)
|
||||
|
||||
# Remove entries that are installed as dependencies
|
||||
declare -a BREW_LIST_DEPENDENCIES
|
||||
while IFS= read -r l; do
|
||||
BREW_LIST_DEPENDENCIES+=("$l")
|
||||
done < <(brew list -1 --installed-as-dependency)
|
||||
|
||||
declare -a BREW_LIST_BUNDLED
|
||||
while IFS= read -r b; do
|
||||
BREW_LIST_BUNDLED+=("$b")
|
||||
done < <(brew bundle list --all --file="$BREWFILE")
|
||||
|
||||
declare -a BREW_LIST_TRACKED_WITHOUT_DEPS
|
||||
for f in "${BREW_LIST_ALL[@]}"; do
|
||||
if [[ ! " ${BREW_LIST_DEPENDENCIES[@]} " =~ " ${f} " ]]; then
|
||||
BREW_LIST_TRACKED_WITHOUT_DEPS+=("$f")
|
||||
fi
|
||||
done
|
||||
|
||||
array_diff BREW_LIST_UNTRACKED BREW_LIST_TRACKED_WITHOUT_DEPS BREW_LIST_BUNDLED
|
||||
|
||||
# If there are no untracked packages, exit
|
||||
if [ ${#BREW_LIST_UNTRACKED[@]} -eq 0 ]; then
|
||||
msg_yay "No untracked packages found!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Untracked:"
|
||||
for f in "${BREW_LIST_UNTRACKED[@]}"; do
|
||||
echo " $f"
|
||||
done
|
||||
;;
|
||||
clean)
|
||||
brew bundle cleanup --file="$BREWFILE" && msg_yay "Done!"
|
||||
;;
|
||||
@@ -417,7 +479,9 @@ section_dotfiles()
|
||||
! x-have shfmt && msg_err "shfmt not found, install with asdf"
|
||||
# Format shell scripts according to following rules.
|
||||
fd --full-path "$DOTFILES" -tx \
|
||||
--hidden \
|
||||
-E '*.pl' -E '*.php' -E '*.py' -E '*.zsh' -E 'plugins' -E 'fzf' -E 'dotbot' \
|
||||
-E 'test' -E '**/bin/asdf/**' -E '**/tldr/*' \
|
||||
-x shfmt \
|
||||
--language-dialect bash \
|
||||
--func-next-line --list --write \
|
||||
|
||||
92
local/bin/x-term-colors
Executable file
92
local/bin/x-term-colors
Executable file
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# This file echoes a bunch of 24-bit color codes
|
||||
# to the terminal to demonstrate its functionality.
|
||||
# The foreground escape sequence is ^[38;2;<r>;<g>;<b>m
|
||||
# The background escape sequence is ^[48;2;<r>;<g>;<b>m
|
||||
# <r> <g> <b> range from 0 to 255 inclusive.
|
||||
# The escape sequence ^[0m returns output to default
|
||||
|
||||
setBackgroundColor()
|
||||
{
|
||||
echo -en "\x1b[48;2;$1;$2;$3""m"
|
||||
}
|
||||
|
||||
resetOutput()
|
||||
{
|
||||
echo -en "\x1b[0m\n"
|
||||
}
|
||||
|
||||
# Gives a color $1/255 % along HSV
|
||||
# Who knows what happens when $1 is outside 0-255
|
||||
# Echoes "$red $green $blue" where
|
||||
# $red $green and $blue are integers
|
||||
# ranging between 0 and 255 inclusive
|
||||
rainbowColor()
|
||||
{
|
||||
let h=$1/43
|
||||
let f=$1-43*$h
|
||||
let t=$f*255/43
|
||||
let q=255-t
|
||||
|
||||
if [ $h -eq 0 ]; then
|
||||
echo "255 $t 0"
|
||||
elif [ $h -eq 1 ]; then
|
||||
echo "$q 255 0"
|
||||
elif [ $h -eq 2 ]; then
|
||||
echo "0 255 $t"
|
||||
elif [ $h -eq 3 ]; then
|
||||
echo "0 $q 255"
|
||||
elif [ $h -eq 4 ]; then
|
||||
echo "$t 0 255"
|
||||
elif [ $h -eq 5 ]; then
|
||||
echo "255 0 $q"
|
||||
else
|
||||
# execution should never reach here
|
||||
echo "0 0 0"
|
||||
fi
|
||||
}
|
||||
|
||||
for i in $(seq 0 127); do
|
||||
setBackgroundColor "$i" 0 0
|
||||
echo -en " "
|
||||
done
|
||||
resetOutput
|
||||
for i in $(seq 255 128); do
|
||||
setBackgroundColor "$i" 0 0
|
||||
echo -en " "
|
||||
done
|
||||
resetOutput
|
||||
|
||||
for i in $(seq 0 127); do
|
||||
setBackgroundColor 0 "$i" 0
|
||||
echo -n " "
|
||||
done
|
||||
resetOutput
|
||||
for i in $(seq 255 128); do
|
||||
setBackgroundColor 0 "$i" 0
|
||||
echo -n " "
|
||||
done
|
||||
resetOutput
|
||||
|
||||
for i in $(seq 0 127); do
|
||||
setBackgroundColor 0 0 "$i"
|
||||
echo -n " "
|
||||
done
|
||||
resetOutput
|
||||
for i in $(seq 255 128); do
|
||||
setBackgroundColor 0 0 "$i"
|
||||
echo -n " "
|
||||
done
|
||||
resetOutput
|
||||
|
||||
for i in $(seq 0 127); do
|
||||
setBackgroundColor $(rainbowColor "$i")
|
||||
echo -n " "
|
||||
done
|
||||
resetOutput
|
||||
for i in $(seq 255 128); do
|
||||
setBackgroundColor $(rainbowColor "$i")
|
||||
echo -n " "
|
||||
done
|
||||
resetOutput
|
||||
@@ -2,7 +2,6 @@
|
||||
"name": "ivuorinen-dotfiles",
|
||||
"version": "1.0.0",
|
||||
"description": "ivuorinen's dotfiles, this is for linting and formatters",
|
||||
"main": "index.js",
|
||||
"directories": {
|
||||
"doc": "docs"
|
||||
},
|
||||
@@ -28,8 +27,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/ivuorinen/dotfiles#readme",
|
||||
"devDependencies": {
|
||||
"@ivuorinen/base-configs": "^2.0.0",
|
||||
"prettier-plugin-sh": "^0.14.0"
|
||||
"@ivuorinen/base-configs": "^2.0.0"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22"
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ main()
|
||||
printf "\`\`\`txt"
|
||||
} > "$DEST"
|
||||
|
||||
NVIM_APPNAME="nvim-kickstart" nvim -c "redir! >> $DEST" -c 'silent verbose map' -c 'redir END' -c 'q'
|
||||
nvim -c "redir! >> $DEST" -c 'silent verbose map' -c 'redir END' -c 'q'
|
||||
|
||||
printf "\n\`\`\`\n\n- Generated on %s\n" "$(date)" >> "$DEST"
|
||||
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Install asdf
|
||||
# Install asdf and plugins I use
|
||||
#
|
||||
# It also updates asdf and the plugins, and then reshim asdf.
|
||||
#
|
||||
# Usage: ./install-asdf.sh [both|install|add_plugins]
|
||||
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
||||
# License: MIT
|
||||
#
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
|
||||
@@ -40,19 +47,16 @@ install_asdf_plugins()
|
||||
"hadolint:github.com/devlincashman/asdf-hadolint.git"
|
||||
"kubectl:github.com/asdf-community/asdf-kubectl.git"
|
||||
"lazygit:github.com/nklmilojevic/asdf-lazygit.git"
|
||||
"markdownlint-cli2:github.com/paulo-ferraz-oliveira/asdf-markdownlint-cli2.git"
|
||||
"nodejs:github.com/asdf-vm/asdf-nodejs.git"
|
||||
"pipx:github.com/yozachar/asdf-pipx.git"
|
||||
"pre-commit:github.com/jonathanmorley/asdf-pre-commit.git"
|
||||
"python:github.com/asdf-community/asdf-python.git"
|
||||
"ripgrep:gitlab.com/wt0f/asdf-ripgrep.git"
|
||||
"rust:github.com/code-lever/asdf-rust.git"
|
||||
"semgrep:github.com/brentjanderson/asdf-semgrep.git"
|
||||
"shellcheck:github.com/luizm/asdf-shellcheck.git"
|
||||
"shfmt:github.com/luizm/asdf-shfmt.git"
|
||||
"terragrunt:github.com/ohmer/asdf-terragrunt.git"
|
||||
"tf-summarize:github.com/adamcrews/asdf-tf-summarize.git"
|
||||
"vault:github.com/asdf-community/asdf-hashicorp.git"
|
||||
"yamllint:github.com/ericcornelissen/asdf-yamllint.git"
|
||||
"yq:github.com/sudermanjr/asdf-yq.git"
|
||||
)
|
||||
@@ -83,13 +87,18 @@ reshim()
|
||||
# create usage function
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 [install|add_plugins]"
|
||||
echo "Usage: $0 [both|install|add_plugins]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
case $1 in
|
||||
"both")
|
||||
install_asdf_plugins
|
||||
update_asdf
|
||||
reshim
|
||||
;;
|
||||
"install")
|
||||
update_asdf
|
||||
reshim
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
# Install cargo/rust packages.
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
|
||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
||||
exit 0
|
||||
|
||||
eval "$HOME/.dotfiles/config/shared.sh"
|
||||
|
||||
msg "Starting to install rust/cargo packages"
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
#
|
||||
# Install fzf
|
||||
#
|
||||
|
||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
||||
exit 0
|
||||
|
||||
# shellcheck source=shared.sh
|
||||
eval "$DOTFILES/config/shared.sh"
|
||||
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
# Install Go packages
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
|
||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
||||
exit 0
|
||||
|
||||
eval "$DOTFILES/config/shared.sh"
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
# Install npm packages globally.
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
|
||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
||||
exit 0
|
||||
|
||||
eval "$DOTFILES/config/shared.sh"
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
# Install python/pip packages.
|
||||
#
|
||||
# shellcheck source=shared.sh
|
||||
|
||||
echo "This file ($0) has been deprecated in favor of asdf. Please use asdf instead."
|
||||
exit 0
|
||||
|
||||
source "${DOTFILES}/config/shared.sh"
|
||||
|
||||
# Enable verbosity with VERBOSE=1
|
||||
|
||||
BIN
secrets/.gitkeep
BIN
secrets/.gitkeep
Binary file not shown.
Reference in New Issue
Block a user