mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-03 07:48:30 +00:00
Compare commits
87 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15aff17f03 | ||
|
|
42a5b79048 | ||
| a72c8ff33a | |||
| 19d9035214 | |||
| 7ca077c852 | |||
| 48604d81d6 | |||
|
|
405e68f895 | ||
| 6d62352127 | |||
| 017d82abc5 | |||
|
|
24ad4bf5b7 | ||
| 07264c594f | |||
|
|
7b58f660ac | ||
|
|
b000f2b0c4 | ||
| 4d548687e1 | |||
| 519d8398de | |||
| 2203bb3957 | |||
|
|
ddafdfe3c9 | ||
| a3f35b2d18 | |||
| 90020a4998 | |||
| 0f806c172d | |||
|
|
e8eb9b98b2 | ||
| 7e0a88cf8f | |||
| f72f57ebf0 | |||
| b5e56e2cbb | |||
|
|
179938132c | ||
|
|
bae84c176c | ||
| be8a6761af | |||
| c348f3625f | |||
| 094f19c99c | |||
| 5a23ae8f01 | |||
|
|
ee47821089 | ||
|
|
b834ce04f7 | ||
|
|
6a62d73d7f | ||
|
|
440842ed34 | ||
|
|
d0563e4a29 | ||
|
|
bc404bfbea | ||
| 923f881725 | |||
| ccc5903290 | |||
|
|
786efc48fa | ||
| 2a11a28422 | |||
| 812a27ea61 | |||
| e73e61f01b | |||
| 314679b4fc | |||
|
|
516b27384a | ||
|
|
9e1af3053d | ||
|
|
9e4f8741b3 | ||
| c0995c1b49 | |||
| c9f1e824c3 | |||
| 3d301daeb1 | |||
| 8b4198dc90 | |||
| 66461f9b1b | |||
| 80851d1efd | |||
|
|
c457c0f3ab | ||
| 9936e4bd76 | |||
| c3a45e2653 | |||
| 506360a027 | |||
|
|
00074ec3ff | ||
|
|
7c7daf89ea | ||
|
|
267c54aa56 | ||
|
|
d72409efc0 | ||
| 3d9e0477b0 | |||
| cfab48eee0 | |||
| 624920b2ab | |||
|
|
fd82f1e36c | ||
|
|
48ec8cd7a7 | ||
|
|
3a61bd2b72 | ||
| 895b0ad353 | |||
| 3c733ec7eb | |||
| 5321ad7bd7 | |||
| 196077bea9 | |||
|
|
75147c7dd6 | ||
| f28ad41f67 | |||
| 61b66d3114 | |||
| 282f760a4f | |||
| 4a9c9b4cb9 | |||
| 16311ee5b4 | |||
| 2fddfa82c0 | |||
| 8f5f44db2d | |||
| 8ad1f5c4d0 | |||
| ac0aa1fbc0 | |||
| e8c6794ff6 | |||
| 4de9a649f0 | |||
|
|
e7f115680e | ||
| f3b4551d0c | |||
| 64725c57dc | |||
| b32ee414e3 | |||
|
|
6ea7807718 |
@@ -8,11 +8,14 @@ indent_style = space
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.fish]
|
||||||
|
max_line_length = 80
|
||||||
|
|
||||||
[*.md]
|
[*.md]
|
||||||
max_line_length = 100
|
max_line_length = 100
|
||||||
|
|
||||||
[*.lua]
|
[*.lua]
|
||||||
max_line_length = 120
|
max_line_length = 90
|
||||||
|
|
||||||
[*.{php,fish}]
|
[*.{php,fish}]
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|||||||
45
.gitattributes
vendored
45
.gitattributes
vendored
@@ -1,4 +1,4 @@
|
|||||||
## GITATTRIBUTES FOR WEB PROJECTS
|
## GITATTRIBUTES
|
||||||
#
|
#
|
||||||
# These settings are for any web project.
|
# These settings are for any web project.
|
||||||
#
|
#
|
||||||
@@ -20,20 +20,23 @@
|
|||||||
*.bat text eol=crlf
|
*.bat text eol=crlf
|
||||||
*.cmd text eol=crlf
|
*.cmd text eol=crlf
|
||||||
*.coffee text
|
*.coffee text
|
||||||
*.css text diff=css
|
*.css text diff=css eol=lf
|
||||||
*.htm text diff=html
|
*.fish text diff=shell eol=lf
|
||||||
*.html text diff=html
|
*.htm text diff=html eol=lf
|
||||||
|
*.html text diff=html eol=lf
|
||||||
*.inc text
|
*.inc text
|
||||||
*.ini text
|
*.ini text
|
||||||
*.js text
|
*.js text
|
||||||
*.json text
|
*.json text
|
||||||
*.jsx text
|
*.jsx text
|
||||||
*.less text
|
*.less text
|
||||||
|
*.lua text diff=lua eol=lf
|
||||||
*.ls text
|
*.ls text
|
||||||
*.map text -diff
|
*.map text -diff
|
||||||
*.od text
|
*.od text
|
||||||
*.onlydata text
|
*.onlydata text
|
||||||
*.php text diff=php
|
*.php text diff=php
|
||||||
|
*.plist text eol=lf
|
||||||
*.pl text
|
*.pl text
|
||||||
*.ps1 text eol=crlf
|
*.ps1 text eol=crlf
|
||||||
*.py text diff=python
|
*.py text diff=python
|
||||||
@@ -41,15 +44,18 @@
|
|||||||
*.sass text
|
*.sass text
|
||||||
*.scm text
|
*.scm text
|
||||||
*.scss text diff=css
|
*.scss text diff=css
|
||||||
*.sh text eol=lf
|
*.sh text eol=lf diff=shell
|
||||||
.husky/* text eol=lf
|
.husky/* text eol=lf
|
||||||
*.sql text
|
*.sql text
|
||||||
*.styl text
|
*.styl text
|
||||||
*.tag text
|
*.tag text
|
||||||
|
*.tmux text eol=lf diff=tmux
|
||||||
*.ts text
|
*.ts text
|
||||||
*.tsx text
|
*.tsx text
|
||||||
|
*.vim text eol=lf
|
||||||
*.xml text
|
*.xml text
|
||||||
*.xhtml text diff=html
|
*.xhtml text diff=html
|
||||||
|
*.zsh text diff=zsh eol=lf
|
||||||
|
|
||||||
# Docker
|
# Docker
|
||||||
Dockerfile text
|
Dockerfile text
|
||||||
@@ -68,6 +74,7 @@ Dockerfile text
|
|||||||
AUTHORS text
|
AUTHORS text
|
||||||
CHANGELOG text
|
CHANGELOG text
|
||||||
CHANGES text
|
CHANGES text
|
||||||
|
CODEOWNERS text
|
||||||
CONTRIBUTING text
|
CONTRIBUTING text
|
||||||
COPYING text
|
COPYING text
|
||||||
copyright text
|
copyright text
|
||||||
@@ -105,6 +112,8 @@ TODO text
|
|||||||
*.config text
|
*.config text
|
||||||
.editorconfig text
|
.editorconfig text
|
||||||
.env text
|
.env text
|
||||||
|
*.env text
|
||||||
|
*.env.* text
|
||||||
.gitattributes text
|
.gitattributes text
|
||||||
.gitconfig text
|
.gitconfig text
|
||||||
.htaccess text
|
.htaccess text
|
||||||
@@ -208,15 +217,37 @@ Procfile text
|
|||||||
|
|
||||||
*.gitignore text
|
*.gitignore text
|
||||||
*.gitkeep text
|
*.gitkeep text
|
||||||
.gitattributes export-ignore
|
.gitattributes text export-ignore
|
||||||
|
*.gitattributes text export-ignore
|
||||||
|
.gitmodules text export-ignore
|
||||||
|
*.gitmodules text export-ignore
|
||||||
**/.gitignore export-ignore
|
**/.gitignore export-ignore
|
||||||
**/.gitkeep export-ignore
|
**/.gitkeep export-ignore
|
||||||
|
|
||||||
# Repo specials
|
# Repo specials
|
||||||
local/bin/* text eol=lf
|
local/bin/* text eol=lf diff=shell
|
||||||
|
local/bin/*.md text eol=lf diff=markdown
|
||||||
config/antigen.zsh text
|
config/antigen.zsh text
|
||||||
git/* text
|
git/* text
|
||||||
**/git/* text
|
**/git/* text
|
||||||
**/alias text
|
**/alias text
|
||||||
ssh/* text
|
ssh/* text
|
||||||
|
ssh/shared.d/* text
|
||||||
|
ssh/local.d/* text
|
||||||
|
|
||||||
|
# Auto-generated rules - 2025-04-16 10:28:04
|
||||||
|
# Shell scripts detected by content
|
||||||
|
install text eol=lf diff=shell
|
||||||
|
|
||||||
|
# File extension-based rules
|
||||||
|
*.1 text eol=lf
|
||||||
|
*.applescript text eol=lf
|
||||||
|
*.d/work-git text eol=lf
|
||||||
|
*.dirs text eol=lf
|
||||||
|
*.example text eol=lf
|
||||||
|
*.itermcolors text eol=lf
|
||||||
|
*.locale text eol=lf
|
||||||
|
*.python-version text eol=lf
|
||||||
|
*.snippets text eol=lf
|
||||||
|
*.theme text eol=lf
|
||||||
|
*.yamlfmt text eol=lf
|
||||||
|
|||||||
4
.github/workflows/linters.yml
vendored
4
.github/workflows/linters.yml
vendored
@@ -19,9 +19,11 @@ jobs:
|
|||||||
permissions: write-all
|
permissions: write-all
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
|
- name: Setup Node.js environment
|
||||||
|
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||||
|
|
||||||
- name: GitHub Actions
|
- name: GitHub Actions
|
||||||
uses: reviewdog/action-actionlint@a5524e1c19e62881d79c1f1b9b6f09f16356e281 # v1.65.2
|
uses: reviewdog/action-actionlint@a5524e1c19e62881d79c1f1b9b6f09f16356e281 # v1.65.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
2
.github/workflows/new-release.yml
vendored
2
.github/workflows/new-release.yml
vendored
@@ -40,7 +40,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
if: steps.daily-version.outputs.created
|
if: steps.daily-version.outputs.created
|
||||||
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2.2.1
|
uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||||
|
|||||||
8
.github/workflows/pre-commit-autoupdate.yml
vendored
8
.github/workflows/pre-commit-autoupdate.yml
vendored
@@ -5,7 +5,7 @@ name: Pre-commit autoupdate
|
|||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
# At 04:00 on Monday and Thursday.
|
# At 04:00 on Monday and Thursday.
|
||||||
- cron: "0 4 * * 1,4"
|
- cron: '0 4 * * 1,4'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
|
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
||||||
|
|
||||||
- run: pip install pre-commit && pre-commit autoupdate
|
- run: pip install pre-commit && pre-commit autoupdate
|
||||||
|
|
||||||
@@ -33,6 +33,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
branch: update/pre-commit-hooks
|
branch: update/pre-commit-hooks
|
||||||
title: "chore: update pre-commit hooks"
|
title: 'chore: update pre-commit hooks'
|
||||||
commit-message: "chore: update pre-commit hooks"
|
commit-message: 'chore: update pre-commit hooks'
|
||||||
body: Update versions of pre-commit hooks to latest version.
|
body: Update versions of pre-commit hooks to latest version.
|
||||||
|
|||||||
2
.github/workflows/sync-labels.yml
vendored
2
.github/workflows/sync-labels.yml
vendored
@@ -11,7 +11,7 @@ on:
|
|||||||
- .github/workflows/sync-labels.yml
|
- .github/workflows/sync-labels.yml
|
||||||
- .github/labels.yml
|
- .github/labels.yml
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "34 5 * * *"
|
- cron: '34 5 * * *'
|
||||||
workflow_call:
|
workflow_call:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
|||||||
3
.github/workflows/update-submodules.yml
vendored
3
.github/workflows/update-submodules.yml
vendored
@@ -5,7 +5,7 @@ name: Update submodules
|
|||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
# At 04:00 on Monday and Thursday.
|
# At 04:00 on Monday and Thursday.
|
||||||
- cron: "0 4 * * 1"
|
- cron: '0 4 * * 1'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
@@ -21,7 +21,6 @@ jobs:
|
|||||||
permissions: write-all
|
permissions: write-all
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -40,9 +40,12 @@ node_modules
|
|||||||
ssh/local.d/*
|
ssh/local.d/*
|
||||||
!ssh/local.d/.gitkeep
|
!ssh/local.d/.gitkeep
|
||||||
config/fish/fish_variables
|
config/fish/fish_variables
|
||||||
|
**/exports.secret.fish
|
||||||
**/exports-secret.fish
|
**/exports-secret.fish
|
||||||
config/fish/completions/asdf.fish
|
config/fish/completions/asdf.fish
|
||||||
config/vim/.netrwhist
|
config/vim/.netrwhist
|
||||||
config/vim/extra/*
|
config/vim/extra/*
|
||||||
config/gh/hosts.yml
|
config/gh/hosts.yml
|
||||||
dependency-check-report.html
|
dependency-check-report.html
|
||||||
|
local/bin/yabai
|
||||||
|
local/man/yabai.1
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
{
|
{
|
||||||
"diagnostics.globals": [
|
"diagnostics.globals": ["vim"]
|
||||||
"vim"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# only care about files that are directly under our control
|
# only care about files that are directly under our control
|
||||||
config/cheat/cheatsheets/community/*
|
config/cheat/cheatsheets/community/*
|
||||||
config/cheat/cheatsheets/tldr/*
|
config/cheat/cheatsheets/tldr/*
|
||||||
|
config/op/plugins/used_plugins/*
|
||||||
config/tmux/plugins/*
|
config/tmux/plugins/*
|
||||||
local/bin/asdf/*
|
local/bin/asdf/*
|
||||||
tools/*
|
tools/*
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ 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.44.0
|
rev: v0.45.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: markdownlint
|
- id: markdownlint
|
||||||
args: [-c, .markdownlint.json, --fix]
|
args: [-c, .markdownlint.json, --fix]
|
||||||
|
|
||||||
- repo: https://github.com/adrienverge/yamllint
|
- repo: https://github.com/adrienverge/yamllint
|
||||||
rev: v1.37.0
|
rev: v1.37.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: yamllint
|
- id: yamllint
|
||||||
|
|
||||||
@@ -49,12 +49,12 @@ repos:
|
|||||||
- id: actionlint
|
- id: actionlint
|
||||||
|
|
||||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||||
rev: 39.227.2
|
rev: 41.11.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: renovate-config-validator
|
- id: renovate-config-validator
|
||||||
|
|
||||||
- repo: https://github.com/JohnnyMorganz/StyLua
|
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||||
rev: v2.0.2
|
rev: v2.1.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: stylua # or stylua-system / stylua-github
|
- id: stylua # or stylua-system / stylua-github
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ config/cheat/cheatsheets/community
|
|||||||
config/cheat/cheatsheets/tldr
|
config/cheat/cheatsheets/tldr
|
||||||
config/fzf/*
|
config/fzf/*
|
||||||
config/nvim/*
|
config/nvim/*
|
||||||
|
config/op/plugins/used_plugins/*
|
||||||
config/tmux/plugins/*
|
config/tmux/plugins/*
|
||||||
config/zsh/*
|
config/zsh/*
|
||||||
lazy-lock.json
|
lazy-lock.json
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
3.13.2
|
3.13.5
|
||||||
|
|||||||
@@ -8,14 +8,8 @@
|
|||||||
# supported_envs:
|
# supported_envs:
|
||||||
# - all
|
# - all
|
||||||
registries:
|
registries:
|
||||||
- type: standard
|
- type: standard
|
||||||
ref: v4.331.0 # renovate: depName=aquaproj/aqua-registry
|
ref: v4.346.0 # renovate: depName=aquaproj/aqua-registry
|
||||||
packages:
|
packages:
|
||||||
- name: cli/cli
|
- name: cli/cli
|
||||||
version: 'v2.69.0'
|
version: 'v2.69.0'
|
||||||
- name: junegunn/fzf
|
|
||||||
version: 'v0.60.3'
|
|
||||||
- name: jqlang/jq
|
|
||||||
version: 'jq-1.7.1'
|
|
||||||
- name: 1password/cli
|
|
||||||
version: '2.30.3'
|
|
||||||
|
|||||||
@@ -75,7 +75,6 @@ cheatpaths:
|
|||||||
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
||||||
tags: [personal]
|
tags: [personal]
|
||||||
readonly: false
|
readonly: false
|
||||||
|
|
||||||
# While it requires no configuration here, it's also worth noting that
|
# While it requires no configuration here, it's also worth noting that
|
||||||
# cheat will automatically append directories named '.cheat' within the
|
# cheat will automatically append directories named '.cheat' within the
|
||||||
# current working directory to the 'cheatpath'. This can be very useful if
|
# current working directory to the 'cheatpath'. This can be very useful if
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ get_sha256sum()
|
|||||||
# $2 - filename (string)
|
# $2 - filename (string)
|
||||||
#
|
#
|
||||||
# Returns 1 when replaceable, 0 when not replaceable.
|
# Returns 1 when replaceable, 0 when not replaceable.
|
||||||
replacable()
|
replaceable()
|
||||||
{
|
{
|
||||||
FILE1="$1"
|
FILE1="$1"
|
||||||
FILE2="$2"
|
FILE2="$2"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/completions/app.fish:v7.0.0
|
# @halostatue/fish-macos/completions/app.fish:v7.0.1
|
||||||
|
|
||||||
complete --command app --erase
|
complete --command app --erase
|
||||||
|
|
||||||
|
|||||||
@@ -1,235 +0,0 @@
|
|||||||
# fish completion for docker -*- shell-script -*-
|
|
||||||
|
|
||||||
function __docker_debug
|
|
||||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
|
||||||
if test -n "$file"
|
|
||||||
echo "$argv" >> $file
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function __docker_perform_completion
|
|
||||||
__docker_debug "Starting __docker_perform_completion"
|
|
||||||
|
|
||||||
# Extract all args except the last one
|
|
||||||
set -l args (commandline -opc)
|
|
||||||
# Extract the last arg and escape it in case it is a space
|
|
||||||
set -l lastArg (string escape -- (commandline -ct))
|
|
||||||
|
|
||||||
__docker_debug "args: $args"
|
|
||||||
__docker_debug "last arg: $lastArg"
|
|
||||||
|
|
||||||
# Disable ActiveHelp which is not supported for fish shell
|
|
||||||
set -l requestComp "DOCKER_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
|
|
||||||
|
|
||||||
__docker_debug "Calling $requestComp"
|
|
||||||
set -l results (eval $requestComp 2> /dev/null)
|
|
||||||
|
|
||||||
# Some programs may output extra empty lines after the directive.
|
|
||||||
# Let's ignore them or else it will break completion.
|
|
||||||
# Ref: https://github.com/spf13/cobra/issues/1279
|
|
||||||
for line in $results[-1..1]
|
|
||||||
if test (string trim -- $line) = ""
|
|
||||||
# Found an empty line, remove it
|
|
||||||
set results $results[1..-2]
|
|
||||||
else
|
|
||||||
# Found non-empty line, we have our proper output
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l comps $results[1..-2]
|
|
||||||
set -l directiveLine $results[-1]
|
|
||||||
|
|
||||||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
|
||||||
# completions must be prefixed with the flag
|
|
||||||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
|
||||||
|
|
||||||
__docker_debug "Comps: $comps"
|
|
||||||
__docker_debug "DirectiveLine: $directiveLine"
|
|
||||||
__docker_debug "flagPrefix: $flagPrefix"
|
|
||||||
|
|
||||||
for comp in $comps
|
|
||||||
printf "%s%s\n" "$flagPrefix" "$comp"
|
|
||||||
end
|
|
||||||
|
|
||||||
printf "%s\n" "$directiveLine"
|
|
||||||
end
|
|
||||||
|
|
||||||
# this function limits calls to __docker_perform_completion, by caching the result behind $__docker_perform_completion_once_result
|
|
||||||
function __docker_perform_completion_once
|
|
||||||
__docker_debug "Starting __docker_perform_completion_once"
|
|
||||||
|
|
||||||
if test -n "$__docker_perform_completion_once_result"
|
|
||||||
__docker_debug "Seems like a valid result already exists, skipping __docker_perform_completion"
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
|
|
||||||
set --global __docker_perform_completion_once_result (__docker_perform_completion)
|
|
||||||
if test -z "$__docker_perform_completion_once_result"
|
|
||||||
__docker_debug "No completions, probably due to a failure"
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
__docker_debug "Performed completions and set __docker_perform_completion_once_result"
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
|
|
||||||
# this function is used to clear the $__docker_perform_completion_once_result variable after completions are run
|
|
||||||
function __docker_clear_perform_completion_once_result
|
|
||||||
__docker_debug ""
|
|
||||||
__docker_debug "========= clearing previously set __docker_perform_completion_once_result variable =========="
|
|
||||||
set --erase __docker_perform_completion_once_result
|
|
||||||
__docker_debug "Successfully erased the variable __docker_perform_completion_once_result"
|
|
||||||
end
|
|
||||||
|
|
||||||
function __docker_requires_order_preservation
|
|
||||||
__docker_debug ""
|
|
||||||
__docker_debug "========= checking if order preservation is required =========="
|
|
||||||
|
|
||||||
__docker_perform_completion_once
|
|
||||||
if test -z "$__docker_perform_completion_once_result"
|
|
||||||
__docker_debug "Error determining if order preservation is required"
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l directive (string sub --start 2 $__docker_perform_completion_once_result[-1])
|
|
||||||
__docker_debug "Directive is: $directive"
|
|
||||||
|
|
||||||
set -l shellCompDirectiveKeepOrder 32
|
|
||||||
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
|
|
||||||
__docker_debug "Keeporder is: $keeporder"
|
|
||||||
|
|
||||||
if test $keeporder -ne 0
|
|
||||||
__docker_debug "This does require order preservation"
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
|
|
||||||
__docker_debug "This doesn't require order preservation"
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
# This function does two things:
|
|
||||||
# - Obtain the completions and store them in the global __docker_comp_results
|
|
||||||
# - Return false if file completion should be performed
|
|
||||||
function __docker_prepare_completions
|
|
||||||
__docker_debug ""
|
|
||||||
__docker_debug "========= starting completion logic =========="
|
|
||||||
|
|
||||||
# Start fresh
|
|
||||||
set --erase __docker_comp_results
|
|
||||||
|
|
||||||
__docker_perform_completion_once
|
|
||||||
__docker_debug "Completion results: $__docker_perform_completion_once_result"
|
|
||||||
|
|
||||||
if test -z "$__docker_perform_completion_once_result"
|
|
||||||
__docker_debug "No completion, probably due to a failure"
|
|
||||||
# Might as well do file completion, in case it helps
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l directive (string sub --start 2 $__docker_perform_completion_once_result[-1])
|
|
||||||
set --global __docker_comp_results $__docker_perform_completion_once_result[1..-2]
|
|
||||||
|
|
||||||
__docker_debug "Completions are: $__docker_comp_results"
|
|
||||||
__docker_debug "Directive is: $directive"
|
|
||||||
|
|
||||||
set -l shellCompDirectiveError 1
|
|
||||||
set -l shellCompDirectiveNoSpace 2
|
|
||||||
set -l shellCompDirectiveNoFileComp 4
|
|
||||||
set -l shellCompDirectiveFilterFileExt 8
|
|
||||||
set -l shellCompDirectiveFilterDirs 16
|
|
||||||
|
|
||||||
if test -z "$directive"
|
|
||||||
set directive 0
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
|
||||||
if test $compErr -eq 1
|
|
||||||
__docker_debug "Received error directive: aborting."
|
|
||||||
# Might as well do file completion, in case it helps
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
|
||||||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
|
||||||
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
|
||||||
__docker_debug "File extension filtering or directory filtering not supported"
|
|
||||||
# Do full file completion instead
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
|
||||||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
|
||||||
|
|
||||||
__docker_debug "nospace: $nospace, nofiles: $nofiles"
|
|
||||||
|
|
||||||
# If we want to prevent a space, or if file completion is NOT disabled,
|
|
||||||
# we need to count the number of valid completions.
|
|
||||||
# To do so, we will filter on prefix as the completions we have received
|
|
||||||
# may not already be filtered so as to allow fish to match on different
|
|
||||||
# criteria than the prefix.
|
|
||||||
if test $nospace -ne 0; or test $nofiles -eq 0
|
|
||||||
set -l prefix (commandline -t | string escape --style=regex)
|
|
||||||
__docker_debug "prefix: $prefix"
|
|
||||||
|
|
||||||
set -l completions (string match -r -- "^$prefix.*" $__docker_comp_results)
|
|
||||||
set --global __docker_comp_results $completions
|
|
||||||
__docker_debug "Filtered completions are: $__docker_comp_results"
|
|
||||||
|
|
||||||
# Important not to quote the variable for count to work
|
|
||||||
set -l numComps (count $__docker_comp_results)
|
|
||||||
__docker_debug "numComps: $numComps"
|
|
||||||
|
|
||||||
if test $numComps -eq 1; and test $nospace -ne 0
|
|
||||||
# We must first split on \t to get rid of the descriptions to be
|
|
||||||
# able to check what the actual completion will be.
|
|
||||||
# We don't need descriptions anyway since there is only a single
|
|
||||||
# real completion which the shell will expand immediately.
|
|
||||||
set -l split (string split --max 1 \t $__docker_comp_results[1])
|
|
||||||
|
|
||||||
# Fish won't add a space if the completion ends with any
|
|
||||||
# of the following characters: @=/:.,
|
|
||||||
set -l lastChar (string sub -s -1 -- $split)
|
|
||||||
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
|
||||||
# In other cases, to support the "nospace" directive we trick the shell
|
|
||||||
# by outputting an extra, longer completion.
|
|
||||||
__docker_debug "Adding second completion to perform nospace directive"
|
|
||||||
set --global __docker_comp_results $split[1] $split[1].
|
|
||||||
__docker_debug "Completions are now: $__docker_comp_results"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if test $numComps -eq 0; and test $nofiles -eq 0
|
|
||||||
# To be consistent with bash and zsh, we only trigger file
|
|
||||||
# completion when there are no other completions
|
|
||||||
__docker_debug "Requesting file completion"
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
|
|
||||||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
|
||||||
# so we can properly delete any completions provided by another script.
|
|
||||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
|
||||||
# the existing completions will only be loaded if the program can be found.
|
|
||||||
if type -q "docker"
|
|
||||||
# The space after the program name is essential to trigger completion for the program
|
|
||||||
# and not completion of the program name itself.
|
|
||||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
|
||||||
complete --do-complete "docker " > /dev/null 2>&1
|
|
||||||
end
|
|
||||||
|
|
||||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
|
||||||
complete -c docker -e
|
|
||||||
|
|
||||||
# this will get called after the two calls below and clear the $__docker_perform_completion_once_result global
|
|
||||||
complete -c docker -n '__docker_clear_perform_completion_once_result'
|
|
||||||
# The call to __docker_prepare_completions will setup __docker_comp_results
|
|
||||||
# which provides the program's completion choices.
|
|
||||||
# If this doesn't require order preservation, we don't use the -k flag
|
|
||||||
complete -c docker -n 'not __docker_requires_order_preservation && __docker_prepare_completions' -f -a '$__docker_comp_results'
|
|
||||||
# otherwise we use the -k flag
|
|
||||||
complete -k -c docker -n '__docker_requires_order_preservation && __docker_prepare_completions' -f -a '$__docker_comp_results'
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/completions/finder.fish:v7.0.0
|
# @halostatue/fish-macos/completions/finder.fish:v7.0.1
|
||||||
|
|
||||||
complete --command finder --erase
|
complete --command finder --erase
|
||||||
|
|
||||||
|
|||||||
176
config/fish/completions/git-profile.fish
Normal file
176
config/fish/completions/git-profile.fish
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
# fish completion for git-profile -*- shell-script -*-
|
||||||
|
|
||||||
|
function __git_profile_debug
|
||||||
|
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||||
|
if test -n "$file"
|
||||||
|
echo "$argv" >> $file
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function __git_profile_perform_completion
|
||||||
|
__git_profile_debug "Starting __git_profile_perform_completion"
|
||||||
|
|
||||||
|
# Extract all args except the last one
|
||||||
|
set -l args (commandline -opc)
|
||||||
|
# Extract the last arg and escape it in case it is a space
|
||||||
|
set -l lastArg (string escape -- (commandline -ct))
|
||||||
|
|
||||||
|
__git_profile_debug "args: $args"
|
||||||
|
__git_profile_debug "last arg: $lastArg"
|
||||||
|
|
||||||
|
set -l requestComp "$args[1] __complete $args[2..-1] $lastArg"
|
||||||
|
|
||||||
|
__git_profile_debug "Calling $requestComp"
|
||||||
|
set -l results (eval $requestComp 2> /dev/null)
|
||||||
|
|
||||||
|
# Some programs may output extra empty lines after the directive.
|
||||||
|
# Let's ignore them or else it will break completion.
|
||||||
|
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||||
|
for line in $results[-1..1]
|
||||||
|
if test (string trim -- $line) = ""
|
||||||
|
# Found an empty line, remove it
|
||||||
|
set results $results[1..-2]
|
||||||
|
else
|
||||||
|
# Found non-empty line, we have our proper output
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l comps $results[1..-2]
|
||||||
|
set -l directiveLine $results[-1]
|
||||||
|
|
||||||
|
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||||
|
# completions must be prefixed with the flag
|
||||||
|
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||||
|
|
||||||
|
__git_profile_debug "Comps: $comps"
|
||||||
|
__git_profile_debug "DirectiveLine: $directiveLine"
|
||||||
|
__git_profile_debug "flagPrefix: $flagPrefix"
|
||||||
|
|
||||||
|
for comp in $comps
|
||||||
|
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||||
|
end
|
||||||
|
|
||||||
|
printf "%s\n" "$directiveLine"
|
||||||
|
end
|
||||||
|
|
||||||
|
# This function does two things:
|
||||||
|
# - Obtain the completions and store them in the global __git_profile_comp_results
|
||||||
|
# - Return false if file completion should be performed
|
||||||
|
function __git_profile_prepare_completions
|
||||||
|
__git_profile_debug ""
|
||||||
|
__git_profile_debug "========= starting completion logic =========="
|
||||||
|
|
||||||
|
# Start fresh
|
||||||
|
set --erase __git_profile_comp_results
|
||||||
|
|
||||||
|
set -l results (__git_profile_perform_completion)
|
||||||
|
__git_profile_debug "Completion results: $results"
|
||||||
|
|
||||||
|
if test -z "$results"
|
||||||
|
__git_profile_debug "No completion, probably due to a failure"
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l directive (string sub --start 2 $results[-1])
|
||||||
|
set --global __git_profile_comp_results $results[1..-2]
|
||||||
|
|
||||||
|
__git_profile_debug "Completions are: $__git_profile_comp_results"
|
||||||
|
__git_profile_debug "Directive is: $directive"
|
||||||
|
|
||||||
|
set -l shellCompDirectiveError 1
|
||||||
|
set -l shellCompDirectiveNoSpace 2
|
||||||
|
set -l shellCompDirectiveNoFileComp 4
|
||||||
|
set -l shellCompDirectiveFilterFileExt 8
|
||||||
|
set -l shellCompDirectiveFilterDirs 16
|
||||||
|
|
||||||
|
if test -z "$directive"
|
||||||
|
set directive 0
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||||
|
if test $compErr -eq 1
|
||||||
|
__git_profile_debug "Received error directive: aborting."
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||||
|
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||||
|
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||||
|
__git_profile_debug "File extension filtering or directory filtering not supported"
|
||||||
|
# Do full file completion instead
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||||
|
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||||
|
|
||||||
|
__git_profile_debug "nospace: $nospace, nofiles: $nofiles"
|
||||||
|
|
||||||
|
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||||
|
# we need to count the number of valid completions.
|
||||||
|
# To do so, we will filter on prefix as the completions we have received
|
||||||
|
# may not already be filtered so as to allow fish to match on different
|
||||||
|
# criteria than the prefix.
|
||||||
|
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||||
|
set -l prefix (commandline -t | string escape --style=regex)
|
||||||
|
__git_profile_debug "prefix: $prefix"
|
||||||
|
|
||||||
|
set -l completions (string match -r -- "^$prefix.*" $__git_profile_comp_results)
|
||||||
|
set --global __git_profile_comp_results $completions
|
||||||
|
__git_profile_debug "Filtered completions are: $__git_profile_comp_results"
|
||||||
|
|
||||||
|
# Important not to quote the variable for count to work
|
||||||
|
set -l numComps (count $__git_profile_comp_results)
|
||||||
|
__git_profile_debug "numComps: $numComps"
|
||||||
|
|
||||||
|
if test $numComps -eq 1; and test $nospace -ne 0
|
||||||
|
# We must first split on \t to get rid of the descriptions to be
|
||||||
|
# able to check what the actual completion will be.
|
||||||
|
# We don't need descriptions anyway since there is only a single
|
||||||
|
# real completion which the shell will expand immediately.
|
||||||
|
set -l split (string split --max 1 \t $__git_profile_comp_results[1])
|
||||||
|
|
||||||
|
# Fish won't add a space if the completion ends with any
|
||||||
|
# of the following characters: @=/:.,
|
||||||
|
set -l lastChar (string sub -s -1 -- $split)
|
||||||
|
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||||
|
# In other cases, to support the "nospace" directive we trick the shell
|
||||||
|
# by outputting an extra, longer completion.
|
||||||
|
__git_profile_debug "Adding second completion to perform nospace directive"
|
||||||
|
set --global __git_profile_comp_results $split[1] $split[1].
|
||||||
|
__git_profile_debug "Completions are now: $__git_profile_comp_results"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||||
|
# To be consistent with bash and zsh, we only trigger file
|
||||||
|
# completion when there are no other completions
|
||||||
|
__git_profile_debug "Requesting file completion"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||||
|
# so we can properly delete any completions provided by another script.
|
||||||
|
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||||
|
# the existing completions will only be loaded if the program can be found.
|
||||||
|
if type -q "git-profile"
|
||||||
|
# The space after the program name is essential to trigger completion for the program
|
||||||
|
# and not completion of the program name itself.
|
||||||
|
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||||
|
complete --do-complete "git-profile " > /dev/null 2>&1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||||
|
complete -c git-profile -e
|
||||||
|
|
||||||
|
# The call to __git_profile_prepare_completions will setup __git_profile_comp_results
|
||||||
|
# which provides the program's completion choices.
|
||||||
|
complete -c git-profile -n '__git_profile_prepare_completions' -f -a '$__git_profile_comp_results'
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/completions/mac.fish:v7.0.0
|
# @halostatue/fish-macos/completions/mac.fish:v7.0.1
|
||||||
|
|
||||||
complete --command mac --erase
|
complete --command mac --erase
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/completions/manp.fish:v7.0.0
|
# @halostatue/fish-macos/completions/manp.fish:v7.0.1
|
||||||
|
|
||||||
complete --command manp --erase
|
complete --command manp --erase
|
||||||
complete --command manp --wraps man
|
complete --command manp --wraps man
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/completions/ql.fish:v7.0.0
|
# @halostatue/fish-macos/completions/ql.fish:v7.0.1
|
||||||
|
|
||||||
complete --erase --command ql
|
complete --erase --command ql
|
||||||
complete --command ql --wraps qlmanage
|
complete --command ql --wraps qlmanage
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/conf.d/halostatue_fish_macos.fish:v7.0.0
|
# @halostatue/fish-macos/conf.d/halostatue_fish_macos.fish:v7.0.1
|
||||||
|
|
||||||
function _halostatue_fish_macos_uninstall -e halostatue_fish_macos_uninstall
|
function _halostatue_fish_macos_uninstall -e halostatue_fish_macos_uninstall
|
||||||
set --function functions app finder has_app mac manp note ql remind
|
set --function functions app finder has_app mac manp note ql remind
|
||||||
|
|||||||
25
config/fish/conf.d/puffer_fish_key_bindings.fish
Normal file
25
config/fish/conf.d/puffer_fish_key_bindings.fish
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
status is-interactive || exit
|
||||||
|
|
||||||
|
function _puffer_fish_key_bindings --on-variable fish_key_bindings
|
||||||
|
set -l modes
|
||||||
|
if test "$fish_key_bindings" = fish_default_key_bindings
|
||||||
|
set modes default insert
|
||||||
|
else
|
||||||
|
set modes insert default
|
||||||
|
end
|
||||||
|
|
||||||
|
bind --mode $modes[1] . _puffer_fish_expand_dots
|
||||||
|
bind --mode $modes[1] ! _puffer_fish_expand_bang
|
||||||
|
bind --mode $modes[1] '$' _puffer_fish_expand_lastarg
|
||||||
|
bind --mode $modes[2] --erase . ! '$'
|
||||||
|
end
|
||||||
|
|
||||||
|
_puffer_fish_key_bindings
|
||||||
|
|
||||||
|
set -l uninstall_event puffer_fish_key_bindings_uninstall
|
||||||
|
|
||||||
|
function _$uninstall_event --on-event $uninstall_event
|
||||||
|
bind -e .
|
||||||
|
bind -e !
|
||||||
|
bind -e '$'
|
||||||
|
end
|
||||||
52
config/fish/conf.d/sponge.fish
Normal file
52
config/fish/conf.d/sponge.fish
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# Sponge version
|
||||||
|
set --global sponge_version 1.1.0
|
||||||
|
|
||||||
|
# Allow to repeat previous command by default
|
||||||
|
if not set --query --universal sponge_delay
|
||||||
|
set --universal sponge_delay 2
|
||||||
|
end
|
||||||
|
|
||||||
|
# Purge entries both after `sponge_delay` entries and on exit by default
|
||||||
|
if not set --query --universal sponge_purge_only_on_exit
|
||||||
|
set --universal sponge_purge_only_on_exit false
|
||||||
|
end
|
||||||
|
|
||||||
|
# Add default filters
|
||||||
|
if not set --query --universal sponge_filters
|
||||||
|
set --universal sponge_filters sponge_filter_failed sponge_filter_matched
|
||||||
|
end
|
||||||
|
|
||||||
|
# Don't filter out commands that already have been in the history by default
|
||||||
|
if not set --query --universal sponge_allow_previously_successful
|
||||||
|
set --universal sponge_allow_previously_successful true
|
||||||
|
end
|
||||||
|
|
||||||
|
# Consider `0` the only successful exit code by default
|
||||||
|
if not set --query --universal sponge_successful_exit_codes
|
||||||
|
set --universal sponge_successful_exit_codes 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# No active regex patterns by default
|
||||||
|
if not set --query --universal sponge_regex_patterns
|
||||||
|
set --universal sponge_regex_patterns
|
||||||
|
end
|
||||||
|
|
||||||
|
# Attach event handlers
|
||||||
|
functions --query \
|
||||||
|
_sponge_on_prompt \
|
||||||
|
_sponge_on_preexec \
|
||||||
|
_sponge_on_postexec \
|
||||||
|
_sponge_on_exit
|
||||||
|
|
||||||
|
# Initialize empty state for the first run
|
||||||
|
function _sponge_install --on-event sponge_install
|
||||||
|
set --global _sponge_current_command ''
|
||||||
|
set --global _sponge_current_command_exit_code 0
|
||||||
|
set --global _sponge_current_command_previously_in_history false
|
||||||
|
end
|
||||||
|
|
||||||
|
# Clean up variables
|
||||||
|
function _sponge_uninstall --on-event sponge_uninstall
|
||||||
|
_sponge_clear_state
|
||||||
|
set --erase sponge_version
|
||||||
|
end
|
||||||
@@ -8,19 +8,29 @@ test -e "$HOME/.config/fish/alias.fish" &&
|
|||||||
test -e "$HOME/.config/fish/exports.fish" &&
|
test -e "$HOME/.config/fish/exports.fish" &&
|
||||||
source "$HOME/.config/fish/exports.fish"
|
source "$HOME/.config/fish/exports.fish"
|
||||||
|
|
||||||
if status is-interactive
|
test -e "$HOME/.dotfiles/config/fzf/key-bindings.fish" &&
|
||||||
# Commands to run in interactive sessions can go here
|
source "$HOME/.dotfiles/config/fzf/key-bindings.fish"
|
||||||
|
|
||||||
# Start tmux if not already running and not in SSH
|
if status is-interactive
|
||||||
open-tmux # defined in functions/open-tmux.fish
|
# Commands to run in interactive shell
|
||||||
|
|
||||||
|
# 1Password plugins if op command is available
|
||||||
|
type -q op; and test -e "$HOME/.config/op/plugins.sh" &&
|
||||||
|
source "$HOME/.config/op/plugins.sh"
|
||||||
|
|
||||||
|
# version manager initializers
|
||||||
|
type -q rbenv; and source (rbenv init -|psub)
|
||||||
|
type -q pyenv; and source (pyenv init -|psub)
|
||||||
|
type -q pyenv; and source (pyenv virtualenv-init -|psub)
|
||||||
|
type -q goenv; and source (goenv init -|psub)
|
||||||
|
# type -q fnm; and fnm env --use-on-cd --shell fish | source
|
||||||
|
type -q load_nvm; and load_nvm > /dev/stderr
|
||||||
|
|
||||||
|
# Start tmux if not already running and not in SSH
|
||||||
|
open-tmux # defined in functions/open-tmux.fish
|
||||||
end
|
end
|
||||||
|
|
||||||
# Added by LM Studio CLI (lms)
|
# Added by LM Studio CLI (lms)
|
||||||
set -gx PATH $PATH $HOME/.lmstudio/bin
|
set -gx PATH $PATH $HOME/.lmstudio/bin
|
||||||
|
|
||||||
type -q rbenv; and source (rbenv init -|psub)
|
# vim: ft=fish ts=4 sw=4 et:
|
||||||
type -q pyenv; and source (pyenv init -|psub)
|
|
||||||
type -q goenv; and source (goenv init -|psub)
|
|
||||||
type -q fnm; and fnm env --use-on-cd --shell fish | source
|
|
||||||
type -q load_nvm; and load_nvm > /dev/stderr
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,6 @@ fish_add_path "$XDG_BIN_HOME"
|
|||||||
# Add cargo bin to path
|
# Add cargo bin to path
|
||||||
fish_add_path "$XDG_SHARE_HOME/cargo/bin"
|
fish_add_path "$XDG_SHARE_HOME/cargo/bin"
|
||||||
|
|
||||||
# Set Aqua configuration
|
|
||||||
set -q AQUA_BIN; or set -gx AQUA_BIN "$XDG_DATA_HOME/aquaproj-aqua/bin"
|
|
||||||
set -q AQUA_CONFIG; or set -gx AQUA_CONFIG "$XDG_CONFIG_HOME/aqua/aqua.yaml"
|
|
||||||
set -gx PATH $AQUA_BIN $PATH
|
|
||||||
|
|
||||||
# NPM/NVM configuration
|
# NPM/NVM configuration
|
||||||
set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm"
|
set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm"
|
||||||
fish_add_path "$NVM_DIR/bin"
|
fish_add_path "$NVM_DIR/bin"
|
||||||
@@ -109,7 +104,6 @@ set -q GNUPGHOME; or set -x GNUPGHOME "$XDG_DATA_HOME/gnupg"
|
|||||||
# Go configuration
|
# Go configuration
|
||||||
# set -q GOPATH; or set -x GOPATH "$XDG_DATA_HOME/go"
|
# set -q GOPATH; or set -x GOPATH "$XDG_DATA_HOME/go"
|
||||||
set -q GOBIN; or set -x GOBIN "$XDG_BIN_HOME"
|
set -q GOBIN; or set -x GOBIN "$XDG_BIN_HOME"
|
||||||
fish_add_path "$GOBIN"
|
|
||||||
|
|
||||||
set -q GOENV_ROOT; or set -x GOENV_ROOT "$XDG_DATA_HOME/goenv"
|
set -q GOENV_ROOT; or set -x GOENV_ROOT "$XDG_DATA_HOME/goenv"
|
||||||
set -q GOENV_RC_FILE; or set -x GOENV_RC_FILE "$XDG_CONFIG_HOME/goenv/goenvrc.fish"
|
set -q GOENV_RC_FILE; or set -x GOENV_RC_FILE "$XDG_CONFIG_HOME/goenv/goenvrc.fish"
|
||||||
@@ -131,7 +125,6 @@ set -q CARGO_HOME; or set -x CARGO_HOME "$XDG_DATA_HOME/cargo"
|
|||||||
set -q CARGO_BIN_HOME; or set -x CARGO_BIN_HOME "$XDG_BIN_HOME"
|
set -q CARGO_BIN_HOME; or set -x CARGO_BIN_HOME "$XDG_BIN_HOME"
|
||||||
set -q RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup"
|
set -q RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup"
|
||||||
set -x RUST_WITHOUT "clippy,docs,rls"
|
set -x RUST_WITHOUT "clippy,docs,rls"
|
||||||
fish_add_path "$CARGO_BIN_HOME"
|
|
||||||
fish_add_path "$CARGO_HOME/bin"
|
fish_add_path "$CARGO_HOME/bin"
|
||||||
fish_add_path "$XDG_SHARE_HOME/bob/nvim-bin"
|
fish_add_path "$XDG_SHARE_HOME/bob/nvim-bin"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ jorgebucaran/fisher
|
|||||||
ilancosman/tide@v6
|
ilancosman/tide@v6
|
||||||
jethrokuan/z
|
jethrokuan/z
|
||||||
halostatue/fish-macos@v7
|
halostatue/fish-macos@v7
|
||||||
jgusta/paths
|
|
||||||
danhper/fish-ssh-agent
|
danhper/fish-ssh-agent
|
||||||
halostatue/fish-brew@v3
|
halostatue/fish-brew@v3
|
||||||
edc/bass
|
edc/bass
|
||||||
|
meaningful-ooo/sponge
|
||||||
|
nickeb96/puffer-fish
|
||||||
|
jgusta/paths
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_app_bundleid.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_app_bundleid.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_app_bundleid
|
function __macos_app_bundleid
|
||||||
argparse --name 'app bundleid' x/exact a/all h/help q/quiet s/short -- $argv
|
argparse --name 'app bundleid' x/exact a/all h/help q/quiet s/short -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_app_find.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_app_find.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_app_find
|
function __macos_app_find
|
||||||
argparse --name 'app find' x/exact a/all q/quiet h/help -- $argv
|
argparse --name 'app find' x/exact a/all q/quiet h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_app_frontmost.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_app_frontmost.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_app_frontmost::info
|
function __macos_app_frontmost::info
|
||||||
set --function value (lsappinfo info -only $argv[2] $argv[1] | string split =)[2]
|
set --function value (lsappinfo info -only $argv[2] $argv[1] | string split =)[2]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_app_icon.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_app_icon.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_app_icon
|
function __macos_app_icon
|
||||||
argparse --name 'app quit' x/exact h/help 'o/output=' 'w/width=' -- $argv
|
argparse --name 'app quit' x/exact h/help 'o/output=' 'w/width=' -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_app_quit.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_app_quit.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_app_quit
|
function __macos_app_quit
|
||||||
argparse --name 'app quit' x/exact r/restart h/help -- $argv
|
argparse --name 'app quit' x/exact r/restart h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_cd.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_cd.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_cd
|
function __macos_finder_cd
|
||||||
argparse --name 'finder cd' h/help -- $argv
|
argparse --name 'finder cd' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_clean.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_clean.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_clean
|
function __macos_finder_clean
|
||||||
argparse --name 'finder clean' h/help -- $argv
|
argparse --name 'finder clean' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_column.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_column.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_column
|
function __macos_finder_column
|
||||||
argparse --name 'finder column' h/help -- $argv
|
argparse --name 'finder column' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_desktop_icons.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_desktop_icons.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_desktop_icons
|
function __macos_finder_desktop_icons
|
||||||
argparse --name 'finder desktop-icons' h/help -- $argv
|
argparse --name 'finder desktop-icons' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_hidden.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_hidden.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_hidden
|
function __macos_finder_hidden
|
||||||
argparse --name 'finder hidden' h/help -- $argv
|
argparse --name 'finder hidden' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_icon.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_icon.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_icon
|
function __macos_finder_icon
|
||||||
argparse --name 'finder icon' h/help -- $argv
|
argparse --name 'finder icon' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_list.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_list.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_list
|
function __macos_finder_list
|
||||||
argparse --name 'finder list' h/help -- $argv
|
argparse --name 'finder list' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_pushd.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_pushd.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_pushd
|
function __macos_finder_pushd
|
||||||
argparse --name 'finder pushd' h/help -- $argv
|
argparse --name 'finder pushd' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_pwd.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_pwd.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_pwd
|
function __macos_finder_pwd
|
||||||
argparse --name 'finder pwd' h/help -- $argv
|
argparse --name 'finder pwd' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_quarantine.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_quarantine.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_quarantine::run
|
function __macos_finder_quarantine::run
|
||||||
set --query argv[1]
|
set --query argv[1]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_selected.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_selected.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_selected
|
function __macos_finder_selected
|
||||||
argparse --name 'finder selected' h/help -- $argv
|
argparse --name 'finder selected' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_track.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_track.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_track
|
function __macos_finder_track
|
||||||
argparse --name 'finder track' h/help -- $argv
|
argparse --name 'finder track' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_untrack.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_untrack.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_untrack
|
function __macos_finder_untrack
|
||||||
argparse --name 'finder untrack' h/help -- $argv
|
argparse --name 'finder untrack' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_finder_update.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_finder_update.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_update
|
function __macos_finder_update
|
||||||
argparse --name 'finder update' h/help -- $argv
|
argparse --name 'finder update' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_airdrop.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_airdrop.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_airdrop
|
function __macos_mac_airdrop
|
||||||
argparse --name 'mac airdrop' h/help -- $argv
|
argparse --name 'mac airdrop' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_airport.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_airport.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_airport::ssid
|
function __macos_mac_airport::ssid
|
||||||
__macos_mac_airport::run -I | string replace --filter --regex '\s+SSID: (\S+)' '$1'
|
__macos_mac_airport::run -I | string replace --filter --regex '\s+SSID: (\S+)' '$1'
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_brightness.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_brightness.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_brightness
|
function __macos_mac_brightness
|
||||||
argparse --name 'mac brightness' h/help -- $argv
|
argparse --name 'mac brightness' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_defaults_query.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_defaults_query.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_defaults_query
|
function __macos_mac_defaults_query
|
||||||
if set --function value (defaults read $argv[1] $argv[2] 2>/dev/null)
|
if set --function value (defaults read $argv[1] $argv[2] 2>/dev/null)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_flushdns.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_flushdns.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_flushdns
|
function __macos_mac_flushdns
|
||||||
argparse --name 'mac flushdns' h/help -- $argv
|
argparse --name 'mac flushdns' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_font_smoothing.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_font_smoothing.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_font_smoothing
|
function __macos_mac_font_smoothing
|
||||||
argparse --name 'mac font-smoothing' h/help -- $argv
|
argparse --name 'mac font-smoothing' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_lsclean.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_lsclean.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_lsclean
|
function __macos_mac_lsclean
|
||||||
argparse --name 'mac lsclean' h/help -- $argv
|
argparse --name 'mac lsclean' h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_mail.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_mail.fish:v7.0.1
|
||||||
|
|
||||||
# Speed up Mail.app by vacuuming the Envelope Index
|
# Speed up Mail.app by vacuuming the Envelope Index
|
||||||
# - Code from: http://web.archive.org/web/20071008123746/http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
|
# - Code from: http://web.archive.org/web/20071008123746/http://www.hawkwings.net/2007/03/03/scripts-to-automate-the-mailapp-envelope-speed-trick/
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_proxy_icon.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_proxy_icon.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_proxy_icon
|
function __macos_mac_proxy_icon
|
||||||
argparse --name 'mac proxy-icon' h/help q/query -- $argv
|
argparse --name 'mac proxy-icon' h/help q/query -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_serialnumber.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_serialnumber.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_serialnumber
|
function __macos_mac_serialnumber
|
||||||
argparse --name 'mac serialnumber' h/help c/copy -- $argv
|
argparse --name 'mac serialnumber' h/help c/copy -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_touchid.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_touchid.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_touchid
|
function __macos_mac_touchid
|
||||||
argparse --name 'mac touchid' h/help q/quiet -- $argv
|
argparse --name 'mac touchid' h/help q/quiet -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_touchid_sudo.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_touchid_sudo.fish:v7.0.1
|
||||||
|
|
||||||
# Massively simplified. This version _only_ works if /etc/pam.d/sudo includes `auth
|
# Massively simplified. This version _only_ works if /etc/pam.d/sudo includes `auth
|
||||||
# include sudo_local` and requires manual removal of `pam_reattach` and `pam_tid` from
|
# include sudo_local` and requires manual removal of `pam_reattach` and `pam_tid` from
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_transparency.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_transparency.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_transparency
|
function __macos_mac_transparency
|
||||||
argparse --name 'mac transparency' h/help q/query -- $argv
|
argparse --name 'mac transparency' h/help q/query -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_version.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_version.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_version
|
function __macos_mac_version
|
||||||
argparse \
|
argparse \
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/__macos_mac_vol.fish:v7.0.0
|
# @halostatue/fish-macos/functions/__macos_mac_vol.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_mac_vol
|
function __macos_mac_vol
|
||||||
argparse --name 'mac vol' h/help -- $argv
|
argparse --name 'mac vol' h/help -- $argv
|
||||||
|
|||||||
9
config/fish/functions/_puffer_fish_expand_bang.fish
Normal file
9
config/fish/functions/_puffer_fish_expand_bang.fish
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function _puffer_fish_expand_bang
|
||||||
|
switch (commandline -t)
|
||||||
|
case '!'
|
||||||
|
commandline -t $history[1]
|
||||||
|
case '*'
|
||||||
|
commandline -i '!'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
9
config/fish/functions/_puffer_fish_expand_dots.fish
Normal file
9
config/fish/functions/_puffer_fish_expand_dots.fish
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function _puffer_fish_expand_dots -d 'expand ... to ../.. etc'
|
||||||
|
set -l cmd (commandline --cut-at-cursor)
|
||||||
|
set -l split (string split -- ' ' $cmd)
|
||||||
|
if string match --quiet --regex -- '^(\.\./)*\.\.$' $split[-1]
|
||||||
|
commandline --insert '/..'
|
||||||
|
else
|
||||||
|
commandline --insert '.'
|
||||||
|
end
|
||||||
|
end
|
||||||
9
config/fish/functions/_puffer_fish_expand_lastarg.fish
Normal file
9
config/fish/functions/_puffer_fish_expand_lastarg.fish
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function _puffer_fish_expand_lastarg
|
||||||
|
switch (commandline -t)
|
||||||
|
case '!'
|
||||||
|
commandline -t ""
|
||||||
|
commandline -f history-token-search-backward
|
||||||
|
case '*'
|
||||||
|
commandline -i '$'
|
||||||
|
end
|
||||||
|
end
|
||||||
5
config/fish/functions/_sponge_clear_state.fish
Normal file
5
config/fish/functions/_sponge_clear_state.fish
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
function _sponge_clear_state
|
||||||
|
set --erase --global _sponge_current_command
|
||||||
|
set --erase --global _sponge_current_command_exit_code
|
||||||
|
set --erase --global _sponge_current_command_previously_in_history
|
||||||
|
end
|
||||||
3
config/fish/functions/_sponge_on_exit.fish
Normal file
3
config/fish/functions/_sponge_on_exit.fish
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
function _sponge_on_exit --on-event fish_exit
|
||||||
|
sponge_delay=0 _sponge_remove_from_history
|
||||||
|
end
|
||||||
24
config/fish/functions/_sponge_on_postexec.fish
Normal file
24
config/fish/functions/_sponge_on_postexec.fish
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
function _sponge_on_postexec --on-event fish_postexec
|
||||||
|
set --global _sponge_current_command_exit_code $status
|
||||||
|
|
||||||
|
# Remove command from the queue if it's been added previously
|
||||||
|
if set --local index (contains --index -- $_sponge_current_command $_sponge_queue)
|
||||||
|
set --erase _sponge_queue[$index]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Ignore empty commands
|
||||||
|
if test -n $_sponge_current_command
|
||||||
|
set --local command ''
|
||||||
|
# Run filters
|
||||||
|
for filter in $sponge_filters
|
||||||
|
if $filter \
|
||||||
|
$_sponge_current_command \
|
||||||
|
$_sponge_current_command_exit_code \
|
||||||
|
$_sponge_current_command_previously_in_history
|
||||||
|
set command $_sponge_current_command
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
set --prepend --global _sponge_queue $command
|
||||||
|
end
|
||||||
|
end
|
||||||
16
config/fish/functions/_sponge_on_preexec.fish
Normal file
16
config/fish/functions/_sponge_on_preexec.fish
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
function _sponge_on_preexec --on-event fish_preexec \
|
||||||
|
--argument-names command
|
||||||
|
_sponge_clear_state
|
||||||
|
|
||||||
|
set --global _sponge_current_command $command
|
||||||
|
|
||||||
|
builtin history search --case-sensitive --exact --max=1 --null $command \
|
||||||
|
| read --local --null found_entries
|
||||||
|
|
||||||
|
# If a command is in the history and in the queue, ignore it, like if it wasn’t in the history
|
||||||
|
if test (count $found_entries) -ne 0; and not contains $command $_sponge_queue
|
||||||
|
set --global _sponge_current_command_previously_in_history true
|
||||||
|
else
|
||||||
|
set --global _sponge_current_command_previously_in_history false
|
||||||
|
end
|
||||||
|
end
|
||||||
5
config/fish/functions/_sponge_on_prompt.fish
Normal file
5
config/fish/functions/_sponge_on_prompt.fish
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
function _sponge_on_prompt --on-event fish_prompt
|
||||||
|
if test $sponge_purge_only_on_exit = false
|
||||||
|
_sponge_remove_from_history
|
||||||
|
end
|
||||||
|
end
|
||||||
9
config/fish/functions/_sponge_remove_from_history.fish
Normal file
9
config/fish/functions/_sponge_remove_from_history.fish
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function _sponge_remove_from_history
|
||||||
|
|
||||||
|
while test (count $_sponge_queue) -gt $sponge_delay
|
||||||
|
builtin history delete --case-sensitive --exact -- $_sponge_queue[-1]
|
||||||
|
set --erase _sponge_queue[-1]
|
||||||
|
end
|
||||||
|
|
||||||
|
builtin history save
|
||||||
|
end
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/app.fish:v7.0.0
|
# @halostatue/fish-macos/functions/app.fish:v7.0.1
|
||||||
|
|
||||||
function app --description 'Operate on macOS applications'
|
function app --description 'Operate on macOS applications'
|
||||||
argparse --stop-nonopt h/help -- $argv
|
argparse --stop-nonopt h/help -- $argv
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/finder.fish:v7.0.0
|
# @halostatue/fish-macos/functions/finder.fish:v7.0.1
|
||||||
|
|
||||||
function __macos_finder_defaults::query
|
function __macos_finder_defaults::query
|
||||||
set --query argv[1]
|
set --query argv[1]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/has_app.fish:v7.0.0
|
# @halostatue/fish-macos/functions/has_app.fish:v7.0.1
|
||||||
|
|
||||||
function has_app --description 'Returns true if the named application exists'
|
function has_app --description 'Returns true if the named application exists'
|
||||||
# Suppress these flags being passed to __macos_app_find
|
# Suppress these flags being passed to __macos_app_find
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/mac.fish:v7.0.0
|
# @halostatue/fish-macos/functions/mac.fish:v7.0.1
|
||||||
|
|
||||||
function mac --description 'Manage several macOS functions'
|
function mac --description 'Manage several macOS functions'
|
||||||
argparse --stop-nonopt h/help -- $argv
|
argparse --stop-nonopt h/help -- $argv
|
||||||
@@ -36,6 +36,8 @@ Options:
|
|||||||
__macos_mac_airdrop $argv
|
__macos_mac_airdrop $argv
|
||||||
case airport
|
case airport
|
||||||
__macos_mac_airport $argv
|
__macos_mac_airport $argv
|
||||||
|
case brightness
|
||||||
|
__macos_mac_brightness $argv
|
||||||
case flushdns
|
case flushdns
|
||||||
__macos_mac_flushdns $argv
|
__macos_mac_flushdns $argv
|
||||||
case font-smoothing
|
case font-smoothing
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/manp.fish:v7.0.0
|
# @halostatue/fish-macos/functions/manp.fish:v7.0.1
|
||||||
|
|
||||||
# Based on man2pdf.sh created by Pico Mitchell (of Random Applications)
|
# Based on man2pdf.sh created by Pico Mitchell (of Random Applications)
|
||||||
# on 11/16/22, licensed under the MIT license.
|
# on 11/16/22, licensed under the MIT license.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/note.fish:v7.0.0
|
# @halostatue/fish-macos/functions/note.fish:v7.0.1
|
||||||
|
|
||||||
function note --description 'Add a note to Notes.app'
|
function note --description 'Add a note to Notes.app'
|
||||||
is_mac 'mountain lion'
|
is_mac 'mountain lion'
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/ql.fish:v7.0.0
|
# @halostatue/fish-macos/functions/ql.fish:v7.0.1
|
||||||
|
|
||||||
function ql --description 'QuickLook a file or directory'
|
function ql --description 'QuickLook a file or directory'
|
||||||
# Updated based on https://gist.github.com/chockenberry/13c15466417b88e40f23e58df8091dac
|
# Updated based on https://gist.github.com/chockenberry/13c15466417b88e40f23e58df8091dac
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# @halostatue/fish-macos/functions/remind.fish:v7.0.0
|
# @halostatue/fish-macos/functions/remind.fish:v7.0.1
|
||||||
|
|
||||||
function remind --description 'Add a reminder to Reminders.app'
|
function remind --description 'Add a reminder to Reminders.app'
|
||||||
is_mac 'mountain lion'
|
is_mac 'mountain lion'
|
||||||
|
|||||||
11
config/fish/functions/sponge_filter_failed.fish
Normal file
11
config/fish/functions/sponge_filter_failed.fish
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
function sponge_filter_failed \
|
||||||
|
--argument-names command exit_code previously_in_history
|
||||||
|
|
||||||
|
if test $previously_in_history = true -a $sponge_allow_previously_successful = true
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if contains $exit_code $sponge_successful_exit_codes
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
11
config/fish/functions/sponge_filter_matched.fish
Normal file
11
config/fish/functions/sponge_filter_matched.fish
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
function sponge_filter_matched \
|
||||||
|
--argument-names command
|
||||||
|
|
||||||
|
for pattern in $sponge_regex_patterns
|
||||||
|
if string match --regex --quiet $pattern -- $command
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return 1
|
||||||
|
end
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
autoStash = true
|
autoStash = true
|
||||||
updateRefs = true
|
updateRefs = true
|
||||||
[merge]
|
[merge]
|
||||||
conflictstyle = zdiff3
|
conflictStyle = diff3
|
||||||
[pull]
|
[pull]
|
||||||
rebase = true
|
rebase = true
|
||||||
[color "diff-highlight"]
|
[color "diff-highlight"]
|
||||||
|
|||||||
@@ -89,6 +89,8 @@ brew "coreutils"
|
|||||||
brew "bats-core"
|
brew "bats-core"
|
||||||
# Parser generator
|
# Parser generator
|
||||||
brew "bison"
|
brew "bison"
|
||||||
|
# Freely available high-quality data compressor
|
||||||
|
brew "bzip2"
|
||||||
# Software library to render fonts
|
# Software library to render fonts
|
||||||
brew "freetype"
|
brew "freetype"
|
||||||
# XML-based font configuration API for X Windows
|
# XML-based font configuration API for X Windows
|
||||||
@@ -113,10 +115,10 @@ brew "harfbuzz"
|
|||||||
brew "dependency-check"
|
brew "dependency-check"
|
||||||
# Lightweight DNS forwarder and DHCP server
|
# Lightweight DNS forwarder and DHCP server
|
||||||
brew "dnsmasq"
|
brew "dnsmasq"
|
||||||
# .NET Core
|
|
||||||
brew "dotnet@8", link: true
|
|
||||||
# Spellchecker wrapping library
|
# Spellchecker wrapping library
|
||||||
brew "enchant"
|
brew "enchant"
|
||||||
|
# Command-line tool to interact with exercism.io
|
||||||
|
brew "exercism"
|
||||||
# Perl lib for reading and writing EXIF metadata
|
# Perl lib for reading and writing EXIF metadata
|
||||||
brew "exiftool"
|
brew "exiftool"
|
||||||
# Banner-like program prints strings as ASCII art
|
# Banner-like program prints strings as ASCII art
|
||||||
@@ -222,7 +224,7 @@ brew "nginx"
|
|||||||
# Port scanning utility for large networks
|
# Port scanning utility for large networks
|
||||||
brew "nmap"
|
brew "nmap"
|
||||||
# Platform built on V8 to build network applications
|
# Platform built on V8 to build network applications
|
||||||
brew "node"
|
brew "node", link: false
|
||||||
# Libraries for security-enabled client and server applications
|
# Libraries for security-enabled client and server applications
|
||||||
brew "nss"
|
brew "nss"
|
||||||
# Command-line Git information tool
|
# Command-line Git information tool
|
||||||
@@ -232,9 +234,9 @@ brew "openldap"
|
|||||||
# 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"
|
brew "php", link: false
|
||||||
# General-purpose scripting language
|
# General-purpose scripting language
|
||||||
brew "php@8.2"
|
brew "php@8.2", link: true
|
||||||
# General-purpose scripting language
|
# General-purpose scripting language
|
||||||
brew "php@8.3"
|
brew "php@8.3"
|
||||||
# Pins GitHub Actions to full hashes and versions
|
# Pins GitHub Actions to full hashes and versions
|
||||||
@@ -259,6 +261,8 @@ brew "re2c"
|
|||||||
brew "rustup"
|
brew "rustup"
|
||||||
# Static analysis and lint tool, for (ba)sh scripts
|
# Static analysis and lint tool, for (ba)sh scripts
|
||||||
brew "shellcheck"
|
brew "shellcheck"
|
||||||
|
# User interface to the TELNET protocol
|
||||||
|
brew "telnet"
|
||||||
# Send macOS User Notifications from the command-line
|
# Send macOS User Notifications from the command-line
|
||||||
brew "terminal-notifier"
|
brew "terminal-notifier"
|
||||||
# Tool which checks for the support of TLS/SSL ciphers and flaws
|
# Tool which checks for the support of TLS/SSL ciphers and flaws
|
||||||
@@ -317,8 +321,6 @@ brew "shivammathur/php/php-debug"
|
|||||||
brew "shivammathur/php/php@8.2-debug"
|
brew "shivammathur/php/php@8.2-debug"
|
||||||
# Command-line interface for 1Password
|
# Command-line interface for 1Password
|
||||||
cask "1password-cli"
|
cask "1password-cli"
|
||||||
# AeroSpace is an i3-like tiling window manager for macOS
|
|
||||||
cask "aerospace"
|
|
||||||
# Universal database tool and SQL client
|
# Universal database tool and SQL client
|
||||||
cask "dbeaver-community"
|
cask "dbeaver-community"
|
||||||
# Database version management tool
|
# Database version management tool
|
||||||
@@ -340,8 +342,6 @@ cask "jetbrains-toolbox"
|
|||||||
cask "keybase"
|
cask "keybase"
|
||||||
# Kubernetes IDE
|
# Kubernetes IDE
|
||||||
cask "lens"
|
cask "lens"
|
||||||
# Neovim Client
|
|
||||||
cask "neovide"
|
|
||||||
# Reverse proxy, secure introspectable tunnels to localhost
|
# Reverse proxy, secure introspectable tunnels to localhost
|
||||||
cask "ngrok"
|
cask "ngrok"
|
||||||
# Simple application that will prevent iTunes or Apple Music from launching
|
# Simple application that will prevent iTunes or Apple Music from launching
|
||||||
|
|||||||
@@ -1,15 +1,46 @@
|
|||||||
"" Source your .vimrc
|
"" Source your .vimrc
|
||||||
source ~/.dotfiles/config/vim/vimrc
|
source $HOME/.dotfiles/config/vim/vimrc
|
||||||
|
|
||||||
" https://github.com/ville6000/dotfiles/blob/main/vimrc
|
" https://github.com/ville6000/dotfiles/blob/main/vimrc
|
||||||
" To get a list of Actions run `:actionlist `
|
" To get a list of Actions run `:actionlist `
|
||||||
let mapleader = "\<SPACE>"
|
let mapleader = "\<SPACE>"
|
||||||
|
|
||||||
set clipboard+=unnamed
|
set clipboard+=unnamed
|
||||||
|
set cursorline " Highlight current line
|
||||||
|
set nocompatible " disable compatibility mode with vi
|
||||||
|
filetype off " disable filetype detection (but re-enable later, see below)
|
||||||
|
set undolevels=1000 " Number of undo levels
|
||||||
|
set backspace=indent,eol,start " Backspace behaviour
|
||||||
|
|
||||||
|
" Show a few lines of context around the cursor. Note that this makes the
|
||||||
|
" text scroll if you mouse-click near the start or end of the window.
|
||||||
|
set scrolloff=5
|
||||||
|
|
||||||
|
" Do incremental searching.
|
||||||
|
set incsearch
|
||||||
|
|
||||||
|
" Don't use Ex mode, use Q for formatting.
|
||||||
|
map Q gq
|
||||||
|
|
||||||
|
call plug#begin('~/.config/vim/plugged')
|
||||||
|
" Plug 'ayu-theme/ayu-vim'
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
set ideajoin
|
set ideajoin
|
||||||
|
set ideastatusicon=gray
|
||||||
set ideamarks
|
set ideamarks
|
||||||
set idearefactormode=normal
|
set idearefactormode=normal
|
||||||
|
set which-key
|
||||||
|
set mini-ai
|
||||||
|
|
||||||
|
" which-key settings
|
||||||
|
" https://github.com/TheBlob42/idea-which-key
|
||||||
|
let g:WhichKey_ShowVimActions = "true"
|
||||||
|
let g:WhichKey_DefaultDelay = 600 " make the popup appear much slower
|
||||||
|
let g:WhichKey_PrefixStyle = "bold"
|
||||||
|
|
||||||
|
" disable the timeout option
|
||||||
|
set notimeout
|
||||||
|
|
||||||
" Map esc to :noh
|
" Map esc to :noh
|
||||||
map <esc> :noh<cr>
|
map <esc> :noh<cr>
|
||||||
@@ -31,7 +62,6 @@ nmap <leader>ss <Action>(GotoSymbol)
|
|||||||
nmap <leader>fl <Action>(RecentLocations)
|
nmap <leader>fl <Action>(RecentLocations)
|
||||||
nmap <leader>fc <Action>(FindInPath)
|
nmap <leader>fc <Action>(FindInPath)
|
||||||
nmap <leader>fr <Action>(RecentFiles)
|
nmap <leader>fr <Action>(RecentFiles)
|
||||||
nmap <leader>fe :NERDTreeToggle<CR>
|
|
||||||
nmap <Leader>fu :action FindUsages<CR>
|
nmap <Leader>fu :action FindUsages<CR>
|
||||||
nmap <Leader>ff :action GotoFile<CR>
|
nmap <Leader>ff :action GotoFile<CR>
|
||||||
nmap <leader>fi <Action>(SelectIn)
|
nmap <leader>fi <Action>(SelectIn)
|
||||||
@@ -168,27 +198,32 @@ nnoremap 'x `X
|
|||||||
nnoremap 'y `Y
|
nnoremap 'y `Y
|
||||||
nnoremap 'z `Z
|
nnoremap 'z `Z
|
||||||
|
|
||||||
|
" Harpoon
|
||||||
|
nmap <leader><C-1> :action SetHarpoon1<cr>
|
||||||
|
nmap <leader><C-2> :action SetHarpoon2<cr>
|
||||||
|
nmap <leader><C-3> :action SetHarpoon3<cr>
|
||||||
|
nmap <leader><C-4> :action SetHarpoon4<cr>
|
||||||
|
nmap <leader><C-5> :action SetHarpoon5<cr>
|
||||||
|
nmap <leader><C-6> :action SetHarpoon6<cr>
|
||||||
|
nmap <C-1> :action GotoHarpoon1<cr>
|
||||||
|
nmap <C-2> :action GotoHarpoon2<cr>
|
||||||
|
nmap <C-3> :action GotoHarpoon3<cr>
|
||||||
|
nmap <C-4> :action GotoHarpoon4<cr>
|
||||||
|
nmap <C-5> :action GotoHarpoon5<cr>
|
||||||
|
nmap <C-6> :action GotoHarpoon6<cr>
|
||||||
|
nmap <C-e> :action ShowHarpoon<cr>
|
||||||
|
nmap <C-a> :action AddToHarpoon<cr>
|
||||||
|
|
||||||
" ---
|
" ---
|
||||||
|
|
||||||
set cursorline " Highlight current line
|
|
||||||
set nocompatible " disable compatibility mode with vi
|
|
||||||
filetype off " disable filetype detection (but re-enable later, see below)
|
|
||||||
set undolevels=1000 " Number of undo levels
|
|
||||||
set backspace=indent,eol,start " Backspace behaviour
|
|
||||||
|
|
||||||
" Don't use Ex mode, use Q for formatting.
|
|
||||||
map Q gq
|
|
||||||
|
|
||||||
syntax enable
|
syntax enable
|
||||||
filetype plugin indent on
|
filetype plugin indent on
|
||||||
|
|
||||||
" call plug#begin('~/.config/vim/plugged')
|
|
||||||
" Plug 'ayu-theme/ayu-vim'
|
|
||||||
" call plug#end()
|
|
||||||
|
|
||||||
set termguicolors
|
set termguicolors
|
||||||
|
|
||||||
if has('gui_running')
|
if has('gui_running')
|
||||||
set macligatures
|
set macligatures
|
||||||
set guifont=JetBrainsMono:h14
|
set guifont=JetBrainsMono:h14
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" vim: set filetype=vim :
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# EditorConfig is awesome: https://editorconfig.org
|
# EditorConfig is awesome: https://editorconfig.org
|
||||||
|
|
||||||
# top-most EditorConfig file
|
# top-most EditorConfig file
|
||||||
root = true
|
root = false
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
@@ -18,3 +18,7 @@ trim_trailing_whitespace = false
|
|||||||
|
|
||||||
[*.json]
|
[*.json]
|
||||||
max_line_length = off
|
max_line_length = off
|
||||||
|
|
||||||
|
[*.lua]
|
||||||
|
max_line_length = 90
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
column_width = 80
|
column_width = 90
|
||||||
line_endings = "Unix"
|
line_endings = "Unix"
|
||||||
indent_type = "Spaces"
|
indent_type = "Spaces"
|
||||||
indent_width = 2
|
indent_width = 2
|
||||||
|
|||||||
2
config/nvim/ftdetect/env.vim
Normal file
2
config/nvim/ftdetect/env.vim
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
autocmd BufRead,BufNewFile *.env set ft=env
|
||||||
|
autocmd BufRead,BufNewFile *.env.* set ft=env
|
||||||
@@ -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.uv.fs_stat(lazypath) then
|
if not (vim.uv or vim.loop).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',
|
||||||
@@ -28,10 +28,7 @@ end
|
|||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
-- ── Add ~/.local/bin to the PATH ────────────────────────────────────
|
-- ── Add ~/.local/bin to the PATH ────────────────────────────────────
|
||||||
vim.fn.setenv(
|
vim.fn.setenv('PATH', vim.fn.expand '$HOME/.local/bin' .. ':' .. vim.fn.expand '$PATH')
|
||||||
'PATH',
|
|
||||||
vim.fn.expand '$HOME/.local/bin' .. ':' .. vim.fn.expand '$PATH'
|
|
||||||
)
|
|
||||||
|
|
||||||
require 'options'
|
require 'options'
|
||||||
require 'autogroups'
|
require 'autogroups'
|
||||||
@@ -68,4 +65,4 @@ require('lazy').setup(
|
|||||||
|
|
||||||
require 'keymaps'
|
require 'keymaps'
|
||||||
|
|
||||||
-- vim: ts=2 sts=2 sw=2 et
|
-- vim: set ts=2 sts=2 sw=2 wrap et :
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ autocmd({ 'BufEnter', 'BufWinEnter', 'TabEnter' }, {
|
|||||||
callback = function()
|
callback = function()
|
||||||
local max_line_count = vim.fn.line '$'
|
local max_line_count = vim.fn.line '$'
|
||||||
-- Only adjust if the file is large enough to matter
|
-- Only adjust if the file is large enough to matter
|
||||||
if max_line_count > 99 then
|
if max_line_count > 99 then vim.opt.numberwidth = #tostring(max_line_count) + 1 end
|
||||||
vim.opt.numberwidth = #tostring(max_line_count) + 1
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -104,5 +102,3 @@ autocmd({ 'BufRead', 'BufNewFile' }, {
|
|||||||
},
|
},
|
||||||
command = 'set filetype=sshconfig',
|
command = 'set filetype=sshconfig',
|
||||||
})
|
})
|
||||||
|
|
||||||
-- vim: ts=2 sts=2 sw=2 et
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=130 :
|
|
||||||
|
|
||||||
require 'utils'
|
require 'utils'
|
||||||
|
|
||||||
-- ╭─────────────────────────────────────────────────────────╮
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
@@ -20,16 +18,8 @@ K.n('<C-w>+', ':resize +10<CR>', { desc = 'H Resize +' })
|
|||||||
K.n('<C-w>=', '<C-w>=', { desc = 'Equal Size Splits' })
|
K.n('<C-w>=', '<C-w>=', { desc = 'Equal Size Splits' })
|
||||||
|
|
||||||
-- ── Deal with word wrap ─────────────────────────────────────────────
|
-- ── Deal with word wrap ─────────────────────────────────────────────
|
||||||
K.n(
|
K.n('k', "v:count == 0 ? 'gk' : 'k'", { desc = 'Move up', noremap = true, expr = true })
|
||||||
'k',
|
K.n('j', "v:count == 0 ? 'gj' : 'j'", { desc = 'Move down', noremap = true, expr = true })
|
||||||
"v:count == 0 ? 'gk' : 'k'",
|
|
||||||
{ desc = 'Move up', noremap = true, expr = true }
|
|
||||||
)
|
|
||||||
K.n(
|
|
||||||
'j',
|
|
||||||
"v:count == 0 ? 'gj' : 'j'",
|
|
||||||
{ desc = 'Move down', noremap = true, expr = true }
|
|
||||||
)
|
|
||||||
|
|
||||||
-- ── Text manipulation ───────────────────────────────────────────────
|
-- ── Text manipulation ───────────────────────────────────────────────
|
||||||
K.d('<', { 'n', 'v' }, '<gv', 'Indent Left')
|
K.d('<', { 'n', 'v' }, '<gv', 'Indent Left')
|
||||||
@@ -111,12 +101,10 @@ K.nl('cbt', '<Cmd>CBllline<CR>', 'CB: Titled Line')
|
|||||||
-- unless it's a generic operation like searching or finding buffers
|
-- unless it's a generic operation like searching or finding buffers
|
||||||
|
|
||||||
local fuzzy_search = function()
|
local fuzzy_search = function()
|
||||||
require('telescope.builtin').find_files(
|
require('telescope.builtin').find_files(require('telescope.themes').get_dropdown {
|
||||||
require('telescope.themes').get_dropdown {
|
winblend = 20,
|
||||||
winblend = 20,
|
previewer = true,
|
||||||
previewer = true,
|
})
|
||||||
}
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local lazy_plugins = function()
|
local lazy_plugins = function()
|
||||||
@@ -159,9 +147,7 @@ K.nl('tn', ':Noice dismiss<cr>', 'Noice: Dismiss Notification')
|
|||||||
-- Convention is 'q' followed by the operation
|
-- Convention is 'q' followed by the operation
|
||||||
K.nl('qf', ':q<CR>', 'Quicker close split')
|
K.nl('qf', ':q<CR>', 'Quicker close split')
|
||||||
K.nl('qq', function()
|
K.nl('qq', function()
|
||||||
if vim.fn.confirm('Force save and quit?', '&Yes\n&No', 2) == 1 then
|
if vim.fn.confirm('Force save and quit?', '&Yes\n&No', 2) == 1 then vim.cmd 'wq!' end
|
||||||
vim.cmd 'wq!'
|
|
||||||
end
|
|
||||||
end, 'Quit with force saving')
|
end, 'Quit with force saving')
|
||||||
K.nl('qw', ':wq<CR>', 'Write and quit')
|
K.nl('qw', ':wq<CR>', 'Write and quit')
|
||||||
K.nl('qQ', function()
|
K.nl('qQ', function()
|
||||||
|
|||||||
@@ -77,10 +77,8 @@ function M.setup(opts)
|
|||||||
-- Set vim.g.node_host_prog and vim.g.copilot_node_command
|
-- Set vim.g.node_host_prog and vim.g.copilot_node_command
|
||||||
local current_nvm_version_path =
|
local current_nvm_version_path =
|
||||||
string.format('%s/versions/node/%s', nvm_path, node_version)
|
string.format('%s/versions/node/%s', nvm_path, node_version)
|
||||||
local current_nvm_node_bin_path =
|
local current_nvm_node_bin_path = string.format('%s/bin', current_nvm_version_path)
|
||||||
string.format('%s/bin', current_nvm_version_path)
|
local current_nvm_node_bin = string.format('%s/node', current_nvm_node_bin_path)
|
||||||
local current_nvm_node_bin =
|
|
||||||
string.format('%s/node', current_nvm_node_bin_path)
|
|
||||||
local neovim_node_host_bin_path =
|
local neovim_node_host_bin_path =
|
||||||
string.format('%s/neovim-node-host', current_nvm_node_bin_path)
|
string.format('%s/neovim-node-host', current_nvm_node_bin_path)
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ local a = vim.api -- A table to store API functions
|
|||||||
g.mapleader = ' ' -- Space as the leader key
|
g.mapleader = ' ' -- Space as the leader key
|
||||||
g.maplocalleader = ' ' -- Space as the local leader key
|
g.maplocalleader = ' ' -- Space as the local leader key
|
||||||
|
|
||||||
g.colors_theme = 'pencil' -- Set the colorscheme
|
g.colors_theme = 'onedark' -- Set the colorscheme
|
||||||
-- g.colors_variant_light = 'tokyonight-day' -- Set the light variant
|
-- g.colors_variant_light = 'tokyonight-day' -- Set the light variant
|
||||||
-- g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
|
-- g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
|
||||||
|
|
||||||
@@ -64,4 +64,7 @@ vim.schedule(function()
|
|||||||
o.clipboard = c
|
o.clipboard = c
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- xiyaowong/transparent.nvim
|
||||||
|
vim.g.transparent_enabled = true
|
||||||
|
|
||||||
-- vim: ts=2 sts=2 sw=2 et
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ return {
|
|||||||
-- https:/github.com/saghen/blink.cmp
|
-- https:/github.com/saghen/blink.cmp
|
||||||
{
|
{
|
||||||
'saghen/blink.cmp',
|
'saghen/blink.cmp',
|
||||||
version = '*',
|
version = '1.*',
|
||||||
lazy = false, -- lazy loading handled internally
|
lazy = false, -- lazy loading handled internally
|
||||||
dependencies = {
|
dependencies = {
|
||||||
-- Compatibility layer for using nvim-cmp sources on blink.cmp
|
-- Compatibility layer for using nvim-cmp sources on blink.cmp
|
||||||
@@ -58,10 +58,10 @@ return {
|
|||||||
-- '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
|
||||||
-- see the "default configuration" section below for full documentation on how to define
|
-- see the "default configuration" section below for full documentation on how to
|
||||||
-- your own keymap.
|
-- define your own keymap.
|
||||||
keymap = {
|
keymap = {
|
||||||
preset = 'super-tab',
|
preset = 'default',
|
||||||
-- Use Ctrl-x to trigger auto completion
|
-- Use Ctrl-x to trigger auto completion
|
||||||
['<C-x>'] = { 'show', 'show_documentation', 'hide_documentation' },
|
['<C-x>'] = { 'show', 'show_documentation', 'hide_documentation' },
|
||||||
},
|
},
|
||||||
@@ -86,7 +86,8 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
documentation = {
|
documentation = {
|
||||||
auto_show = true,
|
auto_show = false,
|
||||||
|
auto_show_delay_ms = 500,
|
||||||
},
|
},
|
||||||
ghost_text = {
|
ghost_text = {
|
||||||
enabled = false,
|
enabled = false,
|
||||||
@@ -97,12 +98,12 @@ 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',
|
||||||
|
'lazydev',
|
||||||
},
|
},
|
||||||
providers = {
|
providers = {
|
||||||
copilot = {
|
copilot = {
|
||||||
@@ -118,6 +119,15 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Blink.cmp includes an optional, recommended rust fuzzy matcher,
|
||||||
|
-- which automatically downloads a prebuilt binary when enabled.
|
||||||
|
--
|
||||||
|
-- By default, we use the Lua implementation instead, but you may enable
|
||||||
|
-- the rust implementation via `'prefer_rust_with_warning'`
|
||||||
|
--
|
||||||
|
-- See :h blink-cmp-config-fuzzy for more information
|
||||||
|
fuzzy = { implementation = 'lua' },
|
||||||
|
|
||||||
-- experimental signature help support
|
-- experimental signature help support
|
||||||
signature = { enabled = true },
|
signature = { enabled = true },
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,17 +1,9 @@
|
|||||||
return {
|
return {
|
||||||
-- A better annotation generator.
|
|
||||||
-- Supports multiple languages and annotation conventions.
|
|
||||||
-- https://github.com/danymat/neogen
|
|
||||||
{
|
|
||||||
'danymat/neogen',
|
|
||||||
version = '*',
|
|
||||||
opts = { enabled = true, snippet_engine = 'luasnip' },
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Terminal manager for (neo)vim
|
-- Terminal manager for (neo)vim
|
||||||
-- https://github.com/voldikss/vim-floaterm
|
-- https://github.com/voldikss/vim-floaterm
|
||||||
{
|
{
|
||||||
'voldikss/vim-floaterm',
|
'voldikss/vim-floaterm',
|
||||||
|
lazy = true,
|
||||||
cmd = { 'FloatermToggle' },
|
cmd = { 'FloatermToggle' },
|
||||||
init = function()
|
init = function()
|
||||||
vim.g.floaterm_width = 0.8
|
vim.g.floaterm_width = 0.8
|
||||||
@@ -49,34 +41,6 @@ return {
|
|||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Cloak allows you to overlay *'s over defined patterns in defined files.
|
|
||||||
-- https://github.com/laytan/cloak.nvim
|
|
||||||
{
|
|
||||||
'laytan/cloak.nvim',
|
|
||||||
version = '*',
|
|
||||||
opts = {
|
|
||||||
enabled = true,
|
|
||||||
cloak_character = '*',
|
|
||||||
-- The applied highlight group (colors) on the cloaking, see `:h highlight`.
|
|
||||||
highlight_group = 'Comment',
|
|
||||||
patterns = {
|
|
||||||
{
|
|
||||||
-- Match any file starting with ".env".
|
|
||||||
-- This can be a table to match multiple file patterns.
|
|
||||||
file_pattern = {
|
|
||||||
'.env*',
|
|
||||||
'wrangler.toml',
|
|
||||||
'.dev.vars',
|
|
||||||
},
|
|
||||||
-- Match an equals sign and any character after it.
|
|
||||||
-- This can also be a table of patterns to cloak,
|
|
||||||
-- example: cloak_pattern = { ":.+", "-.+" } for yaml files.
|
|
||||||
cloak_pattern = '=.+',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- projectionist.vim: Granular project configuration
|
-- projectionist.vim: Granular project configuration
|
||||||
-- https://github.com/tpope/vim-projectionist
|
-- https://github.com/tpope/vim-projectionist
|
||||||
{
|
{
|
||||||
@@ -150,21 +114,7 @@ return {
|
|||||||
{
|
{
|
||||||
'whatyouhide/vim-textobj-xmlattr',
|
'whatyouhide/vim-textobj-xmlattr',
|
||||||
dependencies = { 'kana/vim-textobj-user' },
|
dependencies = { 'kana/vim-textobj-user' },
|
||||||
},
|
ft = { 'html', 'xml', 'javascriptreact', 'typescriptreact', 'vue' },
|
||||||
|
|
||||||
-- Describe the regexp under the cursor
|
|
||||||
-- https://github.com/bennypowers/nvim-regexplainer
|
|
||||||
{
|
|
||||||
'bennypowers/nvim-regexplainer',
|
|
||||||
event = 'BufEnter',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
'MunifTanjim/nui.nvim',
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
-- automatically show the explainer when the cursor enters a regexp
|
|
||||||
auto = true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Clarify and beautify your comments using boxes and lines.
|
-- Clarify and beautify your comments using boxes and lines.
|
||||||
@@ -174,38 +124,4 @@ return {
|
|||||||
event = 'BufEnter',
|
event = 'BufEnter',
|
||||||
opts = {},
|
opts = {},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Plugin to improve viewing Markdown files in Neovim
|
|
||||||
-- https://github.com/MeanderingProgrammer/render-markdown.nvim
|
|
||||||
{
|
|
||||||
'MeanderingProgrammer/render-markdown.nvim',
|
|
||||||
event = 'BufEnter',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
'nvim-tree/nvim-web-devicons',
|
|
||||||
},
|
|
||||||
ft = 'markdown',
|
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
'ray-x/go.nvim',
|
|
||||||
dependencies = { -- optional packages
|
|
||||||
'ray-x/guihua.lua',
|
|
||||||
'neovim/nvim-lspconfig',
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
},
|
|
||||||
config = function() require('go').setup() end,
|
|
||||||
event = { 'CmdlineEnter' },
|
|
||||||
ft = { 'go', 'gomod' },
|
|
||||||
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',
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
66
config/nvim/lua/plugins/conform.lua
Normal file
66
config/nvim/lua/plugins/conform.lua
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'stevearc/conform.nvim',
|
||||||
|
event = 'BufWritePre',
|
||||||
|
config = function()
|
||||||
|
local conform = require 'conform'
|
||||||
|
|
||||||
|
conform.setup {
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = { 'stylua' },
|
||||||
|
},
|
||||||
|
format_on_save = function(bufnr)
|
||||||
|
-- Disable autoformat for files in a certain paths
|
||||||
|
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
if bufname:match '/dist|node_modules|vendor/' then return end
|
||||||
|
|
||||||
|
local disable_lsp = {
|
||||||
|
c = true,
|
||||||
|
cpp = true,
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
lsp_fallback = not disable_lsp[vim.bo[bufnr].filetype],
|
||||||
|
timeout_ms = 500,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
notify_on_error = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
||||||
|
|
||||||
|
-- Autoformat toggle keybinding
|
||||||
|
local autoformat = true
|
||||||
|
vim.g.autoformat_enabled = autoformat
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command('ToggleFormat', function()
|
||||||
|
autoformat = not autoformat
|
||||||
|
vim.g.autoformat_enabled = autoformat
|
||||||
|
vim.notify('Autoformat on save: ' .. (autoformat and 'enabled' or 'disabled'))
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'<leader>tf',
|
||||||
|
':ToggleFormat<CR>',
|
||||||
|
{ desc = 'Toggle autoformat on save' }
|
||||||
|
)
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('BufWritePre', {
|
||||||
|
callback = function(args)
|
||||||
|
if autoformat then
|
||||||
|
conform.format {
|
||||||
|
bufnr = args.buf,
|
||||||
|
async = true,
|
||||||
|
lsp_format = 'fallback',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Global statusline helper function
|
||||||
|
function _G.autoformat_status()
|
||||||
|
return vim.g.autoformat_enabled and '[ fmt:on]' or '[ fmt:off]'
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ return {
|
|||||||
-- A collection of small QoL plugins for Neovim
|
-- A collection of small QoL plugins for Neovim
|
||||||
-- https://github.com/folke/snacks.nvim
|
-- https://github.com/folke/snacks.nvim
|
||||||
{
|
{
|
||||||
|
---@module 'snacks'
|
||||||
'folke/snacks.nvim',
|
'folke/snacks.nvim',
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
lazy = false,
|
lazy = false,
|
||||||
@@ -21,7 +22,7 @@ return {
|
|||||||
right = { 'fold', 'git' }, -- priority of signs on the right (high to low)
|
right = { 'fold', 'git' }, -- priority of signs on the right (high to low)
|
||||||
folds = {
|
folds = {
|
||||||
open = true, -- show open fold icons
|
open = true, -- show open fold icons
|
||||||
git_hl = false, -- use Git Signs hl for fold icons
|
git_hl = true, -- use Git Signs hl for fold icons
|
||||||
},
|
},
|
||||||
git = {
|
git = {
|
||||||
-- patterns to match Git signs
|
-- patterns to match Git signs
|
||||||
@@ -42,6 +43,7 @@ return {
|
|||||||
-- replaces the UI for messages, cmdline and the popupmenu.
|
-- replaces the UI for messages, cmdline and the popupmenu.
|
||||||
-- https://github.com/folke/noice.nvim
|
-- https://github.com/folke/noice.nvim
|
||||||
{
|
{
|
||||||
|
---@module 'noice'
|
||||||
'folke/noice.nvim',
|
'folke/noice.nvim',
|
||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
@@ -122,10 +124,12 @@ return {
|
|||||||
-- trouble your code is causing.
|
-- trouble your code is causing.
|
||||||
-- https://github.com/folke/trouble.nvim
|
-- https://github.com/folke/trouble.nvim
|
||||||
{
|
{
|
||||||
|
---@module 'trouble'
|
||||||
'folke/trouble.nvim',
|
'folke/trouble.nvim',
|
||||||
lazy = false,
|
lazy = false,
|
||||||
cmd = 'Trouble',
|
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,
|
||||||
|
|||||||
@@ -4,359 +4,291 @@
|
|||||||
|
|
||||||
require 'utils'
|
require 'utils'
|
||||||
|
|
||||||
-- LSP Servers are installed and configured by lsp-setup.nvim
|
|
||||||
-- Mason formatters Conform uses to format files
|
|
||||||
-- These are automatically configured by zapling/mason-conform.nvim
|
|
||||||
local lsp_servers = {
|
|
||||||
bashls = {},
|
|
||||||
-- csharp_ls = {},
|
|
||||||
diagnosticls = {},
|
|
||||||
gopls = {
|
|
||||||
settings = {
|
|
||||||
gopls = {
|
|
||||||
hints = {
|
|
||||||
rangeVariableTypes = true,
|
|
||||||
parameterNames = true,
|
|
||||||
constantValues = true,
|
|
||||||
assignVariableTypes = true,
|
|
||||||
compositeLiteralFields = true,
|
|
||||||
compositeLiteralTypes = true,
|
|
||||||
functionTypeParameters = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
html = {},
|
|
||||||
intelephense = {
|
|
||||||
init_options = {
|
|
||||||
licenceKey = GetIntelephenseLicense(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
jsonls = {},
|
|
||||||
lua_ls = {
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
completion = {
|
|
||||||
callSnippet = 'Replace',
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
globals = {
|
|
||||||
'vim',
|
|
||||||
},
|
|
||||||
disable = {
|
|
||||||
-- Ignore lua_ls noisy `missing-fields` warnings
|
|
||||||
'missing-fields',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
hint = {
|
|
||||||
enable = true,
|
|
||||||
arrayIndex = 'Auto',
|
|
||||||
await = true,
|
|
||||||
paramName = 'All',
|
|
||||||
paramType = true,
|
|
||||||
semicolon = 'SameLine',
|
|
||||||
setType = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
tailwindcss = {},
|
|
||||||
ts_ls = {
|
|
||||||
settings = {
|
|
||||||
typescript = {
|
|
||||||
inlayHints = {
|
|
||||||
includeInlayParameterNameHints = 'all',
|
|
||||||
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
|
|
||||||
includeInlayFunctionParameterTypeHints = true,
|
|
||||||
includeInlayVariableTypeHints = true,
|
|
||||||
includeInlayVariableTypeHintsWhenTypeMatchesName = false,
|
|
||||||
includeInlayPropertyDeclarationTypeHints = true,
|
|
||||||
includeInlayFunctionLikeReturnTypeHints = true,
|
|
||||||
includeInlayEnumMemberValueHints = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
vimls = {},
|
|
||||||
volar = {
|
|
||||||
settings = {
|
|
||||||
typescript = {
|
|
||||||
inlayHints = {
|
|
||||||
enumMemberValues = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
functionLikeReturnTypes = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
propertyDeclarationTypes = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
parameterTypes = {
|
|
||||||
enabled = true,
|
|
||||||
suppressWhenArgumentMatchesName = true,
|
|
||||||
},
|
|
||||||
variableTypes = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Mason tools to automatically install and configure.
|
|
||||||
-- These are automatically configured by WhoIsSethDaniel/mason-tool-installer.nvim
|
|
||||||
local mason_tools = {
|
|
||||||
'actionlint',
|
|
||||||
'ast-grep',
|
|
||||||
'black',
|
|
||||||
'editorconfig-checker',
|
|
||||||
'goimports',
|
|
||||||
'golangci-lint',
|
|
||||||
'golines',
|
|
||||||
'gopls',
|
|
||||||
'gotests',
|
|
||||||
'isort',
|
|
||||||
'phpcbf',
|
|
||||||
'phpmd',
|
|
||||||
'phpstan',
|
|
||||||
'pint',
|
|
||||||
'prettierd',
|
|
||||||
'revive',
|
|
||||||
'semgrep',
|
|
||||||
'shellcheck',
|
|
||||||
'shfmt',
|
|
||||||
'sonarlint-language-server',
|
|
||||||
'staticcheck',
|
|
||||||
'stylua',
|
|
||||||
'trivy',
|
|
||||||
'vint',
|
|
||||||
'yamlfmt',
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
|
|
||||||
-- used for completion, annotations and signatures of Neovim apis
|
|
||||||
-- https://github.com/folke/lazydev.nvim
|
|
||||||
{
|
{
|
||||||
'folke/lazydev.nvim',
|
'neovim/nvim-lspconfig',
|
||||||
ft = 'lua',
|
dependencies = {
|
||||||
opts = {
|
{ 'williamboman/mason.nvim', opts = {} },
|
||||||
library = {
|
'williamboman/mason-lspconfig.nvim',
|
||||||
-- Load luvit types when the `vim.uv` word is found
|
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||||
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
|
||||||
-- load assert and describe paths
|
'folke/lazydev.nvim',
|
||||||
{ path = 'luassert/library', words = { 'assert' } },
|
'zapling/mason-conform.nvim',
|
||||||
{ path = 'busted/library', words = { 'describe' } },
|
|
||||||
},
|
-- Allows extra capabilities provided by blink.cmp
|
||||||
|
'saghen/blink.cmp',
|
||||||
},
|
},
|
||||||
},
|
config = function()
|
||||||
|
local lazydev = require 'lazydev'
|
||||||
|
|
||||||
-- Meta type definitions for the Lua platform Luvit.
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
-- https://github.com/Bilal2453/luvit-meta
|
group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }),
|
||||||
{ 'Bilal2453/luvit-meta', lazy = true },
|
callback = function(event)
|
||||||
|
local map = function(keys, func, desc, mode)
|
||||||
-- Quickstart configs for Nvim LSP
|
mode = mode or 'n'
|
||||||
-- https://github.com/neovim/nvim-lspconfig
|
vim.keymap.set(
|
||||||
{ 'neovim/nvim-lspconfig' },
|
mode,
|
||||||
|
keys,
|
||||||
-- Portable package manager for Neovim that runs everywhere Neovim runs.
|
func,
|
||||||
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
|
{ buffer = event.buf, desc = 'LSP: ' .. desc }
|
||||||
-- 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 = mason_tools,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- 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
|
|
||||||
-- to easily setup LSP servers.
|
|
||||||
-- https://github.com/junnplus/lsp-setup.nvim
|
|
||||||
{
|
|
||||||
'junnplus/lsp-setup.nvim',
|
|
||||||
opts = {
|
|
||||||
default_mappings = false,
|
|
||||||
servers = lsp_servers,
|
|
||||||
},
|
|
||||||
config = function(_, opts)
|
|
||||||
require('lazydev').setup()
|
|
||||||
require('lsp-setup').setup(opts)
|
|
||||||
local cmp = require 'blink.cmp'
|
|
||||||
local lspconfig = require 'lspconfig'
|
|
||||||
for server, config in pairs(opts.servers) do
|
|
||||||
-- passing config.capabilities to blink.cmp merges with the capabilities in your
|
|
||||||
-- `opts[server].capabilities, if you've defined it
|
|
||||||
config.capabilities = cmp.get_lsp_capabilities(config.capabilities)
|
|
||||||
lspconfig[server].setup(config)
|
|
||||||
end
|
|
||||||
|
|
||||||
lspconfig.lua_ls.on_init = function(client)
|
|
||||||
if client.workspace_folders then
|
|
||||||
local path = client.workspace_folders[1].name
|
|
||||||
if
|
|
||||||
vim.loop.fs_stat(path .. '/.luarc.json')
|
|
||||||
or vim.loop.fs_stat(path .. '/.luarc.jsonc')
|
|
||||||
then
|
|
||||||
return
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
client.config.settings.Lua =
|
local tsb = require 'telescope.builtin'
|
||||||
vim.tbl_deep_extend('force', client.config.settings.Lua, {
|
|
||||||
runtime = {
|
-- Rename the variable under your cursor.
|
||||||
-- Tell the language server which version of Lua you're using
|
-- Most Language Servers support renaming across files, etc.
|
||||||
-- (most likely LuaJIT in the case of Neovim)
|
map('<leader>grn', vim.lsp.buf.rename, '[R]e[n]ame')
|
||||||
version = 'LuaJIT',
|
|
||||||
},
|
-- Execute a code action, usually your cursor needs to be on top of an error
|
||||||
-- Make the server aware of Neovim runtime files
|
-- or a suggestion from your LSP for this to activate.
|
||||||
workspace = {
|
map(
|
||||||
checkThirdParty = false,
|
'<leader>gra',
|
||||||
library = {
|
vim.lsp.buf.code_action,
|
||||||
vim.env.VIMRUNTIME,
|
'[G]oto Code [A]ction',
|
||||||
|
{ 'n', 'x' }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Find references for the word under your cursor.
|
||||||
|
map('<leader>grr', tsb.lsp_references, '[G]oto [R]eferences')
|
||||||
|
|
||||||
|
-- Jump to the implementation of the word under your cursor.
|
||||||
|
-- Useful when your language has ways of declaring types without
|
||||||
|
-- an actual implementation.
|
||||||
|
map('<leader>gri', tsb.lsp_implementations, '[G]oto [I]mplementation')
|
||||||
|
|
||||||
|
-- Jump to the definition of the word under your cursor.
|
||||||
|
-- This is where a variable was first declared, or where a function is
|
||||||
|
-- defined, etc. To jump back, press <C-t>.
|
||||||
|
map('<leader>grd', tsb.lsp_definitions, '[G]oto [D]efinition')
|
||||||
|
|
||||||
|
-- WARN: This is not Goto Definition, this is Goto Declaration.
|
||||||
|
-- For example, in C this would take you to the header.
|
||||||
|
map('<leader>grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
||||||
|
|
||||||
|
-- Fuzzy find all the symbols in your current document.
|
||||||
|
-- Symbols are things like variables, functions, types, etc.
|
||||||
|
map('<leader>gO', tsb.lsp_document_symbols, 'Open Document Symbols')
|
||||||
|
|
||||||
|
-- Fuzzy find all the symbols in your current workspace.
|
||||||
|
-- Similar to document symbols, except searches over your entire project.
|
||||||
|
map('<leader>gW', tsb.lsp_dynamic_workspace_symbols, 'Open Workspace Symbols')
|
||||||
|
|
||||||
|
-- Jump to the type of the word under your cursor.
|
||||||
|
-- Useful when you're not sure what type a variable is and you want to see
|
||||||
|
-- the definition of its *type*, not where it was *defined*.
|
||||||
|
map('<leader>grt', tsb.lsp_type_definitions, '[G]oto [T]ype Definition')
|
||||||
|
|
||||||
|
-- This function resolves a difference between neovim nightly
|
||||||
|
-- (version 0.11) and stable (version 0.10)
|
||||||
|
---@param client vim.lsp.Client
|
||||||
|
---@param method vim.lsp.protocol.Method
|
||||||
|
---@param bufnr? integer some lsp support methods only in specific files
|
||||||
|
---@return boolean
|
||||||
|
local function client_supports_method(client, method, bufnr)
|
||||||
|
if vim.fn.has 'nvim-0.11' == 1 then
|
||||||
|
return client:supports_method(method, bufnr)
|
||||||
|
else
|
||||||
|
---@diagnostic disable-next-line: param-type-mismatch
|
||||||
|
return client.supports_method(method, { bufnr = bufnr })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The following two autocommands are used to highlight references of the
|
||||||
|
-- word under your cursor when your cursor rests there for a little while.
|
||||||
|
-- See `:help CursorHold` for information about when this is executed
|
||||||
|
--
|
||||||
|
-- When you move your cursor, the highlights will be cleared
|
||||||
|
-- (the second autocommand).
|
||||||
|
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||||
|
if
|
||||||
|
client
|
||||||
|
and client_supports_method(
|
||||||
|
client,
|
||||||
|
vim.lsp.protocol.Methods.textDocument_documentHighlight,
|
||||||
|
event.buf
|
||||||
|
)
|
||||||
|
then
|
||||||
|
local highlight_augroup =
|
||||||
|
vim.api.nvim_create_augroup('lsp-highlight', { clear = false })
|
||||||
|
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||||
|
buffer = event.buf,
|
||||||
|
group = highlight_augroup,
|
||||||
|
callback = vim.lsp.buf.document_highlight,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
|
||||||
|
buffer = event.buf,
|
||||||
|
group = highlight_augroup,
|
||||||
|
callback = vim.lsp.buf.clear_references,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('LspDetach', {
|
||||||
|
group = vim.api.nvim_create_augroup('lsp-detach', { clear = true }),
|
||||||
|
callback = function(event2)
|
||||||
|
vim.lsp.buf.clear_references()
|
||||||
|
vim.api.nvim_clear_autocmds {
|
||||||
|
group = 'lsp-highlight',
|
||||||
|
buffer = event2.buf,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Diagnostic Config
|
||||||
|
-- See :help vim.diagnostic.Opts
|
||||||
|
vim.diagnostic.config {
|
||||||
|
severity_sort = true,
|
||||||
|
float = { border = 'rounded', source = 'if_many' },
|
||||||
|
underline = { severity = vim.diagnostic.severity.ERROR },
|
||||||
|
signs = vim.g.have_nerd_font and {
|
||||||
|
text = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = ' ',
|
||||||
|
[vim.diagnostic.severity.WARN] = ' ',
|
||||||
|
[vim.diagnostic.severity.INFO] = ' ',
|
||||||
|
[vim.diagnostic.severity.HINT] = ' ',
|
||||||
|
},
|
||||||
|
} or {},
|
||||||
|
virtual_text = {
|
||||||
|
source = 'if_many',
|
||||||
|
spacing = 2,
|
||||||
|
format = function(diagnostic)
|
||||||
|
local diagnostic_message = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = diagnostic.message,
|
||||||
|
[vim.diagnostic.severity.WARN] = diagnostic.message,
|
||||||
|
[vim.diagnostic.severity.INFO] = diagnostic.message,
|
||||||
|
[vim.diagnostic.severity.HINT] = diagnostic.message,
|
||||||
|
}
|
||||||
|
return diagnostic_message[diagnostic.severity]
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local capabilities = require('blink.cmp').get_lsp_capabilities()
|
||||||
|
|
||||||
|
local servers = {
|
||||||
|
ansiblels = {},
|
||||||
|
ast_grep = {},
|
||||||
|
bashls = {},
|
||||||
|
cssls = {},
|
||||||
|
dockerls = {},
|
||||||
|
gopls = {
|
||||||
|
settings = {
|
||||||
|
gopls = {
|
||||||
|
hints = {
|
||||||
|
assignVariableTypes = true,
|
||||||
|
compositeLiteralFields = true,
|
||||||
|
compositeLiteralTypes = true,
|
||||||
|
constantValues = true,
|
||||||
|
functionTypeParameters = true,
|
||||||
|
parameterNames = true,
|
||||||
|
rangeVariableTypes = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
|
||||||
end
|
|
||||||
lspconfig.jsonls.settings = {
|
|
||||||
json = {
|
|
||||||
schemas = require('schemastore').json.schemas(),
|
|
||||||
validate = { enable = true },
|
|
||||||
},
|
|
||||||
yaml = {
|
|
||||||
schemaStore = {
|
|
||||||
-- You must disable built-in SchemaStore support if you want to use
|
|
||||||
-- this plugin and its advanced options like `ignore`.
|
|
||||||
enable = false,
|
|
||||||
-- Avoid TypeError: Cannot read properties of undefined (reading 'length')
|
|
||||||
url = '',
|
|
||||||
},
|
},
|
||||||
schemas = require('schemastore').yaml.schemas(),
|
},
|
||||||
validate = { enable = true },
|
html = {},
|
||||||
|
intelephense = {
|
||||||
|
init_options = {
|
||||||
|
licenceKey = vim.env.INTELEPHENSE_LICENSE or GetIntelephenseLicense() or nil,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
jsonls = {},
|
||||||
|
lua_ls = {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = {
|
||||||
|
globals = { 'vim' },
|
||||||
|
disable = { 'missing-fields' },
|
||||||
|
},
|
||||||
|
completion = { callSnippet = 'Replace' },
|
||||||
|
workspace = { checkThirdParty = true },
|
||||||
|
hint = {
|
||||||
|
enable = true,
|
||||||
|
arrayIndex = 'Auto',
|
||||||
|
await = true,
|
||||||
|
paramName = 'All',
|
||||||
|
paramType = true,
|
||||||
|
semicolon = 'SameLine',
|
||||||
|
setType = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
on_init = function(client)
|
||||||
|
client.config.settings.Lua.workspace.library = {
|
||||||
|
vim.env.VIMRUNTIME,
|
||||||
|
}
|
||||||
|
client.config.settings.Lua.runtime = { version = 'LuaJIT' }
|
||||||
|
client.notify(
|
||||||
|
'workspace/didChangeConfiguration',
|
||||||
|
{ settings = client.config.settings }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
omnisharp = {}, -- C# OmniSharp (will respect EditorConfig for formatting)
|
||||||
|
pyright = {},
|
||||||
|
tailwindcss = {},
|
||||||
|
terraformls = {},
|
||||||
|
ts_ls = {},
|
||||||
|
vimls = {},
|
||||||
|
eslint = {},
|
||||||
|
yamlls = {
|
||||||
|
settings = {
|
||||||
|
yaml = {
|
||||||
|
keyOrdering = false, -- don't auto-sort YAML keys on format
|
||||||
|
schemaStore = { enable = true }, -- use JSON Schema Store for validation
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Diagnostic configuration
|
local ensure_installed = vim.tbl_keys(servers or {})
|
||||||
local signs = {
|
vim.list_extend(ensure_installed, {
|
||||||
{ name = 'DiagnosticSignError', text = '' }, -- Error icon
|
'actionlint', -- GitHub Actions linter
|
||||||
{ name = 'DiagnosticSignWarn', text = '' }, -- Warning icon
|
'shfmt', -- Shell formatter
|
||||||
{ name = 'DiagnosticSignHint', text = '' }, -- Hint icon
|
'stylua', -- Lua formatter
|
||||||
{ name = 'DiagnosticSignInfo', text = '' }, -- Information icon
|
'shellcheck', -- Shell linter
|
||||||
|
})
|
||||||
|
|
||||||
|
require('mason-tool-installer').setup {
|
||||||
|
auto_install = true,
|
||||||
|
auto_update = true,
|
||||||
|
ensure_installed = ensure_installed,
|
||||||
}
|
}
|
||||||
|
|
||||||
local function ensure_sign_defined(name, sign_opts)
|
require('mason-conform').setup {
|
||||||
if vim.tbl_isempty(vim.fn.sign_getdefined(name)) then
|
ensure_installed = ensure_installed,
|
||||||
vim.fn.sign_define(name, sign_opts)
|
}
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, sign in ipairs(signs) do
|
require('mason-lspconfig').setup {
|
||||||
ensure_sign_defined(sign.name, {
|
ensure_installed = {}, -- explicitly set to an empty table
|
||||||
text = sign.text,
|
automatic_enable = true,
|
||||||
texthl = sign.texthl or sign.name,
|
automatic_installation = false,
|
||||||
numhl = sign.numhl or sign.name,
|
handlers = {
|
||||||
})
|
function(server_name)
|
||||||
end
|
local server = servers[server_name] or {}
|
||||||
|
server.capabilities =
|
||||||
---@type vim.diagnostic.Opts
|
vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
||||||
local diagnostics_config = {
|
require('lspconfig')[server_name].setup(server)
|
||||||
signs = {
|
end,
|
||||||
active = signs, -- show signs
|
|
||||||
},
|
},
|
||||||
update_in_insert = false,
|
|
||||||
underline = true,
|
|
||||||
severity_sort = true,
|
|
||||||
virtual_text = true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vim.diagnostic.config(diagnostics_config)
|
lazydev.setup {
|
||||||
|
---@type boolean|(fun(root:string):boolean?)
|
||||||
-- end of junnplus/lsp-setup config
|
enabled = true,
|
||||||
|
debug = false,
|
||||||
|
runtime = vim.env.VIMRUNTIME --[[@as string]],
|
||||||
|
library = {
|
||||||
|
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
|
||||||
|
},
|
||||||
|
integrations = {
|
||||||
|
lspconfig = true,
|
||||||
|
cmp = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Lightweight yet powerful formatter plugin for Neovim
|
|
||||||
-- https://github.com/stevearc/conform.nvim
|
|
||||||
{
|
|
||||||
'stevearc/conform.nvim',
|
|
||||||
event = { 'BufWritePre' },
|
|
||||||
cmd = { 'ConformInfo' },
|
|
||||||
opts = {
|
|
||||||
notify_on_error = false,
|
|
||||||
---@type nil|conform.FormatOpts|fun(bufnr: integer): nil|conform.FormatOpts
|
|
||||||
format_on_save = function(bufnr)
|
|
||||||
-- Disable "format_on_save lsp_fallback" for languages that don't
|
|
||||||
-- have a well standardized coding style. You can add additional
|
|
||||||
-- languages here or re-enable it for the disabled ones.
|
|
||||||
local disable_filetypes = { c = true, cpp = true }
|
|
||||||
local lsp_format_opt
|
|
||||||
if disable_filetypes[vim.bo[bufnr].filetype] then
|
|
||||||
lsp_format_opt = 'never'
|
|
||||||
else
|
|
||||||
lsp_format_opt = 'fallback'
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Disable autoformat for files in a certain paths
|
|
||||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
|
||||||
if bufname:match '/dist|node_modules|vendor/' then return end
|
|
||||||
|
|
||||||
return {
|
|
||||||
timeout_ms = 500,
|
|
||||||
lsp_format = lsp_format_opt,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
formatters_by_ft = {
|
|
||||||
lua = { 'stylua' },
|
|
||||||
sh = { 'shfmt' },
|
|
||||||
bash = { 'shfmt' },
|
|
||||||
php = { 'phpcbf' },
|
|
||||||
python = { 'isort', 'black' },
|
|
||||||
-- Conform can also run multiple formatters sequentially
|
|
||||||
-- python = { "isort", "black" },
|
|
||||||
--
|
|
||||||
-- You can use 'stop_after_first' to run the first available formatter from the list
|
|
||||||
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
init = function()
|
|
||||||
-- If you want the formatexpr, here is the place to set it
|
|
||||||
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
-- Automatically install formatters registered with conform.nvim via mason.nvim
|
|
||||||
-- https://github.com/zapling/mason-conform.nvim
|
|
||||||
{ 'zapling/mason-conform.nvim', opts = {} },
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,42 @@ return {
|
|||||||
version = '*',
|
version = '*',
|
||||||
priority = 1001,
|
priority = 1001,
|
||||||
config = function()
|
config = function()
|
||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ Text editing │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- Better Around/Inside textobjects
|
||||||
|
-- Examples:
|
||||||
|
-- - va) - [V]isually select [A]round [)]paren
|
||||||
|
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
|
||||||
|
-- - ci' - [C]hange [I]nside [']quote
|
||||||
|
require('mini.ai').setup { n_lines = 500 }
|
||||||
|
|
||||||
|
-- Comment lines
|
||||||
|
require('mini.comment').setup()
|
||||||
|
|
||||||
|
-- Text edit operators
|
||||||
|
-- g= - Evaluate text and replace with output
|
||||||
|
-- gx - Exchange text regions
|
||||||
|
-- gm - Multiply (duplicate) text
|
||||||
|
-- gr - Replace text with register
|
||||||
|
-- gs - Sort text
|
||||||
|
require('mini.operators').setup()
|
||||||
|
|
||||||
|
-- Split and join arguments, lists, and other sequences
|
||||||
|
require('mini.splitjoin').setup()
|
||||||
|
|
||||||
|
-- Fast and feature-rich surround actions
|
||||||
|
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
|
||||||
|
-- - sd' - [S]urround [D]elete [']quotes
|
||||||
|
-- - sr)' - [S]urround [R]eplace [)] [']
|
||||||
|
-- - sff - find right (`sf`) part of surrounding function call (`f`)
|
||||||
|
require('mini.surround').setup()
|
||||||
|
|
||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ General workflow │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
-- Presets for common options and mappings
|
-- Presets for common options and mappings
|
||||||
-- h: MiniBasics.config
|
-- h: MiniBasics.config
|
||||||
require('mini.basics').setup {
|
require('mini.basics').setup {
|
||||||
@@ -25,25 +61,12 @@ return {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Better Around/Inside textobjects
|
|
||||||
--
|
|
||||||
-- Examples:
|
|
||||||
-- - va) - [V]isually select [A]round [)]paren
|
|
||||||
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
|
|
||||||
-- - ci' - [C]hange [I]nside [']quote
|
|
||||||
require('mini.ai').setup { n_lines = 500 }
|
|
||||||
|
|
||||||
-- Animate common Neovim actions
|
|
||||||
-- Replaced anuvyklack/windows.nvim
|
|
||||||
require('mini.animate').setup()
|
|
||||||
|
|
||||||
-- Buffer removing (unshow, delete, wipeout), which saves window layout
|
-- Buffer removing (unshow, delete, wipeout), which saves window layout
|
||||||
-- Replaced famiu/bufdelete.nvim
|
|
||||||
require('mini.bufremove').setup()
|
require('mini.bufremove').setup()
|
||||||
|
|
||||||
-- Show next key clues
|
-- Show next key clues
|
||||||
-- Replaced folke/which-key.nvim
|
|
||||||
local miniclue = require 'mini.clue'
|
local miniclue = require 'mini.clue'
|
||||||
|
---@modules mini.clue
|
||||||
miniclue.setup {
|
miniclue.setup {
|
||||||
window = {
|
window = {
|
||||||
config = {
|
config = {
|
||||||
@@ -108,22 +131,30 @@ return {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Comment lines
|
|
||||||
-- Replaced numToStr/Comment.nvim
|
|
||||||
require('mini.comment').setup()
|
|
||||||
|
|
||||||
-- Highlight cursor word and its matches
|
|
||||||
require('mini.cursorword').setup()
|
|
||||||
|
|
||||||
-- Work with diff hunks
|
-- Work with diff hunks
|
||||||
-- Replaced lewis6991/gitsigns.nvim
|
|
||||||
require('mini.diff').setup()
|
require('mini.diff').setup()
|
||||||
|
|
||||||
-- Git integration
|
-- Git integration
|
||||||
require('mini.git').setup()
|
require('mini.git').setup()
|
||||||
|
|
||||||
|
-- Session management (read, write, delete)
|
||||||
|
require('mini.sessions').setup {
|
||||||
|
autowrite = true,
|
||||||
|
directory = vim.g.sessions_dir or vim.fn.stdpath 'data' .. '/sessions',
|
||||||
|
file = '',
|
||||||
|
}
|
||||||
|
|
||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ Appearance │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- Animate common Neovim actions
|
||||||
|
require('mini.animate').setup()
|
||||||
|
|
||||||
|
-- Highlight cursor word and its matches
|
||||||
|
require('mini.cursorword').setup()
|
||||||
|
|
||||||
-- Highlight patterns in text
|
-- Highlight patterns in text
|
||||||
-- Replaced folke/todo-comments.nvim
|
|
||||||
local hp = require 'mini.hipatterns'
|
local hp = require 'mini.hipatterns'
|
||||||
hp.setup {
|
hp.setup {
|
||||||
highlighters = {
|
highlighters = {
|
||||||
@@ -170,36 +201,16 @@ return {
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- Visualize and work with indent scope
|
-- Visualize and work with indent scope
|
||||||
-- Replaced lukas-reineke/indent-blankline.nvim
|
|
||||||
require('mini.indentscope').setup()
|
require('mini.indentscope').setup()
|
||||||
|
|
||||||
-- Text edit operators
|
|
||||||
-- g= - Evaluate text and replace with output
|
|
||||||
-- gx - Exchange text regions
|
|
||||||
-- gm - Multiply (duplicate) text
|
|
||||||
-- gr - Replace text with register
|
|
||||||
-- gs - Sort text
|
|
||||||
require('mini.operators').setup()
|
|
||||||
|
|
||||||
-- Session management (read, write, delete)
|
|
||||||
require('mini.sessions').setup {
|
|
||||||
autowrite = true,
|
|
||||||
directory = vim.g.sessions_dir or vim.fn.stdpath 'data' .. '/sessions',
|
|
||||||
file = '',
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Split and join arguments, lists, and other sequences
|
|
||||||
-- Replaced Wansmer/treesj
|
|
||||||
require('mini.splitjoin').setup()
|
|
||||||
|
|
||||||
-- Fast and flexible start screen
|
-- Fast and flexible start screen
|
||||||
-- Replaced glepnir/dashboard-nvim
|
|
||||||
local starter = require 'mini.starter'
|
local starter = require 'mini.starter'
|
||||||
|
---@modules mini.starter
|
||||||
starter.setup {
|
starter.setup {
|
||||||
items = {
|
items = {
|
||||||
starter.sections.telescope(),
|
starter.sections.telescope(),
|
||||||
starter.sections.builtin_actions(),
|
starter.sections.builtin_actions(),
|
||||||
starter.sections.sessions(5, true),
|
starter.sections.recent_files(5),
|
||||||
},
|
},
|
||||||
content_hooks = {
|
content_hooks = {
|
||||||
starter.gen_hook.adding_bullet(),
|
starter.gen_hook.adding_bullet(),
|
||||||
@@ -209,25 +220,38 @@ return {
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- Minimal and fast statusline module with opinionated default look
|
-- Minimal and fast statusline module with opinionated default look
|
||||||
-- Replaced nvim-lualine/lualine.nvim
|
|
||||||
local sl = require 'mini.statusline'
|
local sl = require 'mini.statusline'
|
||||||
|
---@modules mini.statusline
|
||||||
sl.setup {
|
sl.setup {
|
||||||
use_icons = true,
|
use_icons = true,
|
||||||
set_vim_settings = true,
|
set_vim_settings = true,
|
||||||
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 = 100 }
|
||||||
local git = sl.section_git { trunc_width = 9999 }
|
local git = sl.section_git { trunc_width = 40 }
|
||||||
local diagnostics = sl.section_diagnostics { trunc_width = 9999 }
|
local diagnostics = sl.section_diagnostics {
|
||||||
local filename = sl.section_filename { trunc_width = 9999 }
|
trunc_width = 75,
|
||||||
|
signs = {
|
||||||
|
ERROR = 'E ',
|
||||||
|
WARN = 'W ',
|
||||||
|
INFO = 'I ',
|
||||||
|
HINT = 'H ',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
local lsp = MiniStatusline.section_lsp { trunc_width = 75 }
|
||||||
|
local filename = sl.section_filename { trunc_width = 140 }
|
||||||
local fileinfo = sl.section_fileinfo { trunc_width = 9999 }
|
local fileinfo = sl.section_fileinfo { trunc_width = 9999 }
|
||||||
local location = sl.section_location { trunc_width = 9999 }
|
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 = 'MiniStatuslineDevinfo',
|
||||||
|
strings = { git, lsp },
|
||||||
|
},
|
||||||
'%<', -- Mark general truncate point
|
'%<', -- Mark general truncate point
|
||||||
{ hl = 'statuslineFilename', strings = { filename } },
|
{ hl = 'statuslineFilename', strings = { filename } },
|
||||||
'%=', -- End left alignment
|
'%=', -- End left alignment
|
||||||
|
{ hl = 'statuslineFileinfo', strings = { diagnostics } },
|
||||||
{ hl = 'statuslineFileinfo', strings = { fileinfo } },
|
{ hl = 'statuslineFileinfo', strings = { fileinfo } },
|
||||||
{ hl = mode_hl, strings = { location } },
|
{ hl = mode_hl, strings = { location } },
|
||||||
}
|
}
|
||||||
@@ -235,13 +259,6 @@ return {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Fast and feature-rich surround actions
|
|
||||||
-- Replaced kylechui/nvim-surround
|
|
||||||
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
|
|
||||||
-- - sd' - [S]urround [D]elete [']quotes
|
|
||||||
-- - sr)' - [S]urround [R]eplace [)] [']
|
|
||||||
require('mini.surround').setup()
|
|
||||||
|
|
||||||
-- Work with trailing whitespace
|
-- Work with trailing whitespace
|
||||||
require('mini.trailspace').setup()
|
require('mini.trailspace').setup()
|
||||||
end,
|
end,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user