Compare commits

...

177 Commits

Author SHA1 Message Date
be8a6761af test: expand version comparison tests (#118) 2025-06-04 12:12:55 +03:00
c348f3625f chore(lint): fix replacable helper typo (#116)
* Fix typo in replaceable helper

* chore(docs): add docstrings to `codex/rename-replacable-to-replaceable-and-update-references` (#117)

Docstrings generation was requested by @ivuorinen.

* https://github.com/ivuorinen/dotfiles/pull/116#issuecomment-2938946257

The following files were modified:

* `scripts/install-cheat-purebashbible.sh`

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-06-04 11:00:42 +03:00
094f19c99c chore(config): tweak yabai config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-06-03 13:58:04 +03:00
5a23ae8f01 chore(config): nvim tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-06-03 13:57:01 +03:00
github-actions[bot]
ee47821089 chore: update pre-commit hooks (#115) 2025-06-02 08:16:06 +03:00
github-actions[bot]
b834ce04f7 chore: update pre-commit hooks (#114) 2025-05-29 14:54:33 +03:00
github-actions[bot]
6a62d73d7f chore: update pre-commit hooks (#113) 2025-05-26 13:15:01 +03:00
github-actions[bot]
440842ed34 chore: update pre-commit hooks (#112) 2025-05-22 08:29:51 +03:00
renovate[bot]
d0563e4a29 chore(deps): update node.js to v22.16.0 (#111) 2025-05-22 01:11:53 +03:00
github-actions[bot]
bc404bfbea chore: update pre-commit hooks (#110) 2025-05-19 08:27:54 +03:00
923f881725 chore(config): change git merge conflictStyle 2025-05-16 21:50:29 +03:00
ccc5903290 chore(config): updated zed settings
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-05-16 21:49:55 +03:00
renovate[bot]
786efc48fa chore(deps): update node.js to v22.15.1 (#109) 2025-05-15 20:09:12 +03:00
2a11a28422 chore(repo): tweak install.conf.yaml
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-05-15 16:39:15 +03:00
812a27ea61 chore(config): updated zed settings
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-05-15 16:38:49 +03:00
e73e61f01b chore(config): added git-profile completions
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-05-15 16:38:23 +03:00
314679b4fc chore(deps): updated Brewfile
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-05-15 16:37:59 +03:00
github-actions[bot]
516b27384a chore: update pre-commit hooks (#108)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-05-12 12:28:03 +03:00
github-actions[bot]
9e1af3053d chore: update pre-commit hooks (#107)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-05-08 09:51:32 +03:00
github-actions[bot]
9e4f8741b3 chore: update pre-commit hooks (#106)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-05-05 11:37:52 +03:00
c0995c1b49 chore(config): zed: settings update 2025-05-03 02:32:38 +03:00
c9f1e824c3 chore(bin): fish support shared.sh and dfm 2025-05-03 02:32:01 +03:00
3d301daeb1 chore: remove x-dupers.pl 2025-05-03 02:29:48 +03:00
8b4198dc90 chore(lint): shfmt local/bin/* 2025-05-03 02:15:04 +03:00
66461f9b1b chore(config): zed: update config 2025-05-03 02:14:19 +03:00
80851d1efd chore(config): vim: fix ctrl-s, ctrl-p 2025-05-03 02:13:45 +03:00
github-actions[bot]
c457c0f3ab chore: update pre-commit hooks (#105)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-05-01 11:15:18 +03:00
9936e4bd76 chore(config): reorg of mini plugins
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-29 18:08:23 +03:00
c3a45e2653 chore(deps): update Brewfile
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-29 18:08:00 +03:00
506360a027 chore(config): fish: config cleanup, fixes
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-29 18:07:50 +03:00
github-actions[bot]
00074ec3ff chore: update pre-commit hooks (#104) 2025-04-28 18:53:17 +03:00
renovate[bot]
7c7daf89ea feat(github-action): update actions/setup-python (v5.5.0 → v5.6.0)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-24 21:49:51 +00:00
renovate[bot]
267c54aa56 chore(deps): update node.js to v22.15.0 (#102) 2025-04-24 09:09:01 +03:00
github-actions[bot]
d72409efc0 chore: update pre-commit hooks (#103) 2025-04-24 08:48:35 +03:00
3d9e0477b0 feat(bin): git-attributes rewrite 2025-04-22 10:11:32 +03:00
cfab48eee0 chore(config): zed config mode change 2025-04-22 10:08:12 +03:00
624920b2ab chore(config): nvim, tmux and wezterm tweaks 2025-04-22 10:07:34 +03:00
github-actions[bot]
fd82f1e36c chore: update pre-commit hooks (#101) 2025-04-21 14:23:31 +03:00
dependabot[bot]
48ec8cd7a7 chore(deps): bump http-proxy-middleware (#100) 2025-04-19 13:10:01 +03:00
renovate[bot]
3a61bd2b72 fix(github-action): update softprops/action-gh-release (v2.2.1 → v2.2.2)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-19 04:34:26 +00:00
895b0ad353 chore(config): aqua: remove extra tools
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:12:58 +03:00
3c733ec7eb chore(config): tmux: tweak theme
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:12:36 +03:00
5321ad7bd7 feat(config): fish formatting, secrets, op
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:11:14 +03:00
196077bea9 feat(nvim): reworked lsp, theme, cleanup
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-19 04:04:26 +03:00
github-actions[bot]
75147c7dd6 chore: update pre-commit hooks (#99) 2025-04-17 07:30:06 +03:00
f28ad41f67 chore(bin): remove zalgo-text.swift 2025-04-15 21:05:14 +03:00
61b66d3114 chore: removed yabai bin from repository 2025-04-15 21:00:40 +03:00
282f760a4f chore(lint): shfmt 2025-04-15 21:00:19 +03:00
4a9c9b4cb9 feat(bin): rewrote git-update-dirs 2025-04-15 20:59:50 +03:00
16311ee5b4 feat(bin): rewrote git-fsck-dirs 2025-04-15 15:39:01 +03:00
2fddfa82c0 feat(bin): rewrote git-dirty with additional feats 2025-04-15 14:02:44 +03:00
8f5f44db2d feat(bin): x-gh-get-latest-version improvements 2025-04-14 14:45:20 +03:00
8ad1f5c4d0 chore(docs): bin/README.md tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:25:43 +03:00
ac0aa1fbc0 feat(bin): php-switcher for Brew based version changes
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:25:18 +03:00
e8c6794ff6 chore(repo): ignore yabai from repo
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:24:20 +03:00
4de9a649f0 chore(config): update zed config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-14 10:23:50 +03:00
github-actions[bot]
e7f115680e chore: update pre-commit hooks (#98)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-04-14 09:06:55 +03:00
f3b4551d0c chore(config): ideavim config 2025-04-11 16:31:59 +03:00
64725c57dc chore(config): fish config tweaks 2025-04-11 16:31:58 +03:00
b32ee414e3 chore(config): tweak yabai config 2025-04-11 16:31:58 +03:00
renovate[bot]
6ea7807718 fix(container): update image python (3.13.2 → 3.13.3) (#97) 2025-04-10 22:14:50 +03:00
6a776bd3dd chore(config): nvim: cleanup and fixes
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-04 16:34:08 +03:00
6ffe581326 feat(config): use nvm with bass, simplify setup
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-04 16:33:32 +03:00
5d476e8eed chore(config): add tmux-resurrect back
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-04-03 09:39:15 +03:00
github-actions[bot]
bf84c67f08 chore: update pre-commit hooks (#96)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-04-03 07:54:08 +03:00
9cb400dd3f chore(config): docker completions for fish 2025-04-02 18:23:14 +03:00
fce649619a chore(config): remove double init for pyenv 2025-04-02 18:22:59 +03:00
8b0148e468 chore: fish: migrate back to nvm 2025-04-02 18:22:38 +03:00
9cb27eb9dc chore(deps): yarn package update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:06:27 +03:00
f1ed88a98e chore(config): vim plug update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:05:57 +03:00
ec35f1cb1e chore(config): wezterm font and config tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:05:44 +03:00
dab8504cfd chore(deps): Brewfile update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:05:09 +03:00
0f9a76e36f chore(config): nvim config tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-31 21:04:50 +03:00
github-actions[bot]
97244d5287 chore: update pre-commit hooks (#95)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-31 09:09:46 +03:00
50ea9bea89 fix(config): nvim theme tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-28 09:47:53 +02:00
688469ad8b chore(config): wezterm font is now Operator Mono
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-28 09:47:21 +02:00
github-actions[bot]
af32914d71 chore: update pre-commit hooks (#94) 2025-03-27 06:44:56 +02:00
renovate[bot]
840bd85232 feat(github-action): update actions/setup-python (v5.4.0 → v5.5.0)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-25 20:42:22 +00:00
c81ee240bf chore: tweaks to node version, fnm init
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-25 15:27:33 +02:00
e215fe0a2f feat(config): switch (n)vim colorscheme to pencil
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-25 15:27:07 +02:00
38e340ac8d chore(fix): goenvrc, fish alternative 2025-03-25 00:32:00 +02:00
c9383f955c chore(nvim): tweak nvm-default
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 16:04:28 +02:00
8eeaea802a chore(config): better git configs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:50:22 +02:00
d626731736 chore(config): fish and goenv configs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:49:23 +02:00
e459cd99e7 chore(deps): update brew bundle
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:49:00 +02:00
3e4391adda chore(config): vim: split config, tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 15:47:32 +02:00
a6400943d2 chore(lint): fish_indent
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 10:53:48 +02:00
5ec8e89641 chore(config): fish: remove jorgebucaran/nvm.fish
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-24 10:48:42 +02:00
github-actions[bot]
115dac4fb4 chore: update pre-commit hooks (#93) 2025-03-24 06:41:13 +02:00
github-actions[bot]
405e2d5c77 chore: update pre-commit hooks (#92) 2025-03-20 19:08:58 +02:00
535925aeaf feat: aqua package manager
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-20 16:03:09 +02:00
renovate[bot]
7fa29ae3d6 fix(github-action): update reviewdog/action-shfmt (v1.0.2 → v1.0.4)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 04:06:58 +00:00
renovate[bot]
b1a01b6717 fix(github-action): update reviewdog/action-markdownlint (v0.26.0 → v0.26.2)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 00:45:57 +00:00
renovate[bot]
b9d2ee01ed fix(github-action): update reviewdog/action-actionlint (v1.65.0 → v1.65.2)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 20:55:09 +00:00
e81938a04d chore(ci): pinact run 2025-03-19 17:12:43 +02:00
3bbcb248ba chore: tweaks to gitignore and fonts installation 2025-03-18 00:15:07 +02:00
17194755e6 chore(config): add "commit" to fish functions 2025-03-18 00:14:33 +02:00
45f95422ef fix(scripts): macos defaults now supports Terminal 2025-03-18 00:14:13 +02:00
b8f0bb570e fix(bin): dfm install all 2025-03-18 00:13:34 +02:00
a0d8069455 fix(ci): update-submodules: permissons are sorted host level
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-17 11:53:22 +02:00
github-actions[bot]
8b1eb0a582 chore: update pre-commit hooks (#91)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-17 11:44:20 +02:00
github-actions[bot]
9cb10250c5 chore: update pre-commit hooks (#90)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-13 21:42:36 +02:00
2836ed19cf chore(config): tweak yabai config, add apps
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-12 14:56:22 +02:00
21eb5086a9 chore(config): vim and ideavim tweaks
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-12 14:30:39 +02:00
56f49ab314 fix(config): vim darkmode check typo
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-12 14:29:01 +02:00
5e1a2d0dd0 chore(config): add vim/autoload/plug.vim back 2025-03-11 16:00:57 +02:00
5fdd26bf80 chore(ci): remove cleanup step from linters.yml
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-11 15:34:13 +02:00
0c93dd9ad8 fix(ci): linters.yml add cleanup step
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-11 14:55:30 +02:00
9deb613b5b fix(ci): update-submodules.yml now does cleanup
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-11 14:04:27 +02:00
renovate[bot]
bf4031c238 chore(deps): pin dependencies (#88)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-10 11:50:28 +02:00
087b33cc97 fix(ci): add concurrency to workflows 2025-03-10 11:47:22 +02:00
github-actions[bot]
361657cdec chore: update pre-commit hooks (#89)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-10 11:42:15 +02:00
4855e56f3c chore(ci): update workflows 2025-03-08 02:27:49 +02:00
c119d4c20b chore(ci): update workflows 2025-03-08 02:19:18 +02:00
4815e8678b chore(config): change zed theme 2025-03-08 02:12:40 +02:00
31a45fed19 chore(config): more vim config 2025-03-08 02:12:25 +02:00
5aae400c92 chore(ci): update workflows 2025-03-08 02:07:35 +02:00
26e11047ce chore(config): tweak tmux config & theme activator 2025-03-07 21:09:22 +02:00
1f0826c7e7 feat: added yabai and configs for skhd & yabai
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-07 13:00:25 +02:00
9f71f3c8aa chore(config): simplify fish open-tmux function
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-06 15:42:34 +02:00
5d929c6466 chore(config): move alias functions to alias.fish
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-06 15:42:34 +02:00
afc04db93a chore(config): simplify eza aliases
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-06 15:42:30 +02:00
github-actions[bot]
eca0321e21 chore: update pre-commit hooks (#87)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-06 14:10:33 +02:00
def3372b9a chore(ssh): drop vine and paimon from config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-03-05 14:45:19 +02:00
github-actions[bot]
5aaa177756 chore: update pre-commit hooks (#86)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-03-03 08:32:57 +02:00
31a6ea351d Update linters.yml 2025-03-02 12:41:30 +02:00
333995c7f4 fix(config): vim config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-28 17:08:06 +02:00
d6b24c27a1 chore(config): add LM Studio to path
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 16:20:16 +02:00
89ae4003f9 chore(config): ignore config/git/local.d/*
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:39:19 +02:00
7a008c3ae8 chore(config): update brewfile
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:34:36 +02:00
a6f89e80bd chore(config): tmux: tms keybindings, update docs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:34:11 +02:00
3d987e491e chore(config): fish: add cargo bin, pyenv init
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:33:24 +02:00
e1729fd925 chore(config): aerospace, add Microsoft RDC
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-27 15:32:32 +02:00
4e5dae4161 fix(ci): update-submodules fetch-depth to 2 2025-02-27 14:58:22 +02:00
6b30ebfddb fix(config): vim plugged config 2025-02-27 14:58:03 +02:00
github-actions[bot]
0aafae5d97 chore: update pre-commit hooks (#85)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-27 07:37:20 +02:00
32cc561d20 chore(ci): update-submodules fetch depth to 1 2025-02-26 18:00:55 +02:00
784fddea64 fix(repo): remove tools/dotbot-asdf submodule 2025-02-26 00:41:03 +02:00
0a058aaf22 chore(config): fish_add_path "$CARGO_HOME/bin" 2025-02-25 23:39:46 +02:00
ff6876a56d chore(bin): remove markdown-to-telegram.py 2025-02-25 20:32:29 +02:00
ccbd29fc40 chore(dotbot): remove dotbot-asdf 2025-02-25 20:31:57 +02:00
9251225d3e chore(bin): update x-env-list with skipping 2025-02-25 20:26:32 +02:00
241eed66f5 chore(config): update zed config 2025-02-25 20:25:24 +02:00
6de8e92968 chore(scripts): update install-cargo-packages.sh 2025-02-25 20:25:01 +02:00
2cdda605ef chore(config): tweak tmux.conf 2025-02-25 20:23:41 +02:00
87a4ec8ecf chore(config): clean up fish/exports.fish 2025-02-25 20:23:06 +02:00
87613d10ec chore(config): remove ehfive/fish-bash2env 2025-02-25 20:22:36 +02:00
f6dc193f6a feat(config): add vim config (#61)
* feat: vim config
* fix: nvim was getting vimrc config
* chore: cleanup, cr fix
* feat(config): add config/fish/alias.fish
2025-02-25 20:20:31 +02:00
4adbbdb47a chore(config): tmux tweaks 2025-02-25 10:46:01 +02:00
bdbe10f612 chore(config): aerospace sessions app
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-25 10:41:54 +02:00
531488001f chore(config): shared.sh tweak
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-25 10:41:39 +02:00
4f2b47d5c3 feat(asdf): removal of asdf
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-25 10:41:20 +02:00
github-actions[bot]
dfbdb89aca chore: update pre-commit hooks (#83) 2025-02-24 08:30:19 +02:00
ivuorinen
c9489ae50f chore(git): Update submodules (automated) 2025-02-24 05:03:01 +01:00
9fdb4cdfb0 chore(scripts): use msgr instead of msg_* funcs 2025-02-23 17:23:54 +02:00
f4da515120 chore(scripts): refactor cargo and go pkg install 2025-02-23 17:23:54 +02:00
fae9665671 feat(config): fish - add edc/bass for bash 2025-02-23 17:23:54 +02:00
d5e34d168b feat(config): fish configs and tmux auto-open 2025-02-23 17:23:54 +02:00
e8b43d76dc chore: .ignore additions 2025-02-23 17:23:54 +02:00
4f9757ad2b feat(config): switch from fish-exa to fish-eza 2025-02-23 17:23:54 +02:00
611a3bfa72 feat: move asdf from local/bin to local 2025-02-23 17:23:54 +02:00
10da4ea372 Update .gitmodules, relocate asdf 2025-02-21 16:30:30 +02:00
68525d5ae4 Update update-submodules.yml 2025-02-21 16:25:27 +02:00
github-actions[bot]
7311f2576e chore: update pre-commit hooks (#82)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-20 09:19:54 +02:00
721d3c0d15 chore(tmux): tweak plugin order and paths
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:18:06 +02:00
c82e183ff9 chore(config): ideavim config update
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:17:36 +02:00
1b6a93650b chore(config): fish config tweaks and function fix
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:15:01 +02:00
aa85bb0c72 feat(bin): raycast helpers
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-19 10:13:52 +02:00
ceb452aa68 chore(config): ignore fish_variables
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:21:43 +02:00
467a1c2ff9 chore(config): remove pip config
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:20:28 +02:00
f73cd32309 chore(deps): update brew bundle
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:20:08 +02:00
0be2a5b879 chore(config): tmux fixes, added tms binds
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:19:46 +02:00
8c015ac251 feat(shell): gazorby/fish-exa
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:19:13 +02:00
894ec12fd8 chore: move asdf to ./local, update configs
Signed-off-by: Ismo Vuorinen <ismo@ivuorinen.net>
2025-02-17 12:17:45 +02:00
8cf3602de1 chore(config): pip config 2025-02-17 10:53:57 +02:00
57c4f0438e chore: work computer setup, gitprofile update 2025-02-17 10:53:57 +02:00
github-actions[bot]
02907d6a6b chore: update pre-commit hooks (#81)
Co-authored-by: ivuorinen <11024+ivuorinen@users.noreply.github.com>
2025-02-17 09:56:55 +02:00
148 changed files with 20378 additions and 3531 deletions

View File

@@ -8,13 +8,16 @@ indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.fish]
max_line_length = 80
[*.md]
max_line_length = 100
[*.lua]
max_line_length = 120
max_line_length = 90
[*.php]
[*.{php,fish}]
indent_size = 4
[.git{ignore,modules}]

45
.gitattributes vendored
View File

@@ -1,4 +1,4 @@
## GITATTRIBUTES FOR WEB PROJECTS
## GITATTRIBUTES
#
# These settings are for any web project.
#
@@ -20,20 +20,23 @@
*.bat text eol=crlf
*.cmd text eol=crlf
*.coffee text
*.css text diff=css
*.htm text diff=html
*.html text diff=html
*.css text diff=css eol=lf
*.fish text diff=shell eol=lf
*.htm text diff=html eol=lf
*.html text diff=html eol=lf
*.inc text
*.ini text
*.js text
*.json text
*.jsx text
*.less text
*.lua text diff=lua eol=lf
*.ls text
*.map text -diff
*.od text
*.onlydata text
*.php text diff=php
*.plist text eol=lf
*.pl text
*.ps1 text eol=crlf
*.py text diff=python
@@ -41,15 +44,18 @@
*.sass text
*.scm text
*.scss text diff=css
*.sh text eol=lf
*.sh text eol=lf diff=shell
.husky/* text eol=lf
*.sql text
*.styl text
*.tag text
*.tmux text eol=lf diff=tmux
*.ts text
*.tsx text
*.vim text eol=lf
*.xml text
*.xhtml text diff=html
*.zsh text diff=zsh eol=lf
# Docker
Dockerfile text
@@ -68,6 +74,7 @@ Dockerfile text
AUTHORS text
CHANGELOG text
CHANGES text
CODEOWNERS text
CONTRIBUTING text
COPYING text
copyright text
@@ -105,6 +112,8 @@ TODO text
*.config text
.editorconfig text
.env text
*.env text
*.env.* text
.gitattributes text
.gitconfig text
.htaccess text
@@ -208,15 +217,37 @@ Procfile text
*.gitignore 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
**/.gitkeep export-ignore
# 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
git/* text
**/git/* text
**/alias 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

View File

@@ -1,18 +1,32 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Debug Changelog # Workflow name displayed on GitHub
on:
workflow_dispatch: # Trigger manually
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
debug-changelog:
runs-on: self-hosted
permissions: write-all
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Create changelog text
id: changelog
uses: loopwerk/tag-changelog@v1
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js
- name: 'Echo results'
id: output-changelog
run: |

View File

@@ -1,29 +1,47 @@
---
name: reviewdog
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Reviewdog
on: [push]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
linters:
name: Linters
runs-on: self-hosted
permissions: write-all
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: GitHub Actions
uses: reviewdog/action-actionlint@v1
uses: reviewdog/action-actionlint@a5524e1c19e62881d79c1f1b9b6f09f16356e281 # v1.65.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: detect-secrets
uses: reviewdog/action-detect-secrets@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: markdownlint
uses: reviewdog/action-markdownlint@v0
uses: reviewdog/action-markdownlint@3667398db9118d7e78f7a63d10e26ce454ba5f58 # v0.26.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: shfmt
uses: reviewdog/action-shfmt@v1
uses: reviewdog/action-shfmt@d8f080930b9be5847b4f97e9f4122b81a82aaeac # v1.0.4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
shfmt_flags: |

View File

@@ -1,38 +1,48 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Release Daily State
on:
workflow_dispatch:
schedule:
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
new-daily-release:
runs-on: self-hosted
permissions:
contents: write
permissions: write-all
outputs:
created: ${{ steps.daily-version.outputs.created }}
version: ${{ steps.daily-version.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Create tag if necessary
uses: fregante/daily-version-action@v2
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
id: daily-version
- name: Create changelog text
if: steps.daily-version.outputs.created
id: changelog
uses: loopwerk/tag-changelog@v1
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js
- name: Create release
if: steps.daily-version.outputs.created
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ steps.daily-version.outputs.version }}
release_name: Release ${{ steps.daily-version.outputs.version }}
name: Release ${{ steps.daily-version.outputs.version }}
body: ${{ steps.changelog.outputs.changes }}

View File

@@ -1,21 +1,35 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Pre-commit autoupdate
on:
schedule:
# At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
auto-update:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5.4.0
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
- run: pip install pre-commit && pre-commit autoupdate
- uses: peter-evans/create-pull-request@v7
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: update/pre-commit-hooks

View File

@@ -1,4 +1,5 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Semantic PR
on:
@@ -8,11 +9,18 @@ on:
- edited
- synchronize
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
semantic-pr:
runs-on: self-hosted
steps:
- uses: amannn/action-semantic-pull-request@v5.5.3
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:

View File

@@ -1,4 +1,5 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Sync labels
# yamllint disable-line rule:truthy
@@ -14,10 +15,18 @@ on:
workflow_call:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
SyncLabels:
runs-on: ubuntu-latest
permissions:
issues: write
runs-on: ubuntu-latest
steps:
- uses: ivuorinen/actions/sync-labels@main

View File

@@ -1,39 +1,55 @@
---
# yaml-language-server: https://json.schemastore.org/github-workflow.json
name: Update submodules
on:
schedule:
# At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1,4"
- cron: "0 4 * * 1"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: read-all
jobs:
update-submodules:
permissions:
contents: write
issues: write
pull-requests: write
runs-on: self-hosted
permissions: write-all
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: true
fetch-depth: 0
fetch-depth: 2
token: ${{secrets.GITHUB_TOKEN}}
- name: Config Git User
run: |
git config --global user.name "${{ github.actor }}"
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
- name: Update submodules
run: |
if git commit -am"chore(git): Update submodules (automated)
$(git submodule --quiet foreach \
'tag="$(git describe --tags --abbrev=0 origin/HEAD)"
git submodule sync
git submodule foreach --quiet '
tag="$(git describe --tags --abbrev=0 origin/HEAD)"
if [ "$(git describe --tags)" != "$tag" ]; then
git checkout --quiet "$tag"
echo "$name" "$tag"
fi')"
then
echo "$name updated to $tag"
fi
'
if git diff --quiet; then
echo "No updates for submodules."
else
git add .
git commit -m "chore(git): Update submodules (automated)"
git show --raw
git push
fi

16
.gitignore vendored
View File

@@ -3,6 +3,8 @@
*.bak
*.log
*.socket
*.swp
*.old
*cache
.env
.idea
@@ -22,6 +24,10 @@ config/npm/npmrc
config/nvim/lazy-lock.json
config/nvim/spell/*
!config/nvim/spell/.gitkeep
config/git/local.d/*
!config/git/local.d/.gitkeep
config/vim/fzf
config/vim/plugged/*
config/zed/*
!config/zed/settings.json
config/zsh/.zcompdump
@@ -33,3 +39,13 @@ lock
node_modules
ssh/local.d/*
!ssh/local.d/.gitkeep
config/fish/fish_variables
**/exports.secret.fish
**/exports-secret.fish
config/fish/completions/asdf.fish
config/vim/.netrwhist
config/vim/extra/*
config/gh/hosts.yml
dependency-check-report.html
local/bin/yabai
local/man/yabai.1

12
.gitmodules vendored
View File

@@ -74,18 +74,12 @@
url = https://github.com/erikw/tmux-dark-notify.git
ignore = dirty
[submodule "asdf"]
path = local/bin/asdf
url = https://github.com/asdf-vm/asdf.git
ignore = dirty
[submodule "antidote"]
path = tools/antidote
url = https://github.com/mattmc3/antidote.git
shallow = true
ignore = dirty
[submodule "dotbot-asdf"]
path = tools/dotbot-asdf
url = https://github.com/sobolevn/dotbot-asdf
ignore = dirty
[submodule "tmux/tmux-resurrect"]
path = config/tmux/plugins/tmux-resurrect
url = https://github.com/tmux-plugins/tmux-resurrect.git

View File

@@ -1,7 +1,10 @@
**/__pycache__/**
.git/**
config/cheat/cheatsheets/community/**
config/tmux/plugins/**
node_modules
tools/antidote/**
tools/dotbot-brew/**
tools/dotbot-include/**
tools/dotbot/**
*.pyc

2
.nvmrc
View File

@@ -1 +1 @@
22.14.0
22.16.0

View File

@@ -23,13 +23,13 @@ repos:
args: [--autofix, --no-sort-keys]
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.44.0
rev: v0.45.0
hooks:
- id: markdownlint
args: [-c, .markdownlint.json, --fix]
- repo: https://github.com/adrienverge/yamllint
rev: v1.35.1
rev: v1.37.1
hooks:
- id: yamllint
@@ -39,7 +39,7 @@ repos:
- id: shellcheck
- repo: https://github.com/scop/pre-commit-shfmt
rev: v3.10.0-2
rev: v3.11.0-1
hooks:
- id: shfmt
@@ -49,11 +49,17 @@ repos:
- id: actionlint
- repo: https://github.com/renovatebot/pre-commit-hooks
rev: 39.169.3
rev: 40.36.8
hooks:
- id: renovate-config-validator
- repo: https://github.com/JohnnyMorganz/StyLua
rev: v2.0.2
rev: v2.1.0
hooks:
- id: stylua # or stylua-system / stylua-github
- repo: https://github.com/hugoh/pre-commit-fish.git
rev: v1.2
hooks:
- id: fish_syntax
- id: fish_indent

View File

@@ -1 +1 @@
3.13.2
3.13.3

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env bash
git submodule sync --recursive
# dotbot and plugins
git submodule add --name dotbot \
-f https://github.com/anishathalye/dotbot.git tools/dotbot
@@ -9,16 +11,12 @@ git submodule add --name dotbot-include \
-f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
git submodule add --name dotbot-pip \
-f https://github.com/sobolevn/dotbot-pip.git tools/dotbot-pip
git submodule add --name dotbot-asdf \
-f https://github.com/sobolevn/dotbot-asdf tools/dotbot-asdf
# other repos
git submodule add --name cheat-community \
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
git submodule add --name cheat-tldr \
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
git submodule add --name asdf \
-f https://github.com/asdf-vm/asdf.git local/bin/asdf
git submodule add --name antidote \
--depth 1 \
-f https://github.com/mattmc3/antidote.git tools/antidote
@@ -28,6 +26,8 @@ git submodule add --name tmux/tmux-continuum \
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
git submodule add --name tmux/tmux-mode-indicator \
-f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator
git submodule add --name tmux/tmux-resurrect \
-f https://github.com/tmux-plugins/tmux-resurrect.git config/tmux/plugins/tmux-resurrect
git submodule add --name tmux/tmux-sensible \
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
git submodule add --name tmux/tmux-sessionist \
@@ -53,10 +53,20 @@ done
git config -f .gitmodules submodule.antidote.shallow true
# remove old submodules
[ -d "config/tmux/plugins/tpm" ] && rm -rf config/tmux/plugins/tpm
[ -d "config/tmux/plugins/tmux" ] && rm -rf config/tmux/plugins/tmux
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
[ -d "config/tmux/plugins/tmux-resurrect" ] && rm -rf config/tmux/plugins/tmux-resurrect
[ -d "tools/dotbot-crontab" ] && rm -rf tools/dotbot-crontab
[ -d "tools/dotbot-snap" ] && rm -rf tools/dotbot-snap
[ -d "config/nvim-kickstart" ] && rm -rf config/nvim-kickstart
folders=(
"config/tmux/plugins/tpm"
"config/tmux/plugins/tmux"
"config/tmux/plugins/tmux-menus"
"tools/dotbot-crontab"
"tools/dotbot-snap"
"config/nvim-kickstart"
"local/bin/asdf"
"local/asdf"
"tools/dotbot-asdf"
)
for folder in "${folders[@]}"; do
[ -d "$folder" ] \
&& rm -rf "$folder" \
&& msgr run_done "Removed old submodule $folder"
done

View File

@@ -25,3 +25,6 @@ x-have antidot && {
PROMPT_DIRTRIM=3
PROMPT_COMMAND='PS1_CMD1=$(git branch --show-current 2>/dev/null)'
PS1='\[\e[95m\]\u\[\e[0m\]@\[\e[38;5;22;2m\]\h\[\e[0m\] \[\e[38;5;33m\]\w\[\e[0m\] \[\e[92;2m\]${PS1_CMD1}\n\[\e[39m\]➜\[\e[0m\] '
# Added by LM Studio CLI (lms)
export PATH="$PATH:$HOME/.lmstudio/bin"

View File

@@ -1,2 +1 @@
use node
use asdf

View File

@@ -23,7 +23,7 @@
"work": [
{
"key": "user.email",
"value": "ismo.vuorinen@vincit.fi"
"value": "ismo.vuorinen@svea.com"
},
{
"key": "user.name",
@@ -31,4 +31,4 @@
}
]
}
}
}

View File

@@ -1 +1 @@
lts/*
v22.14.0

View File

@@ -1,19 +0,0 @@
golang 1.23.4
rust 1.83.0
direnv 2.35.0
fd 10.2.0
1password-cli 2.30.3
age 1.2.1
dotenv-linter 3.3.0
editorconfig-checker 2.8.0
github-cli 2.64.0
hadolint 2.12.0
kubectl 1.32.0
pre-commit 4.0.1
ripgrep 14.1.1
shellcheck 0.10.0
shfmt 3.10.0
terragrunt 0.71.1
tf-summarize 0.3.14
yamllint 1.35.1
yq 4.44.6

View File

@@ -12,7 +12,6 @@ export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim/mason/bin:$L
export SHARED_SCRIPTS_SOURCED=0
source "$DOTFILES/config/shared.sh"
source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
# zsh completions directory
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
@@ -23,7 +22,6 @@ FPATH="$ZSH_COMPLETIONS:$FPATH"
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
source "$DOTFILES/config/zsh/antidote.zsh"
# source "$DOTFILES/config/zsh/prompt.zsh"
# Function to source FZF configuration
source_fzf_config()
@@ -51,10 +49,6 @@ setup_tmux_window_name_plugin()
fi
}
if [[ -n $GHOSTTY_RESOURCES_DIR ]]; then
source "$GHOSTTY_RESOURCES_DIR"/shell-integration/zsh/ghostty-integration
fi
source_fzf_config
setup_tmux_window_name_plugin
x-have antidot && eval "$(antidot init)"
@@ -66,3 +60,6 @@ bashcompinit
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
export P10K_CONFIG="$DOTFILES/config/zsh/p10k.zsh"
[[ ! -f "$P10K_CONFIG" ]] || source "$P10K_CONFIG"
# Added by LM Studio CLI (lms)
export PATH="$PATH:$HOME/.lmstudio/bin"

View File

@@ -115,6 +115,13 @@ run = ['layout floating']
if.app-id = 'com.apple.backup.launcher' # TimeMachine
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.philipyoungg.session-setapp' # Session app (Setapp)
run = ['layout floating']
[[on-window-detected]]
if.app-id = 'com.microsoft.rdc.macos' # Remote Desktop
run = ['layout floating']
# Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping

View File

@@ -7,6 +7,8 @@ x-have eza && {
alias ls="eza -h -s=type --git --icons --group-directories-first"
}
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
# Easier navigation: .., ..., ....
alias ..="cd .."
alias ...="cd ../.."

15
config/aqua/aqua.yaml Normal file
View File

@@ -0,0 +1,15 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/aqua-yaml.json
# aqua - Declarative CLI Version Manager
# https://aquaproj.github.io/
# checksum:
# enabled: true
# require_checksum: true
# supported_envs:
# - all
registries:
- type: standard
ref: v4.346.0 # renovate: depName=aquaproj/aqua-registry
packages:
- name: cli/cli
version: 'v2.69.0'

View File

@@ -1,3 +0,0 @@
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
export ASDF_DIRENV_BIN="$(asdf where direnv)/bin/direnv"
eval "$($ASDF_DIRENV_BIN hook zsh)"

View File

@@ -1,6 +1,8 @@
// These are golang packages I use,
// so they should be available with all versions
// Aqua is a package manager like asdf, or Brew
github.com/aquaproj/aqua/v2/cmd/aqua@latest
// Git Profile allows you to switch between user profiles in git repos
github.com/dotzero/git-profile@v1.4.0
// An extensible command line tool or library to format yaml files.

View File

@@ -213,7 +213,7 @@ get_sha256sum()
# $2 - filename (string)
#
# Returns 1 when replaceable, 0 when not replaceable.
replacable()
replaceable()
{
FILE1="$1"
FILE2="$2"
@@ -291,35 +291,6 @@ hash shopt 2> /dev/null && shopt -s checkwinsize
# shellcheck disable=SC2155
export SHORT_HOST=$(hostname -s)
# asdf
# https://github.com/asdf-vm/asdf
msg "Setting up asdf configuration"
export ASDF_DIR="${XDG_BIN_HOME}/asdf"
[[ -d $ASDF_DIR ]] && {
# [[ -d $ASDF_DIR/completions ]] && FPATH="$ASDF_DIR/completions:$FPATH"
# [[ -d $ASDF_DIR/plugins ]] && FPATH="$ASDF_DIR/plugins:$FPATH"
export ASDF_CONFIG_FILE="${XDG_CONFIG_HOME}/asdf/asdfrc"
export ASDF_DATA_DIR="${ASDF_DIR}"
export ASDF_PLUGIN_MANAGER_PLUGIN_VERSIONS_FILENAME="${XDG_CONFIG_HOME}/asdf/plugin-versions"
export ASDF_LOG_FILE="${XDG_CACHE_HOME}/asdf/asdf.log"
export ASDF_FORCE_PREPEND=yes
## Default package files
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/cargo-packages"
export ASDF_GEM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/gem-packages"
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/golang-packages"
export ASDF_NPM_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/npm-packages"
export ASDF_PYTHON_DEFAULT_PACKAGES_FILE="${XDG_CONFIG_HOME}/asdf/python-packages"
## Plugin configuration
export ASDF_DIRENV_IGNORE_MISSING_PLUGINS=1
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
export ASDF_NODEJS_LEGACY_FILE_DYNAMIC_STRATEGY="latest_available"
## Add asdf to path
export PATH="${ASDF_DIR}/bin:${PATH}"
source "$ASDF_DIR/asdf.sh"
}
# Antidote configuration
# https://getantidote.github.io/
msg "Setting up Antidote configuration"
@@ -465,7 +436,7 @@ export TMUX_CONF_DIR="$XDG_CONFIG_HOME/tmux"
export TMUX_PLUGINS="$TMUX_CONF_DIR/plugins"
export TMUX_CONF="$TMUX_CONF_DIR/tmux.conf"
## These settings are for zsh-tmux
export ZSH_TMUX_AUTOSTART=false
export ZSH_TMUX_AUTOSTART=true
export ZSH_TMUX_CONFIG="$TMUX_CONF"
export ZSH_TMUX_UNICODE=true
export ZSH_TMUX_AUTOQUIT=false
@@ -489,4 +460,3 @@ export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
[ -f "$XDG_CONFIG_HOME/exports-local" ] && source "$XDG_CONFIG_HOME/exports-local"
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)"
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)-secret" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)-secret"

108
config/fish/alias.fish Normal file
View File

@@ -0,0 +1,108 @@
# Set aliases for fish shell
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
# eza aliases if eza is installed
if type -q eza >/dev/null
function eza_git -d "Use eza and its git options if in a git repo"
if git rev-parse --is-inside-work-tree &>/dev/null
eza --group-directories-first --icons=always --smart-group --git $argv
else
eza --group-directories-first --icons=always --smart-group $argv
end
end
function lsa --wraps='eza_git -al' --description 'eza -al'
eza_git -al $argv
end
function ls --wraps='eza_git' --description eza
eza_git $argv
end
function ll --wraps='eza_git -l' --description 'eza -l'
eza_git -l $argv
end
function l --wraps='eza_git' --description eza
eza_git $argv
end
end
# Edit fish alias file
function .a --wraps='nvim ~/.dotfiles/config/fish/alias.fish' --description 'edit alias.fish'
nvim ~/.dotfiles/config/fish/alias.fish $argv
end
# Go to the directory where my projects are stored
function .c --wraps='cd ~/Code' --description 'cd ~/Code'
cd ~/Code $argv
end
# Go to the directory where the dotfiles are stored
function .d --wraps='cd ~/.dotfiles' --description 'cd ~/.dotfiles'
cd ~/.dotfiles $argv
end
# Go to the directory where my work codes are stored
function .s --wraps='cd ~/Code/s' --description 'cd ~/Code/s'
cd ~/Code/s $argv
end
# Go to the directory where my personal codes are stored
function .p --wraps='cd ~/Code/ivuorinen' --description 'cd ~/Code/ivuorinen'
cd ~/Code/ivuorinen $argv
end
# shortcut to commit with a message
function commit --wraps='git commit -a -m "chore: automated commit"' --description 'commit shortcut'
set -l commitMessage $argv
git add .
if test -z "$commitMessage"
if type -q aicommits
aicommits --type conventional
else
git commit -a -m "chore: automated commit"
end
return
end
git commit -a -m "$commitMessage"
end
function configure_tide --description 'Configure tide with the lean style and my preferences'
tide configure \
--auto \
--style=Lean \
--prompt_colors='True color' \
--show_time=No \
--lean_prompt_height='Two lines' \
--prompt_connection=Disconnected \
--prompt_spacing=Sparse \
--icons='Many icons' \
--transient=Yes
end
# Abbreviations for git
abbr --add gau git add -u
abbr --add gaa git add -A
abbr --add gcv git commit -v
# Abbreviations for composer
abbr --add c composer
abbr --add cu composer update
abbr --add ci composer install
# Abbreviations for php artisan
abbr --add .pa php artisan
abbr --add .paf php artisan fresh
abbr --add .pam php artisan migrate
abbr --add .pams php artisan migrate --seed
abbr --add .pat php artisan test
# Abbreviations for npm
abbr --add .n npm
abbr --add .nt npm test --if-present
abbr --add .nb npm run build --if-present
abbr --add .ns npm run start --if-present

View File

@@ -0,0 +1,125 @@
# aqua fish shell completion
function __fish_aqua_no_subcommand --description 'Test if there has been any subcommand yet'
for i in (commandline -opc)
if contains -- $i init install i generate g update-aqua upa update-checksum upc update up completion bash zsh fish help h help h which info remove rm vacuum cp policy allow deny init init-policy exec list generate-registry gr version root-dir help h
return 1
end
end
return 0
end
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l log-level -r -d 'log level'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l config -s c -r -d 'configuration file path'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-cosign -d 'Disable Cosign verification'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-slsa -d 'Disable SLSA verification'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l disable-github-artifact-attestation -d 'Disable GitHub Artifact Attestations verification'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l trace -r -d 'trace output file path'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l cpu-profile -r -d 'cpu profile output file path'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l help -s h -d 'show help'
complete -c aqua -n '__fish_aqua_no_subcommand' -f -l version -s v -d 'print the version'
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init' -d 'Create a configuration file if it doesn\'t exist'
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l use-import-dir -s u -d 'Use import_dir'
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l import-dir -s i -r -d 'import_dir'
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l create-dir -s d -d 'Create a directory named aqua and create aqua.yaml in it'
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'install i' -d 'Install tools'
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l only-link -s l -d 'create links but skip downloading packages'
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l test -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1691'
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l all -s a -d 'install all aqua configuration packages'
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l tags -s t -r -d 'filter installed packages with tags'
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l exclude-tags -r -d 'exclude installed packages with tags'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate g' -d 'Search packages in registries and output the configuration interactively'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l f -r -d 'the file path of packages list. When the value is "-", the list is passed from the standard input'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l i -d 'Insert packages to configuration file'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l pin -d 'Pin version'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l g -d 'Insert packages in a global configuration file'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l detail -s d -d 'Output additional fields such as description and link'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l o -r -d 'inserted file'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l select-version -s s -d 'Select the installed version interactively. Default to display 30 versions, use --limit/-l to change it.'
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
complete -c aqua -n '__fish_seen_subcommand_from update-aqua upa' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-aqua upa' -d 'Update aqua'
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update-checksum upc' -d 'Create or Update aqua-checksums.json'
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l all -s a -d 'Create or Update all aqua-checksums.json including global configuration'
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1769'
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l prune -d 'Remove unused checksums'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'update up' -d 'Update registries and packages'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l i -d 'Select packages with fuzzy finder'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l select-version -s s -d 'Select the version with fuzzy finder. Default to display 30 versions, use --limit/-l to change it.'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-registry -s r -d 'Update only registries'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-package -s p -d 'Update only packages'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l tags -s t -r -d 'filter installed packages with tags'
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l exclude-tags -r -d 'exclude installed packages with tags'
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'completion' -d 'Output shell completion script for bash, zsh, or fish'
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
complete -c aqua -n '__fish_seen_subcommand_from bash' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'bash' -d 'Output shell completion script for bash'
complete -c aqua -n '__fish_seen_subcommand_from zsh' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'zsh' -d 'Output shell completion script for zsh'
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'fish' -d 'Output shell completion script for fish'
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from fish' -a 'help h' -d 'Shows a list of commands or help for one command'
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'help h' -d 'Shows a list of commands or help for one command'
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'which' -d 'Output the absolute file path of the given command'
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l version -s v -d 'Output the given package version'
complete -c aqua -n '__fish_seen_subcommand_from info' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'info' -d 'Show information'
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'remove rm' -d 'Uninstall packages'
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l all -s a -d 'uninstall all packages'
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l mode -s m -r -d 'Removed target modes. l: link, p: package'
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l i -d 'Select packages with a Fuzzy Finder'
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'vacuum' -d 'Remove unused installed packages'
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l init -d 'Create timestamp files.'
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l days -s d -r -d 'Expiration days'
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'cp' -d 'Copy executable files in a directory'
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l o -r -d 'destination directory'
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l all -s a -d 'install all aqua configuration packages'
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l tags -s t -r -d 'filter installed packages with tags'
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l exclude-tags -r -d 'exclude installed packages with tags'
complete -c aqua -n '__fish_seen_subcommand_from policy' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'policy' -d 'Manage Policy'
complete -c aqua -n '__fish_seen_subcommand_from allow' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'allow' -d 'Allow a policy file'
complete -c aqua -n '__fish_seen_subcommand_from deny' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'deny' -d 'Deny a policy file'
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a 'init' -d 'Create a policy file if it doesn\'t exist'
complete -c aqua -n '__fish_seen_subcommand_from init-policy' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'init-policy' -d '[Deprecated] Create a policy file if it doesn\'t exist'
complete -c aqua -n '__fish_seen_subcommand_from exec' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'exec' -d 'Execute tool'
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'list' -d 'List packages in Registries'
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l installed -s i -d 'List installed packages'
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l all -s a -d 'List global configuration packages too'
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'generate-registry gr' -d 'Generate a registry\'s package configuration'
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l out-testdata -r -d 'A file path where the testdata is outputted'
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l cmd -r -d 'A list of commands joined with commas \',\''
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l generate-config -s c -r -d 'A configuration file path'
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l limit -s l -r -d 'the maximum number of versions'
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.15.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/2351'
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l init -d 'Generate a configuration file'
complete -c aqua -n '__fish_seen_subcommand_from version' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'version' -d 'Show version'
complete -c aqua -n '__fish_seen_subcommand_from root-dir' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'root-dir' -d 'Output the aqua root directory (AQUA_ROOT_DIR)'
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
complete -r -c aqua -n '__fish_aqua_no_subcommand' -a 'help h' -d 'Shows a list of commands or help for one command'

View File

@@ -0,0 +1,235 @@
# 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'

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

View File

@@ -1,21 +0,0 @@
complete --command nvm --exclusive
complete --command nvm --exclusive --long version --description "Print version"
complete --command nvm --exclusive --long help --description "Print help"
complete --command nvm --long silent --description "Suppress standard output"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments install --description "Download and activate the specified Node version"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments use --description "Activate the specified Node version in the current shell"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list --description "List installed Node versions"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments list-remote --description "List available Node versions to install"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments current --description "Print the currently-active Node version"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from install" --arguments "(
test -e $nvm_data && string split ' ' <$nvm_data/.index
)"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use" --arguments "(_nvm_list | string split ' ')"
complete --command nvm --exclusive --condition __fish_use_subcommand --arguments uninstall --description "Uninstall the specified Node version"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from uninstall" --arguments "(
_nvm_list | string split ' ' | string replace system ''
)"
complete --command nvm --exclusive --condition "__fish_seen_subcommand_from use uninstall" --arguments "(
set --query nvm_default_version && echo default
)"

View File

@@ -1,28 +0,0 @@
set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
set --query nvm_data || set --global nvm_data $XDG_DATA_HOME/nvm
function _nvm_install --on-event nvm_install
test ! -d $nvm_data && command mkdir -p $nvm_data
echo "Downloading the Node distribution index..." 2>/dev/null
_nvm_index_update
end
function _nvm_update --on-event nvm_update
set --query --universal nvm_data && set --erase --universal nvm_data
set --query --universal nvm_mirror && set --erase --universal nvm_mirror
set --query nvm_mirror || set --global nvm_mirror https://nodejs.org/dist
end
function _nvm_uninstall --on-event nvm_uninstall
command rm -rf $nvm_data
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
set --names | string replace --filter --regex -- "^nvm" "set --erase nvm" | source
functions --erase (functions --all | string match --entire --regex -- "^_nvm_")
end
if status is-interactive && set --query nvm_default_version && ! set --query nvm_current_version
nvm use --silent $nvm_default_version
end

View File

@@ -1,22 +0,0 @@
function ___paths_plugin_set_colors
if not set -q ___paths_plugin_colors
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
end
return 0
end
function _paths_uninstall --on-event paths_uninstall
for i in ___paths_plugin_wrap_color ___paths_plugin_output ___paths_plugin_handle_found_item ___paths_plugin_handle_source ___paths_plugin_cycle_color
functions -e $i
end
set -e ___paths_plugin_colors
set -e ___paths_plugin_current_color
end
function _paths_install --on-event _paths_install
___paths_plugin_set_colors
end
function _paths_update --on-event paths_update
___paths_plugin_set_colors
end

View File

@@ -1,7 +1,36 @@
# ╭──────────────────────────────────────────────────────────╮
# │ fish/config.fish
# ╰──────────────────────────────────────────────────────────╯
test -e "$HOME/.config/fish/alias.fish" &&
source "$HOME/.config/fish/alias.fish"
test -e "$HOME/.config/fish/exports.fish" &&
source "$HOME/.config/fish/exports.fish"
test -e "$HOME/.dotfiles/config/fzf/key-bindings.fish" &&
source "$HOME/.dotfiles/config/fzf/key-bindings.fish"
if status is-interactive
# Commands to run in interactive sessions can go here
fish_add_path $HOME/.cargo/bin
fish_add_path $HOME/.local/bin
fish_add_path $HOME/.local/share/nvim/mason/bin
fish_add_path $HOME/.local/state/composer/vendor/bin
# 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
# Added by LM Studio CLI (lms)
set -gx PATH $PATH $HOME/.lmstudio/bin
# vim: ft=fish ts=4 sw=4 et:

187
config/fish/exports.fish Normal file
View File

@@ -0,0 +1,187 @@
#!/usr/bin/env fish
# XDG Base Directory Specification
set -q XDG_CONFIG_HOME; or set -x XDG_CONFIG_HOME "$HOME/.config"
set -q XDG_DATA_HOME; or set -x XDG_DATA_HOME "$HOME/.local/share"
set -q XDG_CACHE_HOME; or set -x XDG_CACHE_HOME "$HOME/.cache"
set -q XDG_STATE_HOME; or set -x XDG_STATE_HOME "$HOME/.local/state"
set -q XDG_BIN_HOME; or set -x XDG_BIN_HOME "$HOME/.local/bin"
set -q XDG_RUNTIME_DIR; or set -x XDG_RUNTIME_DIR "$HOME/.local/run"
# Dotfiles directory
set -q DOTFILES; or set -x DOTFILES "$HOME/.dotfiles"
# Editor settings
set -q EDITOR; or set -x EDITOR nvim
set -q VISUAL; or set -x VISUAL code
set -q HOSTNAME; or set -x HOSTNAME (hostname -s)
# Add local bin to path
fish_add_path "$XDG_BIN_HOME"
# Add cargo bin to path
fish_add_path "$XDG_SHARE_HOME/cargo/bin"
# NPM/NVM configuration
set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm"
fish_add_path "$NVM_DIR/bin"
fish_add_path "$XDG_CONFIG_HOME/nvm"
# Yarn configuration
set -q YARN_GLOBAL_FOLDER; or set -x YARN_GLOBAL_FOLDER "$XDG_DATA_HOME/yarn"
fish_add_path "$YARN_GLOBAL_FOLDER/bin"
# Mason configuration
set -q MASON_HOME; or set -x MASON_HOME "$XDG_DATA_HOME/nvim/mason"
fish_add_path "$MASON_HOME/bin"
# Set Neovim environment variables
test -z "$NVIM_STATE" && set -x NVIM_STATE "$XDG_STATE_HOME/nvim"
test -z "$NVIM_CONFIG_HOME" && set -x NVIM_CONFIG_HOME "$XDG_CONFIG_HOME/nvim"
test -z "$NVIM_DATA_HOME" && set -x NVIM_DATA_HOME "$XDG_DATA_HOME/nvim"
test -z "$NVIM_CACHE_HOME" && set -x NVIM_CACHE_HOME "$XDG_CACHE_HOME/nvim"
test -z "$NVIM_LOG_PATH" && set -x NVIM_LOG_PATH "$NVIM_STATE/log"
test -z "$NVIM_SESSION_PATH" && set -x NVIM_SESSION_PATH "$NVIM_STATE/session"
test -z "$NVIM_SHADA_PATH" && set -x NVIM_SHADA_PATH "$NVIM_STATE/shada"
test -z "$NVIM_UNDO_PATH" && set -x NVIM_UNDO_PATH "$NVIM_STATE/undo"
# Ansible configuration
set -q ANSIBLE_HOME; or set -x ANSIBLE_HOME "$XDG_CONFIG_HOME/ansible"
set -q ANSIBLE_CONFIG; or set -x ANSIBLE_CONFIG "$ANSIBLE_HOME/ansible.cfg"
set -q ANSIBLE_GALAXY_CACHE_DIR; or set -x ANSIBLE_GALAXY_CACHE_DIR "$XDG_CACHE_HOME/ansible/galaxy_cache"
x-dc "$ANSIBLE_HOME"
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
# AWS configuration
set -q AWS_CONFIG_FILE; or set -x AWS_CONFIG_FILE "$XDG_STATE_HOME/aws/config"
set -q AWS_SHARED_CREDENTIALS_FILE; or set -x AWS_SHARED_CREDENTIALS_FILE "$XDG_STATE_HOME/aws/credentials"
set -q AWS_SESSION_TOKEN; or set -x AWS_SESSION_TOKEN "$XDG_STATE_HOME/aws/session_token"
set -q AWS_DATA_PATH; or set -x AWS_DATA_PATH "$XDG_DATA_HOME/aws"
set -q AWS_DEFAULT_OUTPUT; or set -x AWS_DEFAULT_OUTPUT table
set -q AWS_CONFIGURE_KEYS; or set -x AWS_CONFIGURE_KEYS true
set -q AWS_CONFIGURE_SESSION; or set -x AWS_CONFIGURE_SESSION true
set -q AWS_CONFIGURE_SESSION_DURATION; or set -x AWS_CONFIGURE_SESSION_DURATION 7200
set -q AWS_CONFIGURE_SESSION_MFA; or set -x AWS_CONFIGURE_SESSION_MFA true
set -q AWS_CONFIGURE_PROFILE; or set -x AWS_CONFIGURE_PROFILE true
set -q AWS_CONFIGURE_PROMPT; or set -x AWS_CONFIGURE_PROMPT true
set -q AWS_CONFIGURE_PROMPT_DEFAULT; or set -x AWS_CONFIGURE_PROMPT_DEFAULT true
# Brew configuration
set -q HOMEBREW_NO_ANALYTICS; or set -x HOMEBREW_NO_ANALYTICS true
set -q HOMEBREW_NO_ENV_HINTS; or set -x HOMEBREW_NO_ENV_HINTS true
set -q HOMEBREW_BUNDLE_MAS_SKIP; or set -x HOMEBREW_BUNDLE_MAS_SKIP true
set -q HOMEBREW_BUNDLE_FILE; or set -x HOMEBREW_BUNDLE_FILE "$XDG_CONFIG_HOME/homebrew/Brewfile"
# Composer configuration
set -q COMPOSER_HOME; or set -x COMPOSER_HOME "$XDG_STATE_HOME/composer"
set -q COMPOSER_BIN; or set -x COMPOSER_BIN "$COMPOSER_HOME/vendor/bin"
fish_add_path "$COMPOSER_BIN"
# direnv configuration
set -q DIRENV_LOG_FORMAT; or set -x DIRENV_LOG_FORMAT ''
# Docker configuration
set -q DOCKER_CONFIG; or set -x DOCKER_CONFIG "$XDG_CONFIG_HOME/docker"
x-dc "$DOCKER_CONFIG"
set -q DOCKER_HIDE_LEGACY_COMMANDS; or set -x DOCKER_HIDE_LEGACY_COMMANDS true
set -q DOCKER_SCAN_SUGGEST; or set -x DOCKER_SCAN_SUGGEST false
# FNM / Node.js configuration
set -q FNM_DIR; or set -x FNM_DIR "$XDG_DATA_HOME/fnm"
fish_add_path "$FNM_DIR"
set -q FNM_VERSION_FILE_STRATEGY; or set -x FNM_VERSION_FILE_STRATEGY recursive
set -q FNM_USE_ON_CD; or set -x FNM_USE_ON_CD true
set -q FNM_COREPACK_ENABLED; or set -x FNM_COREPACK_ENABLED true
set -q FNM_RESOLVE_ENGINES; or set -x FNM_RESOLVE_ENGINES true
# fzf configuration
set -q FZF_BASE; or set -x FZF_BASE "$XDG_CONFIG_HOME/fzf"
set -q FZF_DEFAULT_OPTS; or set -x FZF_DEFAULT_OPTS '--height 40% --tmux bottom,40% --layout reverse --border top'
# GnuPG configuration
set -q GNUPGHOME; or set -x GNUPGHOME "$XDG_DATA_HOME/gnupg"
# Go configuration
# set -q GOPATH; or set -x GOPATH "$XDG_DATA_HOME/go"
set -q GOBIN; or set -x GOBIN "$XDG_BIN_HOME"
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"
# 1Password configuration
set -q OP_CACHE; or set -x OP_CACHE "$XDG_STATE_HOME/1password"
# Python configuration
set -q WORKON_HOME; or set -x WORKON_HOME "$XDG_DATA_HOME/virtualenvs"
set -q PYENV_ROOT; or set -x PYENV_ROOT "$XDG_DATA_HOME/pyenv"
fish_add_path "$PYENV_ROOT/bin"
# Poetry configuration
set -q POETRY_HOME; or set -x POETRY_HOME "$XDG_DATA_HOME/poetry"
fish_add_path "$POETRY_HOME/bin"
# Rust / cargo configuration
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 RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup"
set -x RUST_WITHOUT "clippy,docs,rls"
fish_add_path "$CARGO_HOME/bin"
fish_add_path "$XDG_SHARE_HOME/bob/nvim-bin"
# screen configuration
set -q SCREENRC; or set -x SCREENRC "$XDG_CONFIG_HOME/misc/screenrc"
# Sonarlint configuration
set -q SONARLINT_HOME; or set -x SONARLINT_HOME "$XDG_DATA_HOME/sonarlint"
set -q SONARLINT_BIN; or set -x SONARLINT_BIN "$XDG_BIN_HOME"
set -q SONARLINT_USER_HOME; or set -x SONARLINT_USER_HOME "$XDG_DATA_HOME/sonarlint"
# Terraform configuration
set -q TF_DATA_DIR; or set -x TF_DATA_DIR "$XDG_STATE_HOME/terraform"
set -q TF_CLI_CONFIG_FILE; or set -x TF_CLI_CONFIG_FILE "$XDG_CONFIG_HOME/terraform/terraformrc"
set -q TF_PLUGIN_CACHE_DIR; or set -x TF_PLUGIN_CACHE_DIR "$XDG_CACHE_HOME/terraform/plugin-cache"
# tmux configuration
set -q TMUX_TMPDIR; or set -x TMUX_TMPDIR "$XDG_STATE_HOME/tmux"
set -q TMUX_CONF_DIR; or set -x TMUX_CONF_DIR "$XDG_CONFIG_HOME/tmux"
set -q TMUX_PLUGINS; or set -x TMUX_PLUGINS "$TMUX_CONF_DIR/plugins"
set -q TMUX_CONF; or set -x TMUX_CONF "$TMUX_CONF_DIR/tmux.conf"
set -q TMUX_PLUGIN_MANAGER_PATH; or set -x TMUX_PLUGIN_MANAGER_PATH "$TMUX_PLUGINS"
# Source tmux theme activation script for Fish shell
if test -f "$DOTFILES/config/tmux/theme-activate.fish"
source "$DOTFILES/config/tmux/theme-activate.fish"
end
# tms configuration
set -q TMS_CONFIG_FILE; or set -x TMS_CONFIG_FILE "$XDG_CONFIG_HOME/tms/config.toml"
# wakatime configuration
set -q WAKATIME_HOME; or set -x WAKATIME_HOME "$XDG_STATE_HOME/wakatime"
x-dc "$WAKATIME_HOME"
# Miscellaneous configuration
set -q CHEAT_USE_FZF; or set -x CHEAT_USE_FZF true
set -q SQLITE_HISTORY; or set -x SQLITE_HISTORY "$XDG_CACHE_HOME/sqlite/sqlite_history"
# Source additional configuration files if they exist
if test -f "$DOTFILES/config/fish/exports-secret.fish"
source "$DOTFILES/config/fish/exports-secret.fish"
end
if test -f "$DOTFILES/hosts/$HOSTNAME/config/fish/exports.fish"
source "$DOTFILES/hosts/$HOSTNAME/config/fish/exports.fish"
end
if test -f "$DOTFILES/hosts/$HOSTNAME/config/fish/exports-secret.fish"
source "$DOTFILES/hosts/$HOSTNAME/config/fish/exports-secret.fish"
end
# Configure tide prompt
set -gx tide_prompt_transient_enabled true
set -gx tide_prompt_add_newline_before true
set -gx tide_prompt_min_cols 34
set -gx tide_prompt_pad_items false
set -gx tide_left_prompt_items context pwd git node python rustc java php pulumi ruby go gcloud kubectl distrobox toolbox terraform aws nix_shell crystal elixir zig newline character
set -gx tide_right_prompt_items status jobs direnv
set -gx tide_context_hostname_parts 1

View File

@@ -1,9 +1,7 @@
jorgebucaran/fisher
jorgebucaran/nvm.fish
ilancosman/tide@v6
jethrokuan/z
halostatue/fish-macos@v7
ehfive/fish-bash2env
jgusta/paths
danhper/fish-ssh-agent
halostatue/fish-brew@v3
edc/bass

View File

@@ -1,212 +0,0 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR VIRTUAL_ENV_DISABLE_PROMPT:true
SETUVAR ZO_CMD:zo
SETUVAR Z_CMD:z
SETUVAR Z_DATA:/Users/ivuorinen/\x2elocal/share/z/data
SETUVAR Z_DATA_DIR:/Users/ivuorinen/\x2elocal/share/z
SETUVAR Z_EXCLUDE:\x5e/Users/ivuorinen\x24
SETUVAR --export ___paths_plugin_colors:27e6ff\x1e29e0ff\x1e5cd8ff\x1e77d0ff\x1e8ac8ff\x1e9cbfff\x1eafb5ff\x1ec5a7ff\x1ed99bfe\x1eea8feb\x1ef684d5\x1efe7abd\x1eff73a3\x1eff708a\x1efa7070\x1eff708a\x1eff73a3\x1efe7abd\x1ef684d5\x1eea8feb\x1ed99bfe\x1ec5a7ff\x1eafb5ff\x1e9cbfff\x1e8ac8ff\x1e77d0ff\x1e5cd8ff\x1e29e0ff
SETUVAR --export ___paths_plugin_current_color:4
SETUVAR __fish_initialized:3400
SETUVAR _fisher_danhper_2F_fish_2D_ssh_2D_agent_files:\x7e/\x2econfig/fish/functions/__ssh_agent_is_started\x2efish\x1e\x7e/\x2econfig/fish/functions/__ssh_agent_start\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fish\x2dssh\x2dagent\x2efish
SETUVAR _fisher_ehfive_2F_fish_2D_bash2env_files:\x7e/\x2econfig/fish/functions/__bash2env\x2esh\x1e\x7e/\x2econfig/fish/functions/bash2env\x2efish
SETUVAR _fisher_halostatue_2F_fish_2D_brew_40_v3_files:\x7e/\x2econfig/fish/functions/has_cask\x2efish\x1e\x7e/\x2econfig/fish/functions/has_keg\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/halostatue_fish_brew\x2efish
SETUVAR _fisher_halostatue_2F_fish_2D_macos_40_v7_files:\x7e/\x2econfig/fish/functions/__macos_app_bundleid\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_app_find\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_app_frontmost\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_app_icon\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_app_quit\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_cd\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_clean\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_column\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_desktop_icons\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_hidden\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_icon\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_list\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_pushd\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_pwd\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_quarantine\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_selected\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_track\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_untrack\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_finder_update\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_airdrop\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_airport\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_brightness\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_defaults_query\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_flushdns\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_font_smoothing\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_lsclean\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_mail\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_proxy_icon\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_serialnumber\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_touchid\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_touchid_sudo\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_transparency\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_version\x2efish\x1e\x7e/\x2econfig/fish/functions/__macos_mac_vol\x2efish\x1e\x7e/\x2econfig/fish/functions/app\x2efish\x1e\x7e/\x2econfig/fish/functions/finder\x2efish\x1e\x7e/\x2econfig/fish/functions/has_app\x2efish\x1e\x7e/\x2econfig/fish/functions/mac\x2efish\x1e\x7e/\x2econfig/fish/functions/manp\x2efish\x1e\x7e/\x2econfig/fish/functions/note\x2efish\x1e\x7e/\x2econfig/fish/functions/ql\x2efish\x1e\x7e/\x2econfig/fish/functions/remind\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/halostatue_fish_macos\x2efish\x1e\x7e/\x2econfig/fish/completions/app\x2efish\x1e\x7e/\x2econfig/fish/completions/finder\x2efish\x1e\x7e/\x2econfig/fish/completions/mac\x2efish\x1e\x7e/\x2econfig/fish/completions/manp\x2efish\x1e\x7e/\x2econfig/fish/completions/ql\x2efish
SETUVAR _fisher_ilancosman_2F_tide_40_v6_files:\x7e/\x2econfig/fish/functions/_tide_1_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_2_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_cache_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_detect_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_find_and_remove\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_fish_colorize\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_aws\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_character\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_cmd_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_crystal\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_direnv\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_distrobox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_docker\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_elixir\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_gcloud\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_go\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_java\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_kubectl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_nix_shell\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_node\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_php\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_private_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_pulumi\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_python\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_ruby\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_rustc\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_shlvl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_terraform\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_toolbox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_vi_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_zig\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_parent_dirs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_print_item\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_pwd\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_remove_unusable_items\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_bug\x2dreport\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_configure\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_reload\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/tide\x1e\x7e/\x2econfig/fish/functions/tide\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_tide_init\x2efish\x1e\x7e/\x2econfig/fish/completions/tide\x2efish
SETUVAR _fisher_jethrokuan_2F_z_files:\x7e/\x2econfig/fish/functions/__z\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_add\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_clean\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_complete\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/z\x2efish
SETUVAR _fisher_jgusta_2F_paths_files:\x7e/\x2econfig/fish/functions/paths\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/paths\x2efish
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish\x1eilancosman/tide\x40v6\x1ejethrokuan/z\x1ehalostatue/fish\x2dmacos\x40v7\x1eehfive/fish\x2dbash2env\x1ejgusta/paths\x1edanhper/fish\x2dssh\x2dagent\x1ehalostatue/fish\x2dbrew\x40v3
SETUVAR _fisher_upgraded_to_4_4:\x1d
SETUVAR _tide_left_items:os\x1epwd\x1egit\x1enewline\x1echaracter
SETUVAR _tide_prompt_4323:\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5bm\x0f\uf179\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\x20\x1b\x5bm\x0f\x1b\x5bm\x0f\x40PWD\x40\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\x20\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\uf1d3\x20\x1b\x5b37m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0mmain\x1b\x5b38\x3b2\x3b255\x3b0\x3b0m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\x20\x2a1\x1b\x5b38\x3b2\x3b255\x3b0\x3b0m\x1b\x5b38\x3b2\x3b215\x3b175\x3b0m\x1b\x5b38\x3b2\x3b215\x3b175\x3b0m\x20\x2116\x1b\x5b38\x3b2\x3b0\x3b175\x3b255m\x20\x3f4\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5bm\x0f\x20\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5bm\x0f\x20\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5b38\x3b2\x3b68\x3b136\x3b62m\ue24f\x2022\x2e13\x2e1\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\x20\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5b38\x3b2\x3b0\x3b175\x3b175m\U000f0320\x203\x2e13\x2e2\x1b\x5bm\x0f\x1b\x5bm\x0f\x1b\x5bm\x0f
SETUVAR _tide_prompt_78628:\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\uf179\x1b\x5b38\x3b2\x3b148\x3b148\x3b148m\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x40PWD\x40\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x20\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276f\x1e\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x20\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x5b38\x3b2\x3b135\x3b135\x3b95m\uf252\x207m\x2013s\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm\x1b\x28B\x1b\x5bm
SETUVAR _tide_right_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1enode\x1epython\x1ejava\x1ephp\x1eruby\x1ekubectl\x1eterraform\x1eaws
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:\x1d
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
SETUVAR fish_user_paths:/Users/ivuorinen/\x2elocal/state/composer/vendor/bin\x1e/Users/ivuorinen/\x2elocal/share/nvim/mason/bin\x1e/Users/ivuorinen/\x2elocal/share/bob/nvim\x2dbin\x1e/Users/ivuorinen/\x2elocal/bin
SETUVAR tide_aws_bg_color:normal
SETUVAR tide_aws_color:FF9900
SETUVAR tide_aws_icon:\uf270
SETUVAR tide_character_color:5FD700
SETUVAR tide_character_color_failure:FF0000
SETUVAR tide_character_icon:\u276f
SETUVAR tide_character_vi_icon_default:\u276e
SETUVAR tide_character_vi_icon_replace:\u25b6
SETUVAR tide_character_vi_icon_visual:V
SETUVAR tide_cmd_duration_bg_color:normal
SETUVAR tide_cmd_duration_color:87875F
SETUVAR tide_cmd_duration_decimals:0
SETUVAR tide_cmd_duration_icon:\uf252
SETUVAR tide_cmd_duration_threshold:3000
SETUVAR tide_context_always_display:false
SETUVAR tide_context_bg_color:normal
SETUVAR tide_context_color_default:D7AF87
SETUVAR tide_context_color_root:D7AF00
SETUVAR tide_context_color_ssh:D7AF87
SETUVAR tide_context_hostname_parts:1
SETUVAR tide_crystal_bg_color:normal
SETUVAR tide_crystal_color:FFFFFF
SETUVAR tide_crystal_icon:\ue62f
SETUVAR tide_direnv_bg_color:normal
SETUVAR tide_direnv_bg_color_denied:normal
SETUVAR tide_direnv_color:D7AF00
SETUVAR tide_direnv_color_denied:FF0000
SETUVAR tide_direnv_icon:\u25bc
SETUVAR tide_distrobox_bg_color:normal
SETUVAR tide_distrobox_color:FF00FF
SETUVAR tide_distrobox_icon:\U000f01a7
SETUVAR tide_docker_bg_color:normal
SETUVAR tide_docker_color:2496ED
SETUVAR tide_docker_default_contexts:default\x1ecolima
SETUVAR tide_docker_icon:\uf308
SETUVAR tide_elixir_bg_color:normal
SETUVAR tide_elixir_color:4E2A8E
SETUVAR tide_elixir_icon:\ue62d
SETUVAR tide_gcloud_bg_color:normal
SETUVAR tide_gcloud_color:4285F4
SETUVAR tide_gcloud_icon:\U000f02ad
SETUVAR tide_git_bg_color:normal
SETUVAR tide_git_bg_color_unstable:normal
SETUVAR tide_git_bg_color_urgent:normal
SETUVAR tide_git_color_branch:5FD700
SETUVAR tide_git_color_conflicted:FF0000
SETUVAR tide_git_color_dirty:D7AF00
SETUVAR tide_git_color_operation:FF0000
SETUVAR tide_git_color_staged:D7AF00
SETUVAR tide_git_color_stash:5FD700
SETUVAR tide_git_color_untracked:00AFFF
SETUVAR tide_git_color_upstream:5FD700
SETUVAR tide_git_icon:\uf1d3
SETUVAR tide_git_truncation_length:24
SETUVAR tide_git_truncation_strategy:\x1d
SETUVAR tide_go_bg_color:normal
SETUVAR tide_go_color:00ACD7
SETUVAR tide_go_icon:\ue627
SETUVAR tide_java_bg_color:normal
SETUVAR tide_java_color:ED8B00
SETUVAR tide_java_icon:\ue256
SETUVAR tide_jobs_bg_color:normal
SETUVAR tide_jobs_color:5FAF00
SETUVAR tide_jobs_icon:\uf013
SETUVAR tide_jobs_number_threshold:1000
SETUVAR tide_kubectl_bg_color:normal
SETUVAR tide_kubectl_color:326CE5
SETUVAR tide_kubectl_icon:\U000f10fe
SETUVAR tide_left_prompt_frame_enabled:false
SETUVAR tide_left_prompt_items:os\x1epwd\x1egit\x1enewline\x1echaracter
SETUVAR tide_left_prompt_prefix:
SETUVAR tide_left_prompt_separator_diff_color:\x20
SETUVAR tide_left_prompt_separator_same_color:\x20
SETUVAR tide_left_prompt_suffix:\x20
SETUVAR tide_nix_shell_bg_color:normal
SETUVAR tide_nix_shell_color:7EBAE4
SETUVAR tide_nix_shell_icon:\uf313
SETUVAR tide_node_bg_color:normal
SETUVAR tide_node_color:44883E
SETUVAR tide_node_icon:\ue24f
SETUVAR tide_os_bg_color:normal
SETUVAR tide_os_color:normal
SETUVAR tide_os_icon:\uf179
SETUVAR tide_php_bg_color:normal
SETUVAR tide_php_color:617CBE
SETUVAR tide_php_icon:\ue608
SETUVAR tide_private_mode_bg_color:normal
SETUVAR tide_private_mode_color:FFFFFF
SETUVAR tide_private_mode_icon:\U000f05f9
SETUVAR tide_prompt_add_newline_before:true
SETUVAR tide_prompt_color_frame_and_connection:6C6C6C
SETUVAR tide_prompt_color_separator_same_color:949494
SETUVAR tide_prompt_icon_connection:\x20
SETUVAR tide_prompt_min_cols:34
SETUVAR tide_prompt_pad_items:false
SETUVAR tide_prompt_transient_enabled:true
SETUVAR tide_pulumi_bg_color:normal
SETUVAR tide_pulumi_color:F7BF2A
SETUVAR tide_pulumi_icon:\uf1b2
SETUVAR tide_pwd_bg_color:normal
SETUVAR tide_pwd_color_anchors:00AFFF
SETUVAR tide_pwd_color_dirs:0087AF
SETUVAR tide_pwd_color_truncated_dirs:8787AF
SETUVAR tide_pwd_icon:\uf07c
SETUVAR tide_pwd_icon_home:\uf015
SETUVAR tide_pwd_icon_unwritable:\uf023
SETUVAR tide_pwd_markers:\x2ebzr\x1e\x2ecitc\x1e\x2egit\x1e\x2ehg\x1e\x2enode\x2dversion\x1e\x2epython\x2dversion\x1e\x2eruby\x2dversion\x1e\x2eshorten_folder_marker\x1e\x2esvn\x1e\x2eterraform\x1eCargo\x2etoml\x1ecomposer\x2ejson\x1eCVS\x1ego\x2emod\x1epackage\x2ejson\x1ebuild\x2ezig
SETUVAR tide_python_bg_color:normal
SETUVAR tide_python_color:00AFAF
SETUVAR tide_python_icon:\U000f0320
SETUVAR tide_right_prompt_frame_enabled:false
SETUVAR tide_right_prompt_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1edirenv\x1enode\x1epython\x1erustc\x1ejava\x1ephp\x1epulumi\x1eruby\x1ego\x1egcloud\x1ekubectl\x1edistrobox\x1etoolbox\x1eterraform\x1eaws\x1enix_shell\x1ecrystal\x1eelixir\x1ezig
SETUVAR tide_right_prompt_prefix:\x20
SETUVAR tide_right_prompt_separator_diff_color:\x20
SETUVAR tide_right_prompt_separator_same_color:\x20
SETUVAR tide_right_prompt_suffix:
SETUVAR tide_ruby_bg_color:normal
SETUVAR tide_ruby_color:B31209
SETUVAR tide_ruby_icon:\ue23e
SETUVAR tide_rustc_bg_color:normal
SETUVAR tide_rustc_color:F74C00
SETUVAR tide_rustc_icon:\ue7a8
SETUVAR tide_shlvl_bg_color:normal
SETUVAR tide_shlvl_color:d78700
SETUVAR tide_shlvl_icon:\uf120
SETUVAR tide_shlvl_threshold:1
SETUVAR tide_status_bg_color:normal
SETUVAR tide_status_bg_color_failure:normal
SETUVAR tide_status_color:5FAF00
SETUVAR tide_status_color_failure:D70000
SETUVAR tide_status_icon:\u2714
SETUVAR tide_status_icon_failure:\u2718
SETUVAR tide_terraform_bg_color:normal
SETUVAR tide_terraform_color:844FBA
SETUVAR tide_terraform_icon:\U000f1062
SETUVAR tide_time_bg_color:normal
SETUVAR tide_time_color:5F8787
SETUVAR tide_time_format:
SETUVAR tide_toolbox_bg_color:normal
SETUVAR tide_toolbox_color:613583
SETUVAR tide_toolbox_icon:\ue24f
SETUVAR tide_vi_mode_bg_color_default:normal
SETUVAR tide_vi_mode_bg_color_insert:normal
SETUVAR tide_vi_mode_bg_color_replace:normal
SETUVAR tide_vi_mode_bg_color_visual:normal
SETUVAR tide_vi_mode_color_default:949494
SETUVAR tide_vi_mode_color_insert:87AFAF
SETUVAR tide_vi_mode_color_replace:87AF87
SETUVAR tide_vi_mode_color_visual:FF8700
SETUVAR tide_vi_mode_icon_default:D
SETUVAR tide_vi_mode_icon_insert:I
SETUVAR tide_vi_mode_icon_replace:R
SETUVAR tide_vi_mode_icon_visual:V
SETUVAR tide_zig_bg_color:normal
SETUVAR tide_zig_color:F7A41D
SETUVAR tide_zig_icon:\ue6a9

View File

@@ -1,4 +0,0 @@
function .c --wraps='cd ~/Code' --description 'alias .c=cd ~/Code'
cd ~/Code $argv
end

View File

@@ -1,4 +0,0 @@
function .d --wraps='cd ~/.dotfiles' --description 'alias .d=cd ~/.dotfiles'
cd ~/.dotfiles $argv
end

View File

@@ -1,56 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2022 Huang-Huang Bao
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
# shellcheck disable=SC2076
set -e
disallowd_vars_arr=(
_
fish_kill_signal
fish_killring
fish_pid
history
hostname
PWD
pipestatus
SHLVL
status
status_generation
version
)
disallowd_vars=" ${disallowd_vars_arr[*]} "
fish_escape() {
value="${1//\\/\\\\}"
value="${value//\'/\\\'}"
echo "'${value}'"
}
flag_impure="$__FISH_BASH2ENV_IMPURE"
unset __FISH_BASH2ENV_IMPURE
if [[ -z "$flag_impure" ]]; then
old_env=" $(env -0 | tr '\0' ' ') "
fi
eval_status=
eval "$*" 1>&2 || eval_status=$?
env -0 | while IFS= read -rs -d $'\0' line; do
if [[ -z "$flag_impure" && "${old_env}" =~ " ${line} " ]]; then
continue
fi
name="${line%%=*}"
if [[ "${disallowd_vars}" =~ " ${name} " ]]; then
continue
fi
value="$(fish_escape "${line#*=}")"
echo "set -gx ${name} ${value}"
done
exit $eval_status

View File

@@ -0,0 +1,140 @@
"""
To be used with a companion fish function like this:
function refish
set -l _x (python /tmp/bass.py source ~/.nvm/nvim.sh ';' nvm use iojs); source $_x; and rm -f $_x
end
"""
from __future__ import print_function
import json
import os
import signal
import subprocess
import sys
import traceback
BASH = 'bash'
FISH_READONLY = [
'PWD', 'SHLVL', 'history', 'pipestatus', 'status', 'version',
'FISH_VERSION', 'fish_pid', 'hostname', '_', 'fish_private_mode'
]
IGNORED = [
'PS1', 'XPC_SERVICE_NAME'
]
def ignored(name):
if name == 'PWD': # this is read only, but has special handling
return False
# ignore other read only variables
if name in FISH_READONLY:
return True
if name in IGNORED or name.startswith("BASH_FUNC"):
return True
if name.startswith('%'):
return True
return False
def escape(string):
# use json.dumps to reliably escape quotes and backslashes
return json.dumps(string).replace(r'$', r'\$')
def escape_identifier(word):
return escape(word.replace('?', '\\?'))
def comment(string):
return '\n'.join(['# ' + line for line in string.split('\n')])
def gen_script():
# Use the following instead of /usr/bin/env to read environment so we can
# deal with multi-line environment variables (and other odd cases).
env_reader = "%s -c 'import os,json; print(json.dumps({k:v for k,v in os.environ.items()}))'" % (sys.executable)
args = [BASH, '-c', env_reader]
output = subprocess.check_output(args, universal_newlines=True)
old_env = output.strip()
pipe_r, pipe_w = os.pipe()
if sys.version_info >= (3, 4):
os.set_inheritable(pipe_w, True)
command = 'eval $1 && ({}; alias) >&{}'.format(
env_reader,
pipe_w
)
args = [BASH, '-c', command, 'bass', ' '.join(sys.argv[1:])]
p = subprocess.Popen(args, universal_newlines=True, close_fds=False)
os.close(pipe_w)
with os.fdopen(pipe_r) as f:
new_env = f.readline()
alias_str = f.read()
if p.wait() != 0:
raise subprocess.CalledProcessError(
returncode=p.returncode,
cmd=' '.join(sys.argv[1:]),
output=new_env + alias_str
)
new_env = new_env.strip()
old_env = json.loads(old_env)
new_env = json.loads(new_env)
script_lines = []
for k, v in new_env.items():
if ignored(k):
continue
v1 = old_env.get(k)
if not v1:
script_lines.append(comment('adding %s=%s' % (k, v)))
elif v1 != v:
script_lines.append(comment('updating %s=%s -> %s' % (k, v1, v)))
# process special variables
if k == 'PWD':
script_lines.append('cd %s' % escape(v))
continue
else:
continue
if k == 'PATH':
value = ' '.join([escape(directory)
for directory in v.split(':')])
else:
value = escape(v)
script_lines.append('set -g -x %s %s' % (k, value))
for var in set(old_env.keys()) - set(new_env.keys()):
script_lines.append(comment('removing %s' % var))
script_lines.append('set -e %s' % var)
script = '\n'.join(script_lines)
alias_lines = []
for line in alias_str.splitlines():
_, rest = line.split(None, 1)
k, v = rest.split("=", 1)
alias_lines.append("alias " + escape_identifier(k) + "=" + v)
alias = '\n'.join(alias_lines)
return script + '\n' + alias
script_file = os.fdopen(3, 'w')
if not sys.argv[1:]:
print('__bass_usage', file=script_file, end='')
sys.exit(0)
try:
script = gen_script()
except subprocess.CalledProcessError as e:
sys.exit(e.returncode)
except Exception:
print('Bass internal error!', file=sys.stderr)
raise # traceback will output to stderr
except KeyboardInterrupt:
signal.signal(signal.SIGINT, signal.SIG_DFL)
os.kill(os.getpid(), signal.SIGINT)
else:
script_file.write(script)

View File

@@ -1,20 +0,0 @@
function _nvm_index_update
test ! -d $nvm_data && command mkdir -p $nvm_data
set --local index $nvm_data/.index
if not command curl -q --location --silent $nvm_mirror/index.tab >$index.temp
command rm -f $index.temp
echo "nvm: Can't update index, host unavailable: \"$nvm_mirror\"" >&2
return 1
end
command awk -v OFS=\t '
/v0.9.12/ { exit } # Unsupported
NR > 1 {
print $1 (NR == 2 ? " latest" : $10 != "-" ? " lts/" tolower($10) : "")
}
' $index.temp >$index
command rm -f $index.temp
end

View File

@@ -1,14 +0,0 @@
function _nvm_list
set --local versions $nvm_data/*
set --query versions[1] &&
string match --entire --regex -- (
string replace --all -- $nvm_data/ "" $versions |
string match --regex -- "v\d.+" |
string escape --style=regex |
string join "|"
) <$nvm_data/.index
command --all node |
string match --quiet --invert --regex -- "^$nvm_data" && echo system
end

View File

@@ -1,4 +0,0 @@
function _nvm_version_activate --argument-names ver
set --global --export nvm_current_version $ver
set --prepend PATH $nvm_data/$ver/bin
end

View File

@@ -1,5 +0,0 @@
function _nvm_version_deactivate --argument-names ver
test "$nvm_current_version" = "$ver" && set --erase nvm_current_version
set --local index (contains --index -- $nvm_data/$ver/bin $PATH) &&
set --erase PATH[$index]
end

View File

@@ -1,39 +0,0 @@
# Copyright (c) 2022 Huang-Huang Bao
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
function bash2env -d "Import environment variables modified by given bash command"
argparse --stop-nonopt h/help i/impure -- $argv
or set argv
function _print_usage
echo 'Usage:' \
(set_color $fish_color_command)'bash2env' \
(set_color $fish_color_normal)'[-i/--impure]' \
(set_color $fish_color_param)"<bash command>"
end
if test -n "$_flag_help"
_print_usage
return
end
if test (count $argv) -eq 0
_print_usage
return 22
end
if test -n "$_flag_impure"
set _flag_impure 1
end
set -l DIR (dirname (status -f))
__FISH_BASH2ENV_IMPURE=$_flag_impure command \
bash $DIR/__bash2env.sh $argv | source
for code in $pipestatus
if test $code != 0
return $code
end
end
end

View File

@@ -0,0 +1,29 @@
function bass
set -l bash_args $argv
set -l bass_debug
if test "$bash_args[1]_" = '-d_'
set bass_debug true
set -e bash_args[1]
end
set -l script_file (mktemp)
if command -v python3 >/dev/null 2>&1
command python3 -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file
else
command python -sS (dirname (status -f))/__bass.py $bash_args 3>$script_file
end
set -l bass_status $status
if test $bass_status -ne 0
return $bass_status
end
if test -n "$bass_debug"
cat $script_file
end
source $script_file
command rm $script_file
end
function __bass_usage
echo "Usage: bass [-d] <bash-command>"
end

View File

@@ -0,0 +1,16 @@
function load_nvm --on-variable="PWD"
set -l default_node_version (nvm version default)
set -l node_version (nvm version)
set -l nvmrc_path (nvm_find_nvmrc)
if test -n "$nvmrc_path"
set -l nvmrc_node_version (nvm version (cat $nvmrc_path))
if test "$nvmrc_node_version" = "N/A"
nvm install (cat $nvmrc_path)
else if test "$nvmrc_node_version" != "$node_version"
nvm use $nvmrc_node_version
end
else if test "$node_version" != "$default_node_version"
echo "Reverting to default Node version"
nvm use default
end
end

View File

@@ -1,235 +1,4 @@
function nvm --description "Node version manager"
for silent in --silent -s
if set --local index (contains --index -- $silent $argv)
set --erase argv[$index] && break
end
set --erase silent
end
set --local cmd $argv[1]
set --local ver $argv[2]
if set --query silent && ! set --query cmd[1]
echo "nvm: Version number not specified (see nvm -h for usage)" >&2
return 1
end
if ! set --query ver[1] && contains -- "$cmd" install use
for file in .nvmrc .node-version
set file (_nvm_find_up $PWD $file) && read ver <$file && break
end
if ! set --query ver[1]
echo "nvm: Invalid version or missing \".nvmrc\" file" >&2
return 1
end
end
set --local their_version $ver
switch "$cmd"
case -v --version
echo "nvm, version 2.2.17"
case "" -h --help
echo "Usage: nvm install <version> Download and activate the specified Node version"
echo " nvm install Install the version specified in the nearest .nvmrc file"
echo " nvm use <version> Activate the specified Node version in the current shell"
echo " nvm use Activate the version specified in the nearest .nvmrc file"
echo " nvm list List installed Node versions"
echo " nvm list-remote List available Node versions to install"
echo " nvm list-remote <regex> List Node versions matching a given regex pattern"
echo " nvm current Print the currently-active Node version"
echo " nvm uninstall <version> Uninstall the specified Node version"
echo "Options:"
echo " -s, --silent Suppress standard output"
echo " -v, --version Print the version of nvm"
echo " -h, --help Print this help message"
echo "Variables:"
echo " nvm_arch Override architecture, e.g. x64-musl"
echo " nvm_mirror Use a mirror for downloading Node binaries"
echo " nvm_default_version Set the default version for new shells"
echo " nvm_default_packages Install a list of packages every time a Node version is installed"
echo " nvm_data Set a custom directory for storing nvm data"
echo "Examples:"
echo " nvm install latest Install the latest version of Node"
echo " nvm use 14.15.1 Use Node version 14.15.1"
echo " nvm use system Activate the system's Node version"
case install
_nvm_index_update
string match --entire --regex -- (_nvm_version_match $ver) <$nvm_data/.index | read ver alias
if ! set --query ver[1]
echo "nvm: Invalid version number or alias: \"$their_version\"" >&2
return 1
end
if test ! -e $nvm_data/$ver
set --local os (command uname -s | string lower)
set --local ext tar.gz
set --local arch (command uname -m)
switch $os
case aix
set arch ppc64
case sunos
case linux
case darwin
case {MSYS_NT,MINGW\*_NT}\*
set os win
set ext zip
case \*
echo "nvm: Unsupported operating system: \"$os\"" >&2
return 1
end
switch $arch
case i\*86
set arch x86
case x86_64
set arch x64
case arm64
string match --regex --quiet "v(?<major>\d+)" $ver
if test "$os" = darwin -a $major -lt 16
set arch x64
end
case armv6 armv6l
set arch armv6l
case armv7 armv7l
set arch armv7l
case armv8 armv8l aarch64
set arch arm64
end
set --query nvm_arch && set arch $nvm_arch
set --local dir "node-$ver-$os-$arch"
set --local url $nvm_mirror/$ver/$dir.$ext
command mkdir -p $nvm_data/$ver
if ! set --query silent
echo -e "Installing Node \x1b[1m$ver\x1b[22m $alias"
echo -e "Fetching \x1b[4m$url\x1b[24m\x1b[7m"
end
if ! command curl -q $silent --progress-bar --location $url |
command tar --extract --gzip --directory $nvm_data/$ver 2>/dev/null
command rm -rf $nvm_data/$ver
echo -e "\033[F\33[2K\x1b[0mnvm: Invalid mirror or host unavailable: \"$url\"" >&2
return 1
end
set --query silent || echo -en "\033[F\33[2K\x1b[0m"
if test "$os" = win
command mv $nvm_data/$ver/$dir $nvm_data/$ver/bin
else
command mv $nvm_data/$ver/$dir/* $nvm_data/$ver
command rm -rf $nvm_data/$ver/$dir
end
end
if test $ver != "$nvm_current_version"
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
_nvm_version_activate $ver
set --query nvm_default_packages[1] && npm install --global $silent $nvm_default_packages
end
set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info)
case use
test $ver = default && set ver $nvm_default_version
_nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __
if ! set --query ver[1]
echo "nvm: Can't use Node \"$their_version\", version must be installed first" >&2
return 1
end
if test $ver != "$nvm_current_version"
set --query nvm_current_version && _nvm_version_deactivate $nvm_current_version
test $ver != system && _nvm_version_activate $ver
end
set --query silent || printf "Now using Node %s (npm %s) %s\n" (_nvm_node_info)
case uninstall
if test -z "$ver"
echo "nvm: Not enough arguments for command: \"$cmd\"" >&2
return 1
end
test $ver = default && test ! -z "$nvm_default_version" && set ver $nvm_default_version
_nvm_list | string match --entire --regex -- (_nvm_version_match $ver) | read ver __
if ! set -q ver[1]
echo "nvm: Node version not installed or invalid: \"$their_version\"" >&2
return 1
end
set --query silent || printf "Uninstalling Node %s %s\n" $ver (string replace ~ \~ "$nvm_data/$ver/bin/node")
_nvm_version_deactivate $ver
command rm -rf $nvm_data/$ver
case current
_nvm_current
case ls list
_nvm_list | _nvm_list_format (_nvm_current) $argv[2]
case lsr {ls,list}-remote
_nvm_index_update || return
_nvm_list | command awk '
FILENAME == "-" && (is_local[$1] = FNR == NR) { next } {
print $0 (is_local[$1] ? " ✓" : "")
}
' - $nvm_data/.index | _nvm_list_format (_nvm_current) $argv[2]
case \*
echo "nvm: Unknown command or option: \"$cmd\" (see nvm -h for usage)" >&2
return 1
end
function nvm
bass source $NVM_DIR/nvm.sh --no-use ';' nvm $argv
end
function _nvm_find_up --argument-names path file
test -e "$path/$file" && echo $path/$file || begin
test ! -z "$path" || return
_nvm_find_up (string replace --regex -- '/[^/]*$' "" $path) $file
end
end
function _nvm_version_match --argument-names ver
string replace --regex -- '^v?(\d+|\d+\.\d+)$' 'v$1.' $ver |
string replace --filter --regex -- '^v?(\d+)' 'v$1' |
string escape --style=regex || string lower '\b'$ver'(?:/\w+)?$'
end
function _nvm_list_format --argument-names current regex
command awk -v current="$current" -v regex="$regex" '
$0 ~ regex {
aliases[versions[i++] = $1] = $2 " " $3
pad = (n = length($1)) > pad ? n : pad
}
END {
if (!i) exit 1
while (i--)
printf((current == versions[i] ? " ▶ " : " ") "%"pad"s %s\n",
versions[i], aliases[versions[i]])
}
'
end
function _nvm_current
command --search --quiet node || return
set --query nvm_current_version && echo $nvm_current_version || echo system
end
function _nvm_node_info
set --local npm_path (string replace bin/npm-cli.js "" (realpath (command --search npm)))
test -f $npm_path/package.json || set --local npm_version_default (command npm --version)
command node --eval "
console.log(process.version)
console.log('$npm_version_default' ? '$npm_version_default': require('$npm_path/package.json').version)
console.log(process.execPath)
" | string replace -- ~ \~
end

View File

@@ -0,0 +1,3 @@
function nvm_find_nvmrc
bass source $NVM_DIR/nvm.sh --no-use ';' nvm_find_nvmrc
end

View File

@@ -0,0 +1,9 @@
# Description: Open tmux session if not already open
# Dependencies: tmux
# Usage: open-tmux
function open-tmux --wraps='tmux attach-session -t main || tmux new-session -s main' --description 'open tmux session'
# Check if not in an SSH session and not already in a tmux session
if test -z "$SSH_TTY"; and not set -q TMUX
command tmux attach-session -t main || command tmux new-session -s main
end
end

View File

@@ -1,175 +0,0 @@
function ___paths_plugin_wrap_color
set_color normal
set_color "$argv[1]"
echo -n (set_color "$argv[1]")"$argv[2..]"
set_color normal
end
# duplicated in conf.d
function ___paths_plugin_set_colors
if not set -q ___paths_plugin_colors
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
end
return 0
end
function ___paths_plugin_cycle_color
if not set -q ___paths_plugin_current_color
set -Ux ___paths_plugin_current_color 1
else if test $___paths_plugin_current_color -gt (count $___paths_plugin_colors)
set -Ux ___paths_plugin_current_color 1
end
echo $___paths_plugin_colors[$___paths_plugin_current_color]
set -Ux ___paths_plugin_current_color (math $___paths_plugin_current_color + 1)
end
function ___paths_plugin_handle_found_item -a testName outFlags
set -f flags (string split -n ' ' -- "$outFlags")
set -f options (fish_opt -s c -l clean)
set -a options (fish_opt -s s -l single)
set -a options (fish_opt -s k -l no-color)
set -a options (fish_opt -s n -l inline)
argparse $options -- $flags
set -f arrow "=>"
# check if file exists
if test -e "$testName"
set -f nameOut (string trim -- "$testName")
if not set -q _flag_c # is not clean
if test -L "$testName" # is symlink
set -f __linkname (readlink -f "$testName")
set __linkname (string trim -- "$__linkname")
set testName (string trim -- "$testName")
if not set -q _flag_k # is color
set nameOut (___paths_plugin_wrap_color (___paths_plugin_cycle_color) $testName) (___paths_plugin_wrap_color "yellow" "$arrow") (___paths_plugin_wrap_color (___paths_plugin_cycle_color) $__linkname)
else # is color
set nameOut (echo -n "$testName" "$arrow" "$__linkname")
end
else # is not symlink
if not set -q _flag_k # is color
set testName (string trim -- "$testName")
set nameOut (___paths_plugin_wrap_color (___paths_plugin_cycle_color) "$testName")
else
set testName (string trim -- "$testName")
set nameOut "$testName"
end
end
set nameOut (string trim -- "$nameOut")
# do the tick
if set -q _flag_k # is not color
set nameOut "- $nameOut"
else # is color
set nameOut (___paths_plugin_wrap_color "yellow" "-") "$nameOut"
end
end
set nameOut (string trim -- "$nameOut")
echo -n $nameOut
end
end
function paths --description "Reveal the executable matches in shell paths or fish autoload."
set -f options (fish_opt -s c -l clean)
set -a options (fish_opt -s s -l single)
set -a options (fish_opt -s k -l no-color)
set -a options (fish_opt -s q -l quiet)
set -a options (fish_opt -s n -l inline)
argparse $options -- $argv
if test (count $argv) -lt 1
echo "paths - executable matches in shell paths or fish autoload."
and echo "usage: paths [-c|-s|-k] <name>"
and echo -e "\t-c or --no-color: output without color"
and echo -e "\t-s or --single: output without color or headers, the first result"
and echo -e "\t-k or --clean: output without tick marks or headers"
# and echo -e "\t-n or --inline: output without endline"
and return 1
end
set -f foundStatus 1
set -f input (string trim -- $argv)
# deprecated
if set -q _flag_q
set _flag_c True
end
if set -q _flag_s
set _flag_k True
set _flag_c True
end
set -f outFlags ''
set -q _flag_n; and set -a outFlags -n
set -q _flag_c; and set -a outFlags -c
set -q _flag_k; and set -a outFlags -k
set -q _flag_s; and set -a outFlags -s
set outFlags (string split -n " " -- "$outFlags")
___paths_plugin_set_colors
# loop over list of path lists
for pVar in VIRTUAL_ENV fisher_path fish_function_path fish_user_paths PATH
set -e acc
set -f acc ''
set -e hit
# see if variable is empty
if test -z "$pVar"
continue
end
set -f acc (begin
for t in $$pVar
for snit in "$t/$input.fish" "$t/$input"
set -f found (___paths_plugin_handle_found_item "$snit" "$outFlags")
set found (string trim -- "$found")
if test -n "$found"
set -f hit True
echo "$found"
if set -q _flag_s
break
end
end
end
if set -q _flag_s
if set -q hit
break
end
end
end
end)
# prepend source
if not set -q _flag_c
if set -q hit
set pVar (string trim -- "$pVar")
echo -e -n "$pVar\n"
end
end
if test -n "$acc"
set foundStatus 0
for fk in $acc
echo $fk
if set -q _flag_s
# stop after one
return $foundStatus
end
end
end
end
# check
set -l built (type --type $input 12&>/dev/null)
if test -n "$built"
and test "$built" = 'builtin'
set $foundStatus 0
if not set -q _flag_c
echo -e -n "builtin\n"
if set -q _flag_k
echo - "$input"
else # is color
echo (___paths_plugin_wrap_color "yellow" "-") (___paths_plugin_wrap_color (___paths_plugin_cycle_color) "$input")
end
else
echo "$input"
end
end
return $foundStatus
end

View File

@@ -13,3 +13,52 @@
[advice]
detachedHead = false
[column]
ui = auto
[branch]
sort = -committerdate
[tag]
sort = version:refname
[init]
defaultBranch = main
[diff]
algorithm = histogram
colorMoved = plain
mnemonicPrefix = true
renames = true
[push]
default = simple
autoSetupRemote = true
followTags = true
[fetch]
prune = true
pruneTags = true
all = true
[help]
autocorrect = prompt
[commit]
verbose = true
[rerere]
enabled = true
autoupdate = true
[rebase]
autoSquash = true
autoStash = true
updateRefs = true
[merge]
conflictStyle = diff3
[pull]
rebase = true
[color "diff-highlight"]
oldNormal = red bold
oldHighlight = red bold 52
newNormal = green bold
newHighlight = green bold 22
[color "diff"]
meta = 11
frag = magenta bold
func = 146 bold
commit = yellow bold
old = red bold
new = green bold
whitespace = red reverse

View File

6
config/goenv/goenvrc Normal file
View File

@@ -0,0 +1,6 @@
# Detect shell
if [ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ]; then
export GOENV_PATH_ORDER=front
export GOENV_PREPEND_GOPATH=true
export GOENV_AUTO_INSTALL=true
fi

View File

@@ -0,0 +1,4 @@
set -gx GOENV_PATH_ORDER front
set -gx GOENV_PREPEND_GOPATH true
set -gx GOENV_AUTO_INSTALL true

View File

@@ -6,12 +6,14 @@ tap "dm3ch/tap"
tap "doron-cohen/tap"
tap "gesquive/tap"
tap "github/gh"
tap "golangci/tap"
tap "homebrew/autoupdate"
tap "homebrew/bundle"
tap "homebrew/services"
tap "jesseduffield/lazygit"
tap "k8sgpt-ai/k8sgpt"
tap "keith/formulae"
tap "koekeishiya/formulae"
tap "mongodb/brew"
tap "nikitabobko/tap"
tap "pantheon-systems/external"
@@ -29,6 +31,8 @@ brew "age"
brew "ca-certificates"
# Mozilla CA bundle for Python
brew "certifi"
# Cryptography and SSL/TLS Toolkit
brew "openssl@3"
# Cryptographic recipes and primitives for Python
brew "cryptography"
# YAML Parser
@@ -47,8 +51,6 @@ brew "highway"
brew "imath"
# JPEG image codec that aids compression and decompression
brew "jpeg-turbo"
# Library for manipulating PNG images
brew "libpng"
# Zstandard is a real-time compression algorithm
brew "zstd"
# New file format for still image compression
@@ -87,6 +89,8 @@ brew "coreutils"
brew "bats-core"
# Parser generator
brew "bison"
# Freely available high-quality data compressor
brew "bzip2"
# Software library to render fonts
brew "freetype"
# XML-based font configuration API for X Windows
@@ -95,6 +99,8 @@ brew "fontconfig"
brew "gettext"
# Core application library for C
brew "glib"
# Binary installation for rust projects
brew "cargo-binstall"
# Prevent cloud misconfigurations during build-time for IaC tools
brew "checkov"
# Human-friendly and fast alternative to cut and (sometimes) awk
@@ -103,18 +109,20 @@ brew "choose-rust"
brew "cmake"
# Get a file from an HTTP, HTTPS or FTP server
brew "curl"
# OpenType text shaping engine
brew "harfbuzz"
# OWASP dependency-check
brew "dependency-check"
# Lightweight DNS forwarder and DHCP server
brew "dnsmasq"
# .NET Core
brew "dotnet@8", link: true
# Spellchecker wrapping library
brew "enchant"
# Command-line tool to interact with exercism.io
brew "exercism"
# Perl lib for reading and writing EXIF metadata
brew "exiftool"
# Banner-like program prints strings as ASCII art
brew "figlet"
# Text-based UI library
brew "ncurses"
# User-friendly command-line shell for UNIX-like operating systems
brew "fish"
# Lock file during command
@@ -131,8 +139,6 @@ brew "gd"
brew "gdu"
# GitHub command-line tool
brew "gh"
# OpenType text shaping engine
brew "harfbuzz"
# Secure hashing function
brew "libb2"
# Framework for layout and rendering of i18n text
@@ -155,10 +161,10 @@ brew "unbound"
brew "gnutls"
# GNU Pretty Good Privacy (PGP) package
brew "gnupg"
# Go version management
brew "goenv"
# Library access to GnuPG
brew "gpgme"
# Open source suite of directory software
brew "openldap"
# Manage your GnuPG keys with ease!
brew "gpg-tui"
# Image manipulation
@@ -189,22 +195,20 @@ brew "jq"
brew "json-c"
# Network authentication protocol
brew "krb5"
# Style and grammar checker
brew "languagetool"
# Tool to detect/remediate misconfig and security risks of GitHub/GitLab assets
brew "legitify"
# BSD-style licensed readline alternative
brew "libedit"
# Conversion library
brew "libiconv"
# Postgres C API library
brew "libpq"
# Version of the SSL/TLS protocol forked from OpenSSL
brew "libressl"
# Multi-platform support library with a focus on asynchronous I/O
brew "libuv"
# GNOME XML library
brew "libxml2"
# C library for reading, creating, and modifying zip archives
brew "libzip"
# Package manager for the Lua programming language
brew "luarocks"
# LZMA-based compression program similar to gzip or bzip2
@@ -219,12 +223,26 @@ brew "ncdu"
brew "nginx"
# Port scanning utility for large networks
brew "nmap"
# Platform built on V8 to build network applications
brew "node", link: false
# Libraries for security-enabled client and server applications
brew "nss"
# Cryptography and SSL/TLS Toolkit
brew "openssl@1.1"
# Command-line Git information tool
brew "onefetch"
# Open source suite of directory software
brew "openldap"
# ISO-C API and CLI for generating UUIDs
brew "ossp-uuid"
# General-purpose scripting language
brew "php", link: false
# General-purpose scripting language
brew "php@8.2", link: true
# General-purpose scripting language
brew "php@8.3"
# Pins GitHub Actions to full hashes and versions
brew "pinact"
# Execute binaries from Python packages in isolated environments
brew "pipx"
# Python version management
brew "pyenv"
# Migrate pip packages from one Python version to another
@@ -239,8 +257,12 @@ brew "ruby-build"
brew "rbenv"
# Generate C-based recognizers from regular expressions
brew "re2c"
# Rust toolchain installer
brew "rustup"
# Static analysis and lint tool, for (ba)sh scripts
brew "shellcheck"
# User interface to the TELNET protocol
brew "telnet"
# Send macOS User Notifications from the command-line
brew "terminal-notifier"
# Tool which checks for the support of TLS/SSL ciphers and flaws
@@ -273,8 +295,12 @@ brew "cormacrelf/tap/dark-notify"
brew "doron-cohen/tap/antidot"
# lets you quickly switch between multiple git user profiles
brew "gesquive/tap/git-user"
# Simple hotkey-daemon for macOS.
brew "koekeishiya/formulae/skhd"
# Automated code review tool integrated with any code analysis tools regardless of programming language.
brew "reviewdog/tap/reviewdog"
# Igbinary PHP extension
brew "shivammathur/extensions/igbinary@8.3"
# Imagick PHP extension
brew "shivammathur/extensions/imagick@8.3"
# Mcrypt PHP extension
@@ -290,23 +316,19 @@ brew "shivammathur/extensions/uuid@8.3"
# Yaml PHP extension
brew "shivammathur/extensions/yaml@8.3"
# General-purpose scripting language
brew "shivammathur/php/php"
# General-purpose scripting language
brew "shivammathur/php/php-debug"
# Find & fix known vulnerabilities in open-source dependencies
brew "snyk/tap/snyk"
# General-purpose scripting language
brew "shivammathur/php/php@8.2-debug"
# Command-line interface for 1Password
cask "1password-cli"
# AeroSpace is an i3-like tiling window manager for macOS
cask "aerospace"
# Text editor
cask "coda"
# Universal database tool and SQL client
cask "dbeaver-community"
# Database version management tool
cask "dbngin"
# App to build and share containerised applications and microservices
cask "docker"
# Calendar software
cask "fantastical"
cask "font-jetbrains-mono"
cask "font-jetbrains-mono-nerd-font"
cask "font-open-sans"
@@ -326,8 +348,6 @@ cask "ngrok"
cask "notunes"
# Knowledge base that works on top of a local folder of plain text Markdown files
cask "obsidian"
# Display image info and preview unsupported formats in QuickLook
cask "qlimagesize"
# Quick Look generator for Markdown files
cask "qlmarkdown"
# Quick Look plugin for plaintext files without an extension

View File

@@ -1,71 +1,192 @@
"" Source your .vimrc
"source ~/.vimrc
source $HOME/.dotfiles/config/vim/vimrc
"" -- Suggested options --
" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5
" https://github.com/ville6000/dotfiles/blob/main/vimrc
" To get a list of Actions run `:actionlist `
let mapleader = "\<SPACE>"
set clipboard+=unnamed
set ideajoin
set ideamarks
set idearefactormode=normal
" Map esc to :noh
map <esc> :noh<cr>
nmap <leader>j :tabnext<CR>
nmap <leader>k :tabprevious<CR>
nmap <leader>l b #<CR>
:nmap <c-o> <Action>(Back)
:nmap <c-i> <Action>(Forward)
:map <leader>H <Action>(MethodUp)
:map <leader>L <Action>(MethodDown)
:map <leader>o <Action>(FileStructurePopup)
:map <leader>m <Action>(ShowIntentionActions)
nmap <leader>ss <Action>(GotoSymbol)
" File management and navigation commands
nmap <leader>fl <Action>(RecentLocations)
nmap <leader>fc <Action>(FindInPath)
nmap <leader>fr <Action>(RecentFiles)
nmap <leader>fe :NERDTreeToggle<CR>
nmap <Leader>fu :action FindUsages<CR>
nmap <Leader>ff :action GotoFile<CR>
nmap <leader>fi <Action>(SelectIn)
nmap <leader>fp <Action>(ReplaceInPath)
nmap <leader>fo <Action>(OpenFile)
nmap <leader>fs <Action>(ManageRecentProjects)
nmap <leader>fw <Action>(CloseActiveTab)
nmap <Leader>sr :action RecentFiles<CR>
nmap <Leader>se :action SearchEverywhere<CR>
nmap <leader>st <Action>(TextSearchAction)
nmap <leader>ss <Action>(GotoSymbol)
nmap <leader>sa <Action>(GotoAction)
" Find text
nmap <Leader>ft :action FindText<CR>
nmap <leader>dx <Action>(Debug)
nmap <leader>dc <Action>(ContextDebug)
nmap <leader>dv <Action>(ViewBreakpoints)
nmap <leader>de <Action>(EditBreakpoint)
nmap <leader>dm <Action>(XDebugger.MuteBreakpoints)
nmap <leader>dt <Action>(ToggleLineBreakpoint)
nmap <leader>dC <Action>(RunToCursor)
nmap <leader>di <Action>(StepInto)
nmap <leader>do <Action>(StepOver)
nmap <leader>dr <Action>(Resume)
nmap <leader>dR <Action>(EvaluateExpression)
nmap <leader>dw <Action>(ActivateDebugToolWindow)
nmap <leader>gd <Action>(GotoDeclaration)
nmap <leader>go <Action>(GotoSuperMethod)
nmap <leader>gD <Action>(GotoTypeDeclaration)
nmap <leader>gi <Action>(GotoImplementation)
nmap <leader>gT <Action>(GotoTest)
nmap <leader>gp :action VcsShowPrevChangeMarker<CR>
nmap <leader>gn :action VcsShowNextChangeMarker<CR>
" Trigger tests
map <Leader>tt <Action>(RiderUnitTestRunContextAction)
nmap <Leader>cc :action CommentByLineComment<CR>
nmap <leader>lf <Action>(ReformatCode)
nmap <leader>li <Action>(InspectCode)
:map <leader>lr <Action>(RenameElement)
nmap <leader>ll <Action>(Refactorings.QuickListPopupAction)
nmap <leader>Gc <Action>(Vcs.Show.Local.Changes)
nmap <leader>Ga <Action>(Annotate)
:map <leader>gh <Action>(ShowHoverInfo)
nmap <Leader>vv :vsplit<CR>
nmap <Leader>vs :split<CR>
nmap <Leader>ww :action HideAllWindows<CR>
nmap <Leader>wt :action ActivateTerminalToolWindow<CR>
nmap <Leader>wd :action ActivateDatabaseToolWindow<CR>
" Open project tree window
nmap <Leader>t :action ActivateProjectToolWindow<CR>
nnoremap <leader>cf :action ReformatCode<CR>
" Bookmarks
nmap <leader>bm <Action>(Bookmarks)
nmap <leader>bs <Action>(ShowBookmarks)
nmap <leader>bt <Action>(ActivateBookmarksToolWindow)
nmap <leader>bb <Action>(ToggleBookmark)
nmap <leader>be <Action>(EditBookmark)
nmap <leader>bp <Action>(GotoPreviousBookmark)
nmap <leader>bn <Action>(GotoNextBookmark)
nnoremap ge :action GotoNextError<CR>
nnoremap gE :action GotoPreviousError<CR>
" Turn off Copilot
nmap <leader>cp :action Copilot.Toggle<CR>
" Navigate back
nmap <leader> <C-o>
" mark as a global mark/
nnoremap ma mA
nnoremap mb mB
nnoremap mc mC
nnoremap md mD
nnoremap me mE
nnoremap mf mG
nnoremap mh mH
nnoremap mi mI
nnoremap mj mJ
nnoremap mk mK
nnoremap ml mL
nnoremap mm mM
nnoremap mn mN
nnoremap mo mO
nnoremap mp mP
nnoremap mq mQ
nnoremap mr mR
nnoremap ms mS
nnoremap mt mT
nnoremap mu mU
nnoremap mv mV
nnoremap mw mW
nnoremap mx mX
nnoremap my mY
nnoremap mz mZ
" go to global marks
nnoremap 'a `A
nnoremap 'b `B
nnoremap 'c `C
nnoremap 'd `D
nnoremap 'e `E
nnoremap 'f `G
nnoremap 'h `H
nnoremap 'i `I
nnoremap 'j `J
nnoremap 'k `K
nnoremap 'l `L
nnoremap 'm `M
nnoremap 'n `N
nnoremap 'o `O
nnoremap 'p `P
nnoremap 'q `Q
nnoremap 'r `R
nnoremap 's `S
nnoremap 't `T
nnoremap 'u `U
nnoremap 'v `V
nnoremap 'w `W
nnoremap 'x `X
nnoremap 'y `Y
nnoremap 'z `Z
" ---
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
"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
"" Map \r to the Reformat Code action
"map \r <Action>(ReformatCode)
"" Map <leader>d to start debug
"map <leader>d <Action>(Debug)
"" Map \b to toggle the breakpoint on the current line
"map \b <Action>(ToggleLineBreakpoint)
" Find more examples here: https://jb.gg/share-ideavimrc
" https://github.com/ville6000/dotfiles/blob/main/vimrc
set nocompatible " disable compatibility mode with vi
filetype off " disable filetype detection (but re-enable later, see below)
set encoding=utf-8 " UTF-8
set number " Show line numbers
set laststatus=2 " Always show statusline (even with only single window)
set showmatch " Highlight matching brace
set visualbell " Use visual bell (no beeping)
set hlsearch " Highlight all search results
set smartcase " Enable smart-case search
set ignorecase " Always case-insensitive
set incsearch " Searches for strings incrementally
set cindent " Use 'C' style program indenting
set expandtab " Use spaces instead of tabs
set shiftwidth=4 " Number of auto-indent spaces
set smartindent " Enable smart-indent
set smarttab " Enable smart-tabs
set softtabstop=4 " Number of spaces per Tab
set ruler " Show row and column ruler information
set cursorline " Highlight current line
set undolevels=1000 " Number of undo levels
set backspace=indent,eol,start " Backspace behaviour
set so=5
" move vertically by visual line (don't skip wrapped lines)
nmap j gj
nmap k gk
syntax enable
filetype plugin indent on
call plug#begin('~/.vim/plugged')
Plug 'ayu-theme/ayu-vim'
Plug 'ctrlpvim/ctrlp.vim'
call plug#end()
" call plug#begin('~/.config/vim/plugged')
" Plug 'ayu-theme/ayu-vim'
" call plug#end()
set termguicolors
set background=dark
let ayucolor="dark"
colorscheme ayu
if has('gui_running')
set macligatures

View File

@@ -1,7 +1,7 @@
# EditorConfig is awesome: https://editorconfig.org
# top-most EditorConfig file
root = true
root = false
[*]
end_of_line = lf
@@ -18,3 +18,7 @@ trim_trailing_whitespace = false
[*.json]
max_line_length = off
[*.lua]
max_line_length = 90

View File

@@ -1,4 +1,4 @@
column_width = 80
column_width = 90
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2

View File

@@ -0,0 +1,2 @@
autocmd BufRead,BufNewFile *.env set ft=env
autocmd BufRead,BufNewFile *.env.* set ft=env

View File

@@ -5,7 +5,7 @@
-- ── Install lazylazy ────────────────────────────────────────────────
-- https://github.com/folke/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 out = vim.fn.system {
'git',
@@ -28,10 +28,7 @@ end
vim.opt.rtp:prepend(lazypath)
-- ── Add ~/.local/bin to the PATH ────────────────────────────────────
vim.fn.setenv(
'PATH',
vim.fn.expand '$HOME/.local/bin' .. ':' .. vim.fn.expand '$PATH'
)
vim.fn.setenv('PATH', vim.fn.expand '$HOME/.local/bin' .. ':' .. vim.fn.expand '$PATH')
require 'options'
require 'autogroups'
@@ -64,8 +61,8 @@ require('lazy').setup(
}
)
require('nvm-default').setup()
-- require('nvm-default').setup()
require 'keymaps'
-- vim: ts=2 sts=2 sw=2 et
-- vim: set ts=2 sts=2 sw=2 wrap et :

View File

@@ -21,9 +21,7 @@ autocmd({ 'BufEnter', 'BufWinEnter', 'TabEnter' }, {
callback = function()
local max_line_count = vim.fn.line '$'
-- Only adjust if the file is large enough to matter
if max_line_count > 99 then
vim.opt.numberwidth = #tostring(max_line_count) + 1
end
if max_line_count > 99 then vim.opt.numberwidth = #tostring(max_line_count) + 1 end
end,
})
@@ -104,5 +102,3 @@ autocmd({ 'BufRead', 'BufNewFile' }, {
},
command = 'set filetype=sshconfig',
})
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,5 +1,3 @@
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=130 :
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' })
-- ── Deal with word wrap ─────────────────────────────────────────────
K.n(
'k',
"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 }
)
K.n('k', "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 ───────────────────────────────────────────────
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
local fuzzy_search = function()
require('telescope.builtin').find_files(
require('telescope.themes').get_dropdown {
winblend = 20,
previewer = true,
}
)
require('telescope.builtin').find_files(require('telescope.themes').get_dropdown {
winblend = 20,
previewer = true,
})
end
local lazy_plugins = function()
@@ -159,9 +147,7 @@ K.nl('tn', ':Noice dismiss<cr>', 'Noice: Dismiss Notification')
-- Convention is 'q' followed by the operation
K.nl('qf', ':q<CR>', 'Quicker close split')
K.nl('qq', function()
if vim.fn.confirm('Force save and quit?', '&Yes\n&No', 2) == 1 then
vim.cmd 'wq!'
end
if vim.fn.confirm('Force save and quit?', '&Yes\n&No', 2) == 1 then vim.cmd 'wq!' end
end, 'Quit with force saving')
K.nl('qw', ':wq<CR>', 'Write and quit')
K.nl('qQ', function()

View File

@@ -71,16 +71,14 @@ function M.setup(opts)
local nvm_path = options.nvm_path
local node_version = run_command(
string.format('. %s/nvm.sh && nvm version default', nvm_path)
) or run_command(string.format('. %s/nvm.sh && nvm version node', nvm_path))
) or run_command(string.format('. %s/nvm.sh && nvm version node', nvm_path)) or nil
if node_version and node_version:match '^v' then
-- Set vim.g.node_host_prog and vim.g.copilot_node_command
local current_nvm_version_path =
string.format('%s/versions/node/%s', nvm_path, node_version)
local current_nvm_node_bin_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_path = string.format('%s/bin', current_nvm_version_path)
local current_nvm_node_bin = string.format('%s/node', current_nvm_node_bin_path)
local neovim_node_host_bin_path =
string.format('%s/neovim-node-host', current_nvm_node_bin_path)

View File

@@ -13,9 +13,9 @@ local a = vim.api -- A table to store API functions
g.mapleader = ' ' -- Space as the leader key
g.maplocalleader = ' ' -- Space as the local leader key
g.colors_theme = 'tokyonight' -- Set the colorscheme
g.colors_variant_light = 'tokyonight-day' -- Set the light variant
g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
g.colors_theme = 'onedark' -- Set the colorscheme
-- g.colors_variant_light = 'tokyonight-day' -- Set the light variant
-- g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
g.editorconfig = true -- Make sure editorconfig support is enabled
g.loaded_perl_provider = 0 -- Disable perl provider
@@ -26,6 +26,7 @@ g.loaded_java_provider = 0 -- Disable java provider
-- Most of the good defaults are provided by `mini.basics`
-- See: lua/plugins/mini.lua
o.confirm = true -- Confirm before closing unsaved buffers
o.dictionary = '/usr/share/dict/words' -- Add system dictionary
o.ignorecase = true -- Ignore case in search patterns
o.inccommand = 'split' -- Preview substitutions live, as you type!
o.list = true -- Show invisible characters
@@ -37,7 +38,7 @@ o.scrolloff = 8 -- Show context around cursor
o.sidescrolloff = 8 -- Show context around cursor
o.signcolumn = 'yes' -- Keep signcolumn on by default
o.spell = true -- Enable spell checking
o.spelllang = 'en_us' -- Set the spell checking language
o.spelllang = 'en_gb,en_us' -- Set the spell checking language
o.splitbelow = true -- split to the bottom
o.splitright = true -- vsplit to the right
o.termguicolors = true -- Enable GUI colors
@@ -63,4 +64,7 @@ vim.schedule(function()
o.clipboard = c
end)
-- xiyaowong/transparent.nvim
vim.g.transparent_enabled = true
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -3,7 +3,7 @@ return {
-- https:/github.com/saghen/blink.cmp
{
'saghen/blink.cmp',
version = '*',
version = '1.*',
lazy = false, -- lazy loading handled internally
dependencies = {
-- Compatibility layer for using nvim-cmp sources on blink.cmp
@@ -58,10 +58,10 @@ return {
-- 'default' for mappings similar to built-in completion
-- '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
-- see the "default configuration" section below for full documentation on how to define
-- your own keymap.
-- see the "default configuration" section below for full documentation on how to
-- define your own keymap.
keymap = {
preset = 'super-tab',
preset = 'default',
-- Use Ctrl-x to trigger auto completion
['<C-x>'] = { 'show', 'show_documentation', 'hide_documentation' },
},
@@ -86,7 +86,8 @@ return {
},
},
documentation = {
auto_show = true,
auto_show = false,
auto_show_delay_ms = 500,
},
ghost_text = {
enabled = false,
@@ -97,12 +98,12 @@ return {
-- elsewhere in your config, without redefining it, via `opts_extend`
sources = {
default = {
'lazydev',
'lsp',
'snippets',
'copilot',
'path',
'snippets',
'buffer',
'lazydev',
},
providers = {
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
signature = { enabled = true },
},

View File

@@ -1,17 +1,9 @@
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
-- https://github.com/voldikss/vim-floaterm
{
'voldikss/vim-floaterm',
lazy = true,
cmd = { 'FloatermToggle' },
init = function()
vim.g.floaterm_width = 0.8
@@ -49,34 +41,6 @@ return {
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
-- https://github.com/tpope/vim-projectionist
{
@@ -150,21 +114,7 @@ return {
{
'whatyouhide/vim-textobj-xmlattr',
dependencies = { 'kana/vim-textobj-user' },
},
-- 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,
},
ft = { 'html', 'xml', 'javascriptreact', 'typescriptreact', 'vue' },
},
-- Clarify and beautify your comments using boxes and lines.
@@ -174,38 +124,4 @@ return {
event = 'BufEnter',
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',
},
}

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

View File

@@ -2,11 +2,18 @@ return {
-- A collection of small QoL plugins for Neovim
-- https://github.com/folke/snacks.nvim
{
---@module 'snacks'
'folke/snacks.nvim',
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
bigfile = { enabled = true },
input = { enabled = true },
notifier = {
enabled = true,
timeout = 3000,
},
gitbrowse = { enabled = true },
quickfile = { enabled = true },
statuscolumn = {
@@ -15,7 +22,7 @@ return {
right = { 'fold', 'git' }, -- priority of signs on the right (high to low)
folds = {
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 = {
-- patterns to match Git signs
@@ -36,8 +43,14 @@ return {
-- replaces the UI for messages, cmdline and the popupmenu.
-- https://github.com/folke/noice.nvim
{
---@module 'noice'
'folke/noice.nvim',
event = 'VeryLazy',
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
'MunifTanjim/nui.nvim',
'rcarriga/nvim-notify',
},
opts = {
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
@@ -60,7 +73,10 @@ return {
filter = {
event = 'msg_show',
kind = '',
find = 'written',
any = {
{ find = 'written' },
{ find = '%d of %d --%d%--' },
},
},
opts = { skip = true },
},
@@ -101,14 +117,6 @@ return {
},
},
},
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
'MunifTanjim/nui.nvim',
-- OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
'rcarriga/nvim-notify',
},
},
-- A pretty diagnostics, references, telescope results,
@@ -116,10 +124,12 @@ return {
-- trouble your code is causing.
-- https://github.com/folke/trouble.nvim
{
---@module 'trouble'
'folke/trouble.nvim',
lazy = false,
cmd = 'Trouble',
dependencies = { 'nvim-tree/nvim-web-devicons' },
---@type trouble.Config
opts = {
auto_preview = true,
auto_fold = true,
@@ -131,7 +141,7 @@ return {
},
modes = {
diagnostics = {
auto_open = true,
auto_open = false,
},
test = {
mode = 'diagnostics',
@@ -139,7 +149,7 @@ return {
type = 'split',
relative = 'win',
position = 'right',
size = 0.3,
size = 0.25,
},
},
cascade = {
@@ -158,13 +168,4 @@ return {
},
},
},
-- Navigate your code with search labels, enhanced
-- character motions and Treesitter integration
-- https://github.com/folke/flash.nvim
{
'folke/flash.nvim',
event = 'VeryLazy',
opts = {},
},
}

View File

@@ -4,350 +4,296 @@
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',
'editorconfig-checker',
'goimports',
'gotests',
'phpcbf',
'phpmd',
'phpstan',
'pint',
'prettierd',
'semgrep',
'shellcheck',
'shfmt',
'staticcheck',
'stylua',
'trivy',
'vint',
'yamlfmt',
}
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',
ft = 'lua',
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
-- load assert and describe paths
{ path = 'luassert/library', words = { 'assert' } },
{ path = 'busted/library', words = { 'describe' } },
},
'neovim/nvim-lspconfig',
dependencies = {
{ 'williamboman/mason.nvim', opts = {} },
'williamboman/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
'folke/lazydev.nvim',
'zapling/mason-conform.nvim',
-- Allows extra capabilities provided by blink.cmp
'saghen/blink.cmp',
},
},
config = function()
local lazydev = require 'lazydev'
-- Meta type definitions for the Lua platform Luvit.
-- https://github.com/Bilal2453/luvit-meta
{ 'Bilal2453/luvit-meta', lazy = true },
-- Quickstart configs for Nvim LSP
-- https://github.com/neovim/nvim-lspconfig
{ 'neovim/nvim-lspconfig' },
-- Portable package manager for Neovim that runs everywhere Neovim runs.
-- Easily install and manage LSP servers, DAP servers, linters, and formatters.
-- https://github.com/williamboman/mason.nvim
{
'williamboman/mason.nvim',
version = '*',
cmd = 'Mason',
run = ':MasonUpdate',
opts = {},
},
-- Extensible UI for Neovim notifications and LSP progress messages.
-- https://github.com/j-hui/fidget.nvim
{
'j-hui/fidget.nvim',
version = '*',
opts = {},
},
-- Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim.
-- https://github.com/williamboman/mason-lspconfig.nvim
{ 'williamboman/mason-lspconfig.nvim' },
-- Install and upgrade third party tools automatically
-- https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim
{
'WhoIsSethDaniel/mason-tool-installer.nvim',
version = '*',
opts = {
auto_install = true,
auto_update = true,
ensure_installed = 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
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }),
callback = function(event)
local map = function(keys, func, desc, mode)
mode = mode or 'n'
vim.keymap.set(
mode,
keys,
func,
{ buffer = event.buf, desc = 'LSP: ' .. desc }
)
end
end
client.config.settings.Lua =
vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
-- Tell the language server which version of Lua you're using
-- (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
},
-- Make the server aware of Neovim runtime files
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME,
local tsb = require 'telescope.builtin'
-- Rename the variable under your cursor.
-- Most Language Servers support renaming across files, etc.
map('grn', vim.lsp.buf.rename, '[R]e[n]ame')
-- Execute a code action, usually your cursor needs to be on top of an error
-- or a suggestion from your LSP for this to activate.
map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
-- Find references for the word under your cursor.
map('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('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('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('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('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('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('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 = {},
volar = {
settings = {
typescript = {
inlayHints = {
enumMemberValues = { enabled = true },
functionLikeReturnTypes = { enabled = true },
propertyDeclarationTypes = { enabled = true },
},
},
},
},
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 signs = {
{ name = 'DiagnosticSignError', text = '' }, -- Error icon
{ name = 'DiagnosticSignWarn', text = '' }, -- Warning icon
{ name = 'DiagnosticSignHint', text = '' }, -- Hint icon
{ name = 'DiagnosticSignInfo', text = '' }, -- Information icon
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
'actionlint', -- GitHub Actions linter
'shfmt', -- Shell formatter
'stylua', -- Lua formatter
'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)
if vim.tbl_isempty(vim.fn.sign_getdefined(name)) then
vim.fn.sign_define(name, sign_opts)
end
end
require('mason-conform').setup {
ensure_installed = ensure_installed,
}
for _, sign in ipairs(signs) do
ensure_sign_defined(sign.name, {
text = sign.text,
texthl = sign.texthl or sign.name,
numhl = sign.numhl or sign.name,
})
end
---@type vim.diagnostic.Opts
local diagnostics_config = {
signs = {
active = signs, -- show signs
require('mason-lspconfig').setup {
ensure_installed = {}, -- explicitly set to an empty table
automatic_installation = false,
handlers = {
function(server_name)
local server = servers[server_name] or {}
server.capabilities =
vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
require('lspconfig')[server_name].setup(server)
end,
},
update_in_insert = false,
underline = true,
severity_sort = true,
virtual_text = true,
}
vim.diagnostic.config(diagnostics_config)
-- end of junnplus/lsp-setup config
lazydev.setup {
---@type boolean|(fun(root:string):boolean?)
enabled = true,
debug = false,
runtime = vim.env.VIMRUNTIME --[[@as string]],
library = {
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
},
integrations = {
lspconfig = true,
cmp = true,
},
}
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 '/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' },
-- 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 = {} },
}

View File

@@ -12,6 +12,42 @@ return {
version = '*',
priority = 1001,
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
-- h: MiniBasics.config
require('mini.basics').setup {
@@ -25,17 +61,12 @@ return {
},
}
-- Animate common Neovim actions
-- Replaced anuvyklack/windows.nvim
require('mini.animate').setup()
-- Buffer removing (unshow, delete, wipeout), which saves window layout
-- Replaced famiu/bufdelete.nvim
require('mini.bufremove').setup()
-- Show next key clues
-- Replaced folke/which-key.nvim
local miniclue = require 'mini.clue'
---@modules mini.clue
miniclue.setup {
window = {
config = {
@@ -100,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
-- Replaced lewis6991/gitsigns.nvim
require('mini.diff').setup()
-- Git integration
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
-- Replaced folke/todo-comments.nvim
local hp = require 'mini.hipatterns'
hp.setup {
highlighters = {
@@ -162,36 +201,16 @@ return {
}
-- Visualize and work with indent scope
-- Replaced lukas-reineke/indent-blankline.nvim
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
-- Replaced glepnir/dashboard-nvim
local starter = require 'mini.starter'
---@modules mini.starter
starter.setup {
items = {
starter.sections.telescope(),
starter.sections.builtin_actions(),
starter.sections.sessions(5, true),
starter.sections.recent_files(5),
},
content_hooks = {
starter.gen_hook.adding_bullet(),
@@ -201,25 +220,38 @@ return {
}
-- Minimal and fast statusline module with opinionated default look
-- Replaced nvim-lualine/lualine.nvim
local sl = require 'mini.statusline'
---@modules mini.statusline
sl.setup {
use_icons = true,
set_vim_settings = true,
content = {
active = function()
local mode, mode_hl = sl.section_mode { trunc_width = 120 }
local git = sl.section_git { trunc_width = 9999 }
local diagnostics = sl.section_diagnostics { trunc_width = 9999 }
local filename = sl.section_filename { trunc_width = 9999 }
local mode, mode_hl = sl.section_mode { trunc_width = 100 }
local git = sl.section_git { trunc_width = 40 }
local diagnostics = sl.section_diagnostics {
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 location = sl.section_location { trunc_width = 9999 }
return sl.combine_groups {
{ hl = mode_hl, strings = { mode } },
{ hl = 'statuslineDevinfo', strings = { git, diagnostics } },
{
hl = 'MiniStatuslineDevinfo',
strings = { git, lsp },
},
'%<', -- Mark general truncate point
{ hl = 'statuslineFilename', strings = { filename } },
'%=', -- End left alignment
{ hl = 'statuslineFileinfo', strings = { diagnostics } },
{ hl = 'statuslineFileinfo', strings = { fileinfo } },
{ hl = mode_hl, strings = { location } },
}
@@ -227,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
require('mini.trailspace').setup()
end,

View File

@@ -41,7 +41,7 @@ return {
'document_symbols',
},
source_selector = {
winbar = true,
winbar = false,
statusline = false,
separator = { left = '', right = '' },
show_separator_on_edge = true,
@@ -54,9 +54,7 @@ return {
event_handlers = {
{
event = 'file_opened',
handler = function(file_path)
require('neo-tree.command').execute { action = 'close' }
end,
handler = function(_) require('neo-tree.command').execute { action = 'close' } end,
},
},
default_component_configs = {

View File

@@ -1,44 +1,13 @@
return {
{
'rmagatti/auto-session',
lazy = false,
version = '*',
opts = {
suppressed_dirs = {
'/',
'~/',
'~/Downloads',
'~/Library',
},
bypass_save_filetypes = {
'PlenaryTestPopup',
'alpha',
'checkhealth',
'dashboard',
'dbout',
'gitsigns.blame',
'grug-far',
'help',
'lspinfo',
'man',
'neo-tree',
'neotest-output',
'neotest-output-panel',
'neotest-summary',
'notify',
'qf',
'spectre_panel',
'startuptime',
'trouble',
'tsplayground',
},
-- log_level = 'debug',
},
},
{
'nvim-lua/plenary.nvim',
version = '*',
lazy = false,
},
-- Vim plugin for automatic time tracking and metrics
-- generated from your programming activity.
-- https://github.com/wakatime/vim-wakatime
{ 'wakatime/vim-wakatime', lazy = false, enabled = true },
}

View File

@@ -3,7 +3,8 @@ return {
-- https://github.com/nvim-telescope/telescope.nvim
'nvim-telescope/telescope.nvim',
version = '*',
lazy = false,
lazy = true,
cmd = 'Telescope',
dependencies = {
{ 'nvim-lua/plenary.nvim' },
{ 'nvim-telescope/telescope-symbols.nvim' },
@@ -16,10 +17,6 @@ return {
-- https://github.com/polirritmico/telescope-lazy-plugins.nvim
{ 'polirritmico/telescope-lazy-plugins.nvim' },
-- Neovim plugin. Telescope.nvim extension that adds LuaSnip integration.
-- https://github.com/benfowler/telescope-luasnip.nvim
{ 'benfowler/telescope-luasnip.nvim' },
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
-- Only load if `make` is available
{
@@ -27,27 +24,45 @@ return {
build = 'make',
cond = vim.fn.executable 'make' == 1,
},
-- Import modules with ease
-- https://github.com/piersolenski/telescope-import.nvim
{ 'piersolenski/telescope-import.nvim' },
},
config = function()
local t = require 'telescope'
local a = require 'telescope.actions'
local c = require 'telescope.config'
local open_with_trouble = require('trouble.sources.telescope').open
local add_to_trouble = require('trouble.sources.telescope').add
-- Clone the default Telescope configuration
local vimgrep_arguments = { unpack(c.values.vimgrep_arguments) }
-- I want to search in hidden/dot files.
table.insert(vimgrep_arguments, '--hidden')
-- I don't want to search in the `.git` directory.
table.insert(vimgrep_arguments, '--glob')
table.insert(vimgrep_arguments, '!**/.git/*')
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
t.setup {
defaults = {
-- `hidden = true` is not supported in text grep commands.
vimgrep_arguments = vimgrep_arguments,
layout_strategy = 'horizontal',
pickers = {
find_files = {
-- `hidden = true` will still show the inside of `.git/` as
-- it's not `.gitignore`d.
find_command = { 'rg', '--files', '--hidden', '--glob', '!**/.git/*' },
theme = 'dropdown',
},
mappings = {
i = {
['<C-s>'] = a.cycle_previewers_next,
['<C-a>'] = a.cycle_previewers_prev,
},
},
},
mappings = {
i = {
@@ -64,28 +79,28 @@ return {
},
},
},
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<CR>',
node_incremental = '<CR>',
scope_incremental = '<TAB>',
node_decremental = '<S-TAB>',
},
},
context_commentstring = {
enable = true,
enable_autocmd = false,
},
extensions = {
lazy_plugins = {
-- Must be a valid path to the file containing the lazy spec and setup() call.
lazy_config = vim.fn.stdpath 'config' .. '/init.lua',
},
import = {
-- Imports can be added at a specified line whilst keeping the cursor in place
insert_at_top = true,
-- Optionally support additional languages or modify existing languages...
custom_languages = {
{
-- The filetypes that ripgrep supports (find these via `rg --type-list`)
extensions = { 'js', 'ts' },
-- The Vim filetypes
filetypes = { 'vue' },
-- Optionally set a line other than 1
insert_at_line = 2, ---@type function|number
-- The regex pattern for the import statement
regex = [[^(?:import(?:[\"'\s]*([\w*{}\n, ]+)from\s*)?[\"'\s](.*?)[\"'\s].*)]],
},
},
},
},
}

View File

@@ -1,15 +1,8 @@
return {
-- Theme of choice, tokyonight
-- https://github.com/folke/tokyonight.nvim
{
'folke/tokyonight.nvim',
priority = 1000, -- Make sure to load this before all the other start plugins.
init = function() vim.cmd.colorscheme(vim.g.colors_theme) end,
opts = {
transparent = true,
},
'rmehri01/onenord.nvim',
opts = {},
},
-- Automatic dark mode
-- https://github.com/f-person/auto-dark-mode.nvim
{
@@ -18,11 +11,11 @@ return {
update_interval = 1000,
set_dark_mode = function()
vim.api.nvim_set_option_value('background', 'dark', {})
vim.cmd.colorscheme(vim.g.colors_variant_dark)
-- vim.cmd.colorscheme(vim.g.colors_variant_dark)
end,
set_light_mode = function()
vim.api.nvim_set_option_value('background', 'light', {})
vim.cmd.colorscheme(vim.g.colors_variant_light)
-- vim.cmd.colorscheme(vim.g.colors_variant_light)
end,
},
},
@@ -31,6 +24,7 @@ return {
-- https://github.com/catgoose/nvim-colorizer.lua
{
'catgoose/nvim-colorizer.lua',
event = 'BufReadPre',
opts = {
user_default_options = {
names = false,
@@ -38,13 +32,27 @@ return {
},
},
-- A neovim plugin that shows colorcolumn dynamically
-- https://github.com/Bekaboo/deadcolumn.nvim
{ 'Bekaboo/deadcolumn.nvim' },
-- Remove all background colors to make nvim transparent
-- https://github.com/xiyaowong/nvim-transparent
{ 'xiyaowong/nvim-transparent', opts = {} },
{
'xiyaowong/nvim-transparent',
lazy = false,
config = function()
local t = require 'transparent'
t.setup {
extra_groups = {
'NormalNC',
'NormalFloat',
'FloatBorder',
'TelescopeBorder',
'TelescopePromptBorder',
'TelescopeResultsBorder',
'TelescopePreviewBorder',
},
}
t.clear_prefix 'NeoTree'
end,
},
-- Display a character as the colorcolumn
-- https://github.com/lukas-reineke/virt-column.nvim

View File

@@ -1,4 +0,0 @@
-- Vim plugin for automatic time tracking and metrics
-- generated from your programming activity.
-- https://github.com/wakatime/vim-wakatime
return { 'wakatime/vim-wakatime', lazy = false, enabled = true }

View File

@@ -0,0 +1,31 @@
" Vim syntax file
" Language: env files (NOT shell code)
" Maintainer: Gernot Schulz <gernot.schulz@overleaf.com>
" Source: https://github.com/overleaf/vim-env-syntax
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn match envComment '^#.*'
syn match envVariableUnassigned "^\<\h\w*$"
syn match envVariable "^\<\h\w*\ze=" nextgroup=envVarAssign
syn match envVarAssign contained "=" nextgroup=envVar,envQuotedVarOpen,envSpace
syn match envVar contained "\h\w*"
syn match envSpace contained "\s\+" nextgroup=envQuotedVarOpen
syn match envQuotedVarOpen contained "[\"']"
syn match envSpace "\s$"
syn match envQuotedVarClose "[\"']$"
let b:current_syntax = "env"
hi def link envComment Comment
hi def link envVariableUnassigned Error
hi def link envVariable Identifier
hi def link envVarAssign Operator
hi def link envSpace Error
hi def link envQuotedVarOpen Error
hi def link envQuotedVarClose Error

2
config/op/plugins.sh Normal file
View File

@@ -0,0 +1,2 @@
export OP_PLUGIN_ALIASES_SOURCED=1
alias gh="op plugin run -- gh"

15
config/op/plugins/gh.json Normal file
View File

@@ -0,0 +1,15 @@
{
"account_id": "S5Z2DMNFKJEZBPCWRHRWC4DCGI",
"entrypoint": [
"gh"
],
"credentials": [
{
"plugin": "github",
"credential_type": "personal_access_token",
"usage_id": "personal_access_token",
"vault_id": "injcin7obv3jdet3r2u3kfihfy",
"item_id": "f6vinbnc6l7ngdzvlw66ayewlq"
}
]
}

View File

@@ -0,0 +1 @@
[{"account_id":"S5Z2DMNFKJEZBPCWRHRWC4DCGI","vault_id":"injcin7obv3jdet3r2u3kfihfy","item_id":"f6vinbnc6l7ngdzvlw66ayewlq"}]

View File

@@ -6,7 +6,8 @@
# Defaults
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
export DOTFILES_CURRENT_SHELL=$(basename "$SHELL")
DOTFILES_CURRENT_SHELL=$(basename "$SHELL")
export DOTFILES_CURRENT_SHELL
# Enable verbosity with VERBOSE=1
VERBOSE="${VERBOSE:-0}"
@@ -16,13 +17,53 @@ DEBUG="${DEBUG:-0}"
# Enable debugging with DEBUG=1
[ "${DEBUG:-0}" -eq 1 ] && set -x
# Detect the current shell
CURRENT_SHELL=$(ps -p $$ -ocomm= | awk -F/ '{print $NF}')
# Function to prepend a path to PATH based on the shell
x-path-prepend()
{
local dir=$1
case "$CURRENT_SHELL" in
fish)
set -U fish_user_paths "$dir" $fish_user_paths
;;
sh | bash | zsh)
PATH="$dir:$PATH"
;;
*)
echo "Unsupported shell: $CURRENT_SHELL"
exit 1
;;
esac
}
# Function to set environment variables based on the shell
x-set-env()
{
local var=$1
local value=$2
case "$CURRENT_SHELL" in
fish)
set -x "$var" "$value"
;;
sh | bash | zsh)
export "$var=$value"
;;
*)
echo "Unsupported shell: $CURRENT_SHELL"
exit 1
;;
esac
}
# Explicitly set XDG folders, if not already set
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
[ -z "$XDG_DATA_HOME" ] && export XDG_DATA_HOME="$HOME/.local/share"
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
x-set-env XDG_CONFIG_HOME "$HOME/.config"
x-set-env XDG_DATA_HOME "$HOME/.local/share"
x-set-env XDG_CACHE_HOME "$HOME/.cache"
x-set-env XDG_STATE_HOME "$HOME/.local/state"
x-set-env XDG_BIN_HOME "$HOME/.local/bin"
# Paths
x-path-prepend "/usr/local/bin"

96
config/skhd/skhdrc Normal file
View File

@@ -0,0 +1,96 @@
# skhd configuration file
# https://github.com/koekeishiya/skhd
# Reserved keys
# ---------------------------
# shift + cmd
# m = restart yabai
# q = quit yabai
# <cr> = open wezterm
# alt
# h = focus west
# j = focus south
# k = focus north
# l = focus east
# e = toggle split
# y = toggle float, center window medium size
# u = move window to left
# i = move window to center
# o = move window to right
# ctrl + alt
# h = resize window left
# j = resize window down
# k = resize window up
# l = resize window right
# alt + shift
# t = toggle float, center window medium size
# y = toggle float, center window large size
# h = swap window left
# j = swap window down
# k = swap window up
# l = swap window right
# Control applications
## Yabai
shift + cmd - m : yabai --restart-service # restart yabai
shift + cmd - q : yabai --quit # quit yabai
## wezterm
shift + cmd - return : wezterm
# Floating windows
# float / unfloat window and center on screen medium size
alt - t : yabai -m window --toggle float;\
yabai -m window --grid 9:16:1:1:14:7
# float / unfloat window and center on screen large size
shift + alt - t : yabai -m window --toggle float;\
yabai -m window --grid 90:160:5:5:150:80
# make floating window fill screen
alt - y : yabai -m window --toggle float;\
yabai -m window --grid 1:1:0:0:1:1
# toggle float window and center on screen medium size
shift + alt - y : yabai -m window --toggle float \
&& yabai -m window --resize \
abs:$(($(yabai -m query --displays --display | jq .frame.w) / 2)):$(($(yabai -m query --displays --display | jq .frame.h) * 4 / 5)) \
&& yabai -m window --move \
abs:$(($(yabai -m query --displays --display | jq .frame.x) + $(($(yabai -m query --displays --display | jq .frame.w) / 4)))):$(($(yabai -m query --displays --display | jq .frame.y) + $(($(yabai -m query --displays --display | jq .frame.h) / 10))))
# toggle window split type
alt - e : yabai -m window --toggle split
# Focusing, resizing and moving windows
## focus window
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
## move windows to predefined places
alt - y : yabai -m window --grid 1:4:1:0:2:1 # 2/4 centered
alt - u : yabai -m window --grid 1:3:0:0:1:1 # 1/3 left
alt - i : yabai -m window --grid 1:3:1:0:1:1 # 1/3 center
alt - o : yabai -m window --grid 1:3:2:0:1:1 # 1/3 right
ctrl + alt - h : yabai -m window --grid 1:2:0:0:1:1 # 1/2 left
ctrl + alt - l : yabai -m window --grid 1:2:1:0:1:1 # 1/2 right
## swap windows
shift + alt - h : yabai -m window --swap west
shift + alt - j : yabai -m window --swap south
shift + alt - k : yabai -m window --swap north
shift + alt - l : yabai -m window --swap east
## resize windows
ctrl + alt - h : yabai -m window --resize left:-50:0; \
yabai -m window --resize right:-50:0
ctrl + alt - j : yabai -m window --resize bottom:0:50; \
yabai -m window --resize top:0:50
ctrl + alt - k : yabai -m window --resize top:0:-50; \
yabai -m window --resize bottom:0:-50
ctrl + alt - l : yabai -m window --resize right:50:0; \
yabai -m window --resize left:50:0

View File

@@ -12,5 +12,9 @@
# License: MIT
THEME_FILE="$HOME/.local/state/tmux/tmux-dark-notify-theme.conf"
THEME_BACKUP="$HOME/.dotfiles/config/tmux/theme-dark.conf"
# If THEME_FILE doesn't exist, link $THEME_BACKUP to it
[[ ! -e $THEME_FILE ]] && ln -s "$THEME_BACKUP" "$THEME_FILE"
[[ -e $THEME_FILE ]] && tmux source-file "$THEME_FILE"

View File

@@ -1,7 +1,7 @@
set-option -g status-style 'fg=#4c4f69,bg=#eff1f5'
set-window-option -g window-status-style 'fg=#4c4f69,bg=#eff1f5 dim'
set-window-option -g window-status-current-style 'fg=#8839ef,bg=#eff1f5'
set-window-option -g window-status-activity-style 'fg=#4c4f69,bg=#eff1f5 nodim'
set-window-option -g window-status-bell-style 'fg=#4c4f69,bg=#eff1f5'
set-option -g status-style 'fg=#4c4f69,bg=default'
set-window-option -g window-status-style 'fg=#4c4f69,bg=default dim'
set-window-option -g window-status-current-style 'fg=#8839ef,bg=default'
set-window-option -g window-status-activity-style 'fg=#4c4f69,bg=default nodim'
set-window-option -g window-status-bell-style 'fg=#4c4f69,bg=default'
set -g message-style 'fg=#8839ef bg=#e6e9ef bold' # fg magenta, bg black

View File

@@ -3,7 +3,7 @@
# Contains configuration from the following sources:
# - https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html
# - https://github.com/dreamsofcode-io/tmux/blob/main/tmux.conf
#
# ╭──────────────────────────────────────────────────────────╮
# │ Settings │
# ╰──────────────────────────────────────────────────────────╯
@@ -15,14 +15,17 @@
# -o : Set the option only if it is not already set.
# -u : Unset the specified option.
set -ag terminal-overrides ",xterm-256color:RGB"
set -ag terminal-features 'xterm-256color:RGB'
set -g default-terminal "tmux-256color" # Set default terminal to 256 colors
set -g detach-on-destroy off # don't detach tmux when killing a session
set -g display-time 0 # Hide clock
set -g focus-events on # Focus events enabled for terminals that support them
set -g mouse on # Mouse support
set -g set-titles on # Allow tmux to set the terminal title
set -g status on # Setting status on
set -g status-keys vi # vi keys to move between panes
set -g detach-on-destroy off # don't detach tmux when killing a session
set -g display-time 0 # Hide clock
set -g focus-events on # Focus events enabled for terminals that support them
set -g mouse on # Mouse support
set -g set-titles on # Allow tmux to set the terminal title
set -g status on # Setting status on
set -g status-keys vi # vi keys to move between panes
# Activity Monitoring (for when something happens in another pain)
set -g monitor-activity on
@@ -43,18 +46,18 @@ set -g renumber-windows on
# Activate with `DEBUG=1 tmux -vv`
if-shell '[ "$DEBUG" = "1" ]' 'set -g debug-file ~/.cache/tmux-debug.log'
# ╭──────────────────────────────────────────────────────────╮
# │ Theme │
# ╰──────────────────────────────────────────────────────────╯
set -g pane-active-border-style "fg=#7aa2f7"
set -g pane-border-style "fg=#3b4261"
set -g status-style "bg=default"
set -g status-justify "left"
set -g status-left ''
set -g status-left-length "0"
set -g status-position "bottom"
set -g status-right "#S@#{hostname_short} #{tmux_mode_indicator}"
set -g status-right "#S@#h #{tmux_mode_indicator}"
set -g status-right-length "30"
set -g window-status-current-format ' #I:#W#{?window_zoomed_flag, ◈ ,} '
set -g window-status-format ' #I:#W '
@@ -63,6 +66,7 @@ set -g window-status-format ' #I:#W '
# │ Bindings │
# ╰──────────────────────────────────────────────────────────╯
# bind flags
# -N = Note / description of the command
# -r = repeatable, only needs prefix once
# -n = doesn't need prefix
# -t = binds to a certain key-table (root, copy-mode, prefix, etc.)
@@ -73,10 +77,10 @@ set -g prefix C-Space
bind C-Space send-prefix
# Use Alt-arrow keys without prefix key to switch panes
bind -n M-Left select-pane -L
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Easier switching between window
bind C-n next-window
@@ -95,6 +99,11 @@ bind Escape copy-mode
unbind p
bind p paste-buffer
# tms bindings
bind -N "tms" t display-popup -E "tms"
bind -N "tms windows" C-w display-popup -E "tms windows"
bind -N "tms switch" C-s display-popup -E "tms switch"
bind -N "tms refresh" C-r display-popup -E "tms refresh"
# ╭──────────────────────────────────────────────────────────╮
# │ Plugins │
@@ -120,7 +129,7 @@ set -g @tmux_window_name_use_tilde "True"
# https://github.com/erikw/tmux-dark-notify
set -g @dark-notify-theme-path-light "$HOME/.dotfiles/config/tmux/theme-light.conf"
set -g @dark-notify-theme-path-dark "$HOME/.dotfiles/config/tmux/theme-dark.conf"
set -g @dark-notify-theme-path-dark "$HOME/.dotfiles/config/tmux/theme-dark.conf"
## https://github.com/MunifTanjim/tmux-mode-indicator
set -g @mode_indicator_copy_mode_style 'bg=default,fg=yellow'
@@ -132,24 +141,30 @@ set -g @mode_indicator_sync_mode_style 'bg=default,fg=red'
set -g @fzf-url-bind 'u'
set -g @fzf-url-history-limit '2000'
# ── Sourcing the plugins ──────────────────────────────────────────────
# https://github.com/tmux-plugins/tmux-continuum
set -g @continuum-restore 'on'
run-shell "$HOME/.config/tmux/plugins/tmux-sensible/sensible.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-window-name/tmux_window_name.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-mode-indicator/mode_indicator.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-suspend/suspend.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-continuum/continuum.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-sessionist/sessionist.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-yank/yank.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-current-pane-hostname/current_pane_hostname.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-dark-notify/main.tmux"
run-shell "$HOME/.config/tmux/plugins/tmux-fzf-url/fzf-url.tmux"
# ── Own scripts ───────────────────────────────────────────────────────
# If we started tmux with a session name, rename it.
run-shell "$HOME/.dotfiles/config/tmux/rename-session.sh"
# Load theme based on tmux-dark-notify state.
# This script helps states where dark-notify is not available,
# and we want to have light or dark state constantly available.
run-shell "$HOME/.config/tmux/theme-activate.sh"
run-shell "$HOME/.dotfiles/config/tmux/theme-activate.sh"
# If we started tmux with a session name, rename it.
run-shell "$HOME/.config/tmux/rename-session.sh"
# ── Sourcing the plugins ──────────────────────────────────────────────
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-sensible/sensible.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-window-name/tmux_window_name.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-mode-indicator/mode_indicator.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-suspend/suspend.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-continuum/continuum.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-resurrect/resurrect.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-sessionist/sessionist.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-yank/yank.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-current-pane-hostname/current_pane_hostname.tmux"
run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-fzf-url/fzf-url.tmux"
# run-shell "$HOME/.dotfiles/config/tmux/plugins/tmux-dark-notify/main.tmux"

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

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

View File

@@ -0,0 +1,64 @@
"" The PC is fast enough, do syntax highlight
"" syncing from start 6nless 200 lines
augroup vimrc-sync-fromstart
autocmd!
autocmd BufEnter * :syntax sync maxlines=600
augroup END
"" txt
augroup vimrc-wrapping
autocmd!
autocmd BufRead,BufNewFile *.txt call s:setupWrapping()
augroup END
"" make/cmake
augroup vimrc-make-cmake
autocmd!
autocmd FileType make setlocal noexpandtab
autocmd BufNewFile,BufRead CMakeLists.txt setlocal filetype=cmake
augroup END
set autoread
""" Create/get autocommand group
function! s:CreateAugroup(name) abort
execute 'augroup' a:name
autocmd!
augroup END
endfunction
" Highlight on yank
" See `:help vim.highlight.on_yank()`
call s:CreateAugroup('YankHighlight')
autocmd YankHighlight TextYankPost * silent! lua vim.highlight.on_yank()
" Set the numberwidth to the maximum line number.
" Fixes the issue where the line numbers jump
" around when moving between lines with relative line numbers enabled.
call s:CreateAugroup('AdjustNumberWidth')
autocmd AdjustNumberWidth BufEnter,BufWinEnter,TabEnter *
\ let max_line_count = line('$') |
\ if max_line_count > 99 |
\ let &numberwidth = strlen(string(max_line_count)) + 1
\ endif
" Windows to close with "q"
call s:CreateAugroup('close_with_q')
autocmd close_with_q FileType checkhealth,dbout,gitsigns.blame,grug-far,help,
\ lspinfo,man,neotest-output,neotest-output-panel,neotest-summary,notify,
\ qf,spectre_panel,startuptime,tsplayground
\ setlocal buflisted=false |
\ nnoremap <silent> <buffer> q :close<CR>
" Make it easier to close man-files when opened inline
call s:CreateAugroup('man_unlisted')
autocmd man_unlisted FileType man setlocal buflisted=false
" Wrap and check for spell in text filetypes
call s:CreateAugroup('wrap_spell')
autocmd wrap_spell FileType text,plaintex,typst,gitcommit,markdown,asciidoc,rst,tex
\ setlocal wrap spell
" Fix conceallevel for json files
call s:CreateAugroup('json_conceal')
autocmd json_conceal FileType json,jsonc,json5 setlocal conceallevel=0

View File

@@ -0,0 +1,26 @@
function! ChangeColorScheme(channel, msg)
let time = trim(a:msg)
if time ==# "Dark"
set background="dark"
else
set background="light"
endif
endfunction
function! CheckStatus(timer)
if executable("defaults")
let job = job_start(
\ ["defaults", "read", "-g", "AppleInterfaceStyle"],
\ {"out_cb": "ChangeColorScheme"}
\ )
else
set background="dark"
endif
endfunction
function! AutoDarkModeSetup()
let timer = timer_start(3000, 'CheckStatus', {'repeat': -1})
call CheckStatus(timer) " Initial call to setup the theme
endfunction
call AutoDarkModeSetup()

View File

@@ -0,0 +1,113 @@
"*****************************************************************************
"" Abbreviations
"*****************************************************************************
"" no one is really happy until you have this shortcuts
cnoreabbrev W! w! " force write
cnoreabbrev Q! q! " force quit
cnoreabbrev Qall! qall! " force quit all
cnoreabbrev Wq wq " write and quit
cnoreabbrev Wa wa " write all
cnoreabbrev wQ wq " write and quit
cnoreabbrev WQ wq " write and quit
cnoreabbrev W w " write
cnoreabbrev Q q " quit
cnoreabbrev Qall qall " quit all
"*****************************************************************************
"" Mappings
"*****************************************************************************
noremap <C-s> :w<CR> " save buffer
" Split
noremap <Leader>h :<C-u>split<CR> " horizontal split
noremap <Leader>v :<C-u>vsplit<CR> " vertical split
" Git
noremap <Leader>ga :Gwrite<CR>
noremap <Leader>gc :Git commit --verbose<CR>
noremap <Leader>gsh :Git push<CR>
noremap <Leader>gll :Git pull<CR>
noremap <Leader>gs :Git<CR>
noremap <Leader>gb :Git blame<CR>
noremap <Leader>gd :Gvdiffsplit<CR>
noremap <Leader>gr :GRemove<CR>
" session management
nnoremap <leader>so :OpenSession<Space>
nnoremap <leader>ss :SaveSession<Space>
nnoremap <leader>sd :DeleteSession<CR>
nnoremap <leader>sc :CloseSession<CR>
" Tabs
nnoremap <Tab> gt " next tab
nnoremap <S-Tab> gT " previous tab
nnoremap <silent> <S-t> :tabnew<CR> " new tab
nnoremap <leader>. :lcd %:p:h<CR> " set working directory to the current file
" Opens an edit command with the path of the currently
" edited file filled in
noremap <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
" Opens a tab edit command with the path of the currently
" edited file filled
noremap <Leader>r :tabe <C-R>=expand("%:p:h") . "/" <CR>
" fzf.vim
let $FZF_DEFAULT_COMMAND = "find * -path '*/\.*' -prune -o -path 'node_modules/**' -prune -o -path 'target/**' -prune -o -path 'vendor/**' -prune -o -path 'dist/**' -prune -o -type f -print -o -type l -print 2> /dev/null"
cnoremap <C-p> <C-R>=expand("%:p:h") . "/" <CR>
nnoremap <silent> <leader>b :Buffers<CR>
nnoremap <silent> <leader>e :FZF -m<CR>
" Recovery commands from history through FZF
nmap <leader>y :History:<CR>
" Tagbar
nmap <silent> <F4> :TagbarToggle<CR> " open tagbar
let g:tagbar_autofocus = 1
" Disable visualbell
set noerrorbells visualbell t_vb=
if has('autocmd')
autocmd GUIEnter * set visualbell t_vb=
endif
"" Copy/Paste/Cut
if has('unnamedplus')
set clipboard=unnamed,unnamedplus
endif
noremap YY "+y<CR> " copy line
noremap <leader>p "+gP<CR> " paste
noremap XX "+x<CR> " cut
if has('macunix')
" pbcopy for OSX copy/paste
vmap <C-x> :!pbcopy<CR> " copy
vmap <C-c> :w !pbcopy<CR><CR> " cut
vmap <C-v> :!pbpaste<CR> " paste
endif
"" Buffer nav
noremap <leader>z :bp<CR> " previous buffer
noremap <leader>x :bn<CR> " next buffer
noremap <leader>bq :bp<CR> " previous buffer
noremap <leader>bw :bn<CR> " next buffer
noremap <leader>bd :bd<CR> " close buffer
"" Switching windows
noremap <C-j> <C-w>j " move to window below
noremap <C-k> <C-w>k " move to window above
noremap <C-l> <C-w>l " move to window right
noremap <C-h> <C-w>h " move to window left
vmap < <gv " move visual block left, keep selection
vmap > >gv " move visual block right, keep selection
vnoremap J :m '>+1<CR>gv=gv " move visual block down, keep selection
vnoremap K :m '<-2<CR>gv=gv " move visual block up, keep selection
nnoremap <Leader>o :.GBrowse<CR> " open current line on GitHub
nnoremap <silent> <leader>sh :terminal<CR> " open a new terminal
nnoremap <silent> <esc><esc> :noh<cr> " clean search

View File

34
config/vim/after/ui.vim Normal file
View File

@@ -0,0 +1,34 @@
" GUI settings
if has("gui_running")
if has("gui_mac") || has("gui_macvim")
set macligatures
set guifont=JetBrains\ Mono:h14
set transparency=7
endif
else
let g:CSApprox_loaded = 1
" IndentLine
let g:indentLine_enabled = 1
let g:indentLine_concealcursor = ''
let g:indentLine_char = '┆'
let g:indentLine_faster = 1
if $COLORTERM == 'gnome-terminal'
set term=gnome-256color
else
if $TERM == 'xterm'
set term=xterm-256color
endif
endif
endif
" if terminal supports 256 colors, disable t_ut
if &term =~ '256color'
set t_ut=
endif
" set the title of the terminal to the file name
set title
set titleold="Terminal"
set titlestring=%F

View File

@@ -0,0 +1,175 @@
let g:airline#themes#pencil#palette = {}
function! airline#themes#pencil#refresh()
""""""""""""""""""""""""""""""""""""""""""""""""
" Options
""""""""""""""""""""""""""""""""""""""""""""""""
let s:background = get(g:, 'airline_pencil_bg', &background)
let s:ansi_colors = &t_Co < 16 ? 1 : 0
let s:tty = &t_Co == 8
""""""""""""""""""""""""""""""""""""""""""""""""
" Colors
""""""""""""""""""""""""""""""""""""""""""""""""
" Base colors
let s:base03 = {'t': s:ansi_colors ? 8 : (s:tty ? '0' : 234), 'g': '#212121'}
let s:base02 = {'t': s:ansi_colors ? '0' : (s:tty ? '0' : 235), 'g': '#424242'}
let s:base01 = {'t': s:ansi_colors ? 10 : (s:tty ? '0' : 240), 'g': '#909090'}
let s:base00 = {'t': s:ansi_colors ? 11 : (s:tty ? '7' : 241), 'g': '#545454'}
let s:base0 = {'t': s:ansi_colors ? 12 : (s:tty ? '7' : 244), 'g': '#B2B2B2'}
let s:base1 = {'t': s:ansi_colors ? 14 : (s:tty ? '7' : 245), 'g': '#636363'}
let s:base2 = {'t': s:ansi_colors ? 7 : (s:tty ? '7' : 254), 'g': '#D9D9D9'}
let s:base3 = {'t': s:ansi_colors ? 15 : (s:tty ? '7' : 7 ), 'g': '#C6C6C6'}
let s:darkblue= {'t': s:ansi_colors ? 4 : (s:tty ? '4' : 24 ), 'g': '#005F87'}
let s:orange = {'t': s:ansi_colors ? 9 : (s:tty ? '1' : 166), 'g': '#D75F5F'}
let s:red = {'t': s:ansi_colors ? 1 : (s:tty ? '1' : 160), 'g': '#C30771'}
let s:magenta = {'t': s:ansi_colors ? 5 : (s:tty ? '5' : 125), 'g': '#E32791'}
let s:violet = {'t': s:ansi_colors ? 13 : (s:tty ? '5' : 61 ), 'g': '#6855DE'}
let s:blue = {'t': s:ansi_colors ? 4 : (s:tty ? '4' : 33 ), 'g': '#008EC4'}
let s:cyan = {'t': s:ansi_colors ? 6 : (s:tty ? '6' : 37 ), 'g': '#20A5BA'}
let s:green = {'t': s:ansi_colors ? 2 : (s:tty ? '2' : 64 ), 'g': '#10A778'}
""""""""""""""""""""""""""""""""""""""""""""""""
" Simple mappings
" NOTE: These are easily tweakable mappings. The actual mappings get
" the specific gui and terminal colors from the base color dicts.
""""""""""""""""""""""""""""""""""""""""""""""""
" Normal mode
if s:background == 'dark'
let s:N1 = [s:base3, s:base1, 'bold']
let s:N2 = [s:base2, (s:tty ? s:base01 : s:base00), '']
let s:N3 = [s:base01, s:base02, '']
else
let s:N1 = [s:base2, s:base00, 'bold']
let s:N2 = [(s:tty ? s:base01 : s:base2), s:base1, '']
let s:N3 = [s:base1, s:base2, '']
endif
let s:NF = [s:orange, s:N3[1], '']
let s:NW = [s:base3, s:orange, '']
if s:background == 'dark'
let s:NM = [s:base1, s:N3[1], '']
let s:NMi = [s:base2, s:N3[1], '']
else
let s:NM = [s:base01, s:N3[1], '']
let s:NMi = [s:base02, s:N3[1], '']
endif
" Insert mode
let s:I1 = [s:N1[0], s:darkblue, 'bold']
let s:I2 = s:N2
let s:I3 = s:N3
let s:IF = s:NF
let s:IM = s:NM
" Visual mode
let s:V1 = [s:N1[0], s:magenta, 'bold']
let s:V2 = s:N2
let s:V3 = s:N3
let s:VF = s:NF
let s:VM = s:NM
" Replace mode
let s:R1 = [s:N1[0], s:red, '']
let s:R2 = s:N2
let s:R3 = s:N3
let s:RM = s:NM
let s:RF = s:NF
" Inactive, according to VertSplit in pencil
" (bg dark: base00; bg light: base0)
if s:background == 'dark'
let s:IA = [s:base01, s:base02, '']
else
let s:IA = [s:base1, s:base2, '']
endif
""""""""""""""""""""""""""""""""""""""""""""""""
" Actual mappings
" WARNING: Don't modify this section unless necessary.
""""""""""""""""""""""""""""""""""""""""""""""""
let s:NFa = [s:NF[0].g, s:NF[1].g, s:NF[0].t, s:NF[1].t, s:NF[2]]
let s:IFa = [s:IF[0].g, s:IF[1].g, s:IF[0].t, s:IF[1].t, s:IF[2]]
let s:VFa = [s:VF[0].g, s:VF[1].g, s:VF[0].t, s:VF[1].t, s:VF[2]]
let s:RFa = [s:RF[0].g, s:RF[1].g, s:RF[0].t, s:RF[1].t, s:RF[2]]
let g:airline#themes#pencil#palette.accents = {
\ 'red': s:NFa,
\ }
let g:airline#themes#pencil#palette.inactive = airline#themes#generate_color_map(
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]])
let g:airline#themes#pencil#palette.inactive_modified = {
\ 'airline_c': [s:NMi[0].g, '', s:NMi[0].t, '', s:NMi[2]]}
let g:airline#themes#pencil#palette.normal = airline#themes#generate_color_map(
\ [s:N1[0].g, s:N1[1].g, s:N1[0].t, s:N1[1].t, s:N1[2]],
\ [s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]],
\ [s:N3[0].g, s:N3[1].g, s:N3[0].t, s:N3[1].t, s:N3[2]])
let g:airline#themes#pencil#palette.normal.airline_warning = [
\ s:NW[0].g, s:NW[1].g, s:NW[0].t, s:NW[1].t, s:NW[2]]
let g:airline#themes#pencil#palette.normal_modified = {
\ 'airline_c': [s:NM[0].g, s:NM[1].g,
\ s:NM[0].t, s:NM[1].t, s:NM[2]]}
let g:airline#themes#pencil#palette.normal_modified.airline_warning =
\ g:airline#themes#pencil#palette.normal.airline_warning
let g:airline#themes#pencil#palette.insert = airline#themes#generate_color_map(
\ [s:I1[0].g, s:I1[1].g, s:I1[0].t, s:I1[1].t, s:I1[2]],
\ [s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]],
\ [s:I3[0].g, s:I3[1].g, s:I3[0].t, s:I3[1].t, s:I3[2]])
let g:airline#themes#pencil#palette.insert.airline_warning =
\ g:airline#themes#pencil#palette.normal.airline_warning
let g:airline#themes#pencil#palette.insert_modified = {
\ 'airline_c': [s:IM[0].g, s:IM[1].g,
\ s:IM[0].t, s:IM[1].t, s:IM[2]]}
let g:airline#themes#pencil#palette.insert_modified.airline_warning =
\ g:airline#themes#pencil#palette.normal.airline_warning
let g:airline#themes#pencil#palette.visual = airline#themes#generate_color_map(
\ [s:V1[0].g, s:V1[1].g, s:V1[0].t, s:V1[1].t, s:V1[2]],
\ [s:V2[0].g, s:V2[1].g, s:V2[0].t, s:V2[1].t, s:V2[2]],
\ [s:V3[0].g, s:V3[1].g, s:V3[0].t, s:V3[1].t, s:V3[2]])
let g:airline#themes#pencil#palette.visual.airline_warning =
\ g:airline#themes#pencil#palette.normal.airline_warning
let g:airline#themes#pencil#palette.visual_modified = {
\ 'airline_c': [s:VM[0].g, s:VM[1].g,
\ s:VM[0].t, s:VM[1].t, s:VM[2]]}
let g:airline#themes#pencil#palette.visual_modified.airline_warning =
\ g:airline#themes#pencil#palette.normal.airline_warning
let g:airline#themes#pencil#palette.replace = airline#themes#generate_color_map(
\ [s:R1[0].g, s:R1[1].g, s:R1[0].t, s:R1[1].t, s:R1[2]],
\ [s:R2[0].g, s:R2[1].g, s:R2[0].t, s:R2[1].t, s:R2[2]],
\ [s:R3[0].g, s:R3[1].g, s:R3[0].t, s:R3[1].t, s:R3[2]])
let g:airline#themes#pencil#palette.replace.airline_warning =
\ g:airline#themes#pencil#palette.normal.airline_warning
let g:airline#themes#pencil#palette.replace_modified = {
\ 'airline_c': [s:RM[0].g, s:RM[1].g,
\ s:RM[0].t, s:RM[1].t, s:RM[2]]}
let g:airline#themes#pencil#palette.replace_modified.airline_warning =
\ g:airline#themes#pencil#palette.normal.airline_warning
let g:airline#themes#pencil#palette.tabline = {}
let g:airline#themes#pencil#palette.tabline.airline_tab = [
\ s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]]
let g:airline#themes#pencil#palette.tabline.airline_tabtype = [
\ s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]]
endfunction
call airline#themes#pencil#refresh()

2877
config/vim/autoload/plug.vim Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,383 @@
" Vim Color File
" Name: pencil.vim
" Version: 0.6
" Maintainer: github.com/preservim
" License: The MIT License (MIT)
" Original iA Writer colors, to use as a guide
" White #F1F1F1
" OffWhiteIPad #F5F2EC
" OffWhiteDemo #F9F8F4
" Cursor #20BBFC
" Selection #B6D6FD
" SelectionNOS #D4D4D4
" StatusBar #EDEDED
" StatusBarBorder #D9D9D9 used for search too
" Text #424242
" Blue #B5D6FD
" Green #30C798
" Blue2 #1DAEE4
" gray #999999
" Red #E32791
" UnfocusedText #B8B8B8
" MenuSelected #2C81FB
" MenuUnSelected #545454
" MenuText #F1F1F1
" LightKeyBg #4B4B4B
" DarkKeyBg #262626
" NearBlack #181818
" SyntaxButton #363738
" SearchHighlight #F3E430 yellow
hi clear
if exists('syntax on')
syntax reset
endif
let g:colors_name='pencil'
if ! exists("g:pencil_higher_contrast_ui")
let g:pencil_higher_contrast_ui = 0
endif
if ! exists("g:pencil_neutral_code_bg")
let g:pencil_neutral_code_bg = 0
endif
if ! exists("g:pencil_neutral_headings")
let g:pencil_neutral_headings = 0
endif
" not all terminals support italics properly. If yours does, opt-in.
if ! exists("g:pencil_terminal_italics")
let g:pencil_terminal_italics = 0
endif
if ! exists("g:pencil_spell_undercurl")
let g:pencil_spell_undercurl = 1
endif
if ! exists("g:pencil_gutter_color")
let g:pencil_gutter_color = 0
endif
" Colors
let s:black = { "gui": "#212121", "cterm": "0" }
let s:medium_gray = { "gui": "#767676", "cterm": "243" }
let s:white = { "gui": "#F1F1F1", "cterm": "15" }
let s:actual_white = { "gui": "#FFFFFF", "cterm": "231" }
let s:light_black = { "gui": "#424242", "cterm": "8" }
let s:lighter_black = { "gui": "#545454", "cterm": "240" }
if g:pencil_higher_contrast_ui == 0
" darker shadow and whiter grays
let s:subtle_black = { "gui": "#262626", "cterm": "235" }
let s:light_gray = { "gui": "#D9D9D9", "cterm": "253" }
let s:lighter_gray = { "gui": "#E5E6E6", "cterm": "254" }
else
" lighter shadows and darker grays
let s:subtle_black = { "gui": "#303030", "cterm": "236" }
let s:light_gray = { "gui": "#B2B2B2", "cterm": "249" }
let s:lighter_gray = { "gui": "#C6C6C6", "cterm": "251" }
endif
let s:pink = { "gui": "#fb007a", "cterm": "9" }
let s:dark_red = { "gui": "#C30771", "cterm": "1" }
let s:light_red = { "gui": "#E32791", "cterm": "1" }
let s:orange = { "gui": "#D75F5F", "cterm": "167" }
let s:darker_blue = { "gui": "#005F87", "cterm": "18" }
let s:dark_blue = { "gui": "#008EC4", "cterm": "4" }
let s:blue = { "gui": "#20BBFC", "cterm": "12" }
let s:light_blue = { "gui": "#b6d6fd", "cterm": "153" }
let s:dark_cyan = { "gui": "#20A5BA", "cterm": "6" }
let s:light_cyan = { "gui": "#4FB8CC", "cterm": "14" }
let s:dark_green = { "gui": "#10A778", "cterm": "2" }
let s:light_green = { "gui": "#5FD7A7", "cterm": "10" }
let s:dark_purple = { "gui": "#523C79", "cterm": "5" }
let s:light_purple = { "gui": "#6855DE", "cterm": "13" }
let s:yellow = { "gui": "#F3E430", "cterm": "11" }
let s:dark_yellow = { "gui": "#A89C14", "cterm": "3" }
if &background == "dark"
let s:bg = s:black
let s:bg_subtle = s:light_black
let s:bg_very_subtle = s:subtle_black
let s:norm = s:lighter_gray
let s:norm_subtle = s:light_gray
let s:purple = s:light_purple
let s:cyan = s:light_cyan
let s:green = s:light_green
let s:red = s:light_red
let s:visual = s:lighter_black
else
let s:bg = s:white
let s:bg_subtle = s:light_gray
let s:bg_very_subtle = s:lighter_gray
let s:norm = s:light_black
let s:norm_subtle = s:lighter_black
let s:purple = s:dark_purple
let s:cyan = s:dark_cyan
let s:green = s:dark_green
let s:red = s:dark_red
let s:visual = s:light_blue
endif
if g:pencil_neutral_headings == 1
let s:head_a = s:norm
let s:head_b = s:norm
let s:head_c = s:norm
else
let s:head_a = s:dark_blue
let s:head_b = s:blue
let s:head_c = s:dark_cyan
endif
if g:pencil_neutral_code_bg == 1
let s:code_bg = s:bg
else
let s:code_bg = s:bg_very_subtle
endif
if g:pencil_spell_undercurl == 1
let s:sp_un = 'undercurl'
else
let s:sp_un = 'underline'
endif
" shamelessly stolen from hemisu: https://github.com/noahfrederick/vim-hemisu/
function! s:h(group, style)
" Not all terminals support italics properly. If yours does, opt-in.
if g:pencil_terminal_italics == 0 && has_key(a:style, "cterm") && a:style["cterm"] == "italic"
unlet a:style.cterm
endif
execute "highlight" a:group
\ "guifg=" (has_key(a:style, "fg") ? a:style.fg.gui : "NONE")
\ "guibg=" (has_key(a:style, "bg") ? a:style.bg.gui : "NONE")
\ "guisp=" (has_key(a:style, "sp") ? a:style.sp.gui : "NONE")
\ "gui=" (has_key(a:style, "gui") ? a:style.gui : "NONE")
\ "ctermfg=" (has_key(a:style, "fg") ? a:style.fg.cterm : "NONE")
\ "ctermbg=" (has_key(a:style, "bg") ? a:style.bg.cterm : "NONE")
\ "cterm=" (has_key(a:style, "cterm") ? a:style.cterm : "NONE")
endfunction
" common groups ================================================================
" (see `:h w18`)
call s:h("Normal", {"bg": s:bg, "fg": s:norm})
call s:h("Cursor", {"bg": s:blue, "fg": s:norm })
call s:h("Comment", {"fg": s:medium_gray, "gui": "italic", "cterm": "italic"})
call s:h("Constant", {"fg": s:cyan})
hi! link String Constant
hi! link Character Constant
hi! link Number Constant
hi! link Boolean Constant
hi! link Float Constant
call s:h("Identifier", {"fg": s:dark_blue})
hi! link Function Identifier
call s:h("Statement", {"fg": s:green})
hi! link Conditonal Statement
hi! link Repeat Statement
hi! link Label Statement
hi! link Operator Statement
hi! link Keyword Statement
hi! link Exception Statement
call s:h("PreProc", {"fg": s:red})
hi! link Include PreProc
hi! link Define PreProc
hi! link Macro PreProc
hi! link PreCondit PreProc
call s:h("Type", {"fg": s:purple})
hi! link StorageClass Type
hi! link Structure Type
hi! link Typedef Type
call s:h("Special", {"fg": s:pink})
hi! link SpecialChar Special
hi! link Tag Special
hi! link Delimiter Special
hi! link SpecialComment Special
hi! link Debug Special
call s:h("Underlined", {"fg": s:norm , "gui": "underline", "cterm": "underline"})
call s:h("Ignore", {"fg": s:bg })
call s:h("Error", {"fg": s:actual_white, "bg": s:red , "gui": "bold" , "cterm": "bold" })
call s:h("Todo", {"fg": s:actual_white, "bg": s:pink, "gui": "bold" , "cterm": "bold" })
" ui chrome ====================================================================
" ordered according to `:help hitest.vim`
call s:h("SpecialKey", {"fg": s:light_green})
call s:h("NonText", {"fg": s:bg_subtle})
call s:h("Directory", {"fg": s:dark_blue})
call s:h("ErrorMsg", {"fg": s:pink})
call s:h("IncSearch", {"bg": s:yellow, "fg": s:light_black})
call s:h("Search", {"bg": s:bg_subtle})
call s:h("MoreMsg", {"fg": s:medium_gray, "gui": "bold", "cterm": "bold"})
hi! link ModeMsg MoreMsg
call s:h("LineNr", {"fg": s:bg_subtle})
call s:h("CursorLineNr", {"fg": s:blue, "bg": s:bg_very_subtle})
call s:h("Question", {"fg": s:red})
call s:h("StatusLine", {"bg": s:bg_very_subtle})
call s:h("Conceal", {"fg": s:norm})
call s:h("StatusLineNC", {"bg": s:bg_very_subtle, "fg": s:medium_gray})
call s:h("VertSplit", {"bg": s:bg_very_subtle, "fg": s:bg_very_subtle})
call s:h("Title", {"fg": s:dark_blue})
call s:h("Visual", {"bg": s:visual})
call s:h("VisualNOS", {"bg": s:bg_subtle})
call s:h("WarningMsg", {"fg": s:red})
call s:h("WildMenu", {"fg": s:bg, "bg": s:norm})
call s:h("Folded", {"fg": s:medium_gray})
call s:h("FoldColumn", {"fg": s:bg_subtle})
call s:h("DiffAdd", {"bg": s:bg_subtle, "fg": s:green})
call s:h("DiffAdded", {"bg": s:bg_subtle, "fg": s:green})
call s:h("DiffDelete", {"bg": s:bg_subtle, "fg": s:red})
call s:h("DiffRemoved", {"bg": s:bg_subtle, "fg": s:red})
call s:h("DiffChange", {"bg": s:bg_subtle, "fg": s:dark_yellow})
call s:h("DiffChanged", {"bg": s:bg_subtle, "fg": s:dark_yellow})
call s:h("DiffText", {"bg": s:bg_subtle, "fg": s:dark_blue})
call s:h("SignColumn", {"fg": s:light_green})
call s:h("SpellBad", {"gui": s:sp_un, "sp": s:red, "cterm": s:sp_un, "fg": s:red})
call s:h("SpellCap", {"gui": s:sp_un, "sp": s:light_green, "cterm": s:sp_un, "fg": s:light_green})
call s:h("SpellRare", {"gui": s:sp_un, "sp": s:pink, "cterm": s:sp_un, "fg": s:pink})
call s:h("SpellLocal", {"gui": s:sp_un, "sp": s:dark_green, "cterm": s:sp_un, "fg": s:dark_green})
call s:h("Pmenu", {"fg": s:norm, "bg": s:bg_subtle})
call s:h("PmenuSel", {"fg": s:norm, "bg": s:blue})
call s:h("PmenuSbar", {"fg": s:norm, "bg": s:bg_subtle})
call s:h("PmenuThumb", {"fg": s:norm, "bg": s:bg_subtle})
call s:h("TabLine", {"fg": s:norm, "bg": s:bg_very_subtle})
call s:h("TabLineSel", {"fg": s:blue, "bg": s:bg_subtle, "gui": "bold", "cterm": "bold"})
call s:h("TabLineFill", {"fg": s:norm, "bg": s:bg_very_subtle})
call s:h("CursorColumn", {"bg": s:bg_very_subtle})
call s:h("CursorLine", {"bg": s:bg_very_subtle})
call s:h("ColorColumn", {"bg": s:bg_subtle})
" remainder of syntax highlighting
call s:h("MatchParen", {"bg": s:bg_subtle, "fg": s:norm})
call s:h("qfLineNr", {"fg": s:medium_gray})
" hi helpHyperTextJump guifg=#5FAFD7 ctermfg=74
" HTML syntax
hi! link htmlTag Special
hi! link htmlEndTag htmlTag
hi! link htmlTagName KeyWord
" html5 tags show up as htmlTagN
hi! link htmlTagN Keyword
" HTML content
call s:h("htmlH1", {"fg": s:head_a, "gui": "bold,italic", "cterm": "bold" })
call s:h("htmlH2", {"fg": s:head_a, "gui": "bold" , "cterm": "bold" })
call s:h("htmlH3", {"fg": s:head_b, "gui": "italic" , "cterm": "italic" })
call s:h("htmlH4", {"fg": s:head_b, "gui": "italic" , "cterm": "italic" })
call s:h("htmlH5", {"fg": s:head_c })
call s:h("htmlH6", {"fg": s:head_c })
call s:h("htmlLink", {"fg": s:blue , "gui": "underline" , "cterm": "underline"})
call s:h("htmlItalic", { "gui": "italic" , "cterm": "italic" })
call s:h("htmlBold", { "gui": "bold" , "cterm": "bold" })
call s:h("htmlBoldItalic",{ "gui": "bold,italic", "cterm": "bold" })
" hi htmlString guifg=#87875f guibg=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE
" tpope/vim-markdown
call s:h("markdownBlockquote", {"fg": s:norm})
call s:h("markdownBold", {"fg": s:norm , "gui": "bold" , "cterm": "bold" })
call s:h("markdownBoldItalic", {"fg": s:norm , "gui": "bold,italic", "cterm": "bold" })
call s:h("markdownEscape", {"fg": s:norm})
call s:h("markdownH1", {"fg": s:head_a, "gui": "bold,italic", "cterm": "bold" })
call s:h("markdownH2", {"fg": s:head_a, "gui": "bold" , "cterm": "bold" })
call s:h("markdownH3", {"fg": s:head_a, "gui": "italic" , "cterm": "italic"})
call s:h("markdownH4", {"fg": s:head_a, "gui": "italic" , "cterm": "italic"})
call s:h("markdownH5", {"fg": s:head_a})
call s:h("markdownH6", {"fg": s:head_a})
call s:h("markdownHeadingDelimiter", {"fg": s:norm})
call s:h("markdownHeadingRule", {"fg": s:norm})
call s:h("markdownId", {"fg": s:medium_gray})
call s:h("markdownIdDeclaration", {"fg": s:norm_subtle})
call s:h("markdownItalic", {"fg": s:norm , "gui": "italic" , "cterm": "italic"})
call s:h("markdownLinkDelimiter", {"fg": s:medium_gray})
call s:h("markdownLinkText", {"fg": s:norm})
call s:h("markdownLinkTextDelimiter", {"fg": s:medium_gray})
call s:h("markdownListMarker", {"fg": s:norm})
call s:h("markdownOrderedListMarker", {"fg": s:norm})
call s:h("markdownRule", {"fg": s:norm})
call s:h("markdownUrl", {"fg": s:medium_gray, "gui": "underline", "cterm": "underline"})
call s:h("markdownUrlDelimiter", {"fg": s:medium_gray})
call s:h("markdownUrlTitle", {"fg": s:norm})
call s:h("markdownUrlTitleDelimiter", {"fg": s:medium_gray})
call s:h("markdownCode", {"fg": s:norm, "bg": s:code_bg})
call s:h("markdownCodeDelimiter", {"fg": s:norm, "bg": s:code_bg})
" plasticboy/vim-markdown
call s:h("mkdBlockquote", {"fg": s:norm})
call s:h("mkdDelimiter", {"fg": s:medium_gray})
call s:h("mkdID", {"fg": s:medium_gray})
call s:h("mkdLink", {"fg": s:norm})
call s:h("mkdLinkDef", {"fg": s:medium_gray})
call s:h("mkdListItem", {"fg": s:norm})
call s:h("mkdNonListItemBlock", {"fg": s:norm}) " bug in syntax?
call s:h("mkdRule", {"fg": s:norm})
call s:h("mkdURL", {"fg": s:medium_gray, "gui": "underline", "cterm": "underline"})
call s:h("mkdCode", {"fg": s:norm, "bg": s:code_bg})
" gabrielelana/vim-markdown
call s:h("markdownBlockquoteDelimiter", {"fg": s:norm})
call s:h("markdownInlineDelimiter", {"fg": s:norm})
call s:h("markdownItemDelimiter", {"fg": s:norm})
call s:h("markdownLinkReference", {"fg": s:medium_gray})
call s:h("markdownLinkText", {"fg": s:norm})
call s:h("markdownLinkTextContainer", {"fg": s:medium_gray})
call s:h("markdownLinkUrl", {"fg": s:medium_gray, "gui": "underline", "cterm": "underline"})
call s:h("markdownLinkUrlContainer", {"fg": s:medium_gray})
call s:h("markdownFencedCodeBlock", {"fg": s:norm, "bg": s:code_bg})
call s:h("markdownInlineCode", {"fg": s:norm, "bg": s:code_bg})
" mattly/vim-markdown-enhancements
call s:h("mmdFootnoteDelimiter", {"fg": s:medium_gray})
call s:h("mmdFootnoteMarker", {"fg": s:norm})
call s:h("mmdTableAlign", {"fg": s:norm})
call s:h("mmdTableDelimiter", {"fg": s:norm})
call s:h("mmdTableHeadDelimiter", {"fg": s:norm})
call s:h("mmdTableHeader", {"fg": s:norm})
call s:h("mmdTableCaptionDelimiter", {"fg": s:norm})
call s:h("mmdTableCaption", {"fg": s:norm})
" Textile content
" https://github.com/timcharper/textile.vim/blob/master/syntax/textile.vim
"call s:h("txtBold", {"fg": s:norm , "gui": "bold" , "cterm": "bold" })
"call s:h("txtEmphasis", {"fg": s:norm , "gui": "italic" , "cterm": "italic"})
" XML content
hi! link xmlTag htmlTag
hi! link xmlEndTag xmlTag
hi! link xmlTagName htmlTagName
" Signify, git-gutter
if g:pencil_gutter_color == 1
hi link SignifySignAdd DiffAdd
hi link SignifySignDelete DiffDelete
hi link SignifySignChange DiffChange
hi link GitGutterAdd DiffAdd
hi link GitGutterDelete DiffDelete
hi link GitGutterChange DiffChange
hi link GitGutterChangeDelete DiffChange
else
hi link SignifySignAdd LineNr
hi link SignifySignDelete LineNr
hi link SignifySignChange LineNr
hi link GitGutterAdd LineNr
hi link GitGutterDelete LineNr
hi link GitGutterChange LineNr
hi link GitGutterChangeDelete LineNr
endif

View File

View File

@@ -0,0 +1,64 @@
" go
" vim-go
" run :GoBuild or :GoTestCompile based on the go file
function! s:build_go_files()
let l:file = expand('%')
if l:file =~# '^\f\+_test\.go$'
call go#test#Test(0, 1)
elseif l:file =~# '^\f\+\.go$'
call go#cmd#Build(0)
endif
endfunction
let g:go_list_type = "quickfix"
let g:go_fmt_command = "goimports"
let g:go_fmt_fail_silently = 1
let g:go_highlight_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_highlight_structs = 1
let g:go_highlight_generate_tags = 1
let g:go_highlight_space_tab_error = 0
let g:go_highlight_array_whitespace_error = 0
let g:go_highlight_trailing_whitespace_error = 0
let g:go_highlight_extra_types = 1
autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4
augroup completion_preview_close
autocmd!
if v:version > 703 || v:version == 703 && has('patch598')
autocmd CompleteDone * if !&previewwindow && &completeopt =~ 'preview' | silent! pclose | endif
endif
augroup END
" for go files
augroup go
au!
au Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit')
au Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit')
au Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split')
au Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe')
au FileType go nmap <Leader>dd <Plug>(go-def-vertical)
au FileType go nmap <Leader>dv <Plug>(go-doc-vertical)
au FileType go nmap <Leader>db <Plug>(go-doc-browser)
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <leader>t <Plug>(go-test)
au FileType go nmap <Leader>gt <Plug>(go-coverage-toggle)
au FileType go nmap <Leader>i <Plug>(go-info)
au FileType go nmap <silent> <Leader>l <Plug>(go-metalinter)
au FileType go nmap <C-g> :GoDecls<cr>
au FileType go nmap <leader>dr :GoDeclsDir<cr>
au FileType go imap <C-g> <esc>:<C-u>GoDecls<cr>
au FileType go imap <leader>dr <esc>:<C-u>GoDeclsDir<cr>
au FileType go nmap <leader>rb :<C-u>call <SID>build_go_files()<CR>
augroup END
"" ale
:call extend(g:ale_linters, {"go": [ 'golint', 'go vet' ]})

Some files were not shown because too many files have changed in this diff Show More