mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-02 21:48:12 +00:00
Compare commits
73 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8ff2699e6 | ||
| c5e06888b8 | |||
|
|
4f138eee73 | ||
|
|
90258e5105 | ||
| efc53fc9bf | |||
|
|
f62c17d940 | ||
|
|
fb15b93887 | ||
|
|
222276486a | ||
|
|
4446d59e73 | ||
| a22709a0f0 | |||
| 76598ad33b | |||
| 56ccb7c136 | |||
|
|
b6d933d018 | ||
| f9856a27b9 | |||
| b36b52ad57 | |||
| 1e60ccf49b | |||
|
|
9ca9439b9a | ||
| 6d30ae7e84 | |||
| 031e124663 | |||
| bb50c9fe18 | |||
| 8e608de501 | |||
|
|
8917b7736b | ||
| 18ff879f1d | |||
| c5a258d7be | |||
| 7525f1f71d | |||
| 3b665bdba0 | |||
| 99477364bd | |||
|
|
629fdf6d4c | ||
| 1288599b1f | |||
| be3a68fecb | |||
| 101e4da1d6 | |||
| 23430a609a | |||
| bb0d56e403 | |||
| d3b08bdf4f | |||
| e1ec501c55 | |||
| f92c3407f0 | |||
| b5971439b6 | |||
| 8ea8a2797a | |||
| b0f9222482 | |||
| 825ccc1031 | |||
| dab7a8a38a | |||
| 1dbc7ae5cd | |||
| 7038da568e | |||
| bfcaa26070 | |||
| f6488aecce | |||
| ad166e8012 | |||
| 2a76a414a0 | |||
| bb8ddf0bba | |||
| bf3e746010 | |||
|
|
b9957e4f0e | ||
| e1deba4ccf | |||
| 36e4de3035 | |||
| 3eab1faeab | |||
| 1eb4098646 | |||
| f7db8cae15 | |||
| 97dd3dc21d | |||
| 6da6797f1b | |||
|
|
88356f1392 | ||
| 174bb842e9 | |||
| f6e7590118 | |||
| 498996a6e2 | |||
| 0961985fb4 | |||
| 293452604d | |||
|
|
9582f18c7d | ||
| 051e3604ee | |||
| 09d62dd159 | |||
| 8a3763e168 | |||
| c37793f649 | |||
| 7bc7230990 | |||
| 067df4e34b | |||
| 4d28499423 | |||
| b685af82fb | |||
|
|
b8a4b82431 |
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* @ivuorinen
|
||||||
2
.github/workflows/pre-commit-autoupdate.yml
vendored
2
.github/workflows/pre-commit-autoupdate.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v5.3.0
|
- uses: actions/setup-python@v5.4.0
|
||||||
- run: pip install pre-commit && pre-commit autoupdate
|
- run: pip install pre-commit && pre-commit autoupdate
|
||||||
- uses: peter-evans/create-pull-request@v7
|
- uses: peter-evans/create-pull-request@v7
|
||||||
with:
|
with:
|
||||||
|
|||||||
23
.github/workflows/sync-labels.yml
vendored
Normal file
23
.github/workflows/sync-labels.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
name: Sync labels
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- .github/workflows/sync-labels.yml
|
||||||
|
- .github/labels.yml
|
||||||
|
schedule:
|
||||||
|
- cron: "34 5 * * *"
|
||||||
|
workflow_call:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
SyncLabels:
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: ivuorinen/actions/sync-labels@main
|
||||||
24
.gitmodules
vendored
24
.gitmodules
vendored
@@ -1,4 +1,4 @@
|
|||||||
# vim: set expandtab:
|
# vim: noexpandtab filetype=gitconfig
|
||||||
[submodule "dotbot"]
|
[submodule "dotbot"]
|
||||||
path = tools/dotbot
|
path = tools/dotbot
|
||||||
url = https://github.com/anishathalye/dotbot.git
|
url = https://github.com/anishathalye/dotbot.git
|
||||||
@@ -23,47 +23,69 @@
|
|||||||
path = config/tmux/plugins/tmux-continuum
|
path = config/tmux/plugins/tmux-continuum
|
||||||
url = https://github.com/tmux-plugins/tmux-continuum
|
url = https://github.com/tmux-plugins/tmux-continuum
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-sensible"]
|
[submodule "tmux/tmux-sensible"]
|
||||||
path = config/tmux/plugins/tmux-sensible
|
path = config/tmux/plugins/tmux-sensible
|
||||||
url = https://github.com/tmux-plugins/tmux-sensible.git
|
url = https://github.com/tmux-plugins/tmux-sensible.git
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-sessionist"]
|
[submodule "tmux/tmux-sessionist"]
|
||||||
path = config/tmux/plugins/tmux-sessionist
|
path = config/tmux/plugins/tmux-sessionist
|
||||||
url = https://github.com/tmux-plugins/tmux-sessionist.git
|
url = https://github.com/tmux-plugins/tmux-sessionist.git
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-yank"]
|
[submodule "tmux/tmux-yank"]
|
||||||
path = config/tmux/plugins/tmux-yank
|
path = config/tmux/plugins/tmux-yank
|
||||||
url = https://github.com/tmux-plugins/tmux-yank.git
|
url = https://github.com/tmux-plugins/tmux-yank.git
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-window-name"]
|
[submodule "tmux/tmux-window-name"]
|
||||||
path = config/tmux/plugins/tmux-window-name
|
path = config/tmux/plugins/tmux-window-name
|
||||||
url = https://github.com/ivuorinen/tmux-window-name.git
|
url = https://github.com/ivuorinen/tmux-window-name.git
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "dotbot-pip"]
|
[submodule "dotbot-pip"]
|
||||||
path = tools/dotbot-pip
|
path = tools/dotbot-pip
|
||||||
url = https://github.com/sobolevn/dotbot-pip.git
|
url = https://github.com/sobolevn/dotbot-pip.git
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-suspend"]
|
[submodule "tmux/tmux-suspend"]
|
||||||
path = config/tmux/plugins/tmux-suspend
|
path = config/tmux/plugins/tmux-suspend
|
||||||
url = https://github.com/MunifTanjim/tmux-suspend.git
|
url = https://github.com/MunifTanjim/tmux-suspend.git
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-mode-indicator"]
|
[submodule "tmux/tmux-mode-indicator"]
|
||||||
path = config/tmux/plugins/tmux-mode-indicator
|
path = config/tmux/plugins/tmux-mode-indicator
|
||||||
url = https://github.com/MunifTanjim/tmux-mode-indicator.git
|
url = https://github.com/MunifTanjim/tmux-mode-indicator.git
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-current-pane-hostname"]
|
[submodule "tmux/tmux-current-pane-hostname"]
|
||||||
path = config/tmux/plugins/tmux-current-pane-hostname
|
path = config/tmux/plugins/tmux-current-pane-hostname
|
||||||
url = https://github.com/soyuka/tmux-current-pane-hostname.git
|
url = https://github.com/soyuka/tmux-current-pane-hostname.git
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "cheat-tldr"]
|
[submodule "cheat-tldr"]
|
||||||
path = config/cheat/cheatsheets/tldr
|
path = config/cheat/cheatsheets/tldr
|
||||||
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "tmux/tmux-dark-notify"]
|
[submodule "tmux/tmux-dark-notify"]
|
||||||
path = config/tmux/plugins/tmux-dark-notify
|
path = config/tmux/plugins/tmux-dark-notify
|
||||||
url = https://github.com/erikw/tmux-dark-notify.git
|
url = https://github.com/erikw/tmux-dark-notify.git
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "asdf"]
|
[submodule "asdf"]
|
||||||
path = local/bin/asdf
|
path = local/bin/asdf
|
||||||
url = https://github.com/asdf-vm/asdf.git
|
url = https://github.com/asdf-vm/asdf.git
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "antidote"]
|
[submodule "antidote"]
|
||||||
path = tools/antidote
|
path = tools/antidote
|
||||||
url = https://github.com/mattmc3/antidote.git
|
url = https://github.com/mattmc3/antidote.git
|
||||||
shallow = true
|
shallow = true
|
||||||
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "dotbot-asdf"]
|
[submodule "dotbot-asdf"]
|
||||||
path = tools/dotbot-asdf
|
path = tools/dotbot-asdf
|
||||||
url = https://github.com/sobolevn/dotbot-asdf
|
url = https://github.com/sobolevn/dotbot-asdf
|
||||||
|
ignore = dirty
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ repos:
|
|||||||
args: [--autofix, --no-sort-keys]
|
args: [--autofix, --no-sort-keys]
|
||||||
|
|
||||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||||
rev: v0.43.0
|
rev: v0.44.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: markdownlint
|
- id: markdownlint
|
||||||
args: [-c, .markdownlint.json, --fix]
|
args: [-c, .markdownlint.json, --fix]
|
||||||
@@ -44,12 +44,12 @@ repos:
|
|||||||
- id: shfmt
|
- id: shfmt
|
||||||
|
|
||||||
- repo: https://github.com/rhysd/actionlint
|
- repo: https://github.com/rhysd/actionlint
|
||||||
rev: v1.7.5
|
rev: v1.7.7
|
||||||
hooks:
|
hooks:
|
||||||
- id: actionlint
|
- id: actionlint
|
||||||
|
|
||||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||||
rev: 39.86.3
|
rev: 39.164.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: renovate-config-validator
|
- id: renovate-config-validator
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
3.13.1
|
3.13.2
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ git submodule add --name tmux/tmux-dark-notify \
|
|||||||
# Takes submodules and sets them to ignore all changes
|
# Takes submodules and sets them to ignore all changes
|
||||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||||
echo "Ignoring submodule changes for submodule.${MODULE}..."
|
echo "Ignoring submodule changes for submodule.${MODULE}..."
|
||||||
git config "submodule.${MODULE}.ignore" all
|
git config "submodule.${MODULE}.ignore" "dirty"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Mark certain repositories shallow
|
# Mark certain repositories shallow
|
||||||
|
|||||||
6
base/ignore
Normal file
6
base/ignore
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Applications/
|
||||||
|
Library/
|
||||||
|
Movies/
|
||||||
|
Music/
|
||||||
|
Pictures/
|
||||||
|
Google Drive/
|
||||||
@@ -43,14 +43,30 @@ automatically-unhide-macos-hidden-apps = true
|
|||||||
if.app-name-regex-substring = 'settings' # All settings
|
if.app-name-regex-substring = 'settings' # All settings
|
||||||
run = ['layout floating']
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.apple.systempreferences' # macOS System Preferences
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.1password.1password' # 1Password
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
|
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
|
||||||
run = ['layout floating']
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.jetbrains.PhpStorm' # PhpStorm
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.apple.finder' # Finder
|
if.app-id = 'com.apple.finder' # Finder
|
||||||
run = ['layout floating']
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.apple.Preview' # Preview
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
[[on-window-detected]]
|
[[on-window-detected]]
|
||||||
if.app-id = 'com.apple.mail' # Mail
|
if.app-id = 'com.apple.mail' # Mail
|
||||||
run = ['layout floating']
|
run = ['layout floating']
|
||||||
@@ -87,6 +103,19 @@ run = ['layout floating']
|
|||||||
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
|
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
|
||||||
run = ['layout floating']
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'md.obsidia' # Obsidian
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.todoist.mac.Todoist' # Todoist
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-id = 'com.apple.backup.launcher' # TimeMachine
|
||||||
|
run = ['layout floating']
|
||||||
|
|
||||||
|
|
||||||
# Possible values: (qwerty|dvorak)
|
# Possible values: (qwerty|dvorak)
|
||||||
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||||
[key-mapping]
|
[key-mapping]
|
||||||
@@ -113,6 +142,9 @@ outer.left = 0
|
|||||||
# Fallback value (if you omit the key): mode.main.binding = {}
|
# Fallback value (if you omit the key): mode.main.binding = {}
|
||||||
[mode.main.binding]
|
[mode.main.binding]
|
||||||
|
|
||||||
|
cmd-h = [] # Disable "hide application"
|
||||||
|
cmd-alt-h = [] # Disable "hide others"
|
||||||
|
|
||||||
# All possible keys:
|
# All possible keys:
|
||||||
# - Letters. a, b, c, ..., z
|
# - Letters. a, b, c, ..., z
|
||||||
# - Numbers. 0, 1, 2, ..., 9
|
# - Numbers. 0, 1, 2, ..., 9
|
||||||
@@ -150,10 +182,10 @@ alt-l = 'focus right'
|
|||||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||||
alt-shift-1 = 'workspace 1' # Main
|
alt-shift-1 = 'workspace 1' # Main
|
||||||
alt-shift-2 = 'workspace 2' # Media
|
alt-shift-2 = 'workspace 2' # Media
|
||||||
ctrl-shift-1 = 'move-node-to-workspace 1'
|
ctrl-shift-1 = 'move-node-to-workspace 1' # Move node to Main
|
||||||
ctrl-shift-2 = 'move-node-to-workspace 2'
|
ctrl-shift-2 = 'move-node-to-workspace 2' # Move node to Media
|
||||||
|
|
||||||
alt-shift-tab = 'workspace-back-and-forth'
|
alt-shift-tab = 'workspace-back-and-forth' # Switch between workspaces
|
||||||
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
|
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
|
||||||
|
|
||||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||||
|
|||||||
61
config/alias
61
config/alias
@@ -12,16 +12,27 @@ alias ..="cd .."
|
|||||||
alias ...="cd ../.."
|
alias ...="cd ../.."
|
||||||
alias ....="cd ../../.."
|
alias ....="cd ../../.."
|
||||||
|
|
||||||
|
# Get git repository root path
|
||||||
|
get_git_root()
|
||||||
|
{
|
||||||
|
# check that we are in a git repository
|
||||||
|
if git rev-parse --is-inside-work-tree &> /dev/null; then
|
||||||
|
git rev-parse --show-toplevel
|
||||||
|
else
|
||||||
|
>&2 msgr err "Not in a git repository"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# cd to git root directory
|
# cd to git root directory
|
||||||
alias cdgr='cd "$(git root)"'
|
alias cdgr='cd "$(get_git_root)"'
|
||||||
|
|
||||||
# interesting folders, and shortcuts
|
# interesting folders, and shortcuts
|
||||||
alias .="cd $HOME"
|
alias .='cd $HOME'
|
||||||
alias .b="cd $XDG_BIN_HOME"
|
alias .b='cd $XDG_BIN_HOME'
|
||||||
alias .c="cd $HOME/Code"
|
alias .c='cd $HOME/Code'
|
||||||
alias .d="cd $DOTFILES"
|
alias .d='cd $DOTFILES'
|
||||||
alias .dx="cd $DOTFILES;ks"
|
alias .l='cd $HOME/.local'
|
||||||
alias .l="cd $HOME/.local"
|
alias .o='cd $HOME/Code/ivuorinen/obsidian/'
|
||||||
|
|
||||||
# Shortcuts for listing
|
# Shortcuts for listing
|
||||||
alias ll="ls -la"
|
alias ll="ls -la"
|
||||||
@@ -31,13 +42,10 @@ alias l="ls -a"
|
|||||||
alias cd..="cd .."
|
alias cd..="cd .."
|
||||||
alias sl="ls"
|
alias sl="ls"
|
||||||
|
|
||||||
# List only directories
|
|
||||||
alias lsd="ls -lF | grep '^d'"
|
|
||||||
|
|
||||||
# IP addresses
|
# IP addresses
|
||||||
alias x-ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
alias x-ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
||||||
alias localip="ipconfig getifaddr en1"
|
alias localip="ipconfig getifaddr en1"
|
||||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //'"
|
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //' | sort"
|
||||||
|
|
||||||
# Show/hide hidden files in Finder
|
# Show/hide hidden files in Finder
|
||||||
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder"
|
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder"
|
||||||
@@ -57,14 +65,7 @@ alias isodate="date +'%Y-%m-%d'"
|
|||||||
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
||||||
alias x-timestamp="date +'%s'"
|
alias x-timestamp="date +'%s'"
|
||||||
|
|
||||||
# tmux: automatically attach or create session with name 'main'
|
# nvim aliases
|
||||||
alias tm='command tmux new-session -A -s main'
|
|
||||||
# tmux: attach or create new session
|
|
||||||
alias ta='command tmux attach || command tmux'
|
|
||||||
|
|
||||||
# nvim
|
|
||||||
alias c='nvim'
|
|
||||||
alias ks='nvim'
|
|
||||||
alias vi='nvim'
|
alias vi='nvim'
|
||||||
alias vim='nvim'
|
alias vim='nvim'
|
||||||
|
|
||||||
@@ -79,8 +80,6 @@ alias zapds='find . -name ".DS_Store" -print -delete'
|
|||||||
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
|
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
|
||||||
# Run all zaps
|
# Run all zaps
|
||||||
alias zapall="zapds && zappyc"
|
alias zapall="zapds && zappyc"
|
||||||
# tail with follow flag on
|
|
||||||
alias t='tail -f'
|
|
||||||
# directory usage, return only the total
|
# directory usage, return only the total
|
||||||
alias dn='du -chd1'
|
alias dn='du -chd1'
|
||||||
# Mirror site with wget
|
# Mirror site with wget
|
||||||
@@ -88,6 +87,7 @@ alias mirror_site='wget -m -k -K -E -e robots=off'
|
|||||||
# Mirror stdout to stderr, useful for seeing data going through a pipe
|
# Mirror stdout to stderr, useful for seeing data going through a pipe
|
||||||
alias peek='tee >(cat 1>&2)'
|
alias peek='tee >(cat 1>&2)'
|
||||||
|
|
||||||
|
# Runs Gitlab code quality scanner
|
||||||
alias code_scanner='docker run
|
alias code_scanner='docker run
|
||||||
--env SOURCE_CODE="$PWD"
|
--env SOURCE_CODE="$PWD"
|
||||||
--volume "${PWD}":/code
|
--volume "${PWD}":/code
|
||||||
@@ -95,20 +95,25 @@ alias code_scanner='docker run
|
|||||||
registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}"
|
registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}"
|
||||||
/code'
|
/code'
|
||||||
|
|
||||||
|
# Runs trivy container image scanner
|
||||||
alias trivy_scan='docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy'
|
alias trivy_scan='docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy'
|
||||||
|
# Opens dotfiles with $EDITOR
|
||||||
alias zedit='$EDITOR ~/.dotfiles'
|
alias zedit='$EDITOR ~/.dotfiles'
|
||||||
|
# Open irssi with my configurations
|
||||||
|
alias irssi='irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi'
|
||||||
|
# Configures wget to use correct wget-hsts file
|
||||||
|
alias wget='wget --hsts-file=$XDG_DATA_HOME/wget-hsts'
|
||||||
|
# Configures svn to use correct config directory
|
||||||
|
alias svn='svn --config-dir $XDG_CONFIG_HOME/subversion'
|
||||||
|
|
||||||
alias irssi="irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi"
|
# Laravel artisan shortcut
|
||||||
|
alias art='[ -f artisan ] && php artisan || php vendor/bin/artisan'
|
||||||
|
|
||||||
alias wget="wget --hsts-file=$XDG_DATA_HOME/wget-hsts"
|
# Laravel Sail shortcut
|
||||||
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
|
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
||||||
|
|
||||||
if [[ $(uname) == 'Darwin' ]]; then
|
if [[ $(uname) == 'Darwin' ]]; then
|
||||||
|
|
||||||
# Laravel Sail shortcut
|
|
||||||
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
|
||||||
|
|
||||||
# Flush Directory Service cache
|
# Flush Directory Service cache
|
||||||
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
||||||
|
|
||||||
|
|||||||
@@ -333,14 +333,6 @@ export ANTIDOTE_DIR="$DOTFILES/tools/antidote"
|
|||||||
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
||||||
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
||||||
|
|
||||||
# Antigen configuration
|
|
||||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
|
||||||
msg "Setting up Antigen configuration"
|
|
||||||
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
|
||||||
export ANTIGEN_CACHE="$XDG_CACHE_HOME/antigen"
|
|
||||||
export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate"
|
|
||||||
export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
|
|
||||||
|
|
||||||
# Ansible configuration
|
# Ansible configuration
|
||||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||||
msg "Setting up Ansible configuration"
|
msg "Setting up Ansible configuration"
|
||||||
@@ -476,11 +468,13 @@ export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
|||||||
# tmux
|
# tmux
|
||||||
# https://tmux.github.io/
|
# https://tmux.github.io/
|
||||||
msg "Setting up tmux configuration"
|
msg "Setting up tmux configuration"
|
||||||
export TMUX_PLUGINS="$XDG_CONFIG_HOME/tmux/plugins"
|
export TMUX_TMPDIR="$XDG_STATE_HOME/tmux"
|
||||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
export TMUX_CONF_DIR="$XDG_CONFIG_HOME/tmux"
|
||||||
|
export TMUX_PLUGINS="$TMUX_CONF_DIR/plugins"
|
||||||
|
export TMUX_CONF="$TMUX_CONF_DIR/tmux.conf"
|
||||||
## These settings are for zsh-tmux
|
## These settings are for zsh-tmux
|
||||||
export ZSH_TMUX_AUTOSTART=false
|
export ZSH_TMUX_AUTOSTART=false
|
||||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
export ZSH_TMUX_CONFIG="$TMUX_CONF"
|
||||||
export ZSH_TMUX_UNICODE=true
|
export ZSH_TMUX_UNICODE=true
|
||||||
export ZSH_TMUX_AUTOQUIT=false
|
export ZSH_TMUX_AUTOQUIT=false
|
||||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ tap "k8sgpt-ai/k8sgpt"
|
|||||||
tap "keith/formulae"
|
tap "keith/formulae"
|
||||||
tap "mongodb/brew"
|
tap "mongodb/brew"
|
||||||
tap "nikitabobko/tap"
|
tap "nikitabobko/tap"
|
||||||
|
tap "pantheon-systems/external"
|
||||||
tap "reviewdog/tap"
|
tap "reviewdog/tap"
|
||||||
tap "shivammathur/extensions"
|
tap "shivammathur/extensions"
|
||||||
tap "shivammathur/php"
|
tap "shivammathur/php"
|
||||||
@@ -28,6 +29,8 @@ brew "age"
|
|||||||
brew "ca-certificates"
|
brew "ca-certificates"
|
||||||
# Mozilla CA bundle for Python
|
# Mozilla CA bundle for Python
|
||||||
brew "certifi"
|
brew "certifi"
|
||||||
|
# Cryptography and SSL/TLS Toolkit
|
||||||
|
brew "openssl@3"
|
||||||
# Cryptographic recipes and primitives for Python
|
# Cryptographic recipes and primitives for Python
|
||||||
brew "cryptography"
|
brew "cryptography"
|
||||||
# YAML Parser
|
# YAML Parser
|
||||||
@@ -46,8 +49,6 @@ brew "highway"
|
|||||||
brew "imath"
|
brew "imath"
|
||||||
# JPEG image codec that aids compression and decompression
|
# JPEG image codec that aids compression and decompression
|
||||||
brew "jpeg-turbo"
|
brew "jpeg-turbo"
|
||||||
# Library for manipulating PNG images
|
|
||||||
brew "libpng"
|
|
||||||
# Zstandard is a real-time compression algorithm
|
# Zstandard is a real-time compression algorithm
|
||||||
brew "zstd"
|
brew "zstd"
|
||||||
# New file format for still image compression
|
# New file format for still image compression
|
||||||
@@ -60,30 +61,28 @@ brew "apr"
|
|||||||
brew "apr-util"
|
brew "apr-util"
|
||||||
# Password hashing library and CLI utility
|
# Password hashing library and CLI utility
|
||||||
brew "argon2"
|
brew "argon2"
|
||||||
# Automatic configure script builder
|
|
||||||
brew "autoconf"
|
|
||||||
# Tool for generating GNU Standards-compliant Makefiles
|
|
||||||
brew "automake"
|
|
||||||
# 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
|
# Spell checker with better logic than ispell
|
||||||
brew "aspell"
|
brew "aspell"
|
||||||
|
# Automatic configure script builder
|
||||||
|
brew "autoconf"
|
||||||
# Collection of over 500 reusable autoconf macros
|
# Collection of over 500 reusable autoconf macros
|
||||||
brew "autoconf-archive"
|
brew "autoconf-archive"
|
||||||
|
# GNU multiple precision arithmetic library
|
||||||
|
brew "gmp"
|
||||||
# Package compiler and linker metadata toolkit
|
# Package compiler and linker metadata toolkit
|
||||||
brew "pkgconf"
|
brew "pkgconf"
|
||||||
# Automated text file generator
|
# Automated text file generator
|
||||||
brew "autogen"
|
brew "autogen"
|
||||||
|
# Tool for generating GNU Standards-compliant Makefiles
|
||||||
|
brew "automake"
|
||||||
# Official Amazon AWS command-line interface
|
# Official Amazon AWS command-line interface
|
||||||
brew "awscli"
|
brew "awscli"
|
||||||
# Bourne-Again SHell, a UNIX command interpreter
|
# Bourne-Again SHell, a UNIX command interpreter
|
||||||
brew "bash"
|
brew "bash"
|
||||||
# Clone of cat(1) with syntax highlighting and Git integration
|
# Clone of cat(1) with syntax highlighting and Git integration
|
||||||
brew "bat"
|
brew "bat"
|
||||||
|
# GNU File, Shell, and Text utilities
|
||||||
|
brew "coreutils"
|
||||||
# Bash Automated Testing System
|
# Bash Automated Testing System
|
||||||
brew "bats-core"
|
brew "bats-core"
|
||||||
# Parser generator
|
# Parser generator
|
||||||
@@ -96,6 +95,8 @@ brew "fontconfig"
|
|||||||
brew "gettext"
|
brew "gettext"
|
||||||
# Core application library for C
|
# Core application library for C
|
||||||
brew "glib"
|
brew "glib"
|
||||||
|
# Prevent cloud misconfigurations during build-time for IaC tools
|
||||||
|
brew "checkov"
|
||||||
# Human-friendly and fast alternative to cut and (sometimes) awk
|
# Human-friendly and fast alternative to cut and (sometimes) awk
|
||||||
brew "choose-rust"
|
brew "choose-rust"
|
||||||
# Cross-platform make
|
# Cross-platform make
|
||||||
@@ -150,8 +151,6 @@ brew "gnutls"
|
|||||||
brew "gnupg"
|
brew "gnupg"
|
||||||
# Library access to GnuPG
|
# Library access to GnuPG
|
||||||
brew "gpgme"
|
brew "gpgme"
|
||||||
# Open source suite of directory software
|
|
||||||
brew "openldap"
|
|
||||||
# Manage your GnuPG keys with ease!
|
# Manage your GnuPG keys with ease!
|
||||||
brew "gpg-tui"
|
brew "gpg-tui"
|
||||||
# Image manipulation
|
# Image manipulation
|
||||||
@@ -198,8 +197,6 @@ brew "libressl"
|
|||||||
brew "libuv"
|
brew "libuv"
|
||||||
# GNOME XML library
|
# GNOME XML library
|
||||||
brew "libxml2"
|
brew "libxml2"
|
||||||
# C library for reading, creating, and modifying zip archives
|
|
||||||
brew "libzip"
|
|
||||||
# Package manager for the Lua programming language
|
# Package manager for the Lua programming language
|
||||||
brew "luarocks"
|
brew "luarocks"
|
||||||
# LZMA-based compression program similar to gzip or bzip2
|
# LZMA-based compression program similar to gzip or bzip2
|
||||||
@@ -216,14 +213,18 @@ brew "nginx"
|
|||||||
brew "nmap"
|
brew "nmap"
|
||||||
# Libraries for security-enabled client and server applications
|
# Libraries for security-enabled client and server applications
|
||||||
brew "nss"
|
brew "nss"
|
||||||
|
# Open source suite of directory software
|
||||||
|
brew "openldap"
|
||||||
# Cryptography and SSL/TLS Toolkit
|
# Cryptography and SSL/TLS Toolkit
|
||||||
brew "openssl@1.1"
|
brew "openssl@1.1"
|
||||||
# ISO-C API and CLI for generating UUIDs
|
# ISO-C API and CLI for generating UUIDs
|
||||||
brew "ossp-uuid"
|
brew "ossp-uuid"
|
||||||
# General-purpose scripting language
|
# General-purpose scripting language
|
||||||
|
brew "php"
|
||||||
|
# General-purpose scripting language
|
||||||
brew "php@8.2"
|
brew "php@8.2"
|
||||||
# General-purpose scripting language
|
# General-purpose scripting language
|
||||||
brew "php@8.3", link: true
|
brew "php@8.3"
|
||||||
# Python version management
|
# Python version management
|
||||||
brew "pyenv"
|
brew "pyenv"
|
||||||
# Migrate pip packages from one Python version to another
|
# Migrate pip packages from one Python version to another
|
||||||
@@ -272,8 +273,12 @@ brew "cormacrelf/tap/dark-notify"
|
|||||||
brew "doron-cohen/tap/antidot"
|
brew "doron-cohen/tap/antidot"
|
||||||
# lets you quickly switch between multiple git user profiles
|
# lets you quickly switch between multiple git user profiles
|
||||||
brew "gesquive/tap/git-user"
|
brew "gesquive/tap/git-user"
|
||||||
|
# Terminus is Pantheon's Command-line Interface (CLI)
|
||||||
|
brew "pantheon-systems/external/terminus"
|
||||||
# Automated code review tool integrated with any code analysis tools regardless of programming language.
|
# Automated code review tool integrated with any code analysis tools regardless of programming language.
|
||||||
brew "reviewdog/tap/reviewdog"
|
brew "reviewdog/tap/reviewdog"
|
||||||
|
# Igbinary PHP extension
|
||||||
|
brew "shivammathur/extensions/igbinary@8.3"
|
||||||
# Imagick PHP extension
|
# Imagick PHP extension
|
||||||
brew "shivammathur/extensions/imagick@8.3"
|
brew "shivammathur/extensions/imagick@8.3"
|
||||||
# Mcrypt PHP extension
|
# Mcrypt PHP extension
|
||||||
@@ -289,13 +294,13 @@ brew "shivammathur/extensions/uuid@8.3"
|
|||||||
# Yaml PHP extension
|
# Yaml PHP extension
|
||||||
brew "shivammathur/extensions/yaml@8.3"
|
brew "shivammathur/extensions/yaml@8.3"
|
||||||
# General-purpose scripting language
|
# General-purpose scripting language
|
||||||
brew "shivammathur/php/php", link: false
|
|
||||||
# General-purpose scripting language
|
|
||||||
brew "shivammathur/php/php-debug"
|
brew "shivammathur/php/php-debug"
|
||||||
|
# General-purpose scripting language
|
||||||
|
brew "shivammathur/php/php@7.4"
|
||||||
|
# General-purpose scripting language
|
||||||
|
brew "shivammathur/php/php@8.0", link: true
|
||||||
# Find & fix known vulnerabilities in open-source dependencies
|
# Find & fix known vulnerabilities in open-source dependencies
|
||||||
brew "snyk/tap/snyk"
|
brew "snyk/tap/snyk"
|
||||||
# Command-line interface for 1Password
|
|
||||||
cask "1password-cli"
|
|
||||||
# AeroSpace is an i3-like tiling window manager for macOS
|
# AeroSpace is an i3-like tiling window manager for macOS
|
||||||
cask "aerospace"
|
cask "aerospace"
|
||||||
# Text editor
|
# Text editor
|
||||||
@@ -308,10 +313,7 @@ cask "dbngin"
|
|||||||
cask "docker"
|
cask "docker"
|
||||||
cask "font-jetbrains-mono"
|
cask "font-jetbrains-mono"
|
||||||
cask "font-jetbrains-mono-nerd-font"
|
cask "font-jetbrains-mono-nerd-font"
|
||||||
cask "font-lato"
|
|
||||||
cask "font-open-sans"
|
cask "font-open-sans"
|
||||||
cask "font-roboto"
|
|
||||||
cask "font-source-code-pro-for-powerline"
|
|
||||||
# GIT client
|
# GIT client
|
||||||
cask "fork"
|
cask "fork"
|
||||||
# HTTP and GraphQL Client
|
# HTTP and GraphQL Client
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
-- ── Install lazylazy ────────────────────────────────────────────────
|
-- ── Install lazylazy ────────────────────────────────────────────────
|
||||||
-- https://github.com/folke/lazy.nvim
|
-- https://github.com/folke/lazy.nvim
|
||||||
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
if not vim.uv.fs_stat(lazypath) then
|
||||||
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||||
local out = vim.fn.system {
|
local out = vim.fn.system {
|
||||||
'git',
|
'git',
|
||||||
|
|||||||
@@ -93,11 +93,12 @@ autocmd({ 'FileType' }, {
|
|||||||
|
|
||||||
-- Set filetype for SSH config directory
|
-- Set filetype for SSH config directory
|
||||||
-- Pattern handles directories with files like:
|
-- Pattern handles directories with files like:
|
||||||
-- .dotfiles/ssh/config.d/*, .ssh/config.local, .ssh/config.work
|
-- .dotfiles/ssh/config.d/*, .ssh/config.local, .ssh/config.work,
|
||||||
|
-- .ssh/shared.d/*, .ssh/local.d/*
|
||||||
autocmd({ 'BufRead', 'BufNewFile' }, {
|
autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||||
desc = 'Set filetype for SSH config directory',
|
desc = 'Set filetype for SSH config directory',
|
||||||
pattern = {
|
pattern = {
|
||||||
'*/?.ssh/{config|shared}.d/*',
|
'*/?.ssh/{config|shared|local}.d/*',
|
||||||
'*/?.ssh/config.local',
|
'*/?.ssh/config.local',
|
||||||
'*/?.ssh/config.work',
|
'*/?.ssh/config.work',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=120 :
|
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=130 :
|
||||||
|
|
||||||
require 'utils'
|
require 'utils'
|
||||||
|
|
||||||
@@ -42,6 +42,24 @@ K.nl('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
|
|||||||
K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
|
K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
|
||||||
K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
|
K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
|
||||||
|
|
||||||
|
-- ── ToggleTerm ──────────────────────────────────────────────────────
|
||||||
|
K.d('<F1>', 'n', ':FloatermToggle<CR>', 'Toggle Floaterm')
|
||||||
|
K.d('<F1>', 'i', '<Esc>:FloatermToggle<CR>', 'Toggle Floaterm')
|
||||||
|
K.d('<F1>', 't', '<C-\\><C-n>:FloatermToggle<CR>', 'Toggle Floaterm')
|
||||||
|
|
||||||
|
-- ── Test operations ─────────────────────────────────────────────────
|
||||||
|
K.nl('an', ':silent TestNearest<CR>', 'Test Nearest')
|
||||||
|
K.nl('af', ':silent TestFile<CR>', 'Test File')
|
||||||
|
K.nl('as', ':silent TestSuite<CR>', 'Test Suite')
|
||||||
|
K.nl('al', ':silent TestLast<CR>', 'Test Last')
|
||||||
|
K.nl('av', ':silent TestVisit<CR>', 'Test Visit')
|
||||||
|
|
||||||
|
-- ── PHPActor Operations ─────────────────────────────────────────────
|
||||||
|
K.nl('apm', ':PhpactorContextMenu<cr>', 'PHPactor: Context Menu')
|
||||||
|
K.nl('apn', ':PhpactorClassNew<cr>', 'PHPactor: Class New')
|
||||||
|
K.nl('aps', ':PhpactorClassSearch<cr>', 'PHPactor: Class Search')
|
||||||
|
K.nl('apt', ':PhpactorTransform<cr>', 'PHPactor: Transform')
|
||||||
|
|
||||||
-- ── Buffer operations ───────────────────────────────────────────────
|
-- ── Buffer operations ───────────────────────────────────────────────
|
||||||
-- Mappings for buffer management operations like switching, deleting, etc.
|
-- Mappings for buffer management operations like switching, deleting, etc.
|
||||||
-- Convention: All mappings start with 'b' followed by the operation
|
-- Convention: All mappings start with 'b' followed by the operation
|
||||||
@@ -57,25 +75,26 @@ K.nl('bw', ':lua MiniBufremove.wipeout()<CR>', 'Wipeout')
|
|||||||
-- Mappings for code and LSP operations like code actions, formatting, etc.
|
-- Mappings for code and LSP operations like code actions, formatting, etc.
|
||||||
-- Convention: All mappings start with 'c' followed by the operation
|
-- Convention: All mappings start with 'c' followed by the operation
|
||||||
-- unless it's a generic operation like signature help or hover
|
-- unless it's a generic operation like signature help or hover
|
||||||
|
|
||||||
|
local b = function() return require 'telescope.builtin' end
|
||||||
|
local lws = function() return b().lsp_workspace_symbols() end
|
||||||
|
local ldws = function() return b().lsp_dynamic_workspace_symbols() end
|
||||||
|
|
||||||
K.n('<C-l>', ':lua vim.lsp.buf.signature_help()<CR>', { desc = 'Signature' })
|
K.n('<C-l>', ':lua vim.lsp.buf.signature_help()<CR>', { desc = 'Signature' })
|
||||||
K.n('K', ':Lspsaga hover_doc<cr>', { desc = 'Hover Documentation' })
|
K.n('K', ':lua vim.lsp.buf.hover()<CR>', { desc = 'Hover Documentation' })
|
||||||
K.ld('ca', 'n', ':Lspsaga code_action<cr>', 'Code Action')
|
K.ld('ca', 'n', ':lua vim.lsp.buf.code_action()<CR>', 'Code Action')
|
||||||
K.ld('cci', 'n', ':Lspsaga incoming_calls<cr>', 'Incoming Calls')
|
K.ld('cci', 'n', function() b().lsp_incoming_calls() end, 'Incoming calls')
|
||||||
K.ld('cco', 'n', ':Lspsaga outgoing_calls<cr>', 'Outgoing Calls')
|
K.ld('cco', 'n', function() b().lsp_outgoing_calls() end, 'Outgoing calls')
|
||||||
K.ld('cd', 'n', ':Lspsaga show_line_diagnostics<cr>', 'Line Diagnostics')
|
K.ld('cd', 'n', function() b().lsp_definitions() end, 'Definitions')
|
||||||
-- K.ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
|
K.ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
|
||||||
K.ld('cg', 'n', ':lua require("neogen").generate()<CR>', 'Generate annotations')
|
K.ld('cg', 'n', ':lua require("neogen").generate()<CR>', 'Generate annotations')
|
||||||
K.ld('ci', 'n', ':Lspsaga implement<cr>', 'Implementations')
|
K.ld('ci', 'n', function() b().lsp_implementations() end, 'Implementations')
|
||||||
K.ld('cl', 'n', ':Lspsaga show_cursor_diagnostics<cr>', 'Cursor Diagnostics')
|
K.ld('cp', 'n', function() b().lsp_type_definitions() end, 'Type Definition')
|
||||||
K.ld('cp', 'n', ':Lspsaga peek_definition<cr>', 'Peek Definition')
|
K.ld('cr', 'n', vim.lsp.buf.rename, 'Rename')
|
||||||
K.ld('cr', 'n', ':Lspsaga rename<cr>', 'Rename')
|
|
||||||
K.ld('cR', 'n', ':Lspsaga rename ++project<cr>', 'Rename Project wide')
|
|
||||||
K.ld('cs', 'n', ':Telescope lsp_document_symbols<CR>', 'LSP Document Symbols')
|
K.ld('cs', 'n', ':Telescope lsp_document_symbols<CR>', 'LSP Document Symbols')
|
||||||
K.ld('ct', 'n', ':Lspsaga peek_type_definition<cr>', 'Peek Type Definition')
|
K.ld('ct', 'n', function() b().treesitter() end, 'treesitter')
|
||||||
K.ld('cT', 'n', ':Telescope lsp_type_definitions<CR>', 'LSP Type Definitions')
|
K.ld('cws', 'n', function() lws() end, 'Workspace Symbols')
|
||||||
K.ld('cu', 'n', ':Lspsaga preview_definition<cr>', 'Preview Definition')
|
K.ld('cwd', 'n', function() ldws() end, 'Dynamic Workspace Symbols')
|
||||||
K.ld('cv', 'n', ':Lspsaga diagnostic_jump_prev<cr>', 'Diagnostic Jump Prev')
|
|
||||||
K.ld('cw', 'n', ':Lspsaga diagnostic_jump_next<cr>', 'Diagnostic Jump Next')
|
|
||||||
|
|
||||||
-- ── CommentBox operations ───────────────────────────────────────────
|
-- ── CommentBox operations ───────────────────────────────────────────
|
||||||
-- Mappings for creating and managing comment boxes
|
-- Mappings for creating and managing comment boxes
|
||||||
@@ -90,20 +109,23 @@ K.nl('cbt', '<Cmd>CBllline<CR>', 'CB: Titled Line')
|
|||||||
-- Mappings for Telescope operations like finding files, buffers, etc.
|
-- Mappings for Telescope operations like finding files, buffers, etc.
|
||||||
-- Convention: All mappings start with 's' followed by the operation
|
-- Convention: All mappings start with 's' followed by the operation
|
||||||
-- unless it's a generic operation like searching or finding buffers
|
-- unless it's a generic operation like searching or finding buffers
|
||||||
K.nl('f', ':Telescope find_files<cr>', 'Find Files')
|
|
||||||
|
local fuzzy_search = function()
|
||||||
|
require('telescope.builtin').find_files(
|
||||||
|
require('telescope.themes').get_dropdown {
|
||||||
|
winblend = 20,
|
||||||
|
previewer = true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
local lazy_plugins = function()
|
||||||
|
return require('telescope').extensions.lazy_plugins.lazy_plugins()
|
||||||
|
end
|
||||||
|
|
||||||
|
K.nl('f', ':Telescope fd --hidden=true<cr>', 'Find Files')
|
||||||
K.nl(',', ':Telescope buffers<cr>', 'Find existing buffers')
|
K.nl(',', ':Telescope buffers<cr>', 'Find existing buffers')
|
||||||
K.nl(
|
K.nl('/', function() fuzzy_search() end, 'Fuzzily search in current buffer')
|
||||||
'/',
|
|
||||||
function()
|
|
||||||
require('telescope.builtin').current_buffer_fuzzy_find(
|
|
||||||
require('telescope.themes').get_dropdown {
|
|
||||||
winblend = 20,
|
|
||||||
previewer = true,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
end,
|
|
||||||
'Fuzzily search in current buffer'
|
|
||||||
)
|
|
||||||
|
|
||||||
K.nl('sc', ':Telescope commands<cr>', 'Commands')
|
K.nl('sc', ':Telescope commands<cr>', 'Commands')
|
||||||
K.nl('sd', ':Telescope diagnostics<cr>', 'Search Diagnostics')
|
K.nl('sd', ':Telescope diagnostics<cr>', 'Search Diagnostics')
|
||||||
@@ -112,20 +134,15 @@ K.nl('sh', ':Telescope help_tags<cr>', 'Help tags')
|
|||||||
K.nl('sk', ':Telescope keymaps<cr>', 'Search Keymaps')
|
K.nl('sk', ':Telescope keymaps<cr>', 'Search Keymaps')
|
||||||
K.nl('sl', ':Telescope luasnip<CR>', 'Search LuaSnip')
|
K.nl('sl', ':Telescope luasnip<CR>', 'Search LuaSnip')
|
||||||
K.nl('so', ':Telescope oldfiles<CR>', 'Old Files')
|
K.nl('so', ':Telescope oldfiles<CR>', 'Old Files')
|
||||||
K.nl(
|
K.nl('sp', function() lazy_plugins() end, 'Lazy Plugins')
|
||||||
'sp',
|
|
||||||
':lua require("telescope").extensions.lazy_plugins.lazy_plugins()<cr>',
|
|
||||||
'Lazy Plugins'
|
|
||||||
)
|
|
||||||
K.nl('sq', ':Telescope quickfix<cr>', 'Quickfix')
|
K.nl('sq', ':Telescope quickfix<cr>', 'Quickfix')
|
||||||
K.nl('ss', ':Telescope treesitter<cr>', 'Treesitter')
|
K.nl('ss', ':Telescope treesitter<cr>', 'Treesitter')
|
||||||
K.nl('st', ':TodoTelescope<cr>', 'Search Todos')
|
|
||||||
K.nl('sw', ':Telescope grep_string<cr>', 'Grep String')
|
K.nl('sw', ':Telescope grep_string<cr>', 'Grep String')
|
||||||
K.nl('sx', ':Telescope import<cr>', 'Telescope: Import')
|
K.nl('sx', ':Telescope import<cr>', 'Telescope: Import')
|
||||||
|
|
||||||
-- ── Trouble operations ──────────────────────────────────────────────
|
-- ── Trouble operations ──────────────────────────────────────────────
|
||||||
-- Convention is 'x' followed by the operation
|
-- Convention is 'x' followed by the operation
|
||||||
K.nl('xd', ':Trouble document_diagnostics<cr>', 'Document Diagnostics')
|
K.nl('xd', ':Trouble diagnostics<cr>', 'Document Diagnostics')
|
||||||
K.nl('xl', ':Trouble loclist<cr>', 'Location List')
|
K.nl('xl', ':Trouble loclist<cr>', 'Location List')
|
||||||
K.nl('xq', ':Trouble quickfix<cr>', 'Quickfix')
|
K.nl('xq', ':Trouble quickfix<cr>', 'Quickfix')
|
||||||
K.nl('xw', ':Trouble workspace_diagnostics<cr>', 'Workspace Diagnostics')
|
K.nl('xw', ':Trouble workspace_diagnostics<cr>', 'Workspace Diagnostics')
|
||||||
@@ -153,4 +170,13 @@ K.nl('qQ', function()
|
|||||||
end
|
end
|
||||||
end, 'Force quit without saving')
|
end, 'Force quit without saving')
|
||||||
|
|
||||||
|
-- ── Flash.nvim keymaps ──────────────────────────────────────────────
|
||||||
|
local nxo = { 'n', 'x', 'o' }
|
||||||
|
local fj = function() return require('flash').jump() end
|
||||||
|
local ft = function() return require('flash').treesitter() end
|
||||||
|
local fx = function() return require('flash').toggle() end
|
||||||
|
K.d('zk', nxo, fj, { desc = 'Flash' })
|
||||||
|
K.d('Zk', nxo, ft, { desc = 'Flash Treesitter' })
|
||||||
|
K.d('<m-s>', 'c', fx, { desc = 'Toggle Flash Search' })
|
||||||
|
|
||||||
-- That concludes the keymaps section of the config.
|
-- That concludes the keymaps section of the config.
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
local g = vim.g -- A table to store global variables
|
local g = vim.g -- A table to store global variables
|
||||||
local o = vim.opt -- A table to store global options
|
local o = vim.opt -- A table to store global options
|
||||||
|
local a = vim.api -- A table to store API functions
|
||||||
|
|
||||||
-- vim.global
|
-- vim.global
|
||||||
g.mapleader = ' ' -- Space as the leader key
|
g.mapleader = ' ' -- Space as the leader key
|
||||||
@@ -24,13 +25,17 @@ g.loaded_java_provider = 0 -- Disable java provider
|
|||||||
-- vim.options
|
-- vim.options
|
||||||
-- Most of the good defaults are provided by `mini.basics`
|
-- Most of the good defaults are provided by `mini.basics`
|
||||||
-- See: lua/plugins/mini.lua
|
-- See: lua/plugins/mini.lua
|
||||||
|
o.confirm = true -- Confirm before closing unsaved buffers
|
||||||
o.ignorecase = true -- Ignore case in search patterns
|
o.ignorecase = true -- Ignore case in search patterns
|
||||||
o.inccommand = 'split' -- Preview substitutions live, as you type!
|
o.inccommand = 'split' -- Preview substitutions live, as you type!
|
||||||
|
o.list = true -- Show invisible characters
|
||||||
|
o.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||||
o.number = true -- Show line numbers
|
o.number = true -- Show line numbers
|
||||||
o.numberwidth = 3 -- Set the width of the number column
|
o.numberwidth = 3 -- Set the width of the number column
|
||||||
o.relativenumber = true -- Show relative line numbers
|
o.relativenumber = true -- Show relative line numbers
|
||||||
o.scrolloff = 15 -- Show context around cursor
|
o.scrolloff = 8 -- Show context around cursor
|
||||||
o.signcolumn = 'yes:3' -- Keep signcolumn on by default
|
o.sidescrolloff = 8 -- Show context around cursor
|
||||||
|
o.signcolumn = 'yes' -- Keep signcolumn on by default
|
||||||
o.spell = true -- Enable spell checking
|
o.spell = true -- Enable spell checking
|
||||||
o.spelllang = 'en_us' -- Set the spell checking language
|
o.spelllang = 'en_us' -- Set the spell checking language
|
||||||
o.splitbelow = true -- split to the bottom
|
o.splitbelow = true -- split to the bottom
|
||||||
@@ -38,18 +43,24 @@ o.splitright = true -- vsplit to the right
|
|||||||
o.termguicolors = true -- Enable GUI colors
|
o.termguicolors = true -- Enable GUI colors
|
||||||
o.timeoutlen = 250 -- Decrease mapped sequence wait time
|
o.timeoutlen = 250 -- Decrease mapped sequence wait time
|
||||||
o.updatetime = 250 -- 250 ms = 2,5 seconds
|
o.updatetime = 250 -- 250 ms = 2,5 seconds
|
||||||
o.sessionoptions =
|
|
||||||
'buffers,curdir,folds,tabpages,winsize,winpos,terminal,localoptions'
|
-- Session options
|
||||||
|
-- This is a comma separated list of options that will be
|
||||||
|
-- saved when a session ends.
|
||||||
|
local so = 'buffers,curdir,folds,tabpages,winsize,winpos,terminal,localoptions'
|
||||||
|
o.sessionoptions = so
|
||||||
|
|
||||||
|
o.wildmode = 'longest:full,full' -- Command-line completion mode
|
||||||
|
|
||||||
-- Enable the colorcolumn
|
-- Enable the colorcolumn
|
||||||
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
a.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
||||||
|
|
||||||
-- Sync clipboard between OS and Neovim.
|
-- Sync clipboard between OS and Neovim.
|
||||||
-- Schedule the setting after `UiEnter` because it can increase startup-time.
|
-- Schedule the setting after `UiEnter` because it can increase startup-time.
|
||||||
-- See `:help 'clipboard'`
|
-- See `:help 'clipboard'`
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
local c = vim.env.SSH_TTY and '' or 'unnamedplus'
|
local c = vim.env.SSH_TTY and '' or 'unnamedplus'
|
||||||
vim.opt.clipboard = c
|
o.clipboard = c
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- vim: ts=2 sts=2 sw=2 et
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
|
|||||||
@@ -18,9 +18,14 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ 'L3MON4D3/LuaSnip', version = 'v2.*', build = 'make install_jsregexp' },
|
||||||
|
|
||||||
-- Set of preconfigured snippets for different languages.
|
-- Set of preconfigured snippets for different languages.
|
||||||
-- https://github.com/rafamadriz/friendly-snippets
|
-- https://github.com/rafamadriz/friendly-snippets
|
||||||
{ 'rafamadriz/friendly-snippets' },
|
{
|
||||||
|
'rafamadriz/friendly-snippets',
|
||||||
|
config = function() require('luasnip.loaders.from_vscode').lazy_load() end,
|
||||||
|
},
|
||||||
|
|
||||||
-- Lua plugin to turn github copilot into a cmp source
|
-- Lua plugin to turn github copilot into a cmp source
|
||||||
-- https://github.com/giuxtaposition/blink-cmp-copilot
|
-- https://github.com/giuxtaposition/blink-cmp-copilot
|
||||||
@@ -48,8 +53,8 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
---@module 'blink.cmp'
|
---@module 'blink.cmp'
|
||||||
---@type blink.cmp.Config
|
|
||||||
opts = {
|
opts = {
|
||||||
|
snippets = { preset = 'luasnip' },
|
||||||
-- 'default' for mappings similar to built-in completion
|
-- 'default' for mappings similar to built-in completion
|
||||||
-- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate)
|
-- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate)
|
||||||
-- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept
|
-- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept
|
||||||
@@ -92,10 +97,11 @@ return {
|
|||||||
-- elsewhere in your config, without redefining it, via `opts_extend`
|
-- elsewhere in your config, without redefining it, via `opts_extend`
|
||||||
sources = {
|
sources = {
|
||||||
default = {
|
default = {
|
||||||
|
'lazydev',
|
||||||
'lsp',
|
'lsp',
|
||||||
|
'snippets',
|
||||||
'copilot',
|
'copilot',
|
||||||
'path',
|
'path',
|
||||||
'snippets',
|
|
||||||
'buffer',
|
'buffer',
|
||||||
},
|
},
|
||||||
providers = {
|
providers = {
|
||||||
@@ -103,12 +109,15 @@ return {
|
|||||||
name = 'copilot',
|
name = 'copilot',
|
||||||
module = 'blink-cmp-copilot',
|
module = 'blink-cmp-copilot',
|
||||||
},
|
},
|
||||||
|
lazydev = {
|
||||||
|
name = 'LazyDev',
|
||||||
|
module = 'lazydev.integrations.blink',
|
||||||
|
-- make lazydev completions top priority (see `:h blink.cmp`)
|
||||||
|
score_offset = 100,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- experimental auto-brackets support
|
|
||||||
-- completion = { accept = { auto_brackets = { enabled = true } } }
|
|
||||||
|
|
||||||
-- experimental signature help support
|
-- experimental signature help support
|
||||||
signature = { enabled = true },
|
signature = { enabled = true },
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,6 +8,47 @@ return {
|
|||||||
opts = { enabled = true, snippet_engine = 'luasnip' },
|
opts = { enabled = true, snippet_engine = 'luasnip' },
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Terminal manager for (neo)vim
|
||||||
|
-- https://github.com/voldikss/vim-floaterm
|
||||||
|
{
|
||||||
|
'voldikss/vim-floaterm',
|
||||||
|
cmd = { 'FloatermToggle' },
|
||||||
|
init = function()
|
||||||
|
vim.g.floaterm_width = 0.8
|
||||||
|
vim.g.floaterm_height = 0.8
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Run your tests at the speed of thought
|
||||||
|
-- https://github.com/vim-test/vim-test
|
||||||
|
{
|
||||||
|
'vim-test/vim-test',
|
||||||
|
dependencies = { 'voldikss/vim-floaterm' },
|
||||||
|
config = function()
|
||||||
|
vim.cmd [[
|
||||||
|
function! PhpUnitTransform(cmd) abort
|
||||||
|
return join(map(split(a:cmd), 'v:val == "--colors" ? "--colors=always" : v:val'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let g:test#custom_transformations = {'phpunit': function('PhpUnitTransform')}
|
||||||
|
let g:test#transformation = 'phpunit'
|
||||||
|
|
||||||
|
" let test#php#phpunit#options = '--colors=always'
|
||||||
|
let test#php#pest#options = '-v'
|
||||||
|
let test#javascript#jest#options = '--color'
|
||||||
|
|
||||||
|
function! FloatermStrategy(cmd)
|
||||||
|
execute 'silent FloatermSend q'
|
||||||
|
execute 'silent FloatermKill'
|
||||||
|
execute 'FloatermNew! '.a:cmd.' | less -X'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let g:test#custom_strategies = {'floaterm': function('FloatermStrategy')}
|
||||||
|
let g:test#strategy = 'floaterm'
|
||||||
|
]]
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
-- Cloak allows you to overlay *'s over defined patterns in defined files.
|
-- Cloak allows you to overlay *'s over defined patterns in defined files.
|
||||||
-- https://github.com/laytan/cloak.nvim
|
-- https://github.com/laytan/cloak.nvim
|
||||||
{
|
{
|
||||||
@@ -36,6 +77,81 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- projectionist.vim: Granular project configuration
|
||||||
|
-- https://github.com/tpope/vim-projectionist
|
||||||
|
{
|
||||||
|
'tpope/vim-projectionist',
|
||||||
|
dependencies = 'tpope/vim-dispatch',
|
||||||
|
config = function()
|
||||||
|
vim.g.projectionist_heuristics = {
|
||||||
|
artisan = {
|
||||||
|
['*'] = {
|
||||||
|
start = 'php artisan serve',
|
||||||
|
console = 'php artisan tinker',
|
||||||
|
},
|
||||||
|
['app/*.php'] = {
|
||||||
|
type = 'source',
|
||||||
|
alternate = {
|
||||||
|
'tests/Unit/{}Test.php',
|
||||||
|
'tests/Feature/{}Test.php',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
['tests/Feature/*Test.php'] = {
|
||||||
|
type = 'test',
|
||||||
|
alternate = 'app/{}.php',
|
||||||
|
},
|
||||||
|
['tests/Unit/*Test.php'] = {
|
||||||
|
type = 'test',
|
||||||
|
alternate = 'app/{}.php',
|
||||||
|
},
|
||||||
|
['app/Models/*.php'] = {
|
||||||
|
type = 'model',
|
||||||
|
},
|
||||||
|
['app/Http/Controllers/*.php'] = {
|
||||||
|
type = 'controller',
|
||||||
|
},
|
||||||
|
['routes/*.php'] = {
|
||||||
|
type = 'route',
|
||||||
|
},
|
||||||
|
['database/migrations/*.php'] = {
|
||||||
|
type = 'migration',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
['src/&composer.json'] = {
|
||||||
|
['src/*.php'] = {
|
||||||
|
type = 'source',
|
||||||
|
alternate = {
|
||||||
|
'tests/{}Test.php',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
['tests/*Test.php'] = {
|
||||||
|
type = 'test',
|
||||||
|
alternate = 'src/{}.php',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
['app/&composer.json'] = {
|
||||||
|
['app/*.php'] = {
|
||||||
|
type = 'source',
|
||||||
|
alternate = {
|
||||||
|
'tests/{}Test.php',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
['tests/*Test.php'] = {
|
||||||
|
type = 'test',
|
||||||
|
alternate = 'app/{}.php',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- A vim text object for XML/HTML attributes.
|
||||||
|
-- https://github.com/whatyouhide/vim-textobj-xmlattr
|
||||||
|
{
|
||||||
|
'whatyouhide/vim-textobj-xmlattr',
|
||||||
|
dependencies = { 'kana/vim-textobj-user' },
|
||||||
|
},
|
||||||
|
|
||||||
-- Describe the regexp under the cursor
|
-- Describe the regexp under the cursor
|
||||||
-- https://github.com/bennypowers/nvim-regexplainer
|
-- https://github.com/bennypowers/nvim-regexplainer
|
||||||
{
|
{
|
||||||
@@ -84,4 +200,12 @@ return {
|
|||||||
ft = { 'go', 'gomod' },
|
ft = { 'go', 'gomod' },
|
||||||
build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries
|
build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Mainly a PHP Language Server with more features than you can shake a stick at
|
||||||
|
-- https://github.com/phpactor/phpactor
|
||||||
|
{
|
||||||
|
'phpactor/phpactor',
|
||||||
|
build = 'composer install --no-dev --optimize-autoloader',
|
||||||
|
ft = 'php',
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,15 +5,9 @@ return {
|
|||||||
'folke/snacks.nvim',
|
'folke/snacks.nvim',
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
lazy = false,
|
lazy = false,
|
||||||
---@type snacks.Config
|
|
||||||
opts = {
|
opts = {
|
||||||
bigfile = { enabled = true },
|
bigfile = { enabled = true },
|
||||||
gitbrowse = { enabled = true },
|
gitbrowse = { enabled = true },
|
||||||
notifier = {
|
|
||||||
enabled = true,
|
|
||||||
timeout = 3000,
|
|
||||||
},
|
|
||||||
notify = { enabled = true },
|
|
||||||
quickfile = { enabled = true },
|
quickfile = { enabled = true },
|
||||||
statuscolumn = {
|
statuscolumn = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
@@ -37,6 +31,86 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Highly experimental plugin that completely
|
||||||
|
-- replaces the UI for messages, cmdline and the popupmenu.
|
||||||
|
-- https://github.com/folke/noice.nvim
|
||||||
|
{
|
||||||
|
'folke/noice.nvim',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
opts = {
|
||||||
|
lsp = {
|
||||||
|
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||||
|
override = {
|
||||||
|
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
|
||||||
|
['vim.lsp.util.stylize_markdown'] = true,
|
||||||
|
['cmp.entry.get_documentation'] = true, -- requires hrsh7th/nvim-cmp
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- you can enable a preset for easier configuration
|
||||||
|
presets = {
|
||||||
|
bottom_search = true, -- 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',
|
||||||
|
kind = '',
|
||||||
|
find = 'written',
|
||||||
|
},
|
||||||
|
opts = { skip = true },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filter = {
|
||||||
|
event = 'msg_show',
|
||||||
|
any = {
|
||||||
|
{ find = '%d+L, %d+B' },
|
||||||
|
{ find = '; after #%d+' },
|
||||||
|
{ find = '; before #%d+' },
|
||||||
|
{ find = "' added to" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
view = 'mini',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filter = {
|
||||||
|
event = 'lsp',
|
||||||
|
kind = 'progress',
|
||||||
|
cond = function(message)
|
||||||
|
local client = vim.tbl_get(message.opts, 'progress', 'client')
|
||||||
|
return client == 'lua_ls'
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
opts = { skip = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
views = {
|
||||||
|
cmdline_popup = {
|
||||||
|
border = {
|
||||||
|
style = 'none',
|
||||||
|
padding = { 1, 2 },
|
||||||
|
},
|
||||||
|
filter_options = {},
|
||||||
|
win_options = {
|
||||||
|
winhighlight = 'NormalFloat:NormalFloat,FloatBorder:FloatBorder',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||||
|
'MunifTanjim/nui.nvim',
|
||||||
|
-- OPTIONAL:
|
||||||
|
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||||
|
-- If not available, we use `mini` as the fallback
|
||||||
|
'rcarriga/nvim-notify',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- A pretty diagnostics, references, telescope results,
|
-- A pretty diagnostics, references, telescope results,
|
||||||
-- quickfix and location list to help you solve all the
|
-- quickfix and location list to help you solve all the
|
||||||
-- trouble your code is causing.
|
-- trouble your code is causing.
|
||||||
@@ -44,42 +118,53 @@ return {
|
|||||||
{
|
{
|
||||||
'folke/trouble.nvim',
|
'folke/trouble.nvim',
|
||||||
lazy = false,
|
lazy = false,
|
||||||
|
cmd = 'Trouble',
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||||
---@type trouble.Config
|
|
||||||
opts = {
|
opts = {
|
||||||
auto_preview = true,
|
auto_preview = true,
|
||||||
auto_fold = true,
|
auto_fold = true,
|
||||||
auto_close = true,
|
auto_close = true,
|
||||||
use_lsp_diagnostic_signs = true,
|
use_lsp_diagnostic_signs = true,
|
||||||
|
keys = {
|
||||||
|
j = 'next',
|
||||||
|
k = 'prev',
|
||||||
|
},
|
||||||
|
modes = {
|
||||||
|
diagnostics = {
|
||||||
|
auto_open = true,
|
||||||
|
},
|
||||||
|
test = {
|
||||||
|
mode = 'diagnostics',
|
||||||
|
preview = {
|
||||||
|
type = 'split',
|
||||||
|
relative = 'win',
|
||||||
|
position = 'right',
|
||||||
|
size = 0.3,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cascade = {
|
||||||
|
mode = 'diagnostics', -- inherit from diagnostics mode
|
||||||
|
filter = function(items)
|
||||||
|
local severity = vim.diagnostic.severity.HINT
|
||||||
|
for _, item in ipairs(items) do
|
||||||
|
severity = math.min(severity, item.severity)
|
||||||
|
end
|
||||||
|
return vim.tbl_filter(
|
||||||
|
function(item) return item.severity == severity end,
|
||||||
|
items
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Navigate your code with search labels, enhanced
|
-- Navigate your code with search labels, enhanced
|
||||||
-- character motions and Treesitter integration
|
-- character motions and Treesitter integration
|
||||||
-- https://github.com/folke/flash.nvim
|
-- https://github.com/folke/flash.nvim
|
||||||
{
|
{
|
||||||
'folke/flash.nvim',
|
'folke/flash.nvim',
|
||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
---@type Flash.Config
|
|
||||||
opts = {},
|
opts = {},
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
'zk',
|
|
||||||
mode = { 'n', 'x', 'o' },
|
|
||||||
function() require('flash').jump() end,
|
|
||||||
desc = 'Flash',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'Zk',
|
|
||||||
mode = { 'n', 'x', 'o' },
|
|
||||||
function() require('flash').treesitter() end,
|
|
||||||
desc = 'Flash Treesitter',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'<m-s>',
|
|
||||||
mode = { 'c' },
|
|
||||||
function() require('flash').toggle() end,
|
|
||||||
desc = 'Toggle Flash Search',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
-- │ LSP Setup and configuration │
|
-- │ LSP Setup and configuration │
|
||||||
-- ╰─────────────────────────────────────────────────────────╯
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
require 'utils'
|
||||||
|
|
||||||
-- LSP Servers are installed and configured by lsp-setup.nvim
|
-- LSP Servers are installed and configured by lsp-setup.nvim
|
||||||
-- Mason formatters Conform uses to format files
|
-- Mason formatters Conform uses to format files
|
||||||
-- These are automatically configured by zapling/mason-conform.nvim
|
-- These are automatically configured by zapling/mason-conform.nvim
|
||||||
|
|
||||||
local lsp_servers = {
|
local lsp_servers = {
|
||||||
bashls = {},
|
bashls = {},
|
||||||
-- csharp_ls = {},
|
-- csharp_ls = {},
|
||||||
@@ -26,7 +27,11 @@ local lsp_servers = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
html = {},
|
html = {},
|
||||||
intelephense = {},
|
intelephense = {
|
||||||
|
init_options = {
|
||||||
|
licenceKey = GetIntelephenseLicense(),
|
||||||
|
},
|
||||||
|
},
|
||||||
jsonls = {},
|
jsonls = {},
|
||||||
lua_ls = {
|
lua_ls = {
|
||||||
settings = {
|
settings = {
|
||||||
@@ -37,12 +42,6 @@ local lsp_servers = {
|
|||||||
diagnostics = {
|
diagnostics = {
|
||||||
globals = {
|
globals = {
|
||||||
'vim',
|
'vim',
|
||||||
-- busted
|
|
||||||
'describe',
|
|
||||||
'it',
|
|
||||||
'before_each',
|
|
||||||
'after_each',
|
|
||||||
'assert',
|
|
||||||
},
|
},
|
||||||
disable = {
|
disable = {
|
||||||
-- Ignore lua_ls noisy `missing-fields` warnings
|
-- Ignore lua_ls noisy `missing-fields` warnings
|
||||||
@@ -50,7 +49,7 @@ local lsp_servers = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
hint = {
|
hint = {
|
||||||
enable = false,
|
enable = true,
|
||||||
arrayIndex = 'Auto',
|
arrayIndex = 'Auto',
|
||||||
await = true,
|
await = true,
|
||||||
paramName = 'All',
|
paramName = 'All',
|
||||||
@@ -105,6 +104,28 @@ local lsp_servers = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Mason tools to automatically install and configure.
|
||||||
|
-- These are automatically configured by WhoIsSethDaniel/mason-tool-installer.nvim
|
||||||
|
local mason_tools = {
|
||||||
|
'actionlint',
|
||||||
|
'editorconfig-checker',
|
||||||
|
'goimports',
|
||||||
|
'gotests',
|
||||||
|
'phpcbf',
|
||||||
|
'phpmd',
|
||||||
|
'phpstan',
|
||||||
|
'pint',
|
||||||
|
'prettierd',
|
||||||
|
'semgrep',
|
||||||
|
'shellcheck',
|
||||||
|
'shfmt',
|
||||||
|
'staticcheck',
|
||||||
|
'stylua',
|
||||||
|
'trivy',
|
||||||
|
'vint',
|
||||||
|
'yamlfmt',
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
|
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
|
||||||
-- used for completion, annotations and signatures of Neovim apis
|
-- used for completion, annotations and signatures of Neovim apis
|
||||||
@@ -116,6 +137,9 @@ return {
|
|||||||
library = {
|
library = {
|
||||||
-- Load luvit types when the `vim.uv` word is found
|
-- Load luvit types when the `vim.uv` word is found
|
||||||
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
||||||
|
-- load assert and describe paths
|
||||||
|
{ path = 'luassert/library', words = { 'assert' } },
|
||||||
|
{ path = 'busted/library', words = { 'describe' } },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -124,124 +148,72 @@ return {
|
|||||||
-- https://github.com/Bilal2453/luvit-meta
|
-- https://github.com/Bilal2453/luvit-meta
|
||||||
{ 'Bilal2453/luvit-meta', lazy = true },
|
{ 'Bilal2453/luvit-meta', lazy = true },
|
||||||
|
|
||||||
-- improve neovim lsp experience
|
-- Quickstart configs for Nvim LSP
|
||||||
-- https://github.com/nvimdev/lspsaga.nvim
|
-- https://github.com/neovim/nvim-lspconfig
|
||||||
-- https://nvimdev.github.io/lspsaga/
|
{ 'neovim/nvim-lspconfig' },
|
||||||
|
|
||||||
|
-- Portable package manager for Neovim that runs everywhere Neovim runs.
|
||||||
|
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
|
||||||
|
-- https://github.com/williamboman/mason.nvim
|
||||||
{
|
{
|
||||||
'nvimdev/lspsaga.nvim',
|
'williamboman/mason.nvim',
|
||||||
event = 'LspAttach',
|
version = '*',
|
||||||
dependencies = {
|
cmd = 'Mason',
|
||||||
'nvim-treesitter/nvim-treesitter',
|
run = ':MasonUpdate',
|
||||||
'nvim-tree/nvim-web-devicons',
|
opts = {},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Extensible UI for Neovim notifications and LSP progress messages.
|
||||||
|
-- https://github.com/j-hui/fidget.nvim
|
||||||
|
{
|
||||||
|
'j-hui/fidget.nvim',
|
||||||
|
version = '*',
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
|
||||||
|
-- https://github.com/williamboman/mason-lspconfig.nvim
|
||||||
|
{ 'williamboman/mason-lspconfig.nvim' },
|
||||||
|
|
||||||
|
-- Install and upgrade third party tools automatically
|
||||||
|
-- https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim
|
||||||
|
{
|
||||||
|
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||||
|
version = '*',
|
||||||
opts = {
|
opts = {
|
||||||
code_action = {
|
auto_install = true,
|
||||||
show_server_name = true,
|
auto_update = true,
|
||||||
keys = {
|
ensure_installed = mason_tools,
|
||||||
quit = { 'q', '<ESC>' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
diagnostic = {
|
|
||||||
keys = {
|
|
||||||
quit = { 'q', '<ESC>' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- JSON schemas for Neovim
|
||||||
|
-- https://github.com/b0o/SchemaStore.nvim
|
||||||
|
{ 'b0o/schemastore.nvim' },
|
||||||
|
|
||||||
|
-- Performant, batteries-included completion plugin for Neovim
|
||||||
|
-- https://github.com/saghen/blink.cmp
|
||||||
|
-- See lua/plugins/blink.lua for configs
|
||||||
|
{ 'saghen/blink.cmp' },
|
||||||
|
|
||||||
-- A simple wrapper for nvim-lspconfig and mason-lspconfig
|
-- A simple wrapper for nvim-lspconfig and mason-lspconfig
|
||||||
-- to easily setup LSP servers.
|
-- to easily setup LSP servers.
|
||||||
-- https://github.com/junnplus/lsp-setup.nvim
|
-- https://github.com/junnplus/lsp-setup.nvim
|
||||||
{
|
{
|
||||||
'junnplus/lsp-setup.nvim',
|
'junnplus/lsp-setup.nvim',
|
||||||
dependencies = {
|
|
||||||
-- Quickstart configs for Nvim LSP
|
|
||||||
-- https://github.com/neovim/nvim-lspconfig
|
|
||||||
{ 'neovim/nvim-lspconfig' },
|
|
||||||
|
|
||||||
-- Portable package manager for Neovim that runs everywhere Neovim runs.
|
|
||||||
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
|
|
||||||
-- https://github.com/williamboman/mason.nvim
|
|
||||||
{
|
|
||||||
'williamboman/mason.nvim',
|
|
||||||
version = '*',
|
|
||||||
cmd = 'Mason',
|
|
||||||
run = ':MasonUpdate',
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Extensible UI for Neovim notifications and LSP progress messages.
|
|
||||||
-- https://github.com/j-hui/fidget.nvim
|
|
||||||
{
|
|
||||||
'j-hui/fidget.nvim',
|
|
||||||
version = '*',
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
|
|
||||||
-- https://github.com/williamboman/mason-lspconfig.nvim
|
|
||||||
{ 'williamboman/mason-lspconfig.nvim' },
|
|
||||||
|
|
||||||
-- Install and upgrade third party tools automatically
|
|
||||||
-- https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim
|
|
||||||
{
|
|
||||||
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
|
||||||
version = '*',
|
|
||||||
opts = {
|
|
||||||
auto_install = true,
|
|
||||||
auto_update = true,
|
|
||||||
ensure_installed = {
|
|
||||||
'actionlint',
|
|
||||||
'editorconfig-checker',
|
|
||||||
'goimports',
|
|
||||||
'gotests',
|
|
||||||
'phpcbf',
|
|
||||||
'phpmd',
|
|
||||||
'phpstan',
|
|
||||||
'pint',
|
|
||||||
'prettierd',
|
|
||||||
'semgrep',
|
|
||||||
'shellcheck',
|
|
||||||
'shfmt',
|
|
||||||
'staticcheck',
|
|
||||||
'stylua',
|
|
||||||
'trivy',
|
|
||||||
'vint',
|
|
||||||
'yamlfmt',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- JSON schemas for Neovim
|
|
||||||
-- https://github.com/b0o/SchemaStore.nvim
|
|
||||||
{ 'b0o/schemastore.nvim' },
|
|
||||||
|
|
||||||
-- Performant, batteries-included completion plugin for Neovim
|
|
||||||
-- https://github.com/saghen/blink.cmp
|
|
||||||
-- See lua/plugins/blink.lua for configs
|
|
||||||
{ 'saghen/blink.cmp' },
|
|
||||||
},
|
|
||||||
opts = {
|
opts = {
|
||||||
default_mappings = false,
|
default_mappings = false,
|
||||||
mappings = {
|
|
||||||
gd = 'lua require"telescope.builtin".lsp_definitions()',
|
|
||||||
gi = 'lua require"telescope.builtin".lsp_implementations()',
|
|
||||||
gr = 'lua require"telescope.builtin".lsp_references()',
|
|
||||||
},
|
|
||||||
inlay_hints = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
servers = lsp_servers,
|
servers = lsp_servers,
|
||||||
},
|
},
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
require('lazydev').setup()
|
require('lazydev').setup()
|
||||||
require('lsp-setup').setup(opts)
|
require('lsp-setup').setup(opts)
|
||||||
|
local cmp = require 'blink.cmp'
|
||||||
local lspconfig = require 'lspconfig'
|
local lspconfig = require 'lspconfig'
|
||||||
for server, config in pairs(opts.servers) do
|
for server, config in pairs(opts.servers) do
|
||||||
-- passing config.capabilities to blink.cmp merges with the capabilities in your
|
-- passing config.capabilities to blink.cmp merges with the capabilities in your
|
||||||
-- `opts[server].capabilities, if you've defined it
|
-- `opts[server].capabilities, if you've defined it
|
||||||
config.capabilities =
|
config.capabilities = cmp.get_lsp_capabilities(config.capabilities)
|
||||||
require('blink.cmp').get_lsp_capabilities(config.capabilities)
|
|
||||||
lspconfig[server].setup(config)
|
lspconfig[server].setup(config)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -289,6 +261,41 @@ return {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Diagnostic configuration
|
||||||
|
local signs = {
|
||||||
|
{ name = 'DiagnosticSignError', text = '' }, -- Error icon
|
||||||
|
{ name = 'DiagnosticSignWarn', text = '' }, -- Warning icon
|
||||||
|
{ name = 'DiagnosticSignHint', text = '' }, -- Hint icon
|
||||||
|
{ name = 'DiagnosticSignInfo', text = '' }, -- Information icon
|
||||||
|
}
|
||||||
|
|
||||||
|
local function ensure_sign_defined(name, sign_opts)
|
||||||
|
if vim.tbl_isempty(vim.fn.sign_getdefined(name)) then
|
||||||
|
vim.fn.sign_define(name, sign_opts)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, sign in ipairs(signs) do
|
||||||
|
ensure_sign_defined(sign.name, {
|
||||||
|
text = sign.text,
|
||||||
|
texthl = sign.texthl or sign.name,
|
||||||
|
numhl = sign.numhl or sign.name,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
---@type vim.diagnostic.Opts
|
||||||
|
local diagnostics_config = {
|
||||||
|
signs = {
|
||||||
|
active = signs, -- show signs
|
||||||
|
},
|
||||||
|
update_in_insert = false,
|
||||||
|
underline = true,
|
||||||
|
severity_sort = true,
|
||||||
|
virtual_text = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.diagnostic.config(diagnostics_config)
|
||||||
|
|
||||||
-- end of junnplus/lsp-setup config
|
-- end of junnplus/lsp-setup config
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
@@ -299,16 +306,6 @@ return {
|
|||||||
'stevearc/conform.nvim',
|
'stevearc/conform.nvim',
|
||||||
event = { 'BufWritePre' },
|
event = { 'BufWritePre' },
|
||||||
cmd = { 'ConformInfo' },
|
cmd = { 'ConformInfo' },
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
'<leader>cf',
|
|
||||||
function()
|
|
||||||
require('conform').format { async = true, lsp_format = 'fallback' }
|
|
||||||
end,
|
|
||||||
mode = '',
|
|
||||||
desc = 'Format buffer',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = {
|
opts = {
|
||||||
notify_on_error = false,
|
notify_on_error = false,
|
||||||
---@type nil|conform.FormatOpts|fun(bufnr: integer): nil|conform.FormatOpts
|
---@type nil|conform.FormatOpts|fun(bufnr: integer): nil|conform.FormatOpts
|
||||||
@@ -324,9 +321,9 @@ return {
|
|||||||
lsp_format_opt = 'fallback'
|
lsp_format_opt = 'fallback'
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Disable autoformat for files in a certain path
|
-- Disable autoformat for files in a certain paths
|
||||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
if bufname:match '/node_modules/' then return end
|
if bufname:match '/node_modules|vendor/' then return end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
timeout_ms = 500,
|
timeout_ms = 500,
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ return {
|
|||||||
miniclue.gen_clues.registers(),
|
miniclue.gen_clues.registers(),
|
||||||
miniclue.gen_clues.windows(),
|
miniclue.gen_clues.windows(),
|
||||||
miniclue.gen_clues.z(),
|
miniclue.gen_clues.z(),
|
||||||
|
{ mode = 'n', keys = '<Leader>a', desc = '+Automation' },
|
||||||
{ mode = 'n', keys = '<Leader>b', desc = '+Buffers' },
|
{ mode = 'n', keys = '<Leader>b', desc = '+Buffers' },
|
||||||
{ mode = 'n', keys = '<Leader>c', desc = '+Code' },
|
{ mode = 'n', keys = '<Leader>c', desc = '+Code' },
|
||||||
{ mode = 'n', keys = '<Leader>cb', desc = '+CommentBox' },
|
{ mode = 'n', keys = '<Leader>cb', desc = '+CommentBox' },
|
||||||
@@ -164,20 +165,6 @@ return {
|
|||||||
-- Replaced lukas-reineke/indent-blankline.nvim
|
-- Replaced lukas-reineke/indent-blankline.nvim
|
||||||
require('mini.indentscope').setup()
|
require('mini.indentscope').setup()
|
||||||
|
|
||||||
-- Jump to next/previous single character
|
|
||||||
require('mini.jump').setup {
|
|
||||||
mappings = {
|
|
||||||
forward = 'f',
|
|
||||||
backward = 'F',
|
|
||||||
forward_till = 't',
|
|
||||||
backward_till = 'T',
|
|
||||||
repeat_jump = ';',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Move lines and blocks of text
|
|
||||||
require('mini.move').setup()
|
|
||||||
|
|
||||||
-- Text edit operators
|
-- Text edit operators
|
||||||
-- g= - Evaluate text and replace with output
|
-- g= - Evaluate text and replace with output
|
||||||
-- gx - Exchange text regions
|
-- gx - Exchange text regions
|
||||||
@@ -222,11 +209,11 @@ return {
|
|||||||
content = {
|
content = {
|
||||||
active = function()
|
active = function()
|
||||||
local mode, mode_hl = sl.section_mode { trunc_width = 120 }
|
local mode, mode_hl = sl.section_mode { trunc_width = 120 }
|
||||||
local git = sl.section_git { trunc_width = 75 }
|
local git = sl.section_git { trunc_width = 9999 }
|
||||||
local diagnostics = sl.section_diagnostics { trunc_width = 75 }
|
local diagnostics = sl.section_diagnostics { trunc_width = 9999 }
|
||||||
local filename = sl.section_filename { trunc_width = 9999 }
|
local filename = sl.section_filename { trunc_width = 9999 }
|
||||||
local fileinfo = sl.section_fileinfo { trunc_width = 120 }
|
local fileinfo = sl.section_fileinfo { trunc_width = 9999 }
|
||||||
local location = sl.section_location { trunc_width = 75 }
|
local location = sl.section_location { trunc_width = 9999 }
|
||||||
return sl.combine_groups {
|
return sl.combine_groups {
|
||||||
{ hl = mode_hl, strings = { mode } },
|
{ hl = mode_hl, strings = { mode } },
|
||||||
{ hl = 'statuslineDevinfo', strings = { git, diagnostics } },
|
{ hl = 'statuslineDevinfo', strings = { git, diagnostics } },
|
||||||
|
|||||||
@@ -31,9 +31,43 @@ return {
|
|||||||
cmd = 'Neotree',
|
cmd = 'Neotree',
|
||||||
opts = {
|
opts = {
|
||||||
close_if_last_window = true,
|
close_if_last_window = true,
|
||||||
|
hide_root_node = true,
|
||||||
popup_border_style = 'rounded',
|
popup_border_style = 'rounded',
|
||||||
enable_git_status = true,
|
enable_git_status = true,
|
||||||
enable_diagnostics = true,
|
enable_diagnostics = true,
|
||||||
|
sources = {
|
||||||
|
'filesystem',
|
||||||
|
'buffers',
|
||||||
|
'document_symbols',
|
||||||
|
},
|
||||||
|
source_selector = {
|
||||||
|
winbar = true,
|
||||||
|
statusline = false,
|
||||||
|
separator = { left = '', right = '' },
|
||||||
|
show_separator_on_edge = true,
|
||||||
|
highlight_tab = 'SidebarTabInactive',
|
||||||
|
highlight_tab_active = 'SidebarTabActive',
|
||||||
|
highlight_background = 'StatusLine',
|
||||||
|
highlight_separator = 'SidebarTabInactiveSeparator',
|
||||||
|
highlight_separator_active = 'SidebarTabActiveSeparator',
|
||||||
|
},
|
||||||
|
event_handlers = {
|
||||||
|
{
|
||||||
|
event = 'file_opened',
|
||||||
|
handler = function(file_path)
|
||||||
|
require('neo-tree.command').execute { action = 'close' }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
default_component_configs = {
|
||||||
|
indent = {
|
||||||
|
padding = 0,
|
||||||
|
},
|
||||||
|
name = {
|
||||||
|
use_git_status_colors = true,
|
||||||
|
highlight_opened_files = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
git_status = {
|
git_status = {
|
||||||
symbols = {
|
symbols = {
|
||||||
-- Change type
|
-- Change type
|
||||||
@@ -54,59 +88,18 @@ return {
|
|||||||
mappings = {
|
mappings = {
|
||||||
['<Esc>'] = 'close_window',
|
['<Esc>'] = 'close_window',
|
||||||
['q'] = 'close_window',
|
['q'] = 'close_window',
|
||||||
|
['<cr>'] = 'open_with_window_picker',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
filtered_items = {
|
filtered_items = {
|
||||||
hide_dotfiles = true,
|
hide_dotfiles = false,
|
||||||
hide_gitignored = true,
|
|
||||||
hide_hidden = true, -- only works on Windows for hidden files/directories
|
hide_hidden = true, -- only works on Windows for hidden files/directories
|
||||||
never_show = {
|
never_show = {
|
||||||
'.DS_Store',
|
'.DS_Store',
|
||||||
},
|
},
|
||||||
hide_by_name = {
|
hide_by_name = {
|
||||||
'node_modules',
|
'node_modules',
|
||||||
},
|
'.git',
|
||||||
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*',
|
|
||||||
'.markdownlint*',
|
|
||||||
'.stylua.*',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ return {
|
|||||||
'rmagatti/auto-session',
|
'rmagatti/auto-session',
|
||||||
lazy = false,
|
lazy = false,
|
||||||
version = '*',
|
version = '*',
|
||||||
---@module "auto-session"
|
|
||||||
---@type AutoSession.Config
|
|
||||||
opts = {
|
opts = {
|
||||||
suppressed_dirs = {
|
suppressed_dirs = {
|
||||||
'/',
|
'/',
|
||||||
@@ -12,6 +10,28 @@ return {
|
|||||||
'~/Downloads',
|
'~/Downloads',
|
||||||
'~/Library',
|
'~/Library',
|
||||||
},
|
},
|
||||||
|
bypass_save_filetypes = {
|
||||||
|
'PlenaryTestPopup',
|
||||||
|
'alpha',
|
||||||
|
'checkhealth',
|
||||||
|
'dashboard',
|
||||||
|
'dbout',
|
||||||
|
'gitsigns.blame',
|
||||||
|
'grug-far',
|
||||||
|
'help',
|
||||||
|
'lspinfo',
|
||||||
|
'man',
|
||||||
|
'neo-tree',
|
||||||
|
'neotest-output',
|
||||||
|
'neotest-output-panel',
|
||||||
|
'neotest-summary',
|
||||||
|
'notify',
|
||||||
|
'qf',
|
||||||
|
'spectre_panel',
|
||||||
|
'startuptime',
|
||||||
|
'trouble',
|
||||||
|
'tsplayground',
|
||||||
|
},
|
||||||
-- log_level = 'debug',
|
-- log_level = 'debug',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ return {
|
|||||||
local t = require 'telescope'
|
local t = require 'telescope'
|
||||||
local a = require 'telescope.actions'
|
local a = require 'telescope.actions'
|
||||||
|
|
||||||
|
local open_with_trouble = require('trouble.sources.telescope').open
|
||||||
|
local add_to_trouble = require('trouble.sources.telescope').add
|
||||||
|
|
||||||
-- [[ Configure Telescope ]]
|
-- [[ Configure Telescope ]]
|
||||||
-- See `:help telescope` and `:help telescope.setup()`
|
-- See `:help telescope` and `:help telescope.setup()`
|
||||||
t.setup {
|
t.setup {
|
||||||
@@ -52,6 +55,12 @@ return {
|
|||||||
['<C-j>'] = a.move_selection_next,
|
['<C-j>'] = a.move_selection_next,
|
||||||
['<C-k>'] = a.move_selection_previous,
|
['<C-k>'] = a.move_selection_previous,
|
||||||
['<C-d>'] = a.move_selection_previous,
|
['<C-d>'] = a.move_selection_previous,
|
||||||
|
['<C-t>'] = open_with_trouble,
|
||||||
|
['<C-q>'] = add_to_trouble,
|
||||||
|
},
|
||||||
|
n = {
|
||||||
|
['<C-t>'] = open_with_trouble,
|
||||||
|
['<C-q>'] = add_to_trouble,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ return {
|
|||||||
'nvim-treesitter/nvim-treesitter-context',
|
'nvim-treesitter/nvim-treesitter-context',
|
||||||
'JoosepAlviste/nvim-ts-context-commentstring',
|
'JoosepAlviste/nvim-ts-context-commentstring',
|
||||||
},
|
},
|
||||||
---@type TSConfig
|
|
||||||
opts = {
|
opts = {
|
||||||
auto_install = true, -- Auto install the parser generators
|
auto_install = true, -- Auto install the parser generators
|
||||||
sync_install = false, -- Sync install the parser generators, install async
|
sync_install = false, -- Sync install the parser generators, install async
|
||||||
|
|||||||
@@ -27,6 +27,17 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- The fastest Neovim colorizer
|
||||||
|
-- https://github.com/catgoose/nvim-colorizer.lua
|
||||||
|
{
|
||||||
|
'catgoose/nvim-colorizer.lua',
|
||||||
|
opts = {
|
||||||
|
user_default_options = {
|
||||||
|
names = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- A neovim plugin that shows colorcolumn dynamically
|
-- A neovim plugin that shows colorcolumn dynamically
|
||||||
-- https://github.com/Bekaboo/deadcolumn.nvim
|
-- https://github.com/Bekaboo/deadcolumn.nvim
|
||||||
{ 'Bekaboo/deadcolumn.nvim' },
|
{ 'Bekaboo/deadcolumn.nvim' },
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
-- These are my utility functions
|
-- These are my utility functions
|
||||||
-- I use to make my life bit easier
|
-- I use to make my life bit easier
|
||||||
|
|
||||||
|
local function file_exists(name)
|
||||||
|
if type(name) ~= 'string' then return false end
|
||||||
|
return os.rename(name, name) and true or false
|
||||||
|
end
|
||||||
|
|
||||||
-- ╭─────────────────────────────────────────────────────────╮
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
-- │ Function shortcuts for keymap set │
|
-- │ Function shortcuts for keymap set │
|
||||||
-- ╰─────────────────────────────────────────────────────────╯
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
@@ -80,3 +85,20 @@ end
|
|||||||
|
|
||||||
-- Toggle background between light and dark
|
-- Toggle background between light and dark
|
||||||
function ToggleBackground() vim.o.bg = vim.o.bg == 'light' and 'dark' or 'light' end
|
function ToggleBackground() vim.o.bg = vim.o.bg == 'light' and 'dark' or 'light' end
|
||||||
|
|
||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ LSP Related helper functions │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- Get the license key for intelephense
|
||||||
|
---@return string|nil -- The license key for intelephense
|
||||||
|
function GetIntelephenseLicense()
|
||||||
|
local p = os.getenv 'HOME' .. '/intelephense/license.txt'
|
||||||
|
|
||||||
|
if not file_exists(p) then return nil end
|
||||||
|
|
||||||
|
local f = assert(io.open(p, 'rb'))
|
||||||
|
local content = f:read '*a'
|
||||||
|
f:close()
|
||||||
|
return string.gsub(content, '%s+', '')[1] or nil
|
||||||
|
end
|
||||||
|
|||||||
@@ -2,4 +2,9 @@ default_session = "main"
|
|||||||
|
|
||||||
[[search_dirs]]
|
[[search_dirs]]
|
||||||
path = "~/Code"
|
path = "~/Code"
|
||||||
depth = 10
|
depth = 3
|
||||||
|
|
||||||
|
[picker_colors]
|
||||||
|
highlight_color = "#21202e"
|
||||||
|
highlight_text_color = "#86e1fc"
|
||||||
|
border_color = "#524f67"
|
||||||
|
|||||||
1
config/tmux/.ignore
Normal file
1
config/tmux/.ignore
Normal file
@@ -0,0 +1 @@
|
|||||||
|
plugins/*
|
||||||
37
config/tmux/config-keybinds.conf
Normal file
37
config/tmux/config-keybinds.conf
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
|
# │ Bindings │
|
||||||
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
|
# bind flags
|
||||||
|
# -r = repeatable, only needs prefix once
|
||||||
|
# -n = doesn't need prefix
|
||||||
|
# -t = binds to a certain key-table (root, copy-mode, prefix, etc.)
|
||||||
|
|
||||||
|
# Set <prefix> to Control + Space, keeping the default of C-b intact.
|
||||||
|
# C-Space send-prefix line doubles the prefix when in nested tmux session.
|
||||||
|
set -g prefix C-Space
|
||||||
|
bind C-Space send-prefix
|
||||||
|
|
||||||
|
# Use Alt-arrow keys without prefix key to switch panes
|
||||||
|
bind -n M-Left select-pane -L
|
||||||
|
bind -n M-Right select-pane -R
|
||||||
|
bind -n M-Up select-pane -U
|
||||||
|
bind -n M-Down select-pane -D
|
||||||
|
|
||||||
|
# Easier switching between window
|
||||||
|
bind C-n next-window
|
||||||
|
bind C-p previous-window
|
||||||
|
bind C-a last-window
|
||||||
|
|
||||||
|
# Reload tmux config with <prefix> + r
|
||||||
|
unbind r
|
||||||
|
bind r "source-file ~/.dotfiles/config/tmux/tmux.conf; display 'tmux cfg reloaded!'"
|
||||||
|
|
||||||
|
# copy mode using 'Esc'
|
||||||
|
unbind [
|
||||||
|
bind Escape copy-mode
|
||||||
|
|
||||||
|
# paste using 'p'
|
||||||
|
unbind p
|
||||||
|
bind p paste-buffer
|
||||||
|
|
||||||
|
# vim: ft=tmux ts=2 sw=2 et
|
||||||
50
config/tmux/config-plugins.conf
Normal file
50
config/tmux/config-plugins.conf
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
|
# │ Plugins │
|
||||||
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
# ── Plugins related configurations ────────────────────────────────────
|
||||||
|
|
||||||
|
# Plugin that lets you suspend local tmux session,
|
||||||
|
# so that you can work with nested remote tmux session painlessly.
|
||||||
|
# https://github.com/MunifTanjim/tmux-suspend
|
||||||
|
set -g @suspend_key 'F12'
|
||||||
|
|
||||||
|
## A plugin to name your tmux windows smartly.
|
||||||
|
## https://github.com/ofirgall/tmux-window-name
|
||||||
|
### Maximum name length of a window
|
||||||
|
set -g @tmux_window_name_max_name_len "20"
|
||||||
|
### Replace $HOME with ~ in window names
|
||||||
|
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
||||||
|
set -g @tmux_window_name_ignored_programs "['sqlite3', 'antidote', 'direnv', 'md5']" # Default is []
|
||||||
|
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh']"
|
||||||
|
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
||||||
|
set -g @tmux_window_name_use_tilde "True"
|
||||||
|
|
||||||
|
# https://github.com/erikw/tmux-dark-notify
|
||||||
|
set -g @dark-notify-theme-path-light "$TMUX_CONF_DIR/theme-light.conf"
|
||||||
|
set -g @dark-notify-theme-path-dark "$TMUX_CONF_DIR/theme-dark.conf"
|
||||||
|
|
||||||
|
## https://github.com/MunifTanjim/tmux-mode-indicator
|
||||||
|
set -g @mode_indicator_copy_mode_style 'bg=default,fg=yellow'
|
||||||
|
set -g @mode_indicator_empty_mode_style 'bg=default,fg=#7aa2f7'
|
||||||
|
set -g @mode_indicator_prefix_mode_style 'bg=default,fg=#7aa2f7'
|
||||||
|
set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
|
||||||
|
|
||||||
|
# https://github.com/wfxr/tmux-fzf-url
|
||||||
|
set -g @fzf-url-bind 'u'
|
||||||
|
set -g @fzf-url-history-limit '2000'
|
||||||
|
|
||||||
|
# ── Sourcing the plugins ──────────────────────────────────────────────
|
||||||
|
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-sensible/sensible.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-window-name/tmux_window_name.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-mode-indicator/mode_indicator.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-suspend/suspend.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-continuum/continuum.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-sessionist/sessionist.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-yank/yank.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-current-pane-hostname/current_pane_hostname.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-dark-notify/main.tmux"
|
||||||
|
run-shell "$TMUX_PLUGINS/tmux-fzf-url/fzf-url.tmux"
|
||||||
|
|
||||||
|
# vim: ft=tmux ts=2 sw=2 et
|
||||||
40
config/tmux/config-settings.conf
Normal file
40
config/tmux/config-settings.conf
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
|
# │ Settings │
|
||||||
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
|
# set [flags] [command] [value]
|
||||||
|
# Flags can be combined, e.g. -as
|
||||||
|
# -a : Append the value to the existing setting.
|
||||||
|
# -s : Apply the setting to the current session.
|
||||||
|
# -g : Apply the setting globally to all sessions.
|
||||||
|
# -o : Set the option only if it is not already set.
|
||||||
|
# -u : Unset the specified option.
|
||||||
|
|
||||||
|
set -g default-terminal "tmux-256color" # Set default terminal to 256 colors
|
||||||
|
set -g detach-on-destroy off # don't detach tmux when killing a session
|
||||||
|
set -g display-time 0 # Hide clock
|
||||||
|
set -g focus-events on # Focus events enabled for terminals that support them
|
||||||
|
set -g mouse on # Mouse support
|
||||||
|
set -g set-titles on # Allow tmux to set the terminal title
|
||||||
|
set -g status on # Setting status on
|
||||||
|
set -g status-keys vi # vi keys to move between panes
|
||||||
|
|
||||||
|
# Activity Monitoring (for when something happens in another pain)
|
||||||
|
set -g monitor-activity on
|
||||||
|
set -g visual-activity off
|
||||||
|
set -g visual-bell off
|
||||||
|
|
||||||
|
# A bell in another window should cause a bell in the current window
|
||||||
|
set -g bell-action any
|
||||||
|
|
||||||
|
# Keep Tmux alive when the initial command is finished
|
||||||
|
set -g remain-on-exit off
|
||||||
|
|
||||||
|
# Start windows and panes at 1, not 0
|
||||||
|
set -g base-index 1
|
||||||
|
set -g pane-base-index 1
|
||||||
|
set -g renumber-windows on
|
||||||
|
|
||||||
|
# Activate with `DEBUG=1 tmux -vv`
|
||||||
|
if-shell '[ "$DEBUG" = "1" ]' 'set -g debug-file ~/.cache/tmux-debug.log'
|
||||||
|
|
||||||
|
# vim: ft=tmux ts=2 sw=2 et
|
||||||
16
config/tmux/config-themes.conf
Normal file
16
config/tmux/config-themes.conf
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
|
# │ Theme │
|
||||||
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
set -g pane-active-border-style "fg=#7aa2f7"
|
||||||
|
set -g pane-border-style "fg=#3b4261"
|
||||||
|
set -g status-justify "left"
|
||||||
|
set -g status-left ''
|
||||||
|
set -g status-left-length "0"
|
||||||
|
set -g status-position "bottom"
|
||||||
|
set -g status-right "#S@#{hostname_short} #{tmux_mode_indicator}"
|
||||||
|
set -g status-right-length "30"
|
||||||
|
set -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
||||||
|
set -g window-status-format ' #I:#W '
|
||||||
|
|
||||||
|
# vim: ft=tmux ts=2 sw=2 et
|
||||||
28
config/tmux/rename-session.sh
Executable file
28
config/tmux/rename-session.sh
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Default session name
|
||||||
|
DEFAULT_NAME="main"
|
||||||
|
|
||||||
|
# Current session
|
||||||
|
CURRENT_SESSION=$(tmux display-message -p "#{session_name}")
|
||||||
|
|
||||||
|
# Check that the session has a name
|
||||||
|
if [ "$CURRENT_SESSION" = "#{session_name}" ] || [ "$CURRENT_SESSION" = "0" ]; then
|
||||||
|
# Check if the default name is already in use
|
||||||
|
if tmux has-session -t "$DEFAULT_NAME" 2> /dev/null; then
|
||||||
|
# Query the user for a new name
|
||||||
|
echo "Session name '$DEFAULT_NAME' is already in use. Enter a new name:"
|
||||||
|
read -r NEW_NAME
|
||||||
|
while tmux has-session -t "$NEW_NAME" 2> /dev/null || [ -z "$NEW_NAME" ]; do
|
||||||
|
echo "Name '$NEW_NAME' is invalid or already in use. Enter a new name:"
|
||||||
|
read -r NEW_NAME
|
||||||
|
done
|
||||||
|
# Rename the session with the new name
|
||||||
|
tmux rename-session -t "$(tmux display-message -p "#{session_id}")" "$NEW_NAME"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
# Rename the session with the default name
|
||||||
|
tmux rename-session -t "$(tmux display-message -p "#{session_id}")" "$DEFAULT_NAME"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
16
config/tmux/theme-activate.sh
Executable file
16
config/tmux/theme-activate.sh
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# If our dark/light theme switching theme file can be found,
|
||||||
|
# source it in tmux. This is a separate file to keep the
|
||||||
|
# current theme settings separate from the main tmux configuration.
|
||||||
|
#
|
||||||
|
# This script requires the following in your tmux.conf:
|
||||||
|
# `run-shell "./theme-activate.sh"`
|
||||||
|
# and having the tmux-dark-notify plugin installed.
|
||||||
|
#
|
||||||
|
# Author: Ismo Vuorinen <https://github.com/ivuorinen> 2025
|
||||||
|
# License: MIT
|
||||||
|
|
||||||
|
THEME_FILE="$HOME/.local/state/tmux/tmux-dark-notify-theme.conf"
|
||||||
|
|
||||||
|
[[ -e $THEME_FILE ]] && tmux source-file "$THEME_FILE"
|
||||||
@@ -4,179 +4,22 @@
|
|||||||
# - https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html
|
# - https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html
|
||||||
# - https://github.com/dreamsofcode-io/tmux/blob/main/tmux.conf
|
# - https://github.com/dreamsofcode-io/tmux/blob/main/tmux.conf
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
# Load the configuration settings
|
||||||
# │ Bindings │
|
source-file "$TMUX_CONF_DIR/config-settings.conf"
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
|
||||||
|
|
||||||
# Set <prefix> to Control + Space, keeping the default of C-b intact.
|
# Load the theme settings
|
||||||
# unbind C-b
|
source-file "$TMUX_CONF_DIR/config-themes.conf"
|
||||||
set -g prefix C-Space
|
|
||||||
bind C-Space send-prefix
|
|
||||||
|
|
||||||
# Vim style pane selection
|
# Load the keybindings
|
||||||
bind h select-pane -L
|
source-file "$TMUX_CONF_DIR/config-keybinds.conf"
|
||||||
bind j select-pane -D
|
|
||||||
bind k select-pane -U
|
|
||||||
bind l select-pane -R
|
|
||||||
|
|
||||||
# Use Alt-arrow keys without prefix key to switch panes
|
# Load the plugins and plugin settings
|
||||||
bind -n M-Left select-pane -L
|
source-file "$TMUX_CONF_DIR/config-plugins.conf"
|
||||||
bind -n M-Right select-pane -R
|
|
||||||
bind -n M-Up select-pane -U
|
|
||||||
bind -n M-Down select-pane -D
|
|
||||||
|
|
||||||
# Reload tmux config with <prefix> + r
|
# Load theme based on tmux-dark-notify state.
|
||||||
bind r source-file ~/.dotfiles/config/tmux/tmux.conf \; display "tmux cfg reloaded!"
|
# This script helps states where dark-notify is not available,
|
||||||
|
# and we want to have light or dark state constantly available.
|
||||||
|
run-shell "$TMUX_CONF_DIR/theme-activate.sh"
|
||||||
|
|
||||||
# Switch to next client with <prefix>( and previous with <prefix>)
|
# If we started tmux with a session name, rename it.
|
||||||
bind -r '(' switch-client -p\; refresh-client -S
|
run-shell "$TMUX_CONF_DIR/rename-session.sh"
|
||||||
bind -r ')' switch-client -n\; refresh-client -S
|
|
||||||
|
|
||||||
# tms, https://github.com/jrmoulton/tmux-sessionizer
|
|
||||||
bind C-h display-popup -E "tms"
|
|
||||||
bind C-j display-popup -E "tms switch"
|
|
||||||
bind C-k display-popup -E "tms windows"
|
|
||||||
|
|
||||||
# Open a new window with <prefix> + N
|
|
||||||
bind N new-window
|
|
||||||
|
|
||||||
# Set default directory for new windows in this session to current directory:
|
|
||||||
bind M-c attach-session -c "#{pane_current_path}"
|
|
||||||
|
|
||||||
# Open a new window in the current directory
|
|
||||||
bind C new-window -c "#{pane_current_path}"
|
|
||||||
|
|
||||||
# keybindings
|
|
||||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
|
||||||
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
|
||||||
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
|
||||||
bind '"' split-window -v -c "#{pane_current_path}"
|
|
||||||
bind '!' split-window -h -c "#{pane_current_path}"
|
|
||||||
bind '^' switch-client -t'{marked}'
|
|
||||||
|
|
||||||
# synchronize all panes in a window
|
|
||||||
bind y setw synchronize-panes
|
|
||||||
|
|
||||||
#### copy mode : vim ####
|
|
||||||
# copy mode using 'Esc'
|
|
||||||
unbind [
|
|
||||||
bind Escape copy-mode
|
|
||||||
|
|
||||||
# paste using 'p'
|
|
||||||
unbind p
|
|
||||||
bind p paste-buffer
|
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
|
||||||
# │ Settings │
|
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
|
||||||
|
|
||||||
set -g default-terminal "tmux-256color"
|
|
||||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
|
||||||
|
|
||||||
# Setting status on
|
|
||||||
set -g status "on"
|
|
||||||
|
|
||||||
# Hide clock
|
|
||||||
set -g display-time 0
|
|
||||||
|
|
||||||
# Activity Monitoring (for when something happens in another pain)
|
|
||||||
set -g monitor-activity on
|
|
||||||
set -g visual-activity off
|
|
||||||
set -g visual-bell off
|
|
||||||
|
|
||||||
# Expose window title
|
|
||||||
set-option -g set-titles on
|
|
||||||
|
|
||||||
# Set bigger history limit
|
|
||||||
set -g history-limit 20000
|
|
||||||
|
|
||||||
# Keep Tmux alive when the initial command is finished
|
|
||||||
set -g remain-on-exit off
|
|
||||||
|
|
||||||
# Mouse support
|
|
||||||
set -g mouse on
|
|
||||||
|
|
||||||
# Make delay shorter
|
|
||||||
set -sg escape-time 0
|
|
||||||
|
|
||||||
# Start windows and panes at 1, not 0
|
|
||||||
set -g base-index 1
|
|
||||||
set -g pane-base-index 1
|
|
||||||
set-window-option -g pane-base-index 1
|
|
||||||
set-option -g renumber-windows on
|
|
||||||
|
|
||||||
# set vi-mode
|
|
||||||
set-window-option -g mode-keys vi
|
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
|
||||||
# │ Theme │
|
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
|
||||||
|
|
||||||
set -g status-left-length "0"
|
|
||||||
set -g status-right-length "30"
|
|
||||||
|
|
||||||
set-option -g status-position "bottom"
|
|
||||||
set-option -g status-justify left
|
|
||||||
set-option -g status-left ''
|
|
||||||
set-option -g window-status-format ' #I:#W '
|
|
||||||
set-option -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
|
|
||||||
|
|
||||||
set-option -g status-right "#{hostname_short}/#(tms sessions) #{tmux_mode_indicator}"
|
|
||||||
|
|
||||||
set -g pane-border-style "fg=#3b4261"
|
|
||||||
set -g pane-active-border-style "fg=#7aa2f7"
|
|
||||||
|
|
||||||
# https://github.com/erikw/tmux-dark-notify
|
|
||||||
set -g @dark-notify-theme-path-light '~/.dotfiles/config/tmux/theme-light.conf'
|
|
||||||
set -g @dark-notify-theme-path-dark '~/.dotfiles/config/tmux/theme-dark.conf'
|
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
|
||||||
# │ Plugins related configurations │
|
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
|
||||||
|
|
||||||
# Plugin that lets you suspend local tmux session,
|
|
||||||
# so that you can work with nested remote tmux session painlessly.
|
|
||||||
# https://github.com/MunifTanjim/tmux-suspend
|
|
||||||
set -g @suspend_key 'F12'
|
|
||||||
|
|
||||||
## A plugin to name your tmux windows smartly.
|
|
||||||
## https://github.com/ofirgall/tmux-window-name
|
|
||||||
### Maximum name length of a window
|
|
||||||
set -g @tmux_window_name_max_name_len "20"
|
|
||||||
### Replace $HOME with ~ in window names
|
|
||||||
set -g @tmux_window_name_use_tilde "True"
|
|
||||||
set -g @tmux_window_name_shells "['bash', 'fish', 'sh', 'zsh', 'oh-my-posh']"
|
|
||||||
set -g @tmux_window_dir_programs "['nvim', 'vim', 'vi', 'git']"
|
|
||||||
set -g @tmux_window_name_ignored_programs "['sqlite3', 'oh-my-posh', 'antidot', 'antidote', 'direnv', 'md5']" # Default is []
|
|
||||||
set -g @tmux_window_name_substitute_sets "[('.+ipython2', 'ipython2'), ('.+ipython3', 'ipython3'), ('.+\.local', '.local'), ('.+asdf', 'asdf')]"
|
|
||||||
|
|
||||||
## https://github.com/tmux-plugins/tmux-continuum
|
|
||||||
# set -g @continuum-restore 'on'
|
|
||||||
|
|
||||||
## https://github.com/MunifTanjim/tmux-mode-indicator
|
|
||||||
set -g @mode_indicator_prefix_mode_style 'bg=default,fg=#7aa2f7'
|
|
||||||
set -g @mode_indicator_copy_mode_style 'bg=default,fg=yellow'
|
|
||||||
set -g @mode_indicator_empty_mode_style 'bg=default,fg=#7aa2f7'
|
|
||||||
set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
|
|
||||||
|
|
||||||
# https://github.com/wfxr/tmux-fzf-url
|
|
||||||
set -g @fzf-url-bind 'u'
|
|
||||||
set -g @fzf-url-history-limit '2000'
|
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
|
||||||
# │ Plugins │
|
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
|
||||||
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-sensible/sensible.tmux
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-window-name/tmux_window_name.tmux
|
|
||||||
# run-shell ~/.dotfiles/config/tmux/plugins/tmux-continuum/continuum.tmux
|
|
||||||
# run-shell ~/.dotfiles/config/tmux/plugins/tmux-sessionist/sessionist.tmux
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-mode-indicator/mode_indicator.tmux
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/current_pane_hostname.tmux
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux
|
|
||||||
run-shell ~/.dotfiles/config/tmux/plugins/tmux-fzf-url/fzf-url.tmux
|
|
||||||
|
|
||||||
if-shell "test -e $HOME/.local/state/tmux/tmux-dark-notify-theme.conf" \
|
|
||||||
"source-file $HOME/.local/state/tmux/tmux-dark-notify-theme.conf"
|
|
||||||
|
|||||||
@@ -4,18 +4,19 @@ local config = wezterm.config_builder()
|
|||||||
-- Font and font size
|
-- Font and font size
|
||||||
config.font_size = 14.0
|
config.font_size = 14.0
|
||||||
config.font = wezterm.font_with_fallback {
|
config.font = wezterm.font_with_fallback {
|
||||||
'JetBrainsMonoNL Nerd Font Mono',
|
'JetBrainsMonoNL NFM Light',
|
||||||
'JetBrains Mono',
|
'JetBrains Mono',
|
||||||
'Noto Color Emoji',
|
|
||||||
'Symbols Nerd Font Mono',
|
'Symbols Nerd Font Mono',
|
||||||
}
|
}
|
||||||
|
config.harfbuzz_features = { 'zero', 'ss01', 'cv05' }
|
||||||
|
|
||||||
-- Make the window a bit transparent
|
-- Make the window a bit transparent
|
||||||
config.window_background_opacity = 0.97
|
config.window_background_opacity = 0.98
|
||||||
|
|
||||||
-- Don't show tab bar
|
-- Don't show tab bar
|
||||||
config.enable_tab_bar = false
|
config.enable_tab_bar = false
|
||||||
|
|
||||||
|
-- Fix alt on macOS
|
||||||
config.send_composed_key_when_left_alt_is_pressed = true
|
config.send_composed_key_when_left_alt_is_pressed = true
|
||||||
|
|
||||||
-- Function to detect the theme based on appearance
|
-- Function to detect the theme based on appearance
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
{
|
{
|
||||||
|
"telemetry": {
|
||||||
|
"metrics": false
|
||||||
|
},
|
||||||
|
"assistant": {
|
||||||
|
"default_model": {
|
||||||
|
"provider": "copilot_chat",
|
||||||
|
"model": "claude-3-5-sonnet"
|
||||||
|
},
|
||||||
|
"version": "2"
|
||||||
|
},
|
||||||
"formatter": {
|
"formatter": {
|
||||||
"external": {
|
"external": {
|
||||||
"command": "node_modules/.bin/prettier",
|
"command": "node_modules/.bin/prettier",
|
||||||
@@ -9,12 +19,23 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
|
"JavaScript": {
|
||||||
|
"enable_language_server": true,
|
||||||
|
"code_actions_on_format": {
|
||||||
|
"source.fixAll.eslint": true
|
||||||
|
}
|
||||||
|
},
|
||||||
"Lua": {
|
"Lua": {
|
||||||
"enable_language_server": true,
|
"enable_language_server": true,
|
||||||
"tab_size": 2
|
"tab_size": 2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lsp": {
|
"lsp": {
|
||||||
|
"eslint": {
|
||||||
|
"settings": {
|
||||||
|
"nodePath": "./node_modules/.bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gopls": {
|
"gopls": {
|
||||||
"initialization_options": {
|
"initialization_options": {
|
||||||
"hints": {
|
"hints": {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ ohmyzsh/ohmyzsh path:plugins/golang
|
|||||||
ohmyzsh/ohmyzsh path:plugins/gpg-agent
|
ohmyzsh/ohmyzsh path:plugins/gpg-agent
|
||||||
ohmyzsh/ohmyzsh path:plugins/nvm
|
ohmyzsh/ohmyzsh path:plugins/nvm
|
||||||
ohmyzsh/ohmyzsh path:plugins/python
|
ohmyzsh/ohmyzsh path:plugins/python
|
||||||
ohmyzsh/ohmyzsh path:plugins/tmux
|
# ohmyzsh/ohmyzsh path:plugins/tmux
|
||||||
ohmyzsh/ohmyzsh path:plugins/z
|
ohmyzsh/ohmyzsh path:plugins/z
|
||||||
|
|
||||||
# Automatically activate nvm if .nvmrc file is present
|
# Automatically activate nvm if .nvmrc file is present
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
# transient_prompt, instant_prompt=verbose.
|
# transient_prompt, instant_prompt=verbose.
|
||||||
# Type `p10k configure` to generate another config.
|
# Type `p10k configure` to generate another config.
|
||||||
#
|
#
|
||||||
# Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure).
|
# Config file for Powerlevel10k with the style of Pure
|
||||||
|
# (https://github.com/sindresorhus/pure).
|
||||||
#
|
#
|
||||||
# Differences from Pure:
|
# Differences from Pure:
|
||||||
#
|
#
|
||||||
@@ -14,13 +15,16 @@
|
|||||||
# - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state.
|
# - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state.
|
||||||
# - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`).
|
# - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`).
|
||||||
#
|
#
|
||||||
# Apart from the differences listed above, the replication of Pure prompt is exact. This includes
|
# Apart from the differences listed above, the replication of Pure
|
||||||
# even the questionable parts. For example, just like in Pure, there is no indication of Git status
|
# prompt is exact. This includes even the questionable parts.
|
||||||
# being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt
|
# For example, just like in Pure, there is no indication of Git status
|
||||||
# doesn't fit on one line, it wraps around with no attempt to shorten it.
|
# being stale; prompt symbol is the same in command, visual and overwrite
|
||||||
|
# vi modes; when prompt doesn't fit on one line, it wraps around with
|
||||||
|
# no attempt to shorten it.
|
||||||
#
|
#
|
||||||
# If you like the general style of Pure but not particularly attached to all its quirks, type
|
# If you like the general style of Pure but not particularly attached
|
||||||
# `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking
|
# to all its quirks, type `p10k configure` and pick "Lean" style.
|
||||||
|
# This will give you slick minimalist prompt while taking
|
||||||
# advantage of Powerlevel10k features that aren't present in Pure.
|
# advantage of Powerlevel10k features that aren't present in Pure.
|
||||||
|
|
||||||
# Temporarily change options.
|
# Temporarily change options.
|
||||||
@@ -83,8 +87,9 @@
|
|||||||
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
|
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
|
||||||
typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons
|
typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons
|
||||||
|
|
||||||
# Add an empty line before each prompt except the first. This doesn't emulate the bug
|
# Add an empty line before each prompt except the first. This doesn't
|
||||||
# in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar.
|
# emulate the bug in Pure that makes prompt drift down whenever you use
|
||||||
|
# the Alt-C binding from fzf or similar.
|
||||||
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
|
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
|
||||||
|
|
||||||
# Magenta prompt symbol if the last command succeeded.
|
# Magenta prompt symbol if the last command succeeded.
|
||||||
@@ -116,6 +121,9 @@
|
|||||||
# Don't show context unless root or in SSH.
|
# Don't show context unless root or in SSH.
|
||||||
# typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
|
# typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
|
||||||
|
|
||||||
|
# aws, go and nvm versions colors.
|
||||||
|
typeset -g POWERLEVEL9K_{AWS,GO,NVM}_FOREGROUND=$grey
|
||||||
|
|
||||||
# Show previous command duration only if it's >= 86400s = 24h.
|
# Show previous command duration only if it's >= 86400s = 24h.
|
||||||
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=86400
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=86400
|
||||||
# Don't show fractional seconds. Thus, 7s rather than 7.3s.
|
# Don't show fractional seconds. Thus, 7s rather than 7.3s.
|
||||||
@@ -125,15 +133,17 @@
|
|||||||
# Yellow previous command duration.
|
# Yellow previous command duration.
|
||||||
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow
|
||||||
|
|
||||||
# Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones.
|
# Grey Git prompt. This makes stale prompts indistinguishable
|
||||||
|
# from up-to-date ones.
|
||||||
typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey
|
typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey
|
||||||
|
|
||||||
# Disable async loading indicator to make directories that aren't Git repositories
|
# Disable async loading indicator to make directories that aren't
|
||||||
# indistinguishable from large Git repositories without known state.
|
# Git repositories indistinguishable from large Git repositories
|
||||||
|
# without known state.
|
||||||
typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=
|
typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=
|
||||||
|
|
||||||
# Don't wait for Git status even for a millisecond, so that prompt always updates
|
# Don't wait for Git status even for a millisecond, so that
|
||||||
# asynchronously when Git state changes.
|
# prompt always updates asynchronously when Git state changes.
|
||||||
typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
|
typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
|
||||||
|
|
||||||
# Cyan ahead/behind arrows.
|
# Cyan ahead/behind arrows.
|
||||||
@@ -161,36 +171,42 @@
|
|||||||
typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey
|
typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey
|
||||||
# Format for the current time: 09:51:02. See `man 3 strftime`.
|
# Format for the current time: 09:51:02. See `man 3 strftime`.
|
||||||
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
|
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
|
||||||
# If set to true, time will update when you hit enter. This way prompts for the past
|
|
||||||
# commands will contain the start times of their commands rather than the end times of
|
# If set to true, time will update when you hit enter. This way prompts
|
||||||
# their preceding commands.
|
# for the past commands will contain the start times of their commands
|
||||||
|
# rather than the end times of their preceding commands.
|
||||||
typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
|
typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
|
||||||
|
|
||||||
# Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
|
# Transient prompt works similarly to the builtin transient_rprompt option.
|
||||||
# when accepting a command line. Supported values:
|
# It trims down prompt when accepting a command line. Supported values:
|
||||||
#
|
#
|
||||||
# - off: Don't change prompt when accepting a command line.
|
# - off: Don't change prompt when accepting a command line.
|
||||||
# - always: Trim down prompt when accepting a command line.
|
# - always: Trim down prompt when accepting a command line.
|
||||||
# - same-dir: Trim down prompt when accepting a command line unless this is the first command
|
# - same-dir: Trim down prompt when accepting a command line
|
||||||
# typed after changing current working directory.
|
# unless this is the first command typed after
|
||||||
|
# changing current working directory.
|
||||||
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
|
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
|
||||||
|
|
||||||
# Instant prompt mode.
|
# Instant prompt mode.
|
||||||
#
|
#
|
||||||
# - off: Disable instant prompt. Choose this if you've tried instant prompt and found
|
# - off: Disable instant prompt. Choose this if you've tried
|
||||||
# it incompatible with your zsh configuration files.
|
# instant prompt and found it incompatible with your
|
||||||
# - quiet: Enable instant prompt and don't print warnings when detecting console output
|
# zsh configuration files.
|
||||||
# during zsh initialization. Choose this if you've read and understood
|
# - quiet: Enable instant prompt and don't print warnings when
|
||||||
|
# detecting console output during zsh initialization.
|
||||||
|
# Choose this if you've read and understood
|
||||||
# https://github.com/romkatv/powerlevel10k#instant-prompt.
|
# https://github.com/romkatv/powerlevel10k#instant-prompt.
|
||||||
# - verbose: Enable instant prompt and print a warning when detecting console output during
|
# - verbose: Enable instant prompt and print a warning when detecting
|
||||||
# zsh initialization. Choose this if you've never tried instant prompt, haven't
|
# console output during zsh initialization. Choose this
|
||||||
# seen the warning, or if you are unsure what this all means.
|
# if you've never tried instant prompt, haven't seen the
|
||||||
|
# warning, or if you are unsure what this all means.
|
||||||
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
|
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
|
||||||
|
|
||||||
# Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
|
# Hot reload allows you to change POWERLEVEL9K options after
|
||||||
# For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
|
# Powerlevel10k has been initialized. For example, you can type
|
||||||
# can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
|
# POWERLEVEL9K_BACKGROUND=red and see your prompt turn red.
|
||||||
# really need it.
|
# Hot reload can slow down prompt by 1-2 milliseconds, so it's
|
||||||
|
# better to keep it turned off unless you really need it.
|
||||||
typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
|
typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
|
||||||
|
|
||||||
# If p10k is already loaded, reload configuration.
|
# If p10k is already loaded, reload configuration.
|
||||||
|
|||||||
66
docs/aerospace-keybindings.md
Normal file
66
docs/aerospace-keybindings.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# aerospace keybindings
|
||||||
|
|
||||||
|
## main
|
||||||
|
|
||||||
|
| Key | Command(s) and actions |
|
||||||
|
|-----------------|-----------------------------------------------|
|
||||||
|
| alt-a | mode apps |
|
||||||
|
| alt-h | focus left |
|
||||||
|
| alt-j | focus down |
|
||||||
|
| alt-k | focus up |
|
||||||
|
| alt-l | focus right |
|
||||||
|
| alt-m | mode move |
|
||||||
|
| alt-s | mode service |
|
||||||
|
| alt-shift-1 | workspace 1 |
|
||||||
|
| alt-shift-2 | workspace 2 |
|
||||||
|
| alt-shift-tab | workspace-back-and-forth |
|
||||||
|
| ctrl-shift-1 | move-node-to-workspace 1 |
|
||||||
|
| ctrl-shift-2 | move-node-to-workspace 2 |
|
||||||
|
| ctrl-shift-tab | move-workspace-to-monitor --wrap-around prev |
|
||||||
|
|
||||||
|
## apps
|
||||||
|
|
||||||
|
| Key | Command(s) and actions |
|
||||||
|
|------|----------------------------------------------------------------------|
|
||||||
|
| b | exec-and-forget open -a /Applications/Brave Browser.app; mode main |
|
||||||
|
| c | exec-and-forget open -a /Applications/Ferdium.app; mode main |
|
||||||
|
| esc | reload-config; mode main |
|
||||||
|
| g | exec-and-forget open -a /Applications/Ghostty.app; mode main |
|
||||||
|
| o | exec-and-forget open -a /Applications/Obsidian.app; mode main |
|
||||||
|
| s | exec-and-forget open -a /Applications/Slack.app; mode main |
|
||||||
|
| t | exec-and-forget open -a /Applications/TIDAL.app; mode main |
|
||||||
|
| w | exec-and-forget open -a /Applications/WezTerm.app; mode main |
|
||||||
|
|
||||||
|
## move
|
||||||
|
|
||||||
|
| Key | Command(s) and actions |
|
||||||
|
|--------------|--------------------------------------------------|
|
||||||
|
| 1 | move-node-to-workspace 1 --focus-follows-window |
|
||||||
|
| 2 | move-node-to-workspace 2 --focus-follows-window |
|
||||||
|
| ctrl-h | resize smart -70 |
|
||||||
|
| ctrl-l | resize smart +70 |
|
||||||
|
| esc | reload-config; mode main |
|
||||||
|
| h | move left |
|
||||||
|
| j | move down |
|
||||||
|
| k | move up |
|
||||||
|
| l | move right |
|
||||||
|
| r | flatten-workspace-tree; mode main |
|
||||||
|
| shift-h | join-with left |
|
||||||
|
| shift-j | join-with down |
|
||||||
|
| shift-k | join-with up |
|
||||||
|
| shift-l | join-with right |
|
||||||
|
| shift-left | resize smart +70 |
|
||||||
|
| shift-right | resize smart -70 |
|
||||||
|
|
||||||
|
## service
|
||||||
|
|
||||||
|
| Key | Command(s) and actions |
|
||||||
|
|------------|-------------------------------------------|
|
||||||
|
| backspace | close-all-windows-but-current; mode main |
|
||||||
|
| esc | reload-config; mode main |
|
||||||
|
| f | layout floating tiling; mode main |
|
||||||
|
| r | flatten-workspace-tree; mode main |
|
||||||
|
|
||||||
|
File generated: 2025-01-15 13:32:41
|
||||||
|
|
||||||
|
Config file: [config/aerospace/aerospace.toml](./../config/aerospace/aerospace.toml)
|
||||||
52
docs/alias.md
Normal file
52
docs/alias.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# Alias Commands
|
||||||
|
|
||||||
|
This file lists all aliases defined in `config/alias`.
|
||||||
|
|
||||||
|
| Alias | Command |
|
||||||
|
| ------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
|
| `....` | `cd ../../..` |
|
||||||
|
| `...` | `cd ../..` |
|
||||||
|
| `..` | `cd ..` |
|
||||||
|
| `.` | `cd $HOME` |
|
||||||
|
| `.b` | `cd $XDG_BIN_HOME` |
|
||||||
|
| `.c` | `cd $HOME/Code` |
|
||||||
|
| `.d` | `cd $DOTFILES` |
|
||||||
|
| `.l` | `cd $HOME/.local` |
|
||||||
|
| `.o` | `cd $HOME/Code/ivuorinen/obsidian/` |
|
||||||
|
| `art` | `[ -f artisan ] && php artisan \|\| php vendor/bin/artisan` |
|
||||||
|
| `cd..` | `cd ..` |
|
||||||
|
| `cdgr` | `cd "$(get_git_root)"` |
|
||||||
|
| `dn` | `du -chd1` |
|
||||||
|
| `flush` | `dscacheutil -flushcache` |
|
||||||
|
| `grep` | `grep --color` |
|
||||||
|
| `hide` | `defaults write com.apple.finder AppleShowAllFiles -bool false; killall Finder` |
|
||||||
|
| `ips` | `ifconfig -a \| grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\\|[a-fA-F0-9:]\+\)' \| sed -e 's/inet6* //' \| sort` |
|
||||||
|
| `irssi` | `irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi` |
|
||||||
|
| `isodate` | `date +'%Y-%m-%d'` |
|
||||||
|
| `l` | `ls -a` |
|
||||||
|
| `ll` | `ls -la` |
|
||||||
|
| `localip` | `ipconfig getifaddr en1` |
|
||||||
|
| `mirror_site` | `wget -m -k -K -E -e robots=off` |
|
||||||
|
| `peek` | `tee >(cat 1>&2)` |
|
||||||
|
| `pubkey` | `more ~/.ssh/id_rsa.pub \| pbcopy \| echo '=> Public key copied to pasteboard.'` |
|
||||||
|
| `sail` | `[ -f sail ] && bash sail \|\| bash vendor/bin/sail` |
|
||||||
|
| `show` | `defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder` |
|
||||||
|
| `sl` | `ls` |
|
||||||
|
| `svn` | `svn --config-dir $XDG_CONFIG_HOME/subversion` |
|
||||||
|
| `trivy_scan` | `docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy` |
|
||||||
|
| `updatedb` | `sudo /usr/libexec/locate.updatedb` |
|
||||||
|
| `vi` | `nvim` |
|
||||||
|
| `vim` | `nvim` |
|
||||||
|
| `watchx` | `watch -dpbc` |
|
||||||
|
| `wget` | `wget --hsts-file=$XDG_DATA_HOME/wget-hsts` |
|
||||||
|
| `x-datetime` | `date +'%Y-%m-%d %H:%M:%S'` |
|
||||||
|
| `x-ip` | `dig +short myip.opendns.com @resolver1.opendns.com` |
|
||||||
|
| `x-timestamp` | `date +'%s'` |
|
||||||
|
| `xdg` | `xdg-ninja --skip-ok --skip-unsupported` |
|
||||||
|
| `zapall` | `zapds && zappyc` |
|
||||||
|
| `zapds` | `find . -name ".DS_Store" -print -delete` |
|
||||||
|
| `zappyc` | `find . -type f -name '*.pyc' -ls -delete` |
|
||||||
|
| `zedit` | `$EDITOR ~/.dotfiles` |
|
||||||
|
|
||||||
|
Total aliases: 43
|
||||||
|
Last updated: Fri 17 Jan 2025 13:06:59 EET
|
||||||
@@ -54,19 +54,17 @@ n <Space>xq * :Trouble quickfix<CR>
|
|||||||
Quickfix
|
Quickfix
|
||||||
n <Space>xl * :Trouble loclist<CR>
|
n <Space>xl * :Trouble loclist<CR>
|
||||||
Location List
|
Location List
|
||||||
n <Space>xd * :Trouble document_diagnostics<CR>
|
n <Space>xd * :Trouble diagnostics<CR>
|
||||||
Document Diagnostics
|
Document Diagnostics
|
||||||
n <Space>sx * :Telescope import<CR>
|
n <Space>sx * :Telescope import<CR>
|
||||||
Telescope: Import
|
Telescope: Import
|
||||||
n <Space>sw * :Telescope grep_string<CR>
|
n <Space>sw * :Telescope grep_string<CR>
|
||||||
Grep String
|
Grep String
|
||||||
n <Space>st * :TodoTelescope<CR>
|
|
||||||
Search Todos
|
|
||||||
n <Space>ss * :Telescope treesitter<CR>
|
n <Space>ss * :Telescope treesitter<CR>
|
||||||
Treesitter
|
Treesitter
|
||||||
n <Space>sq * :Telescope quickfix<CR>
|
n <Space>sq * :Telescope quickfix<CR>
|
||||||
Quickfix
|
Quickfix
|
||||||
n <Space>sp * :lua require("telescope").extensions.lazy_plugins.lazy_plugins()<CR>
|
n <Space>sp * ~/.config/nvim/lua/keymaps.lua
|
||||||
Lazy Plugins
|
Lazy Plugins
|
||||||
n <Space>so * :Telescope oldfiles<CR>
|
n <Space>so * :Telescope oldfiles<CR>
|
||||||
Old Files
|
Old Files
|
||||||
@@ -86,7 +84,7 @@ n <Space>/ * ~/.config/nvim/lua/keymaps.lua
|
|||||||
Fuzzily search in current buffer
|
Fuzzily search in current buffer
|
||||||
n <Space>, * :Telescope buffers<CR>
|
n <Space>, * :Telescope buffers<CR>
|
||||||
Find existing buffers
|
Find existing buffers
|
||||||
n <Space>f * :Telescope find_files<CR>
|
n <Space>f * :Telescope fd --hidden=true<CR>
|
||||||
Find Files
|
Find Files
|
||||||
n <Space>cbt * <Cmd>CBllline<CR>
|
n <Space>cbt * <Cmd>CBllline<CR>
|
||||||
CB: Titled Line
|
CB: Titled Line
|
||||||
@@ -98,37 +96,33 @@ n <Space>cbd * <Cmd>CBd<CR>
|
|||||||
CB: Remove a box
|
CB: Remove a box
|
||||||
n <Space>cbb * <Cmd>CBccbox<CR>
|
n <Space>cbb * <Cmd>CBccbox<CR>
|
||||||
CB: Box Title
|
CB: Box Title
|
||||||
n <Space>cw * :Lspsaga diagnostic_jump_next<CR>
|
n <Space>cwd * ~/.config/nvim/lua/keymaps.lua
|
||||||
Diagnostic Jump Next
|
Dynamic Workspace Symbols
|
||||||
n <Space>cv * :Lspsaga diagnostic_jump_prev<CR>
|
n <Space>cws * ~/.config/nvim/lua/keymaps.lua
|
||||||
Diagnostic Jump Prev
|
Workspace Symbols
|
||||||
n <Space>cu * :Lspsaga preview_definition<CR>
|
n <Space>ct * ~/.config/nvim/lua/keymaps.lua
|
||||||
Preview Definition
|
treesitter
|
||||||
n <Space>cT * :Telescope lsp_type_definitions<CR>
|
|
||||||
LSP Type Definitions
|
|
||||||
n <Space>ct * :Lspsaga peek_type_definition<CR>
|
|
||||||
Peek Type Definition
|
|
||||||
n <Space>cs * :Telescope lsp_document_symbols<CR>
|
n <Space>cs * :Telescope lsp_document_symbols<CR>
|
||||||
LSP Document Symbols
|
LSP Document Symbols
|
||||||
n <Space>cR * :Lspsaga rename ++project<CR>
|
n <Space>cr * ~/.local/share/bob/v0.10.2/nvim-macos-arm64/share/nvim/runtime/lua/vim/lsp/buf.lua
|
||||||
Rename Project wide
|
|
||||||
n <Space>cr * :Lspsaga rename<CR>
|
|
||||||
Rename
|
Rename
|
||||||
n <Space>cp * :Lspsaga peek_definition<CR>
|
n <Space>cp * ~/.config/nvim/lua/keymaps.lua
|
||||||
Peek Definition
|
Type Definition
|
||||||
n <Space>cl * :Lspsaga show_cursor_diagnostics<CR>
|
n <Space>ci * ~/.config/nvim/lua/keymaps.lua
|
||||||
Cursor Diagnostics
|
|
||||||
n <Space>ci * :Lspsaga implement<CR>
|
|
||||||
Implementations
|
Implementations
|
||||||
n <Space>cg * :lua require("neogen").generate()<CR>
|
n <Space>cg * :lua require("neogen").generate()<CR>
|
||||||
Generate annotations
|
Generate annotations
|
||||||
n <Space>cd * :Lspsaga show_line_diagnostics<CR>
|
x <Space>cf * :lua vim.lsp.buf.format()<CR>
|
||||||
Line Diagnostics
|
Format
|
||||||
n <Space>cco * :Lspsaga outgoing_calls<CR>
|
n <Space>cf * :lua vim.lsp.buf.format()<CR>
|
||||||
Outgoing Calls
|
Format
|
||||||
n <Space>cci * :Lspsaga incoming_calls<CR>
|
n <Space>cd * ~/.config/nvim/lua/keymaps.lua
|
||||||
Incoming Calls
|
Definitions
|
||||||
n <Space>ca * :Lspsaga code_action<CR>
|
n <Space>cco * ~/.config/nvim/lua/keymaps.lua
|
||||||
|
Outgoing calls
|
||||||
|
n <Space>cci * ~/.config/nvim/lua/keymaps.lua
|
||||||
|
Incoming calls
|
||||||
|
n <Space>ca * :lua vim.lsp.buf.code_action()<CR>
|
||||||
Code Action
|
Code Action
|
||||||
n <Space>bw * :lua MiniBufremove.wipeout()<CR>
|
n <Space>bw * :lua MiniBufremove.wipeout()<CR>
|
||||||
Wipeout
|
Wipeout
|
||||||
@@ -144,6 +138,24 @@ n <Space>bd * :lua MiniBufremove.delete()<CR>
|
|||||||
Delete
|
Delete
|
||||||
n <Space>ba * :%bd|e#|bd#<CR>
|
n <Space>ba * :%bd|e#|bd#<CR>
|
||||||
Close all except current
|
Close all except current
|
||||||
|
n <Space>apt * :PhpactorTransform<CR>
|
||||||
|
PHPactor: Transform
|
||||||
|
n <Space>aps * :PhpactorClassSearch<CR>
|
||||||
|
PHPactor: Class Search
|
||||||
|
n <Space>apn * :PhpactorClassNew<CR>
|
||||||
|
PHPactor: Class New
|
||||||
|
n <Space>apm * :PhpactorContextMenu<CR>
|
||||||
|
PHPactor: Context Menu
|
||||||
|
n <Space>av * :silent TestVisit<CR>
|
||||||
|
Test Visit
|
||||||
|
n <Space>al * :silent TestLast<CR>
|
||||||
|
Test Last
|
||||||
|
n <Space>as * :silent TestSuite<CR>
|
||||||
|
Test Suite
|
||||||
|
n <Space>af * :silent TestFile<CR>
|
||||||
|
Test File
|
||||||
|
n <Space>an * :silent TestNearest<CR>
|
||||||
|
Test Nearest
|
||||||
n <Space>o * ~/.config/nvim/lua/keymaps.lua
|
n <Space>o * ~/.config/nvim/lua/keymaps.lua
|
||||||
Open repo in browser
|
Open repo in browser
|
||||||
n <Space>tmw * <Cmd>setlocal wrap! wrap?<CR>
|
n <Space>tmw * <Cmd>setlocal wrap! wrap?<CR>
|
||||||
@@ -168,8 +180,6 @@ n <Space>tmc * <Cmd>setlocal cursorline! cursorline?<CR>
|
|||||||
Toggle 'cursorline'
|
Toggle 'cursorline'
|
||||||
n <Space>tmb * <Cmd>lua vim.o.bg = vim.o.bg == "dark" and "light" or "dark"; print(vim.o.bg)<CR>
|
n <Space>tmb * <Cmd>lua vim.o.bg = vim.o.bg == "dark" and "light" or "dark"; print(vim.o.bg)<CR>
|
||||||
Toggle 'background'
|
Toggle 'background'
|
||||||
<Space>cf * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
|
||||||
Format buffer
|
|
||||||
x # * vim/_defaults.lua
|
x # * vim/_defaults.lua
|
||||||
:help v_#-default
|
:help v_#-default
|
||||||
o % <Plug>(MatchitOperationForward)
|
o % <Plug>(MatchitOperationForward)
|
||||||
@@ -177,14 +187,12 @@ x % <Plug>(MatchitVisualForward)
|
|||||||
n % <Plug>(MatchitNormalForward)
|
n % <Plug>(MatchitNormalForward)
|
||||||
n & * :&&<CR>
|
n & * :&&<CR>
|
||||||
:help &-default
|
:help &-default
|
||||||
|
n '? & :<C-U>echo ":Start" dispatch#start_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||||
|
n '! & <SNR>28_:.Start!
|
||||||
|
n '<Space> & <SNR>28_:.Start<Space>
|
||||||
|
n '<CR> & <SNR>28_:.Start<CR>
|
||||||
x * * vim/_defaults.lua
|
x * * vim/_defaults.lua
|
||||||
:help v_star-default
|
:help v_star-default
|
||||||
o ; * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
|
||||||
Repeat jump
|
|
||||||
x ; * <Cmd>lua MiniJump.jump()<CR>
|
|
||||||
Repeat jump
|
|
||||||
n ; * <Cmd>lua MiniJump.jump()<CR>
|
|
||||||
Repeat jump
|
|
||||||
v < * <gv
|
v < * <gv
|
||||||
Indent Left
|
Indent Left
|
||||||
n < * <gv
|
n < * <gv
|
||||||
@@ -195,33 +203,21 @@ n > * >gv
|
|||||||
Indent Right
|
Indent Right
|
||||||
n @ * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
n @ * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Execute macro without 'mini.clue' triggers
|
Execute macro without 'mini.clue' triggers
|
||||||
x @ * mode() == 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
x @ * mode() ==# 'V' ? ':normal! @'.getcharstr().'<CR>' : '@'
|
||||||
:help v_@-default
|
:help v_@-default
|
||||||
o F * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
n K * :lua vim.lsp.buf.hover()<CR>
|
||||||
Jump backward
|
|
||||||
x F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
|
|
||||||
Jump backward
|
|
||||||
n F * <Cmd>lua MiniJump.smart_jump(true, false)<CR>
|
|
||||||
Jump backward
|
|
||||||
n K * :Lspsaga hover_doc<CR>
|
|
||||||
Hover Documentation
|
Hover Documentation
|
||||||
n Q * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
n Q * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/clue.lua
|
||||||
Execute macro without 'mini.clue' triggers
|
Execute macro without 'mini.clue' triggers
|
||||||
x Q * mode() == 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
x Q * mode() ==# 'V' ? ':normal! @<C-R>=reg_recorded()<CR><CR>' : 'Q'
|
||||||
:help v_Q-default
|
:help v_Q-default
|
||||||
o T * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
|
||||||
Jump backward till
|
|
||||||
x T * <Cmd>lua MiniJump.smart_jump(true, true)<CR>
|
|
||||||
Jump backward till
|
|
||||||
n T * <Cmd>lua MiniJump.smart_jump(true, true)<CR>
|
|
||||||
Jump backward till
|
|
||||||
n Y * y$
|
n Y * y$
|
||||||
:help Y-default
|
:help Y-default
|
||||||
n Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
o Zk * ~/.config/nvim/lua/keymaps.lua
|
||||||
Flash Treesitter
|
Flash Treesitter
|
||||||
o Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
x Zk * ~/.config/nvim/lua/keymaps.lua
|
||||||
Flash Treesitter
|
Flash Treesitter
|
||||||
x Zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
n Zk * ~/.config/nvim/lua/keymaps.lua
|
||||||
Flash Treesitter
|
Flash Treesitter
|
||||||
o [% <Plug>(MatchitOperationMultiBackward)
|
o [% <Plug>(MatchitOperationMultiBackward)
|
||||||
x [% <Plug>(MatchitVisualMultiBackward)
|
x [% <Plug>(MatchitVisualMultiBackward)
|
||||||
@@ -269,22 +265,30 @@ n ]h * <Cmd>lua MiniDiff.goto_hunk('next')<CR>
|
|||||||
Next hunk
|
Next hunk
|
||||||
n ]d * vim/_defaults.lua
|
n ]d * vim/_defaults.lua
|
||||||
Jump to the next diagnostic
|
Jump to the next diagnostic
|
||||||
|
n `? & <SNR>28_:.FocusDispatch<CR>
|
||||||
|
n `! & <SNR>28_:.Dispatch!
|
||||||
|
n `<Space> & <SNR>28_:.Dispatch<Space>
|
||||||
|
n `<CR> & <SNR>28_:.Dispatch<CR>
|
||||||
x a% <Plug>(MatchitVisualTextObject)
|
x a% <Plug>(MatchitVisualTextObject)
|
||||||
|
o ax <Plug>(textobj-xmlattr-attr-a)
|
||||||
|
x ax <Plug>(textobj-xmlattr-attr-a)
|
||||||
o ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
o ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||||
Object scope with border
|
Object scope with border
|
||||||
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
x ai * <Cmd>lua MiniIndentscope.textobject(true)<CR>
|
||||||
Object scope with border
|
Object scope with border
|
||||||
o f * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
|
||||||
Jump forward
|
|
||||||
x f * <Cmd>lua MiniJump.smart_jump(false, false)<CR>
|
|
||||||
Jump forward
|
|
||||||
n f * <Cmd>lua MiniJump.smart_jump(false, false)<CR>
|
|
||||||
Jump forward
|
|
||||||
n gR * :RegexplainerToggle<CR>
|
n gR * :RegexplainerToggle<CR>
|
||||||
Toggle Regexplainer
|
Toggle Regexplainer
|
||||||
o g% <Plug>(MatchitOperationBackward)
|
o g% <Plug>(MatchitOperationBackward)
|
||||||
x g% <Plug>(MatchitVisualBackward)
|
x g% <Plug>(MatchitVisualBackward)
|
||||||
n g% <Plug>(MatchitNormalBackward)
|
n g% <Plug>(MatchitNormalBackward)
|
||||||
|
n g`? & :<C-U>echo ":Spawn" dispatch#spawn_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||||
|
n g`! & <SNR>28_:.Spawn!
|
||||||
|
n g`<Space> & <SNR>28_:.Spawn<Space>
|
||||||
|
n g`<CR> & <SNR>28_:.Spawn<CR>
|
||||||
|
n g'? & :<C-U>echo ":Spawn" dispatch#spawn_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||||
|
n g'! & <SNR>28_:.Spawn!
|
||||||
|
n g'<Space> & <SNR>28_:.Spawn<Space>
|
||||||
|
n g'<CR> & <SNR>28_:.Spawn<CR>
|
||||||
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
|
x gS * :<C-U>lua MiniSplitjoin.toggle({ region = MiniSplitjoin.get_visual_region() })<CR>
|
||||||
Toggle arguments
|
Toggle arguments
|
||||||
n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
|
n gS * v:lua.MiniSplitjoin.operator("toggle") . " "
|
||||||
@@ -353,6 +357,8 @@ x gx * <Cmd>lua MiniOperators.exchange('visual')<CR>
|
|||||||
Exchange selection
|
Exchange selection
|
||||||
n gx * v:lua.MiniOperators.exchange()
|
n gx * v:lua.MiniOperators.exchange()
|
||||||
Exchange operator
|
Exchange operator
|
||||||
|
o ix <Plug>(textobj-xmlattr-attr-i)
|
||||||
|
x ix <Plug>(textobj-xmlattr-attr-i)
|
||||||
o ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
o ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||||
Object scope
|
Object scope
|
||||||
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
x ii * <Cmd>lua MiniIndentscope.textobject(false)<CR>
|
||||||
@@ -363,6 +369,10 @@ n j * v:count == 0 ? 'gj' : 'j'
|
|||||||
x k * v:count == 0 ? 'gk' : 'k'
|
x k * v:count == 0 ? 'gk' : 'k'
|
||||||
n k * v:count == 0 ? 'gk' : 'k'
|
n k * v:count == 0 ? 'gk' : 'k'
|
||||||
Move up
|
Move up
|
||||||
|
n m? & :<C-U>echo ":Dispatch" dispatch#make_focus(v:count > 1 ? 0 : v:count ? line(".") : -1)<CR>
|
||||||
|
n m! & <SNR>28_:.Make!
|
||||||
|
n m<Space> & <SNR>28_:.Make<Space>
|
||||||
|
n m<CR> & <SNR>28_:.Make<CR>
|
||||||
n shn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
n shn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Highlight next surrounding
|
Highlight next surrounding
|
||||||
n sFn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
n sFn * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
@@ -399,18 +409,14 @@ n sd * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
|||||||
Delete surrounding
|
Delete surrounding
|
||||||
n sa * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
n sa * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/surround.lua
|
||||||
Add surrounding
|
Add surrounding
|
||||||
o t * ~/.local/share/nvim/lazy/mini.nvim/lua/mini/jump.lua
|
o zk * ~/.config/nvim/lua/keymaps.lua
|
||||||
Jump forward till
|
|
||||||
x t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
|
||||||
Jump forward till
|
|
||||||
n t * <Cmd>lua MiniJump.smart_jump(false, true)<CR>
|
|
||||||
Jump forward till
|
|
||||||
x zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
|
||||||
Flash
|
Flash
|
||||||
o zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
x zk * ~/.config/nvim/lua/keymaps.lua
|
||||||
Flash
|
Flash
|
||||||
n zk * ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua
|
n zk * ~/.config/nvim/lua/keymaps.lua
|
||||||
Flash
|
Flash
|
||||||
|
n <F1> * :FloatermToggle<CR>
|
||||||
|
Toggle Floaterm
|
||||||
v <C-J> * :m '>+1<CR>gv=gv
|
v <C-J> * :m '>+1<CR>gv=gv
|
||||||
Move Block Down
|
Move Block Down
|
||||||
n <C-J> * :m '>+1<CR>gv=gv
|
n <C-J> * :m '>+1<CR>gv=gv
|
||||||
@@ -450,23 +456,30 @@ x <Plug>(MatchitVisualBackward) * :<C-U>call matchit#Match_wrapper('',0,'v')<CR
|
|||||||
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
x <Plug>(MatchitVisualForward) * :<C-U>call matchit#Match_wrapper('',1,'v')<CR>:if col("''") != col("$") | exe ":normal! m'" | endif<CR>gv``
|
||||||
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
n <Plug>(MatchitNormalBackward) * :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
|
||||||
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
n <Plug>(MatchitNormalForward) * :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
|
||||||
|
o <Plug>(textobj-xmlattr-attr-i) & <SNR>34_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-i","o")<CR>
|
||||||
|
v <Plug>(textobj-xmlattr-attr-i) & <SNR>34_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-i","v")<CR>
|
||||||
|
o <Plug>(textobj-xmlattr-attr-a) & <SNR>34_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-a","o")<CR>
|
||||||
|
v <Plug>(textobj-xmlattr-attr-a) & <SNR>34_(save-cursor-pos):<C-U>call g:__textobj_xmlattr.do_by_pattern("select","attr-a","v")<CR>
|
||||||
|
n <SNR>34_ * <SNR>34_
|
||||||
|
<SNR>34_(save-cursor-pos) * <SNR>34_save_cursor_pos()
|
||||||
|
n <SNR>28_:. & :<C-R>=getcmdline() =~ ',' ? "\0250" : ""<CR>
|
||||||
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
n <Plug>PlenaryTestFile * :lua require('plenary.test_harness').test_file(vim.fn.expand("%:p"))<CR>
|
||||||
n <M-k> * <Cmd>lua MiniMove.move_line('up')<CR>
|
s <Plug>luasnip-jump-prev * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move line up
|
LuaSnip: Jump to the previous node
|
||||||
n <M-j> * <Cmd>lua MiniMove.move_line('down')<CR>
|
s <Plug>luasnip-jump-next * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move line down
|
LuaSnip: Jump to the next node
|
||||||
n <M-l> * <Cmd>lua MiniMove.move_line('right')<CR>
|
s <Plug>luasnip-prev-choice * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move line right
|
LuaSnip: Change to the previous choice from the choiceNode
|
||||||
n <M-h> * <Cmd>lua MiniMove.move_line('left')<CR>
|
s <Plug>luasnip-next-choice * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move line left
|
LuaSnip: Change to the next choice from the choiceNode
|
||||||
x <M-k> * <Cmd>lua MiniMove.move_selection('up')<CR>
|
s <Plug>luasnip-expand-snippet * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move up
|
LuaSnip: Expand the current snippet
|
||||||
x <M-j> * <Cmd>lua MiniMove.move_selection('down')<CR>
|
s <Plug>luasnip-expand-or-jump * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move down
|
LuaSnip: Expand or jump in the current snippet
|
||||||
x <M-l> * <Cmd>lua MiniMove.move_selection('right')<CR>
|
<Plug>luasnip-expand-repeat * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move right
|
LuaSnip: Repeat last node expansion
|
||||||
x <M-h> * <Cmd>lua MiniMove.move_selection('left')<CR>
|
n <Plug>luasnip-delete-check * ~/.local/share/nvim/lazy/LuaSnip/plugin/luasnip.lua
|
||||||
Move left
|
LuaSnip: Removes current snippet from jumplist
|
||||||
x <C-S> * <Esc><Cmd>silent! update | redraw<CR>
|
x <C-S> * <Esc><Cmd>silent! update | redraw<CR>
|
||||||
Save and go to Normal mode
|
Save and go to Normal mode
|
||||||
n <C-S> * :w!<CR>
|
n <C-S> * :w!<CR>
|
||||||
@@ -479,4 +492,4 @@ n <C-L> * :lua vim.lsp.buf.signature_help()<CR>
|
|||||||
Signature
|
Signature
|
||||||
```
|
```
|
||||||
|
|
||||||
- Generated on Thu 2 Jan 2025 17:41:13 EET
|
- Generated on Tue 21 Jan 2025 15:24:13 EET
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
Leader: `<ctrl><space>`
|
Leader: `<ctrl><space>`
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
Space Select next layout
|
|
||||||
# List all paste buffers
|
|
||||||
$ Rename current session
|
$ Rename current session
|
||||||
% Split window horizontally
|
% Split window horizontally
|
||||||
& Kill current window
|
& Kill current window
|
||||||
@@ -27,7 +25,6 @@ Leader: `<ctrl><space>`
|
|||||||
; Move to the previously active pane
|
; Move to the previously active pane
|
||||||
= Choose a paste buffer from a list
|
= Choose a paste buffer from a list
|
||||||
? List key bindings
|
? List key bindings
|
||||||
D Choose and detach a client from a list
|
|
||||||
E Spread panes out evenly
|
E Spread panes out evenly
|
||||||
L Switch to the last client
|
L Switch to the last client
|
||||||
M Clear the marked pane
|
M Clear the marked pane
|
||||||
@@ -37,7 +34,6 @@ Leader: `<ctrl><space>`
|
|||||||
f Search for a pane
|
f Search for a pane
|
||||||
i Display window information
|
i Display window information
|
||||||
m Toggle the marked pane
|
m Toggle the marked pane
|
||||||
n Select the next window
|
|
||||||
o Select the next pane
|
o Select the next pane
|
||||||
q Display pane numbers
|
q Display pane numbers
|
||||||
s Choose a session from a list
|
s Choose a session from a list
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
- include: 'tools/dotbot-defaults.yaml'
|
- include: 'tools/dotbot-defaults.yaml'
|
||||||
- shell:
|
- shell:
|
||||||
- echo "Configuring air"
|
- echo "Configuring air"
|
||||||
- brewfile:
|
|
||||||
- Brewfile
|
|
||||||
- link:
|
- link:
|
||||||
~/:
|
~/:
|
||||||
force: true
|
force: true
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
~/.local/share/gnupg:
|
~/.local/share/gnupg:
|
||||||
mode: 0700
|
mode: 0700
|
||||||
~/.local/state:
|
~/.local/state:
|
||||||
|
~/.local/state/tmux:
|
||||||
~/.local/state/zsh:
|
~/.local/state/zsh:
|
||||||
~/.ssh:
|
~/.ssh:
|
||||||
mode: 0700
|
mode: 0700
|
||||||
|
|||||||
125
local/bin/dfm
125
local/bin/dfm
@@ -4,6 +4,7 @@
|
|||||||
# (c) Ismo Vuorinen <https://github.com/ivuorinen> 2022
|
# (c) Ismo Vuorinen <https://github.com/ivuorinen> 2022
|
||||||
# Licensed under MIT, see LICENSE
|
# Licensed under MIT, see LICENSE
|
||||||
#
|
#
|
||||||
|
# vim: ft=bash ts=2 sw=2 et
|
||||||
# shellcheck source-path=$HOME/.dotfiles/local/bin
|
# shellcheck source-path=$HOME/.dotfiles/local/bin
|
||||||
#
|
#
|
||||||
# Helper variables, override with ENVs like `VERBOSE=1 dfm help`
|
# Helper variables, override with ENVs like `VERBOSE=1 dfm help`
|
||||||
@@ -18,8 +19,7 @@ SCRIPT=$(basename "$0")
|
|||||||
source "$DOTFILES/config/shared.sh"
|
source "$DOTFILES/config/shared.sh"
|
||||||
source "${DOTFILES}/local/bin/msgr"
|
source "${DOTFILES}/local/bin/msgr"
|
||||||
|
|
||||||
# -- Menu builder -- #
|
# Menu builder
|
||||||
|
|
||||||
menu_builder()
|
menu_builder()
|
||||||
{
|
{
|
||||||
local title=$1
|
local title=$1
|
||||||
@@ -35,54 +35,6 @@ menu_builder()
|
|||||||
local desc=${cmd#*:}
|
local desc=${cmd#*:}
|
||||||
printf " %-20s %s\n" "$name" "$desc"
|
printf " %-20s %s\n" "$name" "$desc"
|
||||||
done
|
done
|
||||||
# printf "\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
menu_section()
|
|
||||||
{
|
|
||||||
LINE=$(printf '%-18s [ %-15s ]\n' "$1" "$2")
|
|
||||||
echo -e " $(__log_marker) $LINE"
|
|
||||||
}
|
|
||||||
menu_item()
|
|
||||||
{
|
|
||||||
LINE=$(printf '%-15s %-30s\n' "$1" "$2")
|
|
||||||
echo -e "$(__log_indent)$(__log_marker) $LINE"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Takes a bash array ("cow:moo", "dinosaur:roar") and loops
|
|
||||||
# through the keys to build menu section listing.
|
|
||||||
menu_usage_header()
|
|
||||||
{
|
|
||||||
MENU_CMD="$1"
|
|
||||||
shift
|
|
||||||
MENU_ARRAY=("$@")
|
|
||||||
|
|
||||||
KEYS=""
|
|
||||||
for item in "${MENU_ARRAY[@]}"; do
|
|
||||||
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
|
||||||
KEYS+="${CMD} | "
|
|
||||||
done
|
|
||||||
|
|
||||||
# "???" removes 3 last characters, being " | " from the end
|
|
||||||
menu_section "$MENU_CMD" "${KEYS%???}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Takes the usage command "$0 dotfiles" and a
|
|
||||||
# bash array ("cow:moo" "dinosaur:roar") and loops
|
|
||||||
# through in building a menu for dfm command usage listing.
|
|
||||||
menu_usage()
|
|
||||||
{
|
|
||||||
MENU_CMD="$1"
|
|
||||||
shift
|
|
||||||
MENU_ARRAY=("$@")
|
|
||||||
|
|
||||||
msg "$MENU_CMD"
|
|
||||||
|
|
||||||
for item in "${MENU_ARRAY[@]}"; do
|
|
||||||
CMD=$(echo "${item}" | awk -F ":" '{print $1}')
|
|
||||||
DESC=$(echo "${item}" | awk -F ":" '{print $2}')
|
|
||||||
menu_item "$CMD" "$DESC"
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
section_install()
|
section_install()
|
||||||
@@ -480,10 +432,11 @@ section_helpers()
|
|||||||
{
|
{
|
||||||
USAGE_PREFIX="$SCRIPT helpers <command>"
|
USAGE_PREFIX="$SCRIPT helpers <command>"
|
||||||
MENU=(
|
MENU=(
|
||||||
"aliases:<shell> (bash, zsh) Show aliases for bash or zsh"
|
"aliases:<shell> (bash, zsh) Show aliases"
|
||||||
"colors:Show colors"
|
"colors:Show colors"
|
||||||
"env:Show environment variables"
|
"env:Show environment variables"
|
||||||
"functions:Show functions"
|
"functions:Show functions"
|
||||||
|
"aerospace:Show aerospace keybindings"
|
||||||
"nvim:Show nvim keybindings"
|
"nvim:Show nvim keybindings"
|
||||||
'path:Show $PATH dir by dir'
|
'path:Show $PATH dir by dir'
|
||||||
"tmux:Show tmux keybindings"
|
"tmux:Show tmux keybindings"
|
||||||
@@ -542,6 +495,7 @@ section_helpers()
|
|||||||
|
|
||||||
"env") env | sort ;;
|
"env") env | sort ;;
|
||||||
"functions") declare -F ;;
|
"functions") declare -F ;;
|
||||||
|
"aerospace") cat "$DOTFILES/docs/aerospace-keybindings.md" ;;
|
||||||
"nvim") cat "$DOTFILES/docs/nvim-keybindings.md" ;;
|
"nvim") cat "$DOTFILES/docs/nvim-keybindings.md" ;;
|
||||||
"tmux") cat "$DOTFILES/docs/tmux-keybindings.md" ;;
|
"tmux") cat "$DOTFILES/docs/tmux-keybindings.md" ;;
|
||||||
"wezterm") cat "$DOTFILES/docs/wezterm-keybindings.md" ;;
|
"wezterm") cat "$DOTFILES/docs/wezterm-keybindings.md" ;;
|
||||||
@@ -549,12 +503,76 @@ section_helpers()
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
section_apt()
|
||||||
|
{
|
||||||
|
USAGE_PREFIX="$SCRIPT apt <command>"
|
||||||
|
MENU=(
|
||||||
|
"upkeep:Run update, upgrade, autoremove and clean"
|
||||||
|
'install:Install packages from $DOTFILES/tools/apt.txt'
|
||||||
|
"update:Update apt packages"
|
||||||
|
"upgrade:Upgrade apt packages"
|
||||||
|
"autoremove:Remove unused apt packages"
|
||||||
|
"clean:Clean apt cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
x-have apt && {
|
||||||
|
case "$1" in
|
||||||
|
upkeep)
|
||||||
|
sudo apt update \
|
||||||
|
&& sudo apt upgrade -y \
|
||||||
|
&& sudo apt autoremove -y \
|
||||||
|
&& sudo apt clean
|
||||||
|
;;
|
||||||
|
|
||||||
|
install)
|
||||||
|
# if apt.txt is not found, exit
|
||||||
|
[ ! -f "$DOTFILES/tools/apt.txt" ] && msgr err "apt.txt not found" && exit 0
|
||||||
|
|
||||||
|
# Load apt.txt, remove comments (even if trailing comment) and empty lines.
|
||||||
|
#
|
||||||
|
# Ignoring "Quote this to prevent word splitting."
|
||||||
|
# shellcheck disable=SC2046
|
||||||
|
sudo apt install \
|
||||||
|
-y $(
|
||||||
|
grep -vE '^\s*#' "$DOTFILES/tools/apt.txt" \
|
||||||
|
| sed -e 's/#.*//' \
|
||||||
|
| tr '\n' ' '
|
||||||
|
)
|
||||||
|
|
||||||
|
# If there's a apt.txt file under hosts/$hostname/apt.txt,
|
||||||
|
# run install on those lines too.
|
||||||
|
HOSTNAME=$(hostname -s)
|
||||||
|
HOST_APT="$DOTFILES/hosts/$HOSTNAME/apt.txt"
|
||||||
|
[[ -f $HOST_APT ]] && {
|
||||||
|
# shellcheck disable=SC2046
|
||||||
|
sudo apt install -y $(
|
||||||
|
grep -vE '^\s*#' "$HOST_APT" \
|
||||||
|
| sed -e 's/#.*//' \
|
||||||
|
| tr '\n' ' '
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Try this for an alternative way to install packages
|
||||||
|
# xargs -a <(awk '! /^ *(#|$)/' "$packagelist") -r -- sudo apt-get install -y
|
||||||
|
;;
|
||||||
|
|
||||||
|
update) sudo apt update ;;
|
||||||
|
upgrade) sudo apt upgrade -y ;;
|
||||||
|
autoremove) sudo apt autoremove -y ;;
|
||||||
|
clean) sudo apt clean ;;
|
||||||
|
*) menu_builder "$USAGE_PREFIX" "${MENU[@]}" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
! x-have apt && menu_builder "$USAGE_PREFIX" "apt not available on this system"
|
||||||
|
}
|
||||||
|
|
||||||
section_docs()
|
section_docs()
|
||||||
{
|
{
|
||||||
USAGE_PREFIX="$SCRIPT docs <command>"
|
USAGE_PREFIX="$SCRIPT docs <command>"
|
||||||
|
|
||||||
MENU=(
|
MENU=(
|
||||||
"all:Update all keybindings documentations"
|
"all:Update all keybindings documentations"
|
||||||
|
"aerospace:Update aerospace keybindings documentation"
|
||||||
"tmux:Update tmux keybindings documentation"
|
"tmux:Update tmux keybindings documentation"
|
||||||
"nvim:Update nvim keybindings documentation"
|
"nvim:Update nvim keybindings documentation"
|
||||||
"wezterm:Update wezterm keybindings documentation"
|
"wezterm:Update wezterm keybindings documentation"
|
||||||
@@ -562,10 +580,12 @@ section_docs()
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
all)
|
all)
|
||||||
|
$0 docs aerospace
|
||||||
$0 docs tmux
|
$0 docs tmux
|
||||||
$0 docs nvim
|
$0 docs nvim
|
||||||
$0 docs wezterm
|
$0 docs wezterm
|
||||||
;;
|
;;
|
||||||
|
aerospace) bash "$DOTFILES/scripts/create-aerospace-keymaps.php" ;;
|
||||||
tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;;
|
tmux) bash "$DOTFILES/local/bin/x-dfm-docs-xterm-keybindings" ;;
|
||||||
nvim) bash "$DOTFILES/scripts/create-nvim-keymaps.sh" ;;
|
nvim) bash "$DOTFILES/scripts/create-nvim-keymaps.sh" ;;
|
||||||
wezterm) bash "$DOTFILES/scripts/create-wezterm-keymaps.sh" ;;
|
wezterm) bash "$DOTFILES/scripts/create-wezterm-keymaps.sh" ;;
|
||||||
@@ -756,6 +776,8 @@ usage()
|
|||||||
echo ""
|
echo ""
|
||||||
section_install
|
section_install
|
||||||
echo ""
|
echo ""
|
||||||
|
section_apt
|
||||||
|
echo ""
|
||||||
section_asdf
|
section_asdf
|
||||||
echo ""
|
echo ""
|
||||||
section_brew
|
section_brew
|
||||||
@@ -778,6 +800,7 @@ main()
|
|||||||
# The main loop. The first keyword after $0 triggers section, or help.
|
# The main loop. The first keyword after $0 triggers section, or help.
|
||||||
case "$SECTION" in
|
case "$SECTION" in
|
||||||
install) section_install "$@" ;;
|
install) section_install "$@" ;;
|
||||||
|
apt) section_apt "$@" ;;
|
||||||
asdf) section_asdf "$@" ;;
|
asdf) section_asdf "$@" ;;
|
||||||
brew) section_brew "$@" ;;
|
brew) section_brew "$@" ;;
|
||||||
check) section_check "$@" ;;
|
check) section_check "$@" ;;
|
||||||
|
|||||||
112
local/bin/t
Executable file
112
local/bin/t
Executable file
@@ -0,0 +1,112 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Credit to ThePrimeagen, jessarcher
|
||||||
|
# https://github.com/jessarcher/dotfiles/blob/master/scripts/t
|
||||||
|
#
|
||||||
|
# Tweaks by Ismo Vuorinen <https://github.com/ivuorinen> 2025
|
||||||
|
# vim: ft=bash ts=2 sw=2 et
|
||||||
|
|
||||||
|
# Set environment variables for configuration with defaults
|
||||||
|
T_ROOT="${T_ROOT:-$HOME/Code}"
|
||||||
|
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
|
||||||
|
|
||||||
|
# Function to print an error message and exit
|
||||||
|
error_exit()
|
||||||
|
{
|
||||||
|
echo "Error: $1" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
get_directories()
|
||||||
|
{
|
||||||
|
local dirs=''
|
||||||
|
dirs+='# Directories\n'
|
||||||
|
dirs+=$(
|
||||||
|
find "$T_ROOT" \
|
||||||
|
-maxdepth 3 \
|
||||||
|
-mindepth 1 \
|
||||||
|
-type d \
|
||||||
|
-not -path '*/dist/*' \
|
||||||
|
-not -path '*/dist' \
|
||||||
|
-not -path '*/node_modules/*' \
|
||||||
|
-not -path '*/node_modules' \
|
||||||
|
-not -path '*/vendor/*' \
|
||||||
|
-not -path '*/vendor' \
|
||||||
|
-not -path '*/.idea/*' \
|
||||||
|
-not -path '*/.idea' \
|
||||||
|
-not -path '*/.vscode/*' \
|
||||||
|
-not -path '*/.vscode' \
|
||||||
|
-not -path '*/.git/*' \
|
||||||
|
-not -path '*/.git' \
|
||||||
|
-not -path '*/.svn/*' \
|
||||||
|
-not -path '*/.svn'
|
||||||
|
)
|
||||||
|
dirs+="$(printf "\n%s" "$DOTFILES")"
|
||||||
|
|
||||||
|
echo "$dirs"
|
||||||
|
}
|
||||||
|
|
||||||
|
check_tmux()
|
||||||
|
{
|
||||||
|
if ! command -v tmux &> /dev/null; then
|
||||||
|
error_exit "tmux is not installed."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check to see that tmux server is running
|
||||||
|
if ! tmux info &> /dev/null; then
|
||||||
|
tmux start-server
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_sessions()
|
||||||
|
{
|
||||||
|
check_tmux
|
||||||
|
|
||||||
|
local sessions=''
|
||||||
|
sessions+='# Sessions\n'
|
||||||
|
sessions+=$(tmux list-sessions -F "#{session_name}" 2> /dev/null)
|
||||||
|
|
||||||
|
echo "$sessions"
|
||||||
|
}
|
||||||
|
|
||||||
|
items=''
|
||||||
|
|
||||||
|
# Select the directory
|
||||||
|
if [[ $# -eq 1 ]]; then
|
||||||
|
selected="$1"
|
||||||
|
else
|
||||||
|
items+=$(get_sessions | sort)
|
||||||
|
items+='\n'
|
||||||
|
items+=$(get_directories | sort)
|
||||||
|
|
||||||
|
selected=$(echo -e "$items" | fzf) || exit 0 # Exit if no selection is made
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If user selected a header, exit
|
||||||
|
[[ ${selected:0:1} == "#" ]] && error_exit "You selected a header, why?"
|
||||||
|
|
||||||
|
# Exit if no directory was selected
|
||||||
|
[[ -z $selected ]] && error_exit "No directory selected."
|
||||||
|
|
||||||
|
# Sanitize the session name
|
||||||
|
session_name=$(basename "$selected")
|
||||||
|
# If we get nothing, we are dealing with a session
|
||||||
|
[[ $session_name == "" ]] && session_name="$selected"
|
||||||
|
# Remove dots from the session name as tmux doesn't like them
|
||||||
|
session_name="${session_name//./}"
|
||||||
|
|
||||||
|
# Try to switch to the tmux session
|
||||||
|
tmux switch-client -t "=$session_name"
|
||||||
|
|
||||||
|
active_session=$(tmux display-message -p -F '#{session_name}' 2> /dev/null)
|
||||||
|
# echo "active session: $active_session"
|
||||||
|
if [ -n "$active_session" ] && [ "$active_session" == "$session_name" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create a new tmux session or attach to an existing one
|
||||||
|
if tmux new-session -c "$selected" -d -s "$session_name" 2> /dev/null; then
|
||||||
|
tmux switch-client -t "$session_name"
|
||||||
|
else
|
||||||
|
tmux new -c "$selected" -A -s "$session_name"
|
||||||
|
fi
|
||||||
226
local/bin/x-env-list
Executable file
226
local/bin/x-env-list
Executable file
@@ -0,0 +1,226 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# List environment variables grouped by the first part before underscore
|
||||||
|
# protecting environment variables that possibly contain sensitive information.
|
||||||
|
#
|
||||||
|
# Author: Ismo Vuorinen <https://github.com/ivuorinen> 2025
|
||||||
|
# License: MIT
|
||||||
|
#
|
||||||
|
# vim: ft=bash fileencoding=utf-8 sw=2 ts=2 sts=2 et tw=100
|
||||||
|
|
||||||
|
# X_ENV_GROUPING is a file that contains custom groupings for environment variables.
|
||||||
|
# The file should contain lines in the format "KEY:GROUP". One line per key.
|
||||||
|
: "${X_ENV_GROUPING:=${XDG_CONFIG_HOME:-$HOME/.config}/zsh/env_list_grouping.yaml}"
|
||||||
|
|
||||||
|
# Define protected keywords. Values of these keys are displayed as [protected value].
|
||||||
|
# The keys are case-insensitive and are matched as substrings.
|
||||||
|
PROTECTED_KEYS=("*TOKEN*" "*SECRET*" "DIRENV_DIFF" "DIRENV_WATCHES" "PATH" "FPATH")
|
||||||
|
|
||||||
|
# Default grouping is based on the first part before underscore, but can be overridden
|
||||||
|
# either by custom grouping file or by the get_custom_group function.
|
||||||
|
# The following grouping is used by default and for example groups Golang environment variables
|
||||||
|
# under the "GO" group. The keys BASH, COMMAND, FPATH, etc. are grouped under the "SHELL" group.
|
||||||
|
DEFINED_GROUPS=(
|
||||||
|
"AUTOSWITCH_VIRTUAL_ENV_DIR=PYTHON"
|
||||||
|
"BASH=SHELL"
|
||||||
|
"COMMAND=SHELL"
|
||||||
|
"COMPLETION=SHELL"
|
||||||
|
"DISABLE_LS_COLORS=SHELL"
|
||||||
|
"FPATH=SHELL"
|
||||||
|
"GOBIN=GO"
|
||||||
|
"GOPATH=GO"
|
||||||
|
"GOROOT=GO"
|
||||||
|
"GREP=SHELL"
|
||||||
|
"HIST=SHELL"
|
||||||
|
"HISTCONTROL=SHELL"
|
||||||
|
"HISTFILE=SHELL"
|
||||||
|
"HISTIGNORE=SHELL"
|
||||||
|
"HISTORY=SHELL"
|
||||||
|
"HISTSIZE=SHELL"
|
||||||
|
"HOME=SHELL"
|
||||||
|
"INFOPATH=SHELL"
|
||||||
|
"LESS=SHELL"
|
||||||
|
"LESSHISTFILE=SHELL"
|
||||||
|
"LOGNAME=SHELL"
|
||||||
|
"MANPAGER=SHELL"
|
||||||
|
"PAGER=SHELL"
|
||||||
|
"PATH=SHELL"
|
||||||
|
"PWD=SHELL"
|
||||||
|
"PYENV_ROOT=PYTHON"
|
||||||
|
"PYENV_SHELL=PYTHON"
|
||||||
|
"PYTHONPATH=PYTHON"
|
||||||
|
"RUSTUP_HOME=RUST"
|
||||||
|
"RUST_WITHOUT=RUST"
|
||||||
|
"SHELL=SHELL"
|
||||||
|
"TMPDIR=SHELL"
|
||||||
|
"USER=SHELL"
|
||||||
|
"WORKON_HOME=PYTHON"
|
||||||
|
"ZSH=ZSH"
|
||||||
|
"_=SHELL"
|
||||||
|
"npm_config_cache=NPM"
|
||||||
|
)
|
||||||
|
|
||||||
|
CONFIG_FILE="$X_ENV_GROUPING"
|
||||||
|
|
||||||
|
# If we have configuration file, run extra checks so we can process it.
|
||||||
|
if [[ -f "$CONFIG_FILE" ]]; then
|
||||||
|
|
||||||
|
# Check if yq is installed
|
||||||
|
if ! command -v yq &> /dev/null; then
|
||||||
|
echo "Error: yq is not installed. Please install it to proceed." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate the YAML file
|
||||||
|
if ! yq '.' "$CONFIG_FILE" &> /dev/null; then
|
||||||
|
echo "Error: Invalid YAML structure in '$CONFIG_FILE'." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if required keys exist in the YAML structure
|
||||||
|
if ! yq '.custom_grouping, .protected_keys' "$CONFIG_FILE" &> /dev/null; then
|
||||||
|
echo "Error: Missing required keys ('custom_grouping' or 'protected_keys') in '$CONFIG_FILE'." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If X_ENV_GROUPING is set, it will be used as the file path for custom grouping, and
|
||||||
|
# protected keys will be read from the file. The values in the file will be appended to the
|
||||||
|
# processing algorithm.
|
||||||
|
|
||||||
|
CUSTOM_KEYS=$(yq '.protected_keys[]' "$CONFIG_FILE")
|
||||||
|
while IFS= read -r key; do
|
||||||
|
# Add to default_protected_keys
|
||||||
|
PROTECTED_KEYS+=("$key")
|
||||||
|
done <<< "$CUSTOM_KEYS"
|
||||||
|
|
||||||
|
CUSTOM_GROUPS=$(yq '.custom_grouping[]' "$CONFIG_FILE")
|
||||||
|
while IFS= read -r group; do
|
||||||
|
group_name=$(echo "$group" | yq 'keys[0]')
|
||||||
|
GROUP_KEYS=$(yq ".custom_grouping[] | .[\"$group_name\"][]" "$CONFIG_FILE")
|
||||||
|
while IFS= read -r key; do
|
||||||
|
# Add to default_custom_grouping in "GROUP=KEY" format
|
||||||
|
DEFINED_GROUPS+=("$group_name=$key")
|
||||||
|
done <<< "$GROUP_KEYS"
|
||||||
|
done <<< "$CUSTOM_GROUPS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$X_ENV_GROUPING" ]]; then
|
||||||
|
while IFS=':' read -r key group; do
|
||||||
|
DEFINED_GROUPS+=("$key=$group")
|
||||||
|
done < "$X_ENV_GROUPING"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the key is in the protected keywords list
|
||||||
|
is_protected()
|
||||||
|
{
|
||||||
|
local key=$1
|
||||||
|
for protected_key in "${PROTECTED_KEYS[@]}"; do
|
||||||
|
# Direct match
|
||||||
|
if [[ "$key" == "$protected_key" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
# Wildcard match (protected_key contains '*')
|
||||||
|
if [[ "$protected_key" == *"*"* ]] && [[ "$key" == $protected_key ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Custom function to determine a custom group.
|
||||||
|
#
|
||||||
|
# If custom grouping file was found and was read,
|
||||||
|
# the default grouping was already overridden.
|
||||||
|
get_custom_group()
|
||||||
|
{
|
||||||
|
local key=$1
|
||||||
|
for entry in "${DEFINED_GROUPS[@]}"; do
|
||||||
|
local mapping_key=${entry%%=*}
|
||||||
|
local mapping_group=${entry#*=}
|
||||||
|
if [[ $key == "$mapping_key" ]]; then
|
||||||
|
echo "$mapping_group"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# Automatically create TOKENS group if the key contains "TOKEN".
|
||||||
|
if [[ $key == *TOKEN* ]]; then
|
||||||
|
echo "TOKENS"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create arrays to store all groups, group data and max lengths for each group
|
||||||
|
all_groups=()
|
||||||
|
group_data=()
|
||||||
|
group_max_lengths=()
|
||||||
|
|
||||||
|
# Get environment variables and group them
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
# Check for custom group
|
||||||
|
group=$(get_custom_group "$key")
|
||||||
|
|
||||||
|
# If there is no custom group, use the default algorithm:
|
||||||
|
# 1) First part before underscore is used as the group name.
|
||||||
|
# 2) If the key starts with an underscore, the group is determined by the second part.
|
||||||
|
# 3) If the key does not contain an underscore, the group is the key itself.
|
||||||
|
if [[ -z $group ]]; then
|
||||||
|
if [[ $key == _* ]]; then
|
||||||
|
group="${key#_}"
|
||||||
|
group="${group%%_*}"
|
||||||
|
[[ -z $group ]] && group="Ungrouped"
|
||||||
|
else
|
||||||
|
group="${key%%_*}"
|
||||||
|
[[ -z $group ]] && group="Ungrouped"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Hide values of protected keys
|
||||||
|
if is_protected "$key"; then
|
||||||
|
value="[protected value]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update group data
|
||||||
|
if [[ ! " ${all_groups[*]} " =~ " $group " ]]; then
|
||||||
|
all_groups+=("$group")
|
||||||
|
fi
|
||||||
|
|
||||||
|
group_data+=("$group|$key|$value")
|
||||||
|
|
||||||
|
key_length=${#key}
|
||||||
|
for i in "${!all_groups[@]}"; do
|
||||||
|
if [[ ${all_groups[$i]} == "$group" ]]; then
|
||||||
|
if [[ ${group_max_lengths[$i]:-0} -lt $key_length ]]; then
|
||||||
|
group_max_lengths[i]=$key_length
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
done < <(env | sort | awk -F'=' '{print $1"="$2}')
|
||||||
|
|
||||||
|
# Print groups in order, "Ungrouped" last
|
||||||
|
sorted_groups=()
|
||||||
|
while IFS= read -r line; do
|
||||||
|
sorted_groups+=("$line")
|
||||||
|
done < <(printf "%s\n" "${all_groups[@]}" | grep -v "^Ungrouped$" | sort)
|
||||||
|
sorted_groups+=("Ungrouped")
|
||||||
|
|
||||||
|
for group in "${sorted_groups[@]}"; do
|
||||||
|
echo -e "\n# $group"
|
||||||
|
|
||||||
|
for i in "${!all_groups[@]}"; do
|
||||||
|
if [[ ${all_groups[$i]} == "$group" ]]; then
|
||||||
|
max_length=${group_max_lengths[$i]}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for entry in "${group_data[@]}"; do
|
||||||
|
IFS='|' read -r g k v <<< "$entry"
|
||||||
|
if [[ $g == "$group" ]]; then
|
||||||
|
printf "%-*s = %s\n" "$max_length" "$k" "$v"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
done
|
||||||
128
local/bin/x-localip
Executable file
128
local/bin/x-localip
Executable file
@@ -0,0 +1,128 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# x-localip: script to display the local IP addresses of the system
|
||||||
|
#
|
||||||
|
# Author: Ismo Vuorinen <https://github.com/ivuorinen>
|
||||||
|
# License: MIT
|
||||||
|
|
||||||
|
VERSION="1.0.0"
|
||||||
|
|
||||||
|
# Function to display usage
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
echo "Usage: x-localip [options] [interface]"
|
||||||
|
echo "Options:"
|
||||||
|
echo " --help Show this help message"
|
||||||
|
echo " --version Show version information"
|
||||||
|
echo " --ipv4 Show only IPv4 addresses"
|
||||||
|
echo " --ipv6 Show only IPv6 addresses"
|
||||||
|
echo "If an interface is specified, only the IP address of that interface will be returned."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Initialize flags for filtering
|
||||||
|
show_ipv4=true
|
||||||
|
show_ipv6=true
|
||||||
|
|
||||||
|
# Check for arguments
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--version)
|
||||||
|
echo "x-localip version $VERSION"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--ipv4)
|
||||||
|
show_ipv6=false
|
||||||
|
;;
|
||||||
|
--ipv6)
|
||||||
|
show_ipv4=false
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
iface=$1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
declare -a interfaces
|
||||||
|
|
||||||
|
# Detect platform (macOS or Linux)
|
||||||
|
platform="$(uname)"
|
||||||
|
if [[ $platform == "Darwin" ]]; then
|
||||||
|
read -r -a interfaces <<< "$(ifconfig -lu | grep -v '^bridge')"
|
||||||
|
elif [[ $platform == "Linux" ]]; then
|
||||||
|
read -r -a interfaces <<< "$(ip link show | awk -F: '/^[0-9]+:/{print $2}' | tr -d ' ' | grep -v '^bridge')"
|
||||||
|
else
|
||||||
|
echo "Error: Unsupported platform. Only macOS and Linux are supported."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to fetch IP addresses for an interface
|
||||||
|
fetch_ips()
|
||||||
|
{
|
||||||
|
iface="$1"
|
||||||
|
local ipv4 ipv6
|
||||||
|
if [[ $platform == "Darwin" ]]; then
|
||||||
|
ipv4=$(ipconfig getifaddr "$iface" 2> /dev/null || echo "")
|
||||||
|
ipv6=$(ipconfig getifaddr -v6 "$iface" 2> /dev/null || echo "")
|
||||||
|
else
|
||||||
|
ipv4=$(ip -4 addr show "$iface" 2> /dev/null | awk '/inet / {print $2}' || echo "")
|
||||||
|
ipv6=$(ip -6 addr show "$iface" 2> /dev/null | awk '/inet6 / {print $2}' || echo "")
|
||||||
|
fi
|
||||||
|
if [[ -n $ipv4 || -n $ipv6 ]]; then
|
||||||
|
echo "$iface:$ipv4:$ipv6"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Determine maximum lengths for formatting
|
||||||
|
max_iface_length=9 # "Interface" length
|
||||||
|
max_ipv4_length=11 # "IPv4 Address" length
|
||||||
|
max_ipv6_length=11 # "IPv6 Address" length
|
||||||
|
|
||||||
|
interface_ip_list=()
|
||||||
|
for iface in "${interfaces[@]}"; do
|
||||||
|
result=$(fetch_ips "$iface")
|
||||||
|
if [[ -n $result ]]; then
|
||||||
|
interface_ip_list+=("$result")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
interface_ip_list_array=()
|
||||||
|
for entry in "${interface_ip_list[@]}"; do
|
||||||
|
IFS=: read -r iface ipv4 ipv6 <<< "$entry"
|
||||||
|
[[ ${#iface} -gt $max_iface_length ]] && max_iface_length=${#iface}
|
||||||
|
[[ ${#ipv4} -gt $max_ipv4_length ]] && max_ipv4_length=${#ipv4}
|
||||||
|
[[ ${#ipv6} -gt $max_ipv6_length ]] && max_ipv6_length=${#ipv6}
|
||||||
|
interface_ip_list_array+=("$iface:$ipv4:$ipv6")
|
||||||
|
done
|
||||||
|
|
||||||
|
# Print headers
|
||||||
|
printf "%-${max_iface_length}s : %-${max_ipv4_length}s : %-${max_ipv6_length}s\n" "Interface" "IPv4 Address" "IPv6 Address"
|
||||||
|
printf "%0.s-" $(seq 1 $((max_iface_length + max_ipv4_length + max_ipv6_length + 6)))
|
||||||
|
printf "\n"
|
||||||
|
|
||||||
|
# Print the results in a formatted table
|
||||||
|
for entry in "${interface_ip_list_array[@]}"; do
|
||||||
|
# Split the entry into interface, IPv4, and IPv6
|
||||||
|
iface="${entry%%:*}"
|
||||||
|
rest="${entry#*:}"
|
||||||
|
ipv4="${rest%%:*}"
|
||||||
|
ipv6="${rest#*:}"
|
||||||
|
|
||||||
|
# Skip IPv4 or IPv6 as per the flags
|
||||||
|
ipv4_display=$([[ $show_ipv4 == true ]] && echo "$ipv4" || echo "")
|
||||||
|
ipv6_display=$([[ $show_ipv6 == true ]] && echo "$ipv6" || echo "")
|
||||||
|
|
||||||
|
# Print the interface name, padded to max_iface_length, followed by the IPs
|
||||||
|
printf "%-${max_iface_length}s" "$iface"
|
||||||
|
if $show_ipv4; then
|
||||||
|
printf " : %-${max_ipv4_length}s" "$ipv4_display"
|
||||||
|
fi
|
||||||
|
if $show_ipv6; then
|
||||||
|
printf " : %-${max_ipv6_length}s" "$ipv6_display"
|
||||||
|
fi
|
||||||
|
printf "\n"
|
||||||
|
done
|
||||||
67
scripts/create-aerospace-keymaps.php
Executable file
67
scripts/create-aerospace-keymaps.php
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
// @description Create file containing key mappings for aerospace
|
||||||
|
// Usage: ./create-aerospace-keymaps.sh
|
||||||
|
// vim: ft=php ts=4 sw=4 sts=4 sr et
|
||||||
|
|
||||||
|
$dotfiles_env = getenv("DOTFILES") ?? '~/.dotfiles';
|
||||||
|
|
||||||
|
$dest = "$dotfiles_env/docs/aerospace-keybindings.md";
|
||||||
|
|
||||||
|
exec("aerospace config --get mode --json", $output);
|
||||||
|
$output = join(' ', $output);
|
||||||
|
$config = json_decode($output, true);
|
||||||
|
|
||||||
|
$main = $config['main'];
|
||||||
|
unset($config['main']);
|
||||||
|
|
||||||
|
function process_section(string $title, array $array)
|
||||||
|
{
|
||||||
|
$bindings = $array['binding'] ?? [];
|
||||||
|
ksort($bindings);
|
||||||
|
|
||||||
|
$output = [];
|
||||||
|
$output[] = sprintf("\n## %s\n", $title);
|
||||||
|
|
||||||
|
$k_len = max(array_map('strlen', array_keys($bindings)));
|
||||||
|
$v_len = max(array_map('strlen', array_values($bindings)));
|
||||||
|
|
||||||
|
$output[] = sprintf(
|
||||||
|
"| %s | %s |",
|
||||||
|
str_pad('Key', $k_len + 1),
|
||||||
|
str_pad('Command(s) and actions', $v_len + 1)
|
||||||
|
);
|
||||||
|
$output[] = sprintf(
|
||||||
|
"|%s|%s|",
|
||||||
|
str_repeat('-', $k_len + 3),
|
||||||
|
str_repeat('-', $v_len + 3)
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($bindings as $key => $value) {
|
||||||
|
$k = str_pad($key, $k_len + 1);
|
||||||
|
$v = str_pad($value, $v_len + 1);
|
||||||
|
$output[] = sprintf("| %s | %s |", $k, $v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return implode("\n", $output);
|
||||||
|
}
|
||||||
|
|
||||||
|
$contents = [];
|
||||||
|
$contents[] = "# aerospace keybindings";
|
||||||
|
|
||||||
|
$contents[] = process_section("main", $main);
|
||||||
|
|
||||||
|
ksort($config);
|
||||||
|
|
||||||
|
foreach ($config as $mode => $bindings) {
|
||||||
|
$contents[] = process_section($mode, $bindings);
|
||||||
|
}
|
||||||
|
|
||||||
|
$contents[] = "\nFile generated: " . date("Y-m-d H:i:s") . "\n";
|
||||||
|
|
||||||
|
$config_file_name = 'config/aerospace/aerospace.toml';
|
||||||
|
$config_file_source = './../config/aerospace/aerospace.toml';
|
||||||
|
$contents[] = "Config file: [$config_file_name]($config_file_source)\n";
|
||||||
|
|
||||||
|
$file = implode("\n", $contents);
|
||||||
|
file_put_contents($dest, $file);
|
||||||
@@ -26,7 +26,7 @@ msgr nested "Change user shell to zsh if it is available and not the current"
|
|||||||
|
|
||||||
# Change user shell to zsh if not that already.
|
# Change user shell to zsh if not that already.
|
||||||
if hash zsh 2> /dev/null; then
|
if hash zsh 2> /dev/null; then
|
||||||
[[ "$SHELL" != $(which zsh) ]] && chsh -s "$(which zsh)"
|
[[ $SHELL != $(which zsh) ]] && chsh -s "$(which zsh)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -150,7 +150,7 @@ msgr nested "Settings for Finder"
|
|||||||
# Set Desktop as the default location for new Finder windows
|
# Set Desktop as the default location for new Finder windows
|
||||||
# For other paths, use `PfLo` and `file:///full/path/here/`
|
# For other paths, use `PfLo` and `file:///full/path/here/`
|
||||||
defaults write com.apple.finder NewWindowTarget -string "PfDe"
|
defaults write com.apple.finder NewWindowTarget -string "PfDe"
|
||||||
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Desktop/"
|
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/"
|
||||||
|
|
||||||
# Show icons for external hard drives, servers, and removable media on the desktop
|
# Show icons for external hard drives, servers, and removable media on the desktop
|
||||||
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
|
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
|
||||||
@@ -201,6 +201,10 @@ defaults write com.apple.finder FXInfoPanesExpanded -dict \
|
|||||||
OpenWith -bool true \
|
OpenWith -bool true \
|
||||||
Privileges -bool true
|
Privileges -bool true
|
||||||
|
|
||||||
|
# Move windows by dragging any part of the window
|
||||||
|
# From https://nikitabobko.github.io/AeroSpace/goodies
|
||||||
|
defaults write -g NSWindowShouldDragOnGesture -bool true
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Screenshots #
|
# Screenshots #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|||||||
86
scripts/update-readme-aliases.sh
Executable file
86
scripts/update-readme-aliases.sh
Executable file
@@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# update-readme-aliases.sh
|
||||||
|
# @description Update alias documentation in $DOTFILES/docs/alias.md
|
||||||
|
#
|
||||||
|
# Author: Ismo Vuorinen <https://github.com/ivuorinen> 2025
|
||||||
|
# License: MIT
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Paths
|
||||||
|
ALIAS_FILE="$DOTFILES/config/alias"
|
||||||
|
OUTPUT_FILE="$DOTFILES/docs/alias.md"
|
||||||
|
|
||||||
|
# Check if alias file exists
|
||||||
|
if [[ ! -f $ALIAS_FILE ]]; then
|
||||||
|
echo "Alias file not found: $ALIAS_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Declare associative array
|
||||||
|
declare -a alias_table
|
||||||
|
|
||||||
|
echo "Parsing aliases..."
|
||||||
|
while IFS= read -r line; do
|
||||||
|
# Skip all lines that do not start with 'alias'
|
||||||
|
if [[ ! $line =~ ^alias\ ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Split alias and command and handle both ' and "
|
||||||
|
if [[ $line =~ ^alias\ ([^=]+)=[\'\"](.*)[\'\"]$ ]]; then
|
||||||
|
alias_name="${BASH_REMATCH[1]}"
|
||||||
|
alias_command="${BASH_REMATCH[2]//|/\\|}" # fix markdown table separator
|
||||||
|
|
||||||
|
# Save alias to table
|
||||||
|
alias_table+=("\`$alias_name\`␟\`$alias_command\`")
|
||||||
|
else
|
||||||
|
echo "Warning: Could not parse line: $line"
|
||||||
|
fi
|
||||||
|
|
||||||
|
done < "$ALIAS_FILE"
|
||||||
|
|
||||||
|
# Sort array by alias name
|
||||||
|
# shellcheck disable=SC2207
|
||||||
|
IFS=$'\n' sorted_aliases=($(sort <<< "${alias_table[*]}"))
|
||||||
|
unset IFS
|
||||||
|
|
||||||
|
# Calculate cell max lengths
|
||||||
|
max_alias_length=5 # "Alias" min length
|
||||||
|
max_command_length=7 # "Command" min length
|
||||||
|
|
||||||
|
for entry in "${sorted_aliases[@]}"; do
|
||||||
|
IFS=$'␟' read -r alias_name alias_command <<< "$entry"
|
||||||
|
max_alias_length=$((${#alias_name} > max_alias_length ? ${#alias_name} : max_alias_length))
|
||||||
|
max_command_length=$((${#alias_command} > max_command_length ? ${#alias_command} : max_command_length))
|
||||||
|
done
|
||||||
|
|
||||||
|
# Empty the markdown file and add header
|
||||||
|
printf "# Alias Commands\n\nThis file lists all aliases defined in \`config/alias\`.\n\n" > "$OUTPUT_FILE"
|
||||||
|
|
||||||
|
# Add table header
|
||||||
|
printf "| %-*s | %-*s |\n" \
|
||||||
|
"$max_alias_length" "Alias" \
|
||||||
|
"$max_command_length" "Command" >> "$OUTPUT_FILE"
|
||||||
|
|
||||||
|
# Add table header separator
|
||||||
|
printf "| %-*s | %-*s |\n" \
|
||||||
|
"$max_alias_length" "$(printf '%0.s-' $(seq 1 $max_alias_length))" \
|
||||||
|
"$max_command_length" "$(printf '%0.s-' $(seq 1 $max_command_length))" >> "$OUTPUT_FILE"
|
||||||
|
|
||||||
|
# Create table with max cell lengths
|
||||||
|
for entry in "${sorted_aliases[@]}"; do
|
||||||
|
IFS=$'␟' read -r alias_name alias_command <<< "$entry"
|
||||||
|
printf "| %-*s | %-*s |\n" \
|
||||||
|
"$max_alias_length" "$alias_name" \
|
||||||
|
"$max_command_length" "$alias_command" >> "$OUTPUT_FILE"
|
||||||
|
done
|
||||||
|
|
||||||
|
{
|
||||||
|
printf "\n"
|
||||||
|
printf "Total aliases: %d\n" "${#sorted_aliases[@]}"
|
||||||
|
printf "Last updated: %s\n" "$(date)"
|
||||||
|
} >> "$OUTPUT_FILE"
|
||||||
|
|
||||||
|
# Announce process completion
|
||||||
|
echo "Alias documentation updated: $OUTPUT_FILE"
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
|
# vim: ft=sshconfig
|
||||||
Include shared.d/*
|
Include shared.d/*
|
||||||
Include local.d/*
|
Include local.d/*
|
||||||
|
|
||||||
Host *
|
Host *
|
||||||
ServerAliveInterval 300 # send null packets every 5min to keep connection alive
|
ServerAliveInterval 300 # send null packets every 5min to keep connection alive
|
||||||
ServerAliveCountMax 2 # if the server doesn't respond 2 times, it's gone so give up
|
ServerAliveCountMax 2 # if the server doesn't respond 2 times, it's gone so give up
|
||||||
# IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
|
ForwardAgent yes
|
||||||
|
# IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# vim: ft=sshconfig
|
||||||
|
|
||||||
Host t1
|
Host t1
|
||||||
User ubuntu
|
User ubuntu
|
||||||
HostName t1.home.antiprocess.net
|
HostName t1.home.antiprocess.net
|
||||||
@@ -14,4 +16,3 @@ Host t4
|
|||||||
User ubuntu
|
User ubuntu
|
||||||
HostName t4.home.antiprocess.net
|
HostName t4.home.antiprocess.net
|
||||||
IdentityFile ~/.ssh/id_rsa
|
IdentityFile ~/.ssh/id_rsa
|
||||||
|
|
||||||
|
|||||||
1
tools/apt.txt
Normal file
1
tools/apt.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# apt install list
|
||||||
Reference in New Issue
Block a user