mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-05 18:49:21 +00:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 19327947ed | |||
| 2356fc4c61 | |||
| 45219deccb | |||
| 5471aba1a4 | |||
|
|
6f6ee3611c | ||
|
|
d8f9cdf265 | ||
| abb6de05be | |||
| 60ef48e918 | |||
| e58c79a3c3 | |||
| d47f21286d | |||
| 3f108c9353 | |||
|
|
4a68146786 | ||
|
|
cf79e61943 | ||
| 43dcb303a0 | |||
| 1b03f0bbd6 | |||
| 8a52c9a97e | |||
| 8e84c3aef7 | |||
| acd2f7fc6d | |||
| 1e4aa1558a | |||
| b314c0ba76 | |||
| ece46561c4 | |||
| 196d217c34 | |||
| 7d2fc55791 | |||
| 74fb12f093 | |||
|
|
d7988bcad7 | ||
| 320ae35dcd |
@@ -11,6 +11,9 @@ trim_trailing_whitespace = true
|
|||||||
[*.md]
|
[*.md]
|
||||||
max_line_length = 100
|
max_line_length = 100
|
||||||
|
|
||||||
|
[*.lua]
|
||||||
|
max_line_length = 120
|
||||||
|
|
||||||
[*.php]
|
[*.php]
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"diagnostics.globals": [
|
"diagnostics.globals": [
|
||||||
"vim"
|
"vim"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,13 @@ repos:
|
|||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v5.0.0
|
rev: v5.0.0
|
||||||
hooks:
|
hooks:
|
||||||
|
- id: requirements-txt-fixer
|
||||||
|
- id: detect-private-key
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
args: [--markdown-linebreak-ext=md]
|
args: [--markdown-linebreak-ext=md]
|
||||||
- id: check-case-conflict
|
- id: check-case-conflict
|
||||||
- id: check-merge-conflict
|
- id: check-merge-conflict
|
||||||
|
- id: check-executables-have-shebangs
|
||||||
- id: check-shebang-scripts-are-executable
|
- id: check-shebang-scripts-are-executable
|
||||||
- id: check-symlinks
|
- id: check-symlinks
|
||||||
- id: check-toml
|
- id: check-toml
|
||||||
@@ -29,13 +32,8 @@ repos:
|
|||||||
hooks:
|
hooks:
|
||||||
- id: yamllint
|
- id: yamllint
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
- repo: https://github.com/koalaman/shellcheck-precommit
|
||||||
rev: v4.0.0-alpha.8
|
rev: v0.10.0
|
||||||
hooks:
|
|
||||||
- id: prettier
|
|
||||||
|
|
||||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
|
||||||
rev: v0.10.0.1
|
|
||||||
hooks:
|
hooks:
|
||||||
- id: shellcheck
|
- id: shellcheck
|
||||||
|
|
||||||
@@ -48,3 +46,13 @@ repos:
|
|||||||
rev: v1.7.4
|
rev: v1.7.4
|
||||||
hooks:
|
hooks:
|
||||||
- id: actionlint
|
- id: actionlint
|
||||||
|
|
||||||
|
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||||
|
rev: 39.74.1
|
||||||
|
hooks:
|
||||||
|
- id: renovate-config-validator
|
||||||
|
|
||||||
|
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||||
|
rev: v2.0.2
|
||||||
|
hooks:
|
||||||
|
- id: stylua # or stylua-system / stylua-github
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
|
# vim: ft=gitignore
|
||||||
.mypy_cache/*
|
.mypy_cache/*
|
||||||
Brewfile.lock.json
|
Brewfile.lock.json
|
||||||
config/cheat/cheatsheets/community
|
config/cheat/cheatsheets/community
|
||||||
config/cheat/cheatsheets/tldr
|
config/cheat/cheatsheets/tldr
|
||||||
config/fzf/*
|
config/fzf/*
|
||||||
config/nvim-kickstart/*
|
config/nvim/*
|
||||||
config/tmux/plugins/*
|
config/tmux/plugins/*
|
||||||
config/zsh/*
|
config/zsh/*
|
||||||
lazy-lock.json
|
lazy-lock.json
|
||||||
local/bin/antigen.zsh
|
local/bin/antigen.zsh
|
||||||
local/bin/asdf
|
local/bin/asdf
|
||||||
|
tools/antidote/*
|
||||||
tools/dotbot*
|
tools/dotbot*
|
||||||
|
|||||||
@@ -52,3 +52,7 @@ x-have antidot && eval "$(antidot init)"
|
|||||||
autoload -Uz compinit bashcompinit
|
autoload -Uz compinit bashcompinit
|
||||||
compinit -d $ZSH_COMPDUMP
|
compinit -d $ZSH_COMPDUMP
|
||||||
bashcompinit
|
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"
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
--container-architecture linux/amd64
|
||||||
-P ubuntu-latest=catthehacker/ubuntu:act-latest
|
-P ubuntu-latest=catthehacker/ubuntu:act-latest
|
||||||
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
|
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
|
||||||
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
|
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
|
||||||
|
|||||||
161
config/aerospace/aerospace.toml
Normal file
161
config/aerospace/aerospace.toml
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
# Start AeroSpace at login
|
||||||
|
start-at-login = false
|
||||||
|
|
||||||
|
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
|
||||||
|
enable-normalization-flatten-containers = true
|
||||||
|
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
|
||||||
|
# The 'accordion-padding' specifies the size of accordion padding
|
||||||
|
# You can set 0 to disable the padding feature
|
||||||
|
accordion-padding = 10
|
||||||
|
|
||||||
|
# Possible values: tiles|accordion
|
||||||
|
default-root-container-layout = 'tiles'
|
||||||
|
|
||||||
|
# Possible values: horizontal|vertical|auto
|
||||||
|
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
|
||||||
|
# tall monitor (anything higher than wide) gets vertical orientation
|
||||||
|
default-root-container-orientation = 'auto'
|
||||||
|
|
||||||
|
# Mouse follows focus when focused monitor changes
|
||||||
|
# Drop it from your config, if you don't like this behavior
|
||||||
|
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
|
||||||
|
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
|
||||||
|
# Fallback value (if you omit the key): on-focused-monitor-changed = []
|
||||||
|
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||||
|
|
||||||
|
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
|
||||||
|
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
|
||||||
|
# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app
|
||||||
|
automatically-unhide-macos-hidden-apps = true
|
||||||
|
|
||||||
|
# [[on-window-detected]]
|
||||||
|
# if.app-id = 'com.apple.systempreferences'
|
||||||
|
# if.app-name-regex-substring = 'settings'
|
||||||
|
# if.window-title-regex-substring = 'substring'
|
||||||
|
# if.workspace = 'workspace-name'
|
||||||
|
# if.during-aerospace-startup = true
|
||||||
|
# check-further-callbacks = true
|
||||||
|
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-name-regex-substring = 'ferdium'
|
||||||
|
run = 'layout floating'
|
||||||
|
|
||||||
|
[[on-window-detected]]
|
||||||
|
if.app-name-regex-substring = 'finder'
|
||||||
|
run = 'layout floating'
|
||||||
|
|
||||||
|
# Possible values: (qwerty|dvorak)
|
||||||
|
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||||
|
[key-mapping]
|
||||||
|
preset = 'qwerty'
|
||||||
|
|
||||||
|
# Gaps between windows (inner-*) and between monitor edges (outer-*).
|
||||||
|
# Possible values:
|
||||||
|
# - Constant: gaps.outer.top = 8
|
||||||
|
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
|
||||||
|
# In this example, 24 is a default value when there is no match.
|
||||||
|
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
|
||||||
|
[gaps]
|
||||||
|
inner.horizontal = 5
|
||||||
|
inner.vertical = 5
|
||||||
|
outer.top = 5
|
||||||
|
outer.right = 5
|
||||||
|
outer.bottom = 5
|
||||||
|
outer.left = 5
|
||||||
|
|
||||||
|
# 'main' binding mode declaration
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||||
|
# 'main' binding mode must be always presented
|
||||||
|
# Fallback value (if you omit the key): mode.main.binding = {}
|
||||||
|
[mode.main.binding]
|
||||||
|
|
||||||
|
# All possible keys:
|
||||||
|
# - Letters. a, b, c, ..., z
|
||||||
|
# - Numbers. 0, 1, 2, ..., 9
|
||||||
|
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
|
||||||
|
# - F-keys. f1, f2, ..., f20
|
||||||
|
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
|
||||||
|
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
|
||||||
|
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
|
||||||
|
# keypadMinus, keypadMultiply, keypadPlus
|
||||||
|
# - Arrows. left, down, up, right
|
||||||
|
|
||||||
|
# All possible modifiers: cmd, alt, ctrl, shift
|
||||||
|
|
||||||
|
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
|
||||||
|
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
|
||||||
|
# alt-enter = '''exec-and-forget osascript -e '
|
||||||
|
# tell application "Terminal"
|
||||||
|
# do script
|
||||||
|
# activate
|
||||||
|
# end tell'
|
||||||
|
# '''
|
||||||
|
|
||||||
|
alt-ctrl-shift-f = 'fullscreen'
|
||||||
|
alt-ctrl-f = 'layout floating'
|
||||||
|
|
||||||
|
alt-shift-left = 'join-with left'
|
||||||
|
alt-shift-down = 'join-with down'
|
||||||
|
alt-shift-up = 'join-with up'
|
||||||
|
alt-shift-right = 'join-with right'
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
||||||
|
alt-h = 'focus left'
|
||||||
|
alt-j = 'focus down'
|
||||||
|
alt-k = 'focus up'
|
||||||
|
alt-l = 'focus right'
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#move
|
||||||
|
alt-shift-h = 'move left'
|
||||||
|
alt-shift-j = 'move down'
|
||||||
|
alt-shift-k = 'move up'
|
||||||
|
alt-shift-l = 'move right'
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
|
||||||
|
alt-shift-minus = 'resize smart -50'
|
||||||
|
alt-shift-equal = 'resize smart +50'
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||||
|
alt-cmd-z = 'workspace 1'
|
||||||
|
alt-cmd-x = 'workspace 2'
|
||||||
|
# alt-cmd-c = 'workspace 3'
|
||||||
|
# alt-cmd-v = 'workspace 4'
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
||||||
|
alt-shift-1 = 'move-node-to-workspace 1 --focus-follows-window'
|
||||||
|
alt-shift-2 = 'move-node-to-workspace 2 --focus-follows-window'
|
||||||
|
# alt-shift-3 = 'move-node-to-workspace 3 --focus-follows-window'
|
||||||
|
# alt-shift-4 = 'move-node-to-workspace 4 --focus-follows-window'
|
||||||
|
|
||||||
|
alt-tab = 'workspace-back-and-forth'
|
||||||
|
alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
||||||
|
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||||
|
alt-cmd-s = 'mode service'
|
||||||
|
alt-cmd-a = 'mode apps'
|
||||||
|
|
||||||
|
# Taken:
|
||||||
|
# - <alt> + hjkl 1234 ,.
|
||||||
|
# - <alt><shift> + hjkl 1234 -=; <cr> ↑↓←→
|
||||||
|
alt-c = 'exec-and-forget open -a /Applications/Ferdium.app'
|
||||||
|
alt-o = 'exec-and-forget open -a /Applications/Obsidian.app'
|
||||||
|
alt-b = 'exec-and-forget open -a /Applications/Brave Browser.app'
|
||||||
|
alt-t = 'exec-and-forget open -a /Applications/TIDAL.app'
|
||||||
|
|
||||||
|
# 'service' binding mode declaration.
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||||
|
[mode.service.binding]
|
||||||
|
esc = ['reload-config', 'mode main']
|
||||||
|
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||||
|
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
||||||
|
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
||||||
|
backspace = ['close-all-windows-but-current', 'mode main']
|
||||||
|
|
||||||
|
[mode.apps.binding]
|
||||||
|
alt-w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main']
|
||||||
73
config/cheat/cheatsheets/personal/printf
Normal file
73
config/cheat/cheatsheets/personal/printf
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
tags: [printf, bash, zsh]
|
||||||
|
---
|
||||||
|
|
||||||
|
# printf
|
||||||
|
|
||||||
|
The printf command accepts the following syntax:
|
||||||
|
|
||||||
|
`printf [-v var] [format specifiers] [arguments]`
|
||||||
|
|
||||||
|
- [-v var]
|
||||||
|
The optional -v flag assigns the output to the [var]
|
||||||
|
variable instead of printing it in standard output.
|
||||||
|
|
||||||
|
- [format specifiers]
|
||||||
|
Format specifiers are strings that determine the methods of
|
||||||
|
formatting specifiers. The following section includes a
|
||||||
|
list of accepted specifiers.
|
||||||
|
|
||||||
|
- [arguments]
|
||||||
|
Arguments can be any value or variable, and the [format specifiers]
|
||||||
|
point to the [arguments]. If there are more arguments than format
|
||||||
|
specifiers, the format string is reused until it interprets
|
||||||
|
the last argument.
|
||||||
|
|
||||||
|
If there are fewer format specifiers than arguments, number formats
|
||||||
|
are set to zero (0), while string formats are set to null (empty).
|
||||||
|
|
||||||
|
## printf Specifiers
|
||||||
|
|
||||||
|
Format Description
|
||||||
|
------ -----------
|
||||||
|
%c Treat the arguments as a single character.
|
||||||
|
%d Treat the input as a decimal (integer) number (base 10).
|
||||||
|
%e Treats the input as an exponential floating-point number.
|
||||||
|
%f Treat the input as a floating-point number.
|
||||||
|
%i Treat the input as an integer number (base 10).
|
||||||
|
%o Treats the input as an octal number (base 8).
|
||||||
|
%s Treat the input as a string of characters.
|
||||||
|
%u Treat the input as an unsigned decimal (integer) number.
|
||||||
|
%x Treats the input as a hexadecimal number (base 16).
|
||||||
|
%% Print a percent sign.
|
||||||
|
%Wd Print the W integer X digits wide.
|
||||||
|
%(format)T Outputs a date-time string resulting from using format as a
|
||||||
|
format string for strftime. The corresponding argument can
|
||||||
|
be the number of seconds since Epoch (January 1, 1970, 00:00),
|
||||||
|
-1 (the current time), or -2 (shell startup time).
|
||||||
|
Not specifying an argument uses the current time as the default value.
|
||||||
|
\% Print a percent sign.
|
||||||
|
\n Prints a newline character.
|
||||||
|
\t Print a tab character.
|
||||||
|
|
||||||
|
Some format specifiers accept format modifiers that modify their actions.
|
||||||
|
Enter the modifiers between the % character and the character that
|
||||||
|
specifies the format.
|
||||||
|
|
||||||
|
Available format modifiers are:
|
||||||
|
|
||||||
|
<N>. Enter a number that specifies a minimum field width.
|
||||||
|
If the output text is shorter, it's padded with spaces.
|
||||||
|
If the text is longer, the field expands.
|
||||||
|
. (dot). When used with a field width modifier, the field doesn't
|
||||||
|
expand for longer text. Instead, the text is truncated.
|
||||||
|
-. Left-aligns the printed text. The default alignment is right.
|
||||||
|
0. Pads the numbers with zeros instead of spaces.
|
||||||
|
<space>. Pads a positive number with a space, and a negative
|
||||||
|
number with a minus (-).
|
||||||
|
+. Prints all numbers signed (+ for positive, - for negative).
|
||||||
|
'. For decimal conversions, applies the thousands grouping
|
||||||
|
separator to the integer portion of the output according
|
||||||
|
to the current LC_NUMERIC file.
|
||||||
|
|
||||||
|
|
||||||
@@ -61,12 +61,6 @@ cheatpaths:
|
|||||||
path: ~/.config/cheat/cheatsheets/community
|
path: ~/.config/cheat/cheatsheets/community
|
||||||
tags: [community]
|
tags: [community]
|
||||||
readonly: true
|
readonly: true
|
||||||
# If you have personalized cheatsheets, list them last. They will take
|
|
||||||
# precedence over the more global cheatsheets.
|
|
||||||
- name: personal
|
|
||||||
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
|
||||||
tags: [personal]
|
|
||||||
readonly: false
|
|
||||||
- name: pure-bash-bible
|
- name: pure-bash-bible
|
||||||
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
||||||
tags: [pure-bash-bible]
|
tags: [pure-bash-bible]
|
||||||
@@ -75,6 +69,13 @@ cheatpaths:
|
|||||||
path: ~/.dotfiles/config/cheat/cheatsheets/tldr/tldr
|
path: ~/.dotfiles/config/cheat/cheatsheets/tldr/tldr
|
||||||
tags: [tldr]
|
tags: [tldr]
|
||||||
readonly: true
|
readonly: true
|
||||||
|
# If you have personalized cheatsheets, list them last. They will take
|
||||||
|
# precedence over the more global cheatsheets.
|
||||||
|
- name: personal
|
||||||
|
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
||||||
|
tags: [personal]
|
||||||
|
readonly: false
|
||||||
|
|
||||||
# While it requires no configuration here, it's also worth noting that
|
# While it requires no configuration here, it's also worth noting that
|
||||||
# cheat will automatically append directories named '.cheat' within the
|
# cheat will automatically append directories named '.cheat' within the
|
||||||
# current working directory to the 'cheatpath'. This can be very useful if
|
# current working directory to the 'cheatpath'. This can be very useful if
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ require('lazy').setup(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
require('nvm-default').setup()
|
||||||
|
|
||||||
require 'keymaps'
|
require 'keymaps'
|
||||||
|
|
||||||
-- vim: ts=2 sts=2 sw=2 et
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ autocmd('TextYankPost', {
|
|||||||
--
|
--
|
||||||
-- This fixes the issue where the line numbers jump
|
-- This fixes the issue where the line numbers jump
|
||||||
-- around when moving between lines relative line numbers enabled.
|
-- around when moving between lines relative line numbers enabled.
|
||||||
autocmd({ "BufEnter", "BufWinEnter", "TabEnter" }, {
|
autocmd({ 'BufEnter', 'BufWinEnter', 'TabEnter' }, {
|
||||||
callback = function()
|
callback = function()
|
||||||
local max_line_count = vim.fn.line("$")
|
local max_line_count = vim.fn.line '$'
|
||||||
-- Only adjust if the file is large enough to matter
|
-- Only adjust if the file is large enough to matter
|
||||||
if max_line_count > 99 then
|
if max_line_count > 99 then
|
||||||
vim.opt.numberwidth = #tostring(max_line_count) + 1
|
vim.opt.numberwidth = #tostring(max_line_count) + 1
|
||||||
@@ -68,7 +68,16 @@ autocmd('FileType', {
|
|||||||
-- wrap and check for spell in text filetypes
|
-- wrap and check for spell in text filetypes
|
||||||
autocmd('FileType', {
|
autocmd('FileType', {
|
||||||
group = augroup('wrap_spell', { clear = true }),
|
group = augroup('wrap_spell', { clear = true }),
|
||||||
pattern = { 'text', 'plaintex', 'typst', 'gitcommit', 'markdown', 'asciidoc', 'rst', 'tex' },
|
pattern = {
|
||||||
|
'text',
|
||||||
|
'plaintex',
|
||||||
|
'typst',
|
||||||
|
'gitcommit',
|
||||||
|
'markdown',
|
||||||
|
'asciidoc',
|
||||||
|
'rst',
|
||||||
|
'tex',
|
||||||
|
},
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.opt_local.wrap = true
|
vim.opt_local.wrap = true
|
||||||
vim.opt_local.spell = true
|
vim.opt_local.spell = true
|
||||||
@@ -83,21 +92,16 @@ autocmd({ 'FileType' }, {
|
|||||||
})
|
})
|
||||||
|
|
||||||
-- Set filetype for SSH config directory
|
-- Set filetype for SSH config directory
|
||||||
|
-- Pattern handles directories with files like:
|
||||||
|
-- .dotfiles/ssh/config.d/*, .ssh/config.local, .ssh/config.work
|
||||||
autocmd({ 'BufRead', 'BufNewFile' }, {
|
autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||||
desc = 'Set filetype for SSH config directory',
|
desc = 'Set filetype for SSH config directory',
|
||||||
pattern = { '*/?.ssh/{config|shared}.d/*', '*/?.ssh/config.local', '*/?.ssh/config.work' },
|
pattern = {
|
||||||
|
'*/?.ssh/{config|shared}.d/*',
|
||||||
|
'*/?.ssh/config.local',
|
||||||
|
'*/?.ssh/config.work',
|
||||||
|
},
|
||||||
command = 'set filetype=sshconfig',
|
command = 'set filetype=sshconfig',
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Format on save, unless disabled
|
|
||||||
autocmd('BufWritePre', {
|
|
||||||
group = augroup('Format', { clear = true }),
|
|
||||||
pattern = '*', -- All files
|
|
||||||
callback = function()
|
|
||||||
if not vim.g.disable_autoformat then
|
|
||||||
vim.lsp.buf.format({ async = false })
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- vim: ts=2 sts=2 sw=2 et
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
|
|||||||
@@ -1,218 +1,156 @@
|
|||||||
-- ╭─────────────────────────────────────────────────────────╮
|
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=120 :
|
||||||
-- │ Function shortcuts for keymap set │
|
|
||||||
-- ╰─────────────────────────────────────────────────────────╯
|
|
||||||
-- vim: set ft=lua ts=2 sw=2 tw=0 et cc=80 :
|
|
||||||
|
|
||||||
-- Keymap set shortcut
|
require 'utils'
|
||||||
--@type vim.keymap.set
|
|
||||||
local s = vim.keymap.set
|
|
||||||
|
|
||||||
-- Handle description
|
|
||||||
---@param desc string|table? Optional description. Can be a string or a table.
|
|
||||||
---@return table -- The description as a table.
|
|
||||||
local function handleDesc(desc)
|
|
||||||
if type(desc) == "string" then
|
|
||||||
-- Convert string to table with `desc` as a key
|
|
||||||
-- If the string is empty, just return as an empty description
|
|
||||||
return { desc = desc }
|
|
||||||
elseif type(desc) == "table" then
|
|
||||||
-- If desc doesn't have 'desc' key, combine it with
|
|
||||||
-- others with empty description
|
|
||||||
if not desc.desc then
|
|
||||||
desc.desc = ''
|
|
||||||
return desc
|
|
||||||
end
|
|
||||||
-- Use the table as is
|
|
||||||
return desc
|
|
||||||
else
|
|
||||||
-- Default to an empty table if `desc` is nil or an unsupported type
|
|
||||||
return { desc = '' }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Normal mode keymaps
|
|
||||||
---@param key string rhs, required
|
|
||||||
---@param cmd string|function lhs, required
|
|
||||||
---@param opts table? Options, optional
|
|
||||||
local n = function(key, cmd, opts) s('n', key, cmd, opts) end
|
|
||||||
|
|
||||||
-- Leader keymap shortcut function
|
|
||||||
-- It prepends '<leader>' to the key
|
|
||||||
---@param key string rhs, required, but will be prepended with '<leader>'
|
|
||||||
---@param cmd string|function lhs, required
|
|
||||||
---@param opts table|string? Options (or just description), optional
|
|
||||||
local nl = function(key, cmd, opts)
|
|
||||||
opts = handleDesc(opts)
|
|
||||||
n('<leader>' .. key, cmd, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Local leader keymap shortcut function
|
|
||||||
-- It prepends '<leader>' to the key and uses desc from opts
|
|
||||||
---@param key string rhs, required, but will be prepended with '<leader>'
|
|
||||||
---@param cmd string|function lhs, required
|
|
||||||
---@param opts table|string description, required
|
|
||||||
local nld = function(key, cmd, opts)
|
|
||||||
opts = handleDesc(opts)
|
|
||||||
nl(key, cmd, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Keymap shortcut function with mode defined, good for sorting by rhs
|
|
||||||
---@param key string rhs, required
|
|
||||||
---@param mode string|string[] one of n, v, x, or table of modes { 'n', 'v' }
|
|
||||||
---@param cmd string|function lhs, required
|
|
||||||
---@param opts string|table description, required
|
|
||||||
local d = function(key, mode, cmd, opts)
|
|
||||||
opts = handleDesc(opts)
|
|
||||||
s(mode, key, cmd, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Leader based keymap shortcut function with mode defined
|
|
||||||
---@param key string rhs, required, but will be prepended with '<leader>'
|
|
||||||
---@param mode string|string[] one of n, v, x, or table of modes { 'n', 'v' }
|
|
||||||
---@param cmd string|function lhs, required
|
|
||||||
---@param opts string|table description (or opts), required
|
|
||||||
local ld = function(key, mode, cmd, opts)
|
|
||||||
opts = handleDesc(opts)
|
|
||||||
s(mode, '<leader>' .. key, cmd, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- ╭─────────────────────────────────────────────────────────╮
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
-- │ Keymaps │
|
-- │ Keymaps │
|
||||||
-- ╰─────────────────────────────────────────────────────────╯
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
-- Disable arrow keys in normal mode
|
-- ── Disable arrow keys in normal mode ───────────────────────────────
|
||||||
n('<left>', ':echo "Use h to move!!"<CR>')
|
K.n('<left>', ':echo "Use h to move!!"<CR>')
|
||||||
n('<right>', ':echo "Use l to move!!"<CR>')
|
K.n('<right>', ':echo "Use l to move!!"<CR>')
|
||||||
n('<up>', ':echo "Use k to move!!"<CR>')
|
K.n('<up>', ':echo "Use k to move!!"<CR>')
|
||||||
n('<down>', ':echo "Use j to move!!"<CR>')
|
K.n('<down>', ':echo "Use j to move!!"<CR>')
|
||||||
|
|
||||||
n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
|
-- ── Splits ──────────────────────────────────────────────────────────
|
||||||
n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
|
K.n('<C-w>,', ':vertical resize -10<CR>', { desc = 'V Resize -' })
|
||||||
|
K.n('<C-w>.', ':vertical resize +10<CR>', { desc = 'V Resize +' })
|
||||||
|
K.n('<C-w>-', ':resize -10<CR>', { desc = 'H Resize -' })
|
||||||
|
K.n('<C-w>+', ':resize +10<CR>', { desc = 'H Resize +' })
|
||||||
|
K.n('<C-w>=', '<C-w>=', { desc = 'Equal Size Splits' })
|
||||||
|
|
||||||
-- Buffer operations
|
-- ── 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 }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- ── Text manipulation ───────────────────────────────────────────────
|
||||||
|
K.d('<', { 'n', 'v' }, '<gv', 'Indent Left')
|
||||||
|
K.d('>', { 'n', 'v' }, '>gv', 'Indent Right')
|
||||||
|
K.d('<C-k>', { 'n', 'v' }, ":m '<-2<CR>gv=gv", 'Move Block Up')
|
||||||
|
K.d('<C-j>', { 'n', 'v' }, ":m '>+1<CR>gv=gv", 'Move Block Down')
|
||||||
|
|
||||||
|
-- ── Other operations ────────────────────────────────────────────────
|
||||||
|
K.nl('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
|
||||||
|
K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
|
||||||
|
K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
|
||||||
|
|
||||||
|
-- ── Buffer operations ───────────────────────────────────────────────
|
||||||
-- Mappings for buffer management operations like switching, deleting, etc.
|
-- Mappings for buffer management operations like switching, deleting, etc.
|
||||||
-- Convention: All mappings start with 'b' followed by the operation
|
-- Convention: All mappings start with 'b' followed by the operation
|
||||||
nld('bd', ':lua MiniBufremove.delete()<CR>', 'Delete')
|
K.nl('ba', ':%bd|e#|bd#<cr>', 'Close all except current')
|
||||||
nld('bh', ':bprev<cr>', 'Prev')
|
K.nl('bd', ':lua MiniBufremove.delete()<CR>', 'Delete')
|
||||||
nld('bj', ':bfirst<cr>', 'First')
|
K.nl('bh', ':bprev<cr>', 'Prev')
|
||||||
nld('bk', ':blast<cr>', 'Last')
|
K.nl('bj', ':bfirst<cr>', 'First')
|
||||||
nld('bl', ':bnext<cr>', 'Next')
|
K.nl('bk', ':blast<cr>', 'Last')
|
||||||
nld('bw', ':lua MiniBufremove.wipeout()<CR>', 'Wipeout')
|
K.nl('bl', ':bnext<cr>', 'Next')
|
||||||
|
K.nl('bw', ':lua MiniBufremove.wipeout()<CR>', 'Wipeout')
|
||||||
|
|
||||||
-- Code
|
-- ── Code & LSP operations ───────────────────────────────────────────
|
||||||
nld('cg', ':lua require("neogen").generate()<CR>', 'Generate annotations')
|
-- Mappings for code and LSP operations like code actions, formatting, etc.
|
||||||
|
-- Convention: All mappings start with 'c' followed by the operation
|
||||||
|
-- unless it's a generic operation like signature help or hover
|
||||||
|
K.n('<C-l>', ':lua vim.lsp.buf.signature_help()<CR>', { desc = 'Signature' })
|
||||||
|
K.n('K', ':Lspsaga hover_doc<cr>', { desc = 'Hover Documentation' })
|
||||||
|
K.ld('ca', 'n', ':Lspsaga code_action<cr>', 'Code Action')
|
||||||
|
K.ld('cci', 'n', ':Lspsaga incoming_calls<cr>', 'Incoming Calls')
|
||||||
|
K.ld('cco', 'n', ':Lspsaga outgoing_calls<cr>', 'Outgoing Calls')
|
||||||
|
K.ld('cd', 'n', ':Lspsaga show_line_diagnostics<cr>', 'Line Diagnostics')
|
||||||
|
-- K.ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
|
||||||
|
K.ld('cg', 'n', ':lua require("neogen").generate()<CR>', 'Generate annotations')
|
||||||
|
K.ld('ci', 'n', ':Lspsaga implement<cr>', 'Implementations')
|
||||||
|
K.ld('cl', 'n', ':Lspsaga show_cursor_diagnostics<cr>', 'Cursor Diagnostics')
|
||||||
|
K.ld('cp', 'n', ':Lspsaga peek_definition<cr>', 'Peek Definition')
|
||||||
|
K.ld('cr', 'n', ':Lspsaga rename<cr>', 'Rename')
|
||||||
|
K.ld('cR', 'n', ':Lspsaga rename ++project<cr>', 'Rename Project wide')
|
||||||
|
K.ld('cs', 'n', ':Telescope lsp_document_symbols<CR>', 'LSP Document Symbols')
|
||||||
|
K.ld('ct', 'n', ':Lspsaga peek_type_definition<cr>', 'Peek Type Definition')
|
||||||
|
K.ld('cT', 'n', ':Telescope lsp_type_definitions<CR>', 'LSP Type Definitions')
|
||||||
|
K.ld('cu', 'n', ':Lspsaga preview_definition<cr>', 'Preview Definition')
|
||||||
|
K.ld('cv', 'n', ':Lspsaga diagnostic_jump_prev<cr>', 'Diagnostic Jump Prev')
|
||||||
|
K.ld('cw', 'n', ':Lspsaga diagnostic_jump_next<cr>', 'Diagnostic Jump Next')
|
||||||
|
|
||||||
-- LSP
|
-- ── CommentBox operations ───────────────────────────────────────────
|
||||||
n('<C-l>', ':lua vim.lsp.buf.signature_help()<CR>', { desc = 'Signature' })
|
|
||||||
n('K', ':Lspsaga hover_doc<cr>', { desc = 'Hover Documentation' })
|
|
||||||
ld('ca', 'n', ':Lspsaga code_action<cr>', 'Code Action')
|
|
||||||
ld('cci', 'n', ':Lspsaga incoming_calls<cr>', 'Incoming Calls')
|
|
||||||
ld('cco', 'n', ':Lspsaga outgoing_calls<cr>', 'Outgoing Calls')
|
|
||||||
ld('cd', 'n', ':Lspsaga show_line_diagnostics<cr>', 'Line Diagnostics')
|
|
||||||
ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
|
|
||||||
ld('ci', 'n', ':Lspsaga implement<cr>', 'Implementations')
|
|
||||||
ld('cl', 'n', ':Lspsaga show_cursor_diagnostics<cr>', 'Cursor Diagnostics')
|
|
||||||
ld('cp', 'n', ':Lspsaga peek_definition<cr>', 'Peek Definition')
|
|
||||||
ld('cr', 'n', ':Lspsaga rename<cr>', 'Rename')
|
|
||||||
ld('cR', 'n', ':Lspsaga rename ++project<cr>', 'Rename Project wide')
|
|
||||||
ld('cs', 'n', ':Telescope lsp_document_symbols<CR>', 'LSP Document Symbols')
|
|
||||||
ld('ct', 'n', ':Lspsaga peek_type_definition<cr>', 'Peek Type Definition')
|
|
||||||
ld('cT', 'n', ':Telescope lsp_type_definitions<CR>', 'LSP Type Definitions')
|
|
||||||
ld('cu', 'n', ':Lspsaga preview_definition<cr>', 'Preview Definition')
|
|
||||||
ld('cv', 'n', ':Lspsaga diagnostic_jump_prev<cr>', 'Diagnostic Jump Prev')
|
|
||||||
ld('cw', 'n', ':Lspsaga diagnostic_jump_next<cr>', 'Diagnostic Jump Next')
|
|
||||||
|
|
||||||
-- CommentBox operations
|
|
||||||
-- Mappings for creating and managing comment boxes
|
-- Mappings for creating and managing comment boxes
|
||||||
-- Convention: All mappings start with 'cb' followed by the box type
|
-- Convention: All mappings start with 'cb' followed by the box type
|
||||||
nld('cbb', '<Cmd>CBccbox<CR>', 'CB: Box Title')
|
K.nl('cbb', '<Cmd>CBccbox<CR>', 'CB: Box Title')
|
||||||
nld('cbd', '<Cmd>CBd<CR>', 'CB: Remove a box')
|
K.nl('cbd', '<Cmd>CBd<CR>', 'CB: Remove a box')
|
||||||
nld('cbl', '<Cmd>CBline<CR>', 'CB: Simple Line')
|
K.nl('cbl', '<Cmd>CBline<CR>', 'CB: Simple Line')
|
||||||
nld('cbm', '<Cmd>CBllbox14<CR>', 'CB: Marked')
|
K.nl('cbm', '<Cmd>CBllbox14<CR>', 'CB: Marked')
|
||||||
nld('cbt', '<Cmd>CBllline<CR>', 'CB: Titled Line')
|
K.nl('cbt', '<Cmd>CBllline<CR>', 'CB: Titled Line')
|
||||||
|
|
||||||
|
-- ── Telescope operations ────────────────────────────────────────────
|
||||||
|
-- Mappings for Telescope operations like finding files, buffers, etc.
|
||||||
|
-- Convention: All mappings start with 's' followed by the operation
|
||||||
|
-- unless it's a generic operation like searching or finding buffers
|
||||||
|
K.nl('f', ':Telescope find_files<cr>', 'Find Files')
|
||||||
|
K.nl(',', ':Telescope buffers<cr>', 'Find existing buffers')
|
||||||
|
K.nl(
|
||||||
|
'/',
|
||||||
|
function()
|
||||||
|
require('telescope.builtin').current_buffer_fuzzy_find(
|
||||||
|
require('telescope.themes').get_dropdown {
|
||||||
|
winblend = 20,
|
||||||
|
previewer = true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
'Fuzzily search in current buffer'
|
||||||
|
)
|
||||||
|
|
||||||
-- Telescope
|
K.nl('sc', ':Telescope commands<cr>', 'Commands')
|
||||||
nld('f', ':Telescope find_files<cr>', 'Find Files')
|
K.nl('sd', ':Telescope diagnostics<cr>', 'Search Diagnostics')
|
||||||
nld(',', ':Telescope buffers<cr>', 'Find existing buffers')
|
K.nl('sg', ':Telescope live_grep<cr>', 'Search by Grep')
|
||||||
nld('/', function()
|
K.nl('sh', ':Telescope help_tags<cr>', 'Help tags')
|
||||||
require('telescope.builtin').current_buffer_fuzzy_find(
|
K.nl('sk', ':Telescope keymaps<cr>', 'Search Keymaps')
|
||||||
require('telescope.themes').get_dropdown {
|
K.nl('sl', ':Telescope luasnip<CR>', 'Search LuaSnip')
|
||||||
winblend = 20,
|
K.nl('so', ':Telescope oldfiles<CR>', 'Old Files')
|
||||||
previewer = true,
|
K.nl(
|
||||||
}
|
'sp',
|
||||||
)
|
|
||||||
end, 'Fuzzily search in current buffer')
|
|
||||||
|
|
||||||
nld('sc', ':Telescope commands<cr>', 'Commands')
|
|
||||||
nld('sd', ':Telescope diagnostics<cr>', 'Search Diagnostics')
|
|
||||||
nld('sg', ':Telescope live_grep<cr>', 'Search by Grep')
|
|
||||||
nld('sh', ':Telescope highlights<cr>', 'List Highlights')
|
|
||||||
nld('sk', ':Telescope keymaps<cr>', 'Search Keymaps')
|
|
||||||
nld('sl', ':Telescope luasnip<CR>', 'Search LuaSnip')
|
|
||||||
nld('so', ':Telescope oldfiles<CR>', 'Old Files')
|
|
||||||
nld('sp',
|
|
||||||
':lua require("telescope").extensions.lazy_plugins.lazy_plugins()<cr>',
|
':lua require("telescope").extensions.lazy_plugins.lazy_plugins()<cr>',
|
||||||
'Lazy Plugins')
|
'Lazy Plugins'
|
||||||
nld('sq', ':Telescope quickfix<cr>', 'Quickfix')
|
)
|
||||||
nld('ss', ':Telescope treesitter<cr>', 'Treesitter')
|
K.nl('sq', ':Telescope quickfix<cr>', 'Quickfix')
|
||||||
nld('st', ':TodoTelescope<cr>', 'Search Todos')
|
K.nl('ss', ':Telescope treesitter<cr>', 'Treesitter')
|
||||||
nld('sw', ':Telescope grep_string<cr>', 'Grep String')
|
K.nl('st', ':TodoTelescope<cr>', 'Search Todos')
|
||||||
nld('sx', ':Telescope import<cr>', 'Telescope: Import')
|
K.nl('sw', ':Telescope grep_string<cr>', 'Grep String')
|
||||||
|
K.nl('sx', ':Telescope import<cr>', 'Telescope: Import')
|
||||||
|
|
||||||
-- Trouble
|
-- ── Trouble operations ──────────────────────────────────────────────
|
||||||
nld('xd',
|
-- Convention is 'x' followed by the operation
|
||||||
':Trouble document_diagnostics<cr>', 'Trouble: Document Diagnostics')
|
K.nl('xd', ':Trouble document_diagnostics<cr>', 'Document Diagnostics')
|
||||||
nld('xl', ':Trouble loclist<cr>', 'Trouble: Location List')
|
K.nl('xl', ':Trouble loclist<cr>', 'Location List')
|
||||||
nld('xq', ':Trouble quickfix<cr>', 'Trouble: Quickfix')
|
K.nl('xq', ':Trouble quickfix<cr>', 'Quickfix')
|
||||||
nld('xw',
|
K.nl('xw', ':Trouble workspace_diagnostics<cr>', 'Workspace Diagnostics')
|
||||||
':Trouble workspace_diagnostics<cr>', 'Trouble: Workspace Diagnostics')
|
K.nl('xx', ':Trouble diagnostics<cr>', 'Diagnostic')
|
||||||
nld('xx', ':Trouble diagnostics<cr>', 'Trouble: Diagnostic')
|
|
||||||
|
|
||||||
-- Text manipulation
|
-- ── Toggle settings ─────────────────────────────────────────────────
|
||||||
d('<', { 'n', 'v' }, '<gv', 'Indent Left')
|
-- Convention is 't' followed by the operation
|
||||||
d('>', { 'n', 'v' }, '>gv', 'Indent Right')
|
K.nl('tc', ':CloakToggle<cr>', 'Cloak: Toggle')
|
||||||
d('<C-k>', { 'n', 'v' }, ":m '<-2<CR>gv=gv", 'Move Block Up')
|
K.nl('te', ':Neotree toggle<cr>', 'Toggle Neotree')
|
||||||
d('<C-j>', { 'n', 'v' }, ":m '>+1<CR>gv=gv", 'Move Block Down')
|
K.nl('tl', ToggleBackground, 'Toggle Light/Dark Mode')
|
||||||
|
K.nl('tn', ':Noice dismiss<cr>', 'Noice: Dismiss Notification')
|
||||||
|
|
||||||
-- Other functionality
|
-- ── Quit operations ─────────────────────────────────────────────────
|
||||||
nld('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
|
-- Convention is 'q' followed by the operation
|
||||||
|
K.nl('qf', ':q<CR>', 'Quicker close split')
|
||||||
-- Toggle settings
|
K.nl('qq', function()
|
||||||
local function toggle_background()
|
if vim.fn.confirm('Force save and quit?', '&Yes\n&No', 2) == 1 then
|
||||||
vim.o.bg = vim.o.bg == "light" and "dark" or "light"
|
vim.cmd 'wq!'
|
||||||
end
|
|
||||||
|
|
||||||
nld('tc', ':CloakToggle<cr>', 'Cloak: Toggle')
|
|
||||||
nld('te', ':Neotree toggle<cr>', 'Toggle Neotree')
|
|
||||||
nld('tl', toggle_background, 'Toggle Light/Dark Mode')
|
|
||||||
nld('tn', ':Noice dismiss<cr>', 'Noice: Dismiss Notification')
|
|
||||||
|
|
||||||
-- Splits
|
|
||||||
n('<C-w>,', ':vertical resize -10<CR>', { desc = 'V Resize -' })
|
|
||||||
n('<C-w>.', ':vertical resize +10<CR>', { desc = 'V Resize +' })
|
|
||||||
n('<C-w>-', ':resize -5<CR>', { desc = 'H Resize -' })
|
|
||||||
n('<C-w>+', ':resize +5<CR>', { desc = 'H Resize +' })
|
|
||||||
n('<C-w>=', '<C-w>=', { desc = 'Equal Size Splits' })
|
|
||||||
|
|
||||||
-- Deal with word wrap
|
|
||||||
n('k',
|
|
||||||
"v:count == 0 ? 'gk' : 'k'",
|
|
||||||
{ desc = 'Move up', noremap = true, expr = true })
|
|
||||||
n('j',
|
|
||||||
"v:count == 0 ? 'gj' : 'j'",
|
|
||||||
{ desc = 'Move down', noremap = true, expr = true })
|
|
||||||
|
|
||||||
-- Quit
|
|
||||||
nld('qf', ':q<CR>', 'Quicker close split')
|
|
||||||
nld('qq', function()
|
|
||||||
if vim.fn.confirm("Force save and quit?", "&Yes\n&No", 2) == 1 then
|
|
||||||
vim.cmd('wq!')
|
|
||||||
end
|
end
|
||||||
end, 'Quit with force saving')
|
end, 'Quit with force saving')
|
||||||
nld('qw', ':wq<CR>', 'Write and quit')
|
K.nl('qw', ':wq<CR>', 'Write and quit')
|
||||||
nld('qQ', function()
|
K.nl('qQ', function()
|
||||||
if vim.fn.confirm("Force quit without saving?", "&Yes\n&No", 2) == 1 then
|
if vim.fn.confirm('Force quit without saving?', '&Yes\n&No', 2) == 1 then
|
||||||
vim.cmd('q!')
|
vim.cmd 'q!'
|
||||||
end
|
end
|
||||||
end, 'Force quit without saving')
|
end, 'Force quit without saving')
|
||||||
|
|
||||||
|
-- That concludes the keymaps section of the config.
|
||||||
|
|||||||
122
config/nvim/lua/nvm-default/init.lua
Normal file
122
config/nvim/lua/nvm-default/init.lua
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
-- Get nvm default version and use it in node_host_prog
|
||||||
|
-- and g.copilot_node_command.
|
||||||
|
--
|
||||||
|
-- This module automatically configures Neovim to use the default Node.js version
|
||||||
|
-- from NVM. It requires a working NVM installation and 'default' alias to be set,
|
||||||
|
-- and also neovim npm package to be installed.
|
||||||
|
--
|
||||||
|
-- You can install the neovim package by running:
|
||||||
|
-- npm i --global neovim
|
||||||
|
--
|
||||||
|
-- Usage:
|
||||||
|
-- require('nvm-default').setup({
|
||||||
|
-- add_to_path = true, -- optional: add NVM bin directory to PATH
|
||||||
|
-- nvm_path = "~/.nvm", -- optional: custom NVM installation path
|
||||||
|
-- notify_level = "info" -- optional: notification level
|
||||||
|
-- })
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.name = 'nvm-default.nvim'
|
||||||
|
M.version = '0.1.0' -- x-release-please-version
|
||||||
|
|
||||||
|
-- Helper function to run a shell command
|
||||||
|
---@param cmd string Run a shell command
|
||||||
|
---@return string? Return the result of the command
|
||||||
|
local function run_command(cmd)
|
||||||
|
local result = vim.fn.system(cmd)
|
||||||
|
return vim.v.shell_error == 0 and result:gsub('%s+$', '') or nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Helper function to show a notification
|
||||||
|
---@param msg string Show a message
|
||||||
|
---@param level "info"|"warn"|"error"|"trace" Notification level
|
||||||
|
local function n(msg, level)
|
||||||
|
if msg == nil then msg = M.name .. ': No message provided' end
|
||||||
|
if level == nil then level = 'trace' end
|
||||||
|
|
||||||
|
local log_level = vim.log.levels.INFO
|
||||||
|
|
||||||
|
if level == 'info' then
|
||||||
|
log_level = vim.log.levels.INFO
|
||||||
|
elseif level == 'warn' then
|
||||||
|
log_level = vim.log.levels.WARN
|
||||||
|
elseif level == 'error' then
|
||||||
|
log_level = vim.log.levels.ERROR
|
||||||
|
elseif level == 'trace' then
|
||||||
|
log_level = vim.log.levels.TRACE
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.notify(M.name .. ': ' .. msg, log_level)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@class NvmDefaultOptions
|
||||||
|
---@field add_to_path boolean Add found NVM bin directory to PATH
|
||||||
|
---@field nvm_path string Where nvm installation is located
|
||||||
|
---@field notify_level number|"info"|"warn"|"error"|"trace" Notification level filter
|
||||||
|
|
||||||
|
-- Default options
|
||||||
|
---@type NvmDefaultOptions
|
||||||
|
M.defaults = {
|
||||||
|
add_to_path = vim.g.nvm_default_add_to_path or true,
|
||||||
|
nvm_path = vim.fn.expand(os.getenv 'NVM_DIR' or '~/.nvm'),
|
||||||
|
notify_level = vim.g.nvm_default_notify_level or 'info',
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Fetch the NVM default version or fallback to node version
|
||||||
|
---@param opts? NvmDefaultOptions Plugin options
|
||||||
|
function M.setup(opts)
|
||||||
|
local options = vim.tbl_deep_extend('force', M.defaults, opts or {})
|
||||||
|
|
||||||
|
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))
|
||||||
|
|
||||||
|
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 neovim_node_host_bin_path =
|
||||||
|
string.format('%s/neovim-node-host', current_nvm_node_bin_path)
|
||||||
|
|
||||||
|
-- Collect missing files and directories errors for error output
|
||||||
|
local missing = {}
|
||||||
|
|
||||||
|
-- If node_dir isn't there, stop and show error
|
||||||
|
if not vim.fn.isdirectory(current_nvm_version_path) then
|
||||||
|
table.insert(missing, 'Node.js directory: ' .. current_nvm_version_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- If node_bin isn't there, stop and show error
|
||||||
|
if not vim.fn.filereadable(current_nvm_node_bin) then
|
||||||
|
table.insert(missing, 'Node.js binary: ' .. current_nvm_node_bin)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not vim.fn.filereadable(neovim_node_host_bin_path) then
|
||||||
|
table.insert(missing, 'Neovim host binary: ' .. neovim_node_host_bin_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
if #missing > 0 then
|
||||||
|
n('Missing required files:\n- ' .. table.concat(missing, '\n- '), 'error')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add to PATH if requested. Can be turned off by setting if it messes with
|
||||||
|
-- other tools.
|
||||||
|
if options.add_to_path then
|
||||||
|
vim.env.PATH = current_nvm_node_bin_path .. ':' .. vim.env.PATH
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.g.node_host_prog = neovim_node_host_bin_path
|
||||||
|
vim.g.copilot_node_command = current_nvm_node_bin
|
||||||
|
else
|
||||||
|
n('Unable to determine the Node.js version from nvm.', 'error')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -5,48 +5,41 @@
|
|||||||
-- `:help vim.g`
|
-- `:help vim.g`
|
||||||
-- For more options, you can see `:help option-list`
|
-- For more options, you can see `:help option-list`
|
||||||
|
|
||||||
local g = vim.g -- A table to store global variables
|
local g = vim.g -- A table to store global variables
|
||||||
local o = vim.opt -- A table to store global options
|
local o = vim.opt -- A table to store global options
|
||||||
|
|
||||||
vim.loader.enable() -- Enable the plugin loader
|
|
||||||
|
|
||||||
-- vim.global
|
-- vim.global
|
||||||
g.mapleader = ' ' -- Space as the leader key
|
g.mapleader = ' ' -- Space as the leader key
|
||||||
g.maplocalleader = ' ' -- Space as the local leader key
|
g.maplocalleader = ' ' -- Space as the local leader key
|
||||||
g.colors_theme = 'tokyonight' -- Set the colorscheme
|
|
||||||
g.colors_variant_light = 'tokyonight-day' -- Set the light variant
|
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_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
|
g.editorconfig = true -- Make sure editorconfig support is enabled
|
||||||
g.loaded_ruby_provider = 0 -- Disable ruby provider
|
g.loaded_perl_provider = 0 -- Disable perl provider
|
||||||
|
g.loaded_ruby_provider = 0 -- Disable ruby provider
|
||||||
|
g.loaded_java_provider = 0 -- Disable java provider
|
||||||
|
|
||||||
-- vim.options
|
-- vim.options
|
||||||
o.breakindent = true -- Enable break indent
|
-- Most of the good defaults are provided by `mini.basics`
|
||||||
o.completeopt = 'menuone,noselect' -- Popup menu when typing
|
-- See: lua/plugins/mini.lua
|
||||||
o.cursorline = true -- Show which line your cursor is on
|
o.ignorecase = true -- Ignore case in search patterns
|
||||||
o.inccommand = 'split' -- Preview substitutions live, as you type!
|
o.inccommand = 'split' -- Preview substitutions live, as you type!
|
||||||
o.mouse = 'a' -- Enable mouse support
|
o.number = true -- Show line numbers
|
||||||
o.number = true -- Show line numbers
|
o.numberwidth = 3 -- Set the width of the number column
|
||||||
o.numberwidth = 3 -- Set the width of the number column
|
o.relativenumber = true -- Show relative line numbers
|
||||||
o.relativenumber = true -- Show relative line numbers
|
o.scrolloff = 15 -- Show context around cursor
|
||||||
o.scrolloff = 15 -- Show context around cursor
|
o.signcolumn = 'yes:3' -- Keep signcolumn on by default
|
||||||
o.showmode = false -- Don't show mode
|
o.spell = true -- Enable spell checking
|
||||||
o.signcolumn = 'yes:2' -- Keep signcolumn on by default
|
o.spelllang = 'en_us' -- Set the spell checking language
|
||||||
o.smartindent = true -- Insert indents automatically
|
o.splitbelow = true -- split to the bottom
|
||||||
o.spell = true -- Enable spell checking
|
o.splitright = true -- vsplit to the right
|
||||||
o.spelllang = 'en_us' -- Set the spell checking language
|
o.termguicolors = true -- Enable GUI colors
|
||||||
o.splitbelow = true -- split to the bottom
|
o.timeoutlen = 250 -- Decrease mapped sequence wait time
|
||||||
o.splitright = true -- vsplit to the right
|
o.updatetime = 250 -- 250 ms = 2,5 seconds
|
||||||
o.termguicolors = true -- Fixes Notify opacity issues
|
o.sessionoptions =
|
||||||
o.timeoutlen = 250 -- Decrease mapped sequence wait time
|
'blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions'
|
||||||
o.undofile = true -- Save undo history
|
|
||||||
o.updatetime = 250 -- 250 ms = 2,5 seconds
|
|
||||||
o.ignorecase = true -- Ignore case in search patterns
|
|
||||||
o.smartcase = true -- Override 'ignorecase' if pattern contains upper case chars
|
|
||||||
|
|
||||||
|
|
||||||
o.list = true -- Show some invisible characters
|
|
||||||
o.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -- Which invisible chars to show
|
|
||||||
|
|
||||||
-- Enable the colorcolumn
|
-- Enable the colorcolumn
|
||||||
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
vim.api.nvim_set_option_value('colorcolumn', '+1', { scope = 'global' })
|
||||||
|
|||||||
@@ -12,19 +12,20 @@ return {
|
|||||||
'saghen/blink.compat',
|
'saghen/blink.compat',
|
||||||
version = '*',
|
version = '*',
|
||||||
-- lazy.nvim will automatically load the plugin when it's required by blink.cmp
|
-- lazy.nvim will automatically load the plugin when it's required by blink.cmp
|
||||||
lazy = true,
|
|
||||||
opts = {
|
opts = {
|
||||||
-- make sure to set opts so that lazy.nvim calls blink.compat's setup
|
-- make sure to set opts so that lazy.nvim calls blink.compat's setup
|
||||||
impersonate_nvim_cmp = true,
|
impersonate_nvim_cmp = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Set of preconfigured snippets for different languages.
|
-- Set of preconfigured snippets for different languages.
|
||||||
-- https://github.com/rafamadriz/friendly-snippets
|
-- https://github.com/rafamadriz/friendly-snippets
|
||||||
{ 'rafamadriz/friendly-snippets' },
|
{ 'rafamadriz/friendly-snippets' },
|
||||||
|
|
||||||
-- Lua plugin to turn github copilot into a cmp source
|
-- Lua plugin to turn github copilot into a cmp source
|
||||||
-- https://github.com/giuxtaposition/blink-cmp-copilot
|
-- https://github.com/giuxtaposition/blink-cmp-copilot
|
||||||
{
|
{
|
||||||
"giuxtaposition/blink-cmp-copilot",
|
'giuxtaposition/blink-cmp-copilot',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
-- Fully featured & enhanced replacement for copilot.vim complete
|
-- Fully featured & enhanced replacement for copilot.vim complete
|
||||||
-- with API for interacting with Github Copilot
|
-- with API for interacting with Github Copilot
|
||||||
@@ -73,11 +74,14 @@ return {
|
|||||||
completion = {
|
completion = {
|
||||||
menu = {
|
menu = {
|
||||||
draw = {
|
draw = {
|
||||||
columns = { { "label", "label_description", gap = 1 }, { "kind_icon", "kind", gap = 1 } },
|
columns = {
|
||||||
|
{ 'label', 'label_description', gap = 1 },
|
||||||
|
{ 'kind_icon', 'kind', gap = 1 },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
documentation = {
|
documentation = {
|
||||||
auto_show = true
|
auto_show = true,
|
||||||
},
|
},
|
||||||
ghost_text = {
|
ghost_text = {
|
||||||
enabled = false,
|
enabled = false,
|
||||||
@@ -90,7 +94,7 @@ return {
|
|||||||
providers = {
|
providers = {
|
||||||
copilot = {
|
copilot = {
|
||||||
name = 'copilot',
|
name = 'copilot',
|
||||||
module = 'blink-cmp-copilot'
|
module = 'blink-cmp-copilot',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
completion = {
|
completion = {
|
||||||
@@ -108,10 +112,10 @@ return {
|
|||||||
-- completion = { accept = { auto_brackets = { enabled = true } } }
|
-- completion = { accept = { auto_brackets = { enabled = true } } }
|
||||||
|
|
||||||
-- experimental signature help support
|
-- experimental signature help support
|
||||||
signature = { enabled = true }
|
signature = { enabled = true },
|
||||||
},
|
},
|
||||||
-- allows extending the enabled_providers array elsewhere in your config
|
-- allows extending the enabled_providers array elsewhere in your config
|
||||||
-- without having to redefine it
|
-- without having to redefine it
|
||||||
opts_extend = { "sources.completion.enabled_providers" },
|
opts_extend = { 'sources.completion.enabled_providers' },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
87
config/nvim/lua/plugins/code.lua
Normal file
87
config/nvim/lua/plugins/code.lua
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
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' },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- 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 = '=.+',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Describe the regexp under the cursor
|
||||||
|
-- https://github.com/bennypowers/nvim-regexplainer
|
||||||
|
{
|
||||||
|
'bennypowers/nvim-regexplainer',
|
||||||
|
event = 'BufEnter',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
'MunifTanjim/nui.nvim',
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
-- automatically show the explainer when the cursor enters a regexp
|
||||||
|
auto = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Clarify and beautify your comments using boxes and lines.
|
||||||
|
-- https://github.com/LudoPinelli/comment-box.nvim
|
||||||
|
{
|
||||||
|
'LudoPinelli/comment-box.nvim',
|
||||||
|
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
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -2,23 +2,39 @@ return {
|
|||||||
-- A collection of small QoL plugins for Neovim
|
-- A collection of small QoL plugins for Neovim
|
||||||
-- https://github.com/folke/snacks.nvim
|
-- https://github.com/folke/snacks.nvim
|
||||||
{
|
{
|
||||||
"folke/snacks.nvim",
|
'folke/snacks.nvim',
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
lazy = false,
|
lazy = false,
|
||||||
---@type snacks.Config
|
---@type snacks.Config
|
||||||
opts = {
|
opts = {
|
||||||
bigfile = { enabled = true },
|
bigfile = { enabled = true },
|
||||||
gitbrowse = { enabled = true },
|
gitbrowse = { enabled = true },
|
||||||
|
notifier = {
|
||||||
|
enabled = true,
|
||||||
|
timeout = 3000,
|
||||||
|
},
|
||||||
notify = { enabled = true },
|
notify = { enabled = true },
|
||||||
notifier = { enabled = true },
|
|
||||||
quickfile = { enabled = true },
|
quickfile = { enabled = true },
|
||||||
statuscolumn = { enabled = true },
|
statuscolumn = {
|
||||||
|
enabled = true,
|
||||||
|
left = { 'mark', 'sign' }, -- priority of signs on the left (high to low)
|
||||||
|
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 = {
|
||||||
|
-- patterns to match Git signs
|
||||||
|
patterns = { 'GitSign', 'MiniDiffSign' },
|
||||||
|
},
|
||||||
|
refresh = 50, -- refresh at most every 50ms
|
||||||
|
},
|
||||||
words = { enabled = true },
|
words = { enabled = true },
|
||||||
styles = {
|
styles = {
|
||||||
notification = {
|
notification = {
|
||||||
wo = { wrap = true } -- Wrap notifications
|
wo = { wrap = true }, -- Wrap notifications
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
-- A pretty diagnostics, references, telescope results,
|
-- A pretty diagnostics, references, telescope results,
|
||||||
|
|||||||
@@ -1,4 +1,129 @@
|
|||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ LSP Setup and configuration │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- 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 = {},
|
||||||
|
jsonls = {},
|
||||||
|
lua_ls = {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
completion = {
|
||||||
|
callSnippet = 'Replace',
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
globals = {
|
||||||
|
'vim',
|
||||||
|
-- busted
|
||||||
|
'describe',
|
||||||
|
'it',
|
||||||
|
'before_each',
|
||||||
|
'after_each',
|
||||||
|
'assert',
|
||||||
|
},
|
||||||
|
disable = {
|
||||||
|
-- Ignore lua_ls noisy `missing-fields` warnings
|
||||||
|
'missing-fields',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hint = {
|
||||||
|
enable = false,
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
|
||||||
|
-- used for completion, annotations and signatures of Neovim apis
|
||||||
|
-- https://github.com/folke/lazydev.nvim
|
||||||
|
{
|
||||||
|
'folke/lazydev.nvim',
|
||||||
|
ft = 'lua',
|
||||||
|
opts = {
|
||||||
|
library = {
|
||||||
|
-- Load luvit types when the `vim.uv` word is found
|
||||||
|
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Meta type definitions for the Lua platform Luvit.
|
||||||
|
-- https://github.com/Bilal2453/luvit-meta
|
||||||
|
{ 'Bilal2453/luvit-meta', lazy = true },
|
||||||
|
|
||||||
-- improve neovim lsp experience
|
-- improve neovim lsp experience
|
||||||
-- https://github.com/nvimdev/lspsaga.nvim
|
-- https://github.com/nvimdev/lspsaga.nvim
|
||||||
-- https://nvimdev.github.io/lspsaga/
|
-- https://nvimdev.github.io/lspsaga/
|
||||||
@@ -9,7 +134,6 @@ return {
|
|||||||
'nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
'nvim-tree/nvim-web-devicons',
|
'nvim-tree/nvim-web-devicons',
|
||||||
},
|
},
|
||||||
---@type LspsagaConfig
|
|
||||||
opts = {
|
opts = {
|
||||||
code_action = {
|
code_action = {
|
||||||
show_server_name = true,
|
show_server_name = true,
|
||||||
@@ -24,21 +148,73 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- A simple wrapper for nvim-lspconfig and mason-lspconfig
|
-- A simple wrapper for nvim-lspconfig and mason-lspconfig
|
||||||
-- to easily setup LSP servers.
|
-- to easily setup LSP servers.
|
||||||
-- https://github.com/junnplus/lsp-setup.nvim
|
-- https://github.com/junnplus/lsp-setup.nvim
|
||||||
{
|
{
|
||||||
'junnplus/lsp-setup.nvim',
|
'junnplus/lsp-setup.nvim',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
|
-- Quickstart configs for Nvim LSP
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig
|
||||||
{ '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',
|
'williamboman/mason.nvim',
|
||||||
|
version = '*',
|
||||||
cmd = 'Mason',
|
cmd = 'Mason',
|
||||||
run = ':MasonUpdate'
|
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' },
|
{ 'williamboman/mason-lspconfig.nvim' },
|
||||||
{ 'folke/neodev.nvim' },
|
|
||||||
|
-- Install and upgrade third party tools automatically
|
||||||
|
-- https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim
|
||||||
|
{
|
||||||
|
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||||
|
version = '*',
|
||||||
|
opts = {
|
||||||
|
auto_install = true,
|
||||||
|
auto_update = true,
|
||||||
|
ensure_installed = {
|
||||||
|
'actionlint',
|
||||||
|
'editorconfig-checker',
|
||||||
|
'goimports',
|
||||||
|
'gotests',
|
||||||
|
'phpcbf',
|
||||||
|
'pint',
|
||||||
|
'prettierd',
|
||||||
|
'shellcheck',
|
||||||
|
'shfmt',
|
||||||
|
'staticcheck',
|
||||||
|
'stylua',
|
||||||
|
'vint',
|
||||||
|
'yamlfmt',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- JSON schemas for Neovim
|
||||||
|
-- https://github.com/b0o/SchemaStore.nvim
|
||||||
{ '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' },
|
{ 'saghen/blink.cmp' },
|
||||||
},
|
},
|
||||||
opts = {
|
opts = {
|
||||||
@@ -51,126 +227,45 @@ return {
|
|||||||
inlay_hints = {
|
inlay_hints = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
},
|
},
|
||||||
servers = {
|
servers = 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 = {},
|
|
||||||
jsonls = {},
|
|
||||||
lua_ls = {
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
diagnostics = {
|
|
||||||
globals = { 'vim' },
|
|
||||||
disable = {
|
|
||||||
-- Ignore lua_ls noisy `missing-fields` warnings
|
|
||||||
'missing-fields',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
hint = {
|
|
||||||
enable = false,
|
|
||||||
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,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
require('neodev').setup()
|
require('lazydev').setup()
|
||||||
require('lsp-setup').setup(opts)
|
require('lsp-setup').setup(opts)
|
||||||
local lspconfig = require('lspconfig')
|
local lspconfig = require 'lspconfig'
|
||||||
for server, config in pairs(opts.servers) do
|
for server, config in pairs(opts.servers) do
|
||||||
-- passing config.capabilities to blink.cmp merges with the capabilities in your
|
-- passing config.capabilities to blink.cmp merges with the capabilities in your
|
||||||
-- `opts[server].capabilities, if you've defined it
|
-- `opts[server].capabilities, if you've defined it
|
||||||
config.capabilities = require('blink.cmp').get_lsp_capabilities(config.capabilities)
|
config.capabilities =
|
||||||
|
require('blink.cmp').get_lsp_capabilities(config.capabilities)
|
||||||
lspconfig[server].setup(config)
|
lspconfig[server].setup(config)
|
||||||
end
|
end
|
||||||
|
|
||||||
lspconfig.lua_ls.on_init = function(client)
|
lspconfig.lua_ls.on_init = function(client)
|
||||||
if client.workspace_folders then
|
if client.workspace_folders then
|
||||||
local path = client.workspace_folders[1].name
|
local path = client.workspace_folders[1].name
|
||||||
if vim.loop.fs_stat(path .. '/.luarc.json') or vim.loop.fs_stat(path .. '/.luarc.jsonc') then
|
if
|
||||||
|
vim.loop.fs_stat(path .. '/.luarc.json')
|
||||||
|
or vim.loop.fs_stat(path .. '/.luarc.jsonc')
|
||||||
|
then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
|
client.config.settings.Lua =
|
||||||
runtime = {
|
vim.tbl_deep_extend('force', client.config.settings.Lua, {
|
||||||
-- Tell the language server which version of Lua you're using
|
runtime = {
|
||||||
-- (most likely LuaJIT in the case of Neovim)
|
-- Tell the language server which version of Lua you're using
|
||||||
version = 'LuaJIT'
|
-- (most likely LuaJIT in the case of Neovim)
|
||||||
},
|
version = 'LuaJIT',
|
||||||
-- Make the server aware of Neovim runtime files
|
},
|
||||||
workspace = {
|
-- Make the server aware of Neovim runtime files
|
||||||
checkThirdParty = false,
|
workspace = {
|
||||||
library = {
|
checkThirdParty = false,
|
||||||
vim.env.VIMRUNTIME
|
library = {
|
||||||
}
|
vim.env.VIMRUNTIME,
|
||||||
}
|
},
|
||||||
})
|
},
|
||||||
|
})
|
||||||
end
|
end
|
||||||
lspconfig.jsonls.settings = {
|
lspconfig.jsonls.settings = {
|
||||||
json = {
|
json = {
|
||||||
@@ -191,4 +286,53 @@ return {
|
|||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Lightweight yet powerful formatter plugin for Neovim
|
||||||
|
-- https://github.com/stevearc/conform.nvim
|
||||||
|
{
|
||||||
|
'stevearc/conform.nvim',
|
||||||
|
event = { 'BufWritePre' },
|
||||||
|
cmd = { 'ConformInfo' },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<leader>cf',
|
||||||
|
function()
|
||||||
|
require('conform').format { async = true, lsp_format = 'fallback' }
|
||||||
|
end,
|
||||||
|
mode = '',
|
||||||
|
desc = 'Format buffer',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
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
|
||||||
|
return {
|
||||||
|
timeout_ms = 500,
|
||||||
|
lsp_format = lsp_format_opt,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = { 'stylua' },
|
||||||
|
-- Conform can also run multiple formatters sequentially
|
||||||
|
-- python = { "isort", "black" },
|
||||||
|
--
|
||||||
|
-- You can use 'stop_after_first' to run the first available formatter from the list
|
||||||
|
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Automatically install formatters registered with conform.nvim via mason.nvim
|
||||||
|
-- https://github.com/zapling/mason-conform.nvim
|
||||||
|
{ 'zapling/mason-conform.nvim', opts = {} },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +1,43 @@
|
|||||||
-- https://github.com/echasnovski/mini.nvim
|
|
||||||
-- https://github.com/echasnovski/mini.nvim/tree/main?tab=readme-ov-file#modules
|
|
||||||
return {
|
return {
|
||||||
-- Presets for common options and mappings
|
-- Library of 40+ independent Lua modules improving overall Neovim
|
||||||
{ 'echasnovski/mini.basics', version = '*' },
|
-- (version 0.8 and higher) experience with minimal effort
|
||||||
|
-- https://github.com/echasnovski/mini.nvim
|
||||||
-- Animate common Neovim actions
|
-- https://github.com/echasnovski/mini.nvim/tree/main?tab=readme-ov-file#modules
|
||||||
-- Replaced anuvyklack/windows.nvim
|
|
||||||
{ 'echasnovski/mini.animate', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Buffer removing (unshow, delete, wipeout), which saves window layout
|
|
||||||
-- Replaced famiu/bufdelete.nvim
|
|
||||||
{ 'echasnovski/mini.bufremove', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Show next key clues
|
|
||||||
-- Replaced folke/which-key.nvim
|
|
||||||
{
|
{
|
||||||
'echasnovski/mini.clue',
|
'echasnovski/mini.nvim',
|
||||||
version = '*',
|
version = '*',
|
||||||
|
priority = 1001,
|
||||||
config = function()
|
config = function()
|
||||||
local miniclue = require 'mini.clue'
|
-- Presets for common options and mappings
|
||||||
|
-- h: MiniBasics.config
|
||||||
|
require('mini.basics').setup {
|
||||||
|
options = {
|
||||||
|
basics = true,
|
||||||
|
extra_ui = true,
|
||||||
|
},
|
||||||
|
mappings = {
|
||||||
|
basic = true,
|
||||||
|
option_toggle_prefix = [[<leader>tm]],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- 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'
|
||||||
miniclue.setup {
|
miniclue.setup {
|
||||||
|
window = {
|
||||||
|
config = {
|
||||||
|
width = 'auto',
|
||||||
|
},
|
||||||
|
},
|
||||||
triggers = {
|
triggers = {
|
||||||
-- Leader triggers
|
-- Leader triggers
|
||||||
{ mode = 'n', keys = '<Leader>' },
|
{ mode = 'n', keys = '<Leader>' },
|
||||||
@@ -53,171 +70,181 @@ return {
|
|||||||
{ mode = 'x', keys = 'z' },
|
{ mode = 'x', keys = 'z' },
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- These mark the sections in the popup
|
||||||
clues = {
|
clues = {
|
||||||
-- Enhance this by adding descriptions for <Leader> mapping groups
|
|
||||||
miniclue.gen_clues.builtin_completion(),
|
miniclue.gen_clues.builtin_completion(),
|
||||||
miniclue.gen_clues.g(),
|
miniclue.gen_clues.g(),
|
||||||
miniclue.gen_clues.marks(),
|
miniclue.gen_clues.marks(),
|
||||||
miniclue.gen_clues.registers(),
|
miniclue.gen_clues.registers(),
|
||||||
miniclue.gen_clues.windows(),
|
miniclue.gen_clues.windows(),
|
||||||
miniclue.gen_clues.z(),
|
miniclue.gen_clues.z(),
|
||||||
{ mode = 'n', keys = '<Leader>b', desc = '+Buffers' },
|
{ mode = 'n', keys = '<Leader>b', desc = '+Buffers' },
|
||||||
{ mode = 'n', keys = '<Leader>c', desc = '+Code' },
|
{ mode = 'n', keys = '<Leader>c', desc = '+Code' },
|
||||||
{ mode = 'n', keys = '<Leader>cb', desc = '+CommentBox' },
|
{ mode = 'n', keys = '<Leader>cb', desc = '+CommentBox' },
|
||||||
{ mode = 'n', keys = '<Leader>q', desc = '+Quit' },
|
{ mode = 'n', keys = '<Leader>cc', desc = '+Calls' },
|
||||||
{ mode = 'n', keys = '<Leader>s', desc = '+Telescope' },
|
{ mode = 'n', keys = '<Leader>q', desc = '+Quit' },
|
||||||
{ mode = 'n', keys = '<Leader>t', desc = '+Toggle' },
|
{ mode = 'n', keys = '<Leader>s', desc = '+Telescope' },
|
||||||
{ mode = 'n', keys = '<Leader>x', desc = '+Trouble' },
|
{ mode = 'n', keys = '<Leader>t', desc = '+Toggle' },
|
||||||
{ mode = 'n', keys = '<leader>z', desc = '+TreeSitter' },
|
{ mode = 'n', keys = '<Leader>tm', desc = '+Mini' },
|
||||||
|
{ mode = 'n', keys = '<Leader>x', desc = '+Trouble' },
|
||||||
|
{ mode = 'n', keys = '<leader>z', desc = '+TreeSitter' },
|
||||||
{ mode = 'n', keys = '<leader>zg', desc = '+Goto' },
|
{ mode = 'n', keys = '<leader>zg', desc = '+Goto' },
|
||||||
{ mode = 'n', keys = '<Leader>?', desc = '+Help' },
|
{ mode = 'n', keys = '<Leader>?', desc = '+Help' },
|
||||||
{ mode = 'n', keys = 'd', desc = '+Diagnostics' },
|
{ mode = 'n', keys = 'd', desc = '+Diagnostics' },
|
||||||
{ mode = 'n', keys = 'y', desc = '+Yank' },
|
{ mode = 'n', keys = 'y', desc = '+Yank' },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Comment lines
|
-- Comment lines
|
||||||
-- Replaced numToStr/Comment.nvim
|
-- Replaced numToStr/Comment.nvim
|
||||||
{ 'echasnovski/mini.comment', version = '*', opts = {} },
|
require('mini.comment').setup()
|
||||||
|
|
||||||
-- Highlight cursor word and its matches
|
-- Highlight cursor word and its matches
|
||||||
{ 'echasnovski/mini.cursorword', version = '*' },
|
require('mini.cursorword').setup()
|
||||||
|
|
||||||
-- Work with diff hunks
|
-- Work with diff hunks
|
||||||
-- Replaced lewis6991/gitsigns.nvim
|
-- Replaced lewis6991/gitsigns.nvim
|
||||||
{ 'echasnovski/mini.diff', version = '*', opts = {} },
|
require('mini.diff').setup()
|
||||||
|
|
||||||
-- Git integration
|
-- Git integration
|
||||||
{ 'echasnovski/mini-git', version = '*', opts = {}, main = 'mini.git' },
|
require('mini.git').setup()
|
||||||
|
|
||||||
-- Highlight patterns in text
|
-- Highlight patterns in text
|
||||||
-- Replaced folke/todo-comments.nvim
|
-- Replaced folke/todo-comments.nvim
|
||||||
{
|
|
||||||
'echasnovski/mini.hipatterns',
|
|
||||||
version = '*',
|
|
||||||
opts = {
|
|
||||||
highlighters = {
|
|
||||||
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
|
|
||||||
fixme = {
|
|
||||||
pattern = '%f[%w]()FIXME:?%s*()%f[%W]',
|
|
||||||
group = 'MiniHipatternsFixme',
|
|
||||||
},
|
|
||||||
hack = {
|
|
||||||
pattern = '%f[%w]()HACK:?%s*()%f[%W]',
|
|
||||||
group = 'MiniHipatternsHack',
|
|
||||||
},
|
|
||||||
todo = {
|
|
||||||
pattern = '%f[%w]()NOTE:?%s*()%f[%W]',
|
|
||||||
group = 'MiniHipatternsTodo',
|
|
||||||
},
|
|
||||||
note = {
|
|
||||||
pattern = '%f[%w]()NOTE()%f[%W]',
|
|
||||||
group = 'MiniHipatternsNote',
|
|
||||||
},
|
|
||||||
bug = {
|
|
||||||
pattern = '%f[%w]()BUG:?%s*()%f[%W]',
|
|
||||||
group = 'MiniHipatternsBug',
|
|
||||||
},
|
|
||||||
perf = {
|
|
||||||
pattern = '%f[%w]()PERF:?%s*()%f[%W]',
|
|
||||||
group = 'MiniHipatternsPerf',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
config = function(opts)
|
|
||||||
local hp = require 'mini.hipatterns'
|
local hp = require 'mini.hipatterns'
|
||||||
hp.setup {
|
hp.setup {
|
||||||
highlighters = opts.highlighters,
|
highlighters = {
|
||||||
|
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE', 'BUG', 'PERF' words
|
||||||
|
fixme = {
|
||||||
|
pattern = '%f[%w]()FIXME:?%s*()%f[%W]',
|
||||||
|
group = 'MiniHipatternsFixme',
|
||||||
|
},
|
||||||
|
hack = {
|
||||||
|
pattern = '%f[%w]()HACK:?%s*()%f[%W]',
|
||||||
|
group = 'MiniHipatternsHack',
|
||||||
|
},
|
||||||
|
todo = {
|
||||||
|
pattern = '%f[%w]()TODO:?%s*()%f[%W]',
|
||||||
|
group = 'MiniHipatternsNote',
|
||||||
|
},
|
||||||
|
note = {
|
||||||
|
pattern = '%f[%w]()NOTE()%f[%W]',
|
||||||
|
group = 'MiniHipatternsNote',
|
||||||
|
},
|
||||||
|
bug = {
|
||||||
|
pattern = '%f[%w]()BUG:?%s*()%f[%W]',
|
||||||
|
group = 'MiniHipatternsHack',
|
||||||
|
},
|
||||||
|
perf = {
|
||||||
|
pattern = '%f[%w]()PERF:?%s*()%f[%W]',
|
||||||
|
group = 'MiniHipatternsNote',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- Highlight hex color strings (`#rrggbb`) using that color
|
-- Highlight hex color strings (`#rrggbb`) using that color
|
||||||
hex_color = hp.gen_highlighter.hex_color(),
|
hex_color = hp.gen_highlighter.hex_color(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Icons
|
||||||
|
require('mini.icons').setup {
|
||||||
|
file = {
|
||||||
|
['.keep'] = { glyph = '', hl = 'MiniIconsGrey' },
|
||||||
|
['devcontainer.json'] = { glyph = '', hl = 'MiniIconsAzure' },
|
||||||
|
},
|
||||||
|
filetype = {
|
||||||
|
dotenv = { glyph = '', hl = 'MiniIconsYellow' },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Visualize and work with indent scope
|
||||||
|
-- Replaced lukas-reineke/indent-blankline.nvim
|
||||||
|
require('mini.indentscope').setup()
|
||||||
|
|
||||||
|
-- Jump to next/previous single character
|
||||||
|
require('mini.jump').setup {
|
||||||
|
mappings = {
|
||||||
|
forward = 'f',
|
||||||
|
backward = 'F',
|
||||||
|
forward_till = 't',
|
||||||
|
backward_till = 'T',
|
||||||
|
repeat_jump = ';',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Move lines and blocks of text
|
||||||
|
require('mini.move').setup()
|
||||||
|
|
||||||
|
-- Text edit operators
|
||||||
|
-- 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'
|
||||||
|
starter.setup {
|
||||||
|
items = {
|
||||||
|
starter.sections.telescope(),
|
||||||
|
starter.sections.builtin_actions(),
|
||||||
|
starter.sections.sessions(5, true),
|
||||||
|
},
|
||||||
|
content_hooks = {
|
||||||
|
starter.gen_hook.adding_bullet(),
|
||||||
|
starter.gen_hook.indexing('all', { 'Builtin actions' }),
|
||||||
|
starter.gen_hook.aligning('center', 'center'),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Minimal and fast statusline module with opinionated default look
|
||||||
|
-- Replaced nvim-lualine/lualine.nvim
|
||||||
|
local sl = require '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 = 75 }
|
||||||
|
local diagnostics = sl.section_diagnostics { trunc_width = 75 }
|
||||||
|
local filename = sl.section_filename { trunc_width = 999 }
|
||||||
|
-- local fileinfo = statusline.section_fileinfo({ trunc_width = 120 })
|
||||||
|
local location = sl.section_location { trunc_width = 75 }
|
||||||
|
return sl.combine_groups {
|
||||||
|
{ hl = mode_hl, strings = { mode } },
|
||||||
|
{ hl = 'statuslineDevinfo', strings = { git, diagnostics } },
|
||||||
|
'%<', -- Mark general truncate point
|
||||||
|
{ hl = 'statuslineFilename', strings = { filename } },
|
||||||
|
'%=', -- End left alignment
|
||||||
|
-- { hl = 'statuslineFileinfo', strings = { fileinfo } },
|
||||||
|
{ hl = mode_hl, strings = { location } },
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- 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,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Icons
|
|
||||||
{
|
|
||||||
'echasnovski/mini.icons',
|
|
||||||
opts = {
|
|
||||||
file = {
|
|
||||||
['.keep'] = { glyph = '', hl = 'MiniIconsGrey' },
|
|
||||||
['devcontainer.json'] = { glyph = '', hl = 'MiniIconsAzure' },
|
|
||||||
},
|
|
||||||
filetype = {
|
|
||||||
dotenv = { glyph = '', hl = 'MiniIconsYellow' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Visualize and work with indent scope
|
|
||||||
-- Replaced lukas-reineke/indent-blankline.nvim
|
|
||||||
{ 'echasnovski/mini.indentscope', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Jump to next/previous single character
|
|
||||||
{
|
|
||||||
'echasnovski/mini.jump',
|
|
||||||
version = '*',
|
|
||||||
opts = {
|
|
||||||
mappings = {
|
|
||||||
forward = 'f',
|
|
||||||
backward = 'F',
|
|
||||||
forward_till = 't',
|
|
||||||
backward_till = 'T',
|
|
||||||
repeat_jump = ';',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Move lines and blocks of text
|
|
||||||
{ 'echasnovski/mini.move', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Text edit operators
|
|
||||||
{ 'echasnovski/mini.operators', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Split and join arguments, lists, and other sequences
|
|
||||||
-- Replaced Wansmer/treesj
|
|
||||||
{ 'echasnovski/mini.splitjoin', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Fast and flexible start screen
|
|
||||||
-- Replaced glepnir/dashboard-nvim
|
|
||||||
{ 'echasnovski/mini.starter', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Minimal and fast statusline module with opinionated default look
|
|
||||||
-- Replaced nvim-lualine/lualine.nvim
|
|
||||||
{
|
|
||||||
'echasnovski/mini.statusline',
|
|
||||||
version = '*',
|
|
||||||
opts = {
|
|
||||||
use_icons = true,
|
|
||||||
set_vim_settings = true,
|
|
||||||
content = {
|
|
||||||
active = function()
|
|
||||||
local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 })
|
|
||||||
local git = MiniStatusline.section_git({ trunc_width = 75 })
|
|
||||||
local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 })
|
|
||||||
local filename = MiniStatusline.section_filename({ trunc_width = 140 })
|
|
||||||
local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 })
|
|
||||||
local location = MiniStatusline.section_location({ trunc_width = 75 })
|
|
||||||
return MiniStatusline.combine_groups({
|
|
||||||
{ hl = mode_hl, strings = { mode } },
|
|
||||||
{ hl = 'MiniStatuslineDevinfo', strings = { git, diagnostics } },
|
|
||||||
'%<', -- Mark general truncate point
|
|
||||||
{ hl = 'MiniStatuslineFilename', strings = { filename } },
|
|
||||||
'%=', -- End left alignment
|
|
||||||
{ hl = 'MiniStatuslineFileinfo', strings = { fileinfo } },
|
|
||||||
{ hl = mode_hl, strings = { location } },
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Fast and feature-rich surround actions
|
|
||||||
-- Replaced kylechui/nvim-surround
|
|
||||||
{ 'echasnovski/mini.surround', version = '*', opts = {} },
|
|
||||||
|
|
||||||
-- Work with trailing whitespace
|
|
||||||
{ 'echasnovski/mini.trailspace', version = '*', opts = {} },
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
-- A better annotation generator.
|
|
||||||
-- Supports multiple languages and annotation conventions.
|
|
||||||
-- https://github.com/danymat/neogen
|
|
||||||
return {
|
|
||||||
'danymat/neogen',
|
|
||||||
version = '*',
|
|
||||||
opts = { enabled = true, snippet_engine = 'luasnip' },
|
|
||||||
}
|
|
||||||
@@ -31,6 +31,24 @@ return {
|
|||||||
cmd = 'Neotree',
|
cmd = 'Neotree',
|
||||||
opts = {
|
opts = {
|
||||||
close_if_last_window = true,
|
close_if_last_window = true,
|
||||||
|
popup_border_style = 'rounded',
|
||||||
|
enable_git_status = true,
|
||||||
|
enable_diagnostics = true,
|
||||||
|
git_status = {
|
||||||
|
symbols = {
|
||||||
|
-- Change type
|
||||||
|
added = '',
|
||||||
|
modified = '',
|
||||||
|
deleted = '✖',
|
||||||
|
renamed = '',
|
||||||
|
-- Status type
|
||||||
|
untracked = '',
|
||||||
|
ignored = '',
|
||||||
|
unstaged = '',
|
||||||
|
staged = '',
|
||||||
|
conflict = '',
|
||||||
|
},
|
||||||
|
},
|
||||||
filesystem = {
|
filesystem = {
|
||||||
window = {
|
window = {
|
||||||
mappings = {
|
mappings = {
|
||||||
@@ -42,8 +60,10 @@ return {
|
|||||||
hide_dotfiles = true,
|
hide_dotfiles = true,
|
||||||
hide_gitignored = true,
|
hide_gitignored = true,
|
||||||
hide_hidden = true, -- only works on Windows for hidden files/directories
|
hide_hidden = true, -- only works on Windows for hidden files/directories
|
||||||
hide_by_name = {
|
never_show = {
|
||||||
'.DS_Store',
|
'.DS_Store',
|
||||||
|
},
|
||||||
|
hide_by_name = {
|
||||||
'node_modules',
|
'node_modules',
|
||||||
},
|
},
|
||||||
always_show = {
|
always_show = {
|
||||||
@@ -85,6 +105,7 @@ return {
|
|||||||
'.*rc.*',
|
'.*rc.*',
|
||||||
'.env*',
|
'.env*',
|
||||||
'.prettierrc*',
|
'.prettierrc*',
|
||||||
|
'.markdownlint*',
|
||||||
'.stylua.*',
|
'.stylua.*',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
24
config/nvim/lua/plugins/other.lua
Normal file
24
config/nvim/lua/plugins/other.lua
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'rmagatti/auto-session',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
---@module "auto-session"
|
||||||
|
---@type AutoSession.Config
|
||||||
|
opts = {
|
||||||
|
suppressed_dirs = {
|
||||||
|
'/',
|
||||||
|
'~/',
|
||||||
|
'~/Downloads',
|
||||||
|
'~/Library',
|
||||||
|
},
|
||||||
|
-- log_level = 'debug',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
version = '*',
|
||||||
|
lazy = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -8,6 +8,9 @@ return {
|
|||||||
{ 'nvim-lua/plenary.nvim' },
|
{ 'nvim-lua/plenary.nvim' },
|
||||||
{ 'nvim-telescope/telescope-symbols.nvim' },
|
{ 'nvim-telescope/telescope-symbols.nvim' },
|
||||||
|
|
||||||
|
-- Telescope plugin for file browsing
|
||||||
|
{ 'nvim-telescope/telescope-file-browser.nvim' },
|
||||||
|
|
||||||
-- A Telescope picker to quickly access configurations
|
-- A Telescope picker to quickly access configurations
|
||||||
-- of plugins managed by lazy.nvim.
|
-- of plugins managed by lazy.nvim.
|
||||||
-- https://github.com/polirritmico/telescope-lazy-plugins.nvim
|
-- https://github.com/polirritmico/telescope-lazy-plugins.nvim
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ return {
|
|||||||
},
|
},
|
||||||
---@type TSConfig
|
---@type TSConfig
|
||||||
opts = {
|
opts = {
|
||||||
auto_install = true, -- Auto install the parser generators
|
auto_install = true, -- Auto install the parser generators
|
||||||
sync_install = false, -- Sync install the parser generators, install async
|
sync_install = false, -- Sync install the parser generators, install async
|
||||||
|
|
||||||
-- Add languages to be installed here that you want installed for treesitter
|
-- Add languages to be installed here that you want installed for treesitter
|
||||||
@@ -49,18 +49,18 @@ return {
|
|||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
require('nvim-treesitter.configs').setup(opts)
|
require('nvim-treesitter.configs').setup(opts)
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "FileType" }, {
|
vim.api.nvim_create_autocmd({ 'FileType' }, {
|
||||||
callback = function()
|
callback = function()
|
||||||
-- Set foldmethod to treesitter if available
|
-- Set foldmethod to treesitter if available
|
||||||
if require("nvim-treesitter.parsers").has_parser() then
|
if require('nvim-treesitter.parsers').has_parser() then
|
||||||
vim.opt.foldmethod = "expr"
|
vim.opt.foldmethod = 'expr'
|
||||||
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
|
vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||||
else
|
else
|
||||||
-- Otherwise, set foldmethod to syntax
|
-- Otherwise, set foldmethod to syntax
|
||||||
vim.opt.foldmethod = "syntax"
|
vim.opt.foldmethod = 'syntax'
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.opt.foldlevel = 9 -- Open all folds by default
|
vim.opt.foldlevel = 9 -- Open all folds by default
|
||||||
vim.opt.foldnestmax = 99 -- Maximum fold nesting
|
vim.opt.foldnestmax = 99 -- Maximum fold nesting
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -33,77 +33,13 @@ return {
|
|||||||
|
|
||||||
-- Remove all background colors to make nvim transparent
|
-- Remove all background colors to make nvim transparent
|
||||||
-- https://github.com/xiyaowong/nvim-transparent
|
-- https://github.com/xiyaowong/nvim-transparent
|
||||||
{ 'xiyaowong/nvim-transparent', opts = {} },
|
{ 'xiyaowong/nvim-transparent', opts = {} },
|
||||||
|
|
||||||
-- Display a character as the colorcolumn
|
-- Display a character as the colorcolumn
|
||||||
-- https://github.com/lukas-reineke/virt-column.nvim
|
-- https://github.com/lukas-reineke/virt-column.nvim
|
||||||
{ 'lukas-reineke/virt-column.nvim', opts = {} },
|
{ 'lukas-reineke/virt-column.nvim', opts = {} },
|
||||||
|
|
||||||
-- 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 = '=.+',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Neovim plugin for locking a buffer to a window
|
-- Neovim plugin for locking a buffer to a window
|
||||||
-- https://github.com/stevearc/stickybuf.nvim
|
-- https://github.com/stevearc/stickybuf.nvim
|
||||||
{ 'stevearc/stickybuf.nvim', opts = {} },
|
{ 'stevearc/stickybuf.nvim', opts = {} },
|
||||||
|
|
||||||
-- Describe the regexp under the cursor
|
|
||||||
-- https://github.com/bennypowers/nvim-regexplainer
|
|
||||||
{
|
|
||||||
'bennypowers/nvim-regexplainer',
|
|
||||||
event = 'BufEnter',
|
|
||||||
dependencies = {
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
'MunifTanjim/nui.nvim',
|
|
||||||
},
|
|
||||||
opts = {
|
|
||||||
-- automatically show the explainer when the cursor enters a regexp
|
|
||||||
auto = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Clarify and beautify your comments using boxes and lines.
|
|
||||||
-- https://github.com/LudoPinelli/comment-box.nvim
|
|
||||||
{
|
|
||||||
'LudoPinelli/comment-box.nvim',
|
|
||||||
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 = {},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
82
config/nvim/lua/utils.lua
Normal file
82
config/nvim/lua/utils.lua
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
-- These are my utility functions
|
||||||
|
-- I use to make my life bit easier
|
||||||
|
|
||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ Function shortcuts for keymap set │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- Keymap set shortcut
|
||||||
|
--@type vim.keymap.set
|
||||||
|
local s = vim.keymap.set
|
||||||
|
|
||||||
|
-- Keymap shortcut functions
|
||||||
|
K = {}
|
||||||
|
|
||||||
|
-- Handle description
|
||||||
|
---@param desc string|table? Optional description. Can be a string or a table.
|
||||||
|
---@return table -- The description as a table.
|
||||||
|
local function handleDesc(desc)
|
||||||
|
if type(desc) == 'string' then
|
||||||
|
-- Convert string to table with `desc` as a key
|
||||||
|
-- If the string is empty, just return as an empty description
|
||||||
|
return { desc = desc }
|
||||||
|
elseif type(desc) == 'table' then
|
||||||
|
-- If desc doesn't have 'desc' key, combine it with
|
||||||
|
-- others with empty description
|
||||||
|
if not desc.desc then
|
||||||
|
desc.desc = '?'
|
||||||
|
return desc
|
||||||
|
end
|
||||||
|
-- Use the table as is
|
||||||
|
return desc
|
||||||
|
else
|
||||||
|
-- Default to an empty table if `desc` is nil or an unsupported type
|
||||||
|
return { desc = '?' }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Normal mode keymaps
|
||||||
|
---@param key string rhs, required
|
||||||
|
---@param cmd string|function lhs, required
|
||||||
|
---@param opts table? Options, optional
|
||||||
|
K.n = function(key, cmd, opts)
|
||||||
|
opts = handleDesc(opts or {})
|
||||||
|
s('n', key, cmd, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Leader keymap shortcut function
|
||||||
|
-- It prepends '<leader>' to the key
|
||||||
|
---@param key string rhs, required, but will be prepended with '<leader>'
|
||||||
|
---@param cmd string|function lhs, required
|
||||||
|
---@param opts table|string? Options (or just description), optional
|
||||||
|
K.nl = function(key, cmd, opts)
|
||||||
|
opts = handleDesc(opts)
|
||||||
|
K.n('<leader>' .. key, cmd, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Keymap shortcut function with mode defined, good for sorting by rhs
|
||||||
|
---@param key string rhs, required
|
||||||
|
---@param mode string|string[] one of n, v, x, or table of modes { 'n', 'v' }
|
||||||
|
---@param cmd string|function lhs, required
|
||||||
|
---@param opts string|table description, required
|
||||||
|
K.d = function(key, mode, cmd, opts)
|
||||||
|
opts = handleDesc(opts or {})
|
||||||
|
s(mode, key, cmd, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Leader based keymap shortcut function with mode defined
|
||||||
|
---@param key string rhs, required, but will be prepended with '<leader>'
|
||||||
|
---@param mode string|string[] one of n, v, x, or table of modes { 'n', 'v' }
|
||||||
|
---@param cmd string|function lhs, required
|
||||||
|
---@param opts string|table description (or opts), required
|
||||||
|
K.ld = function(key, mode, cmd, opts)
|
||||||
|
opts = handleDesc(opts or {})
|
||||||
|
s(mode, '<leader>' .. key, cmd, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ Options related helper functions │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- Toggle background between light and dark
|
||||||
|
function ToggleBackground() vim.o.bg = vim.o.bg == 'light' and 'dark' or 'light' end
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
{
|
{
|
||||||
"type": "session",
|
"type": "session",
|
||||||
"style": "plain",
|
"style": "plain",
|
||||||
"template": " {{ if .SSHSession }} {{ .UserName }}@{{ end }}{{ .HostName }}"
|
"template": " {{ if .SSHSession }}\ueba9 {{ .UserName }}@{{ end }}{{ .HostName }}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"foreground": "cyan",
|
"foreground": "cyan",
|
||||||
@@ -27,14 +27,14 @@
|
|||||||
"template": " {{ .Path }} ",
|
"template": " {{ .Path }} ",
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"mapped_locations": {
|
"mapped_locations": {
|
||||||
"~/Code/*": "\uF09B"
|
"~/Code/*": "\uf09b"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"style": "plain",
|
"style": "plain",
|
||||||
"foreground": "lightGreen",
|
"foreground": "lightGreen",
|
||||||
"template": "{{ .UpstreamIcon }}{{ if or (.Staging.Changed) (.Working.Changed) }}({{if .Behind }}\u2193 {{ .Behind }} {{ end }}{{if .Staging.Changed }}\uF046 {{ .Staging.String }} {{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }}| {{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}){{ end }}",
|
"template": "{{ .UpstreamIcon }}{{ if or (.Staging.Changed) (.Working.Changed) }}({{if .Behind }}\u2193 {{ .Behind }} {{ end }}{{if .Staging.Changed }}\uf046 {{ .Staging.String }} {{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }}| {{ end }}{{ if .Working.Changed }}\uf044 {{ .Working.String }}{{ end }}){{ end }}",
|
||||||
"properties": {
|
"properties": {
|
||||||
"fetch_status": true,
|
"fetch_status": true,
|
||||||
"fetch_upstream_icon": true,
|
"fetch_upstream_icon": true,
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
{
|
{
|
||||||
"type": "php",
|
"type": "php",
|
||||||
"style": "plain",
|
"style": "plain",
|
||||||
"template": " {{ .Full }} "
|
"template": " \ue73d {{ .Full }} "
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"type": "prompt"
|
"type": "prompt"
|
||||||
|
|||||||
@@ -10,9 +10,11 @@ zsh-users/zsh-completions kind:fpath path:src
|
|||||||
getantidote/use-omz # handle OMZ dependencies
|
getantidote/use-omz # handle OMZ dependencies
|
||||||
ohmyzsh/ohmyzsh path:lib # load OMZ's library
|
ohmyzsh/ohmyzsh path:lib # load OMZ's library
|
||||||
|
|
||||||
# Use pure prompt
|
# Theme
|
||||||
mafredri/zsh-async
|
# mafredri/zsh-async # for pure
|
||||||
sindresorhus/pure
|
# sindresorhus/pure # pure itself
|
||||||
|
|
||||||
|
romkatv/powerlevel10k
|
||||||
|
|
||||||
ohmyzsh/ohmyzsh path:plugins/colored-man-pages
|
ohmyzsh/ohmyzsh path:plugins/colored-man-pages
|
||||||
ohmyzsh/ohmyzsh path:plugins/brew
|
ohmyzsh/ohmyzsh path:plugins/brew
|
||||||
|
|||||||
205
config/zsh/p10k.zsh
Normal file
205
config/zsh/p10k.zsh
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
# shellcheck disable=SC1073,SC1072
|
||||||
|
#
|
||||||
|
# Generated by Powerlevel10k configuration wizard on 2024-12-10 at 10:05 EET.
|
||||||
|
# Based on romkatv/powerlevel10k/config/p10k-pure.zsh, checksum 7533.
|
||||||
|
# Wizard options: nerdfont-v3 + powerline, small icons, pure, original, 2 lines, sparse,
|
||||||
|
# transient_prompt, instant_prompt=verbose.
|
||||||
|
# Type `p10k configure` to generate another config.
|
||||||
|
#
|
||||||
|
# Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure).
|
||||||
|
#
|
||||||
|
# Differences from Pure:
|
||||||
|
#
|
||||||
|
# - Git:
|
||||||
|
# - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state.
|
||||||
|
# - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`).
|
||||||
|
#
|
||||||
|
# Apart from the differences listed above, the replication of Pure prompt is exact. This includes
|
||||||
|
# even the questionable parts. For example, just like in Pure, there is no indication of Git status
|
||||||
|
# being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt
|
||||||
|
# doesn't fit on one line, it wraps around with no attempt to shorten it.
|
||||||
|
#
|
||||||
|
# If you like the general style of Pure but not particularly attached to all its quirks, type
|
||||||
|
# `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking
|
||||||
|
# advantage of Powerlevel10k features that aren't present in Pure.
|
||||||
|
|
||||||
|
# Temporarily change options.
|
||||||
|
'builtin' 'local' '-a' 'p10k_config_opts'
|
||||||
|
[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
|
||||||
|
[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
|
||||||
|
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
|
||||||
|
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
|
||||||
|
|
||||||
|
() {
|
||||||
|
emulate -L zsh -o extended_glob
|
||||||
|
|
||||||
|
# Unset all configuration options.
|
||||||
|
unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
|
||||||
|
|
||||||
|
# Zsh >= 5.1 is required.
|
||||||
|
[[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
|
||||||
|
|
||||||
|
# Prompt colors.
|
||||||
|
local grey='242'
|
||||||
|
local red='1'
|
||||||
|
local yellow='3'
|
||||||
|
local blue='33'
|
||||||
|
local magenta='5'
|
||||||
|
local cyan='6'
|
||||||
|
local white='7'
|
||||||
|
local green='2'
|
||||||
|
|
||||||
|
# Left prompt segments.
|
||||||
|
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
|
||||||
|
# =========================[ Line #1 ]=========================
|
||||||
|
context # user@host
|
||||||
|
dir # current directory
|
||||||
|
vcs # git status
|
||||||
|
# command_execution_time # previous command duration
|
||||||
|
go
|
||||||
|
nvm
|
||||||
|
aws
|
||||||
|
# =========================[ Line #2 ]=========================
|
||||||
|
newline # \n
|
||||||
|
virtualenv # python virtual environment
|
||||||
|
prompt_char # prompt symbol
|
||||||
|
)
|
||||||
|
|
||||||
|
# Right prompt segments.
|
||||||
|
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
|
||||||
|
# =========================[ Line #1 ]=========================
|
||||||
|
# command_execution_time # previous command duration
|
||||||
|
# virtualenv # python virtual environment
|
||||||
|
# context # user@host
|
||||||
|
# time # current time
|
||||||
|
# =========================[ Line #2 ]=========================
|
||||||
|
newline # \n
|
||||||
|
)
|
||||||
|
|
||||||
|
# Basic style options that define the overall prompt look.
|
||||||
|
typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
|
||||||
|
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
|
||||||
|
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
|
||||||
|
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
|
||||||
|
typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons
|
||||||
|
|
||||||
|
# Add an empty line before each prompt except the first. This doesn't emulate the bug
|
||||||
|
# in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
|
||||||
|
|
||||||
|
# Magenta prompt symbol if the last command succeeded.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=$green
|
||||||
|
# Red prompt symbol if the last command failed.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=$red
|
||||||
|
# Default prompt symbol.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='➜'
|
||||||
|
# Prompt symbol in command vi mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='←'
|
||||||
|
# Prompt symbol in visual vi mode is the same as in command mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='←'
|
||||||
|
# Prompt symbol in overwrite vi mode is the same as in command mode.
|
||||||
|
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false
|
||||||
|
|
||||||
|
# Grey Python Virtual Environment.
|
||||||
|
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=$grey
|
||||||
|
# Don't show Python version.
|
||||||
|
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
|
||||||
|
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
|
||||||
|
|
||||||
|
# Blue current directory.
|
||||||
|
typeset -g POWERLEVEL9K_DIR_FOREGROUND=$blue
|
||||||
|
|
||||||
|
# Context format when root: user@host. The first part red, the rest green.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{$red}%n%f%F{$green}@%m%f"
|
||||||
|
# Context format when not root: host. The host is green.
|
||||||
|
typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{$green}%m%f"
|
||||||
|
# Don't show context unless root or in SSH.
|
||||||
|
# typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
|
||||||
|
|
||||||
|
# Show previous command duration only if it's >= 86400s = 24h.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=86400
|
||||||
|
# Don't show fractional seconds. Thus, 7s rather than 7.3s.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
|
||||||
|
# Duration format: 1d 2h 3m 4s.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
|
||||||
|
# Yellow previous command duration.
|
||||||
|
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow
|
||||||
|
|
||||||
|
# Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey
|
||||||
|
|
||||||
|
# Disable async loading indicator to make directories that aren't Git repositories
|
||||||
|
# indistinguishable from large Git repositories without known state.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=
|
||||||
|
|
||||||
|
# Don't wait for Git status even for a millisecond, so that prompt always updates
|
||||||
|
# asynchronously when Git state changes.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
|
||||||
|
|
||||||
|
# Cyan ahead/behind arrows.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=$cyan
|
||||||
|
# Don't show remote branch, current tag or stashes.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind)
|
||||||
|
# Don't show the branch icon.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
|
||||||
|
# When in detached HEAD state, show @commit where branch normally goes.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@'
|
||||||
|
# Don't show staged, unstaged, untracked indicators.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON=
|
||||||
|
# Show '*' when there are staged, unstaged or untracked files.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_DIRTY_ICON=':'
|
||||||
|
# Show '⇣' if local branch is behind remote.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣'
|
||||||
|
# Show '⇡' if local branch is ahead of remote.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡'
|
||||||
|
# Don't show the number of commits next to the ahead/behind arrows.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1
|
||||||
|
# Remove space between '⇣' and '⇡' and all trailing spaces.
|
||||||
|
typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }'
|
||||||
|
|
||||||
|
# Grey current time.
|
||||||
|
typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey
|
||||||
|
# Format for the current time: 09:51:02. See `man 3 strftime`.
|
||||||
|
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
|
||||||
|
# If set to true, time will update when you hit enter. This way prompts for the past
|
||||||
|
# commands will contain the start times of their commands rather than the end times of
|
||||||
|
# their preceding commands.
|
||||||
|
typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
|
||||||
|
|
||||||
|
# Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
|
||||||
|
# when accepting a command line. Supported values:
|
||||||
|
#
|
||||||
|
# - off: Don't change prompt when accepting a command line.
|
||||||
|
# - always: Trim down prompt when accepting a command line.
|
||||||
|
# - same-dir: Trim down prompt when accepting a command line unless this is the first command
|
||||||
|
# typed after changing current working directory.
|
||||||
|
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
|
||||||
|
|
||||||
|
# Instant prompt mode.
|
||||||
|
#
|
||||||
|
# - off: Disable instant prompt. Choose this if you've tried instant prompt and found
|
||||||
|
# it incompatible with your zsh configuration files.
|
||||||
|
# - quiet: Enable instant prompt and don't print warnings when detecting console output
|
||||||
|
# during zsh initialization. Choose this if you've read and understood
|
||||||
|
# https://github.com/romkatv/powerlevel10k#instant-prompt.
|
||||||
|
# - verbose: Enable instant prompt and print a warning when detecting console output during
|
||||||
|
# zsh initialization. Choose this if you've never tried instant prompt, haven't
|
||||||
|
# seen the warning, or if you are unsure what this all means.
|
||||||
|
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
|
||||||
|
|
||||||
|
# Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
|
||||||
|
# For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
|
||||||
|
# can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
|
||||||
|
# really need it.
|
||||||
|
typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
|
||||||
|
|
||||||
|
# If p10k is already loaded, reload configuration.
|
||||||
|
# This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
|
||||||
|
(( ! $+functions[p10k] )) || p10k reload
|
||||||
|
}
|
||||||
|
|
||||||
|
# Tell `p10k configure` which file it should overwrite.
|
||||||
|
typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
|
||||||
|
|
||||||
|
(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
|
||||||
|
'builtin' 'unset' 'p10k_config_opts'
|
||||||
@@ -27,13 +27,13 @@ servers = (
|
|||||||
family = "inet";
|
family = "inet";
|
||||||
},
|
},
|
||||||
{ address = "irc.efnet.net"; chatnet = "EFNet"; port = "6667"; },
|
{ address = "irc.efnet.net"; chatnet = "EFNet"; port = "6667"; },
|
||||||
{
|
{
|
||||||
address = "irc.undernet.org";
|
address = "irc.undernet.org";
|
||||||
chatnet = "Undernet";
|
chatnet = "Undernet";
|
||||||
port = "6667";
|
port = "6667";
|
||||||
},
|
},
|
||||||
{ address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; },
|
{ address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; },
|
||||||
{
|
{
|
||||||
address = "irc.quakenet.org";
|
address = "irc.quakenet.org";
|
||||||
chatnet = "QuakeNet";
|
chatnet = "QuakeNet";
|
||||||
port = "6667";
|
port = "6667";
|
||||||
@@ -50,7 +50,7 @@ chatnets = {
|
|||||||
max_whois = "4";
|
max_whois = "4";
|
||||||
max_query_chans = "5";
|
max_query_chans = "5";
|
||||||
};
|
};
|
||||||
EFNet = {
|
EFNet = {
|
||||||
type = "IRC";
|
type = "IRC";
|
||||||
max_kicks = "4";
|
max_kicks = "4";
|
||||||
max_msgs = "3";
|
max_msgs = "3";
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
# vim: ft=gitconfig sw=2 ts=2 et
|
||||||
[include]
|
[include]
|
||||||
path = ~/.dotfiles/config/git/shared
|
path = ~/.dotfiles/config/git/shared
|
||||||
|
|
||||||
@@ -7,19 +8,19 @@
|
|||||||
[user]
|
[user]
|
||||||
name = Ismo Vuorinen
|
name = Ismo Vuorinen
|
||||||
email = ismo.vuorinen@vincit.fi
|
email = ismo.vuorinen@vincit.fi
|
||||||
signingkey = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLyOvkr1nRqMVv3UAizmk6C+q40H4khvw7qIXXXyOyFmzjwYx/Cuxoi4uZVjX+q4qFYJ+c312uu6YXiEtfyoCao3wub8r1cLBQ3eIvuyWp2K8Ixcd9JmFmLmoeiENpJxqyr0WPZLDkrCWUZCsQQh8zzGFnfciUdUdTiZ7s21AEhhmFRSdFlVfQSlGMFxU321psg1YilcP80bDwFd1FsL4TssSkwlbgP/twqnpZ4436TTo7kp0UnH/RZkfRdDWScKHaWgncBG0CZeQxGWnRp8fvZn/7gDnthcZhvnDALVBE7QFuZ90GxqVw3IGpHryV0mFO6EGQ9Ke9YX7pKVZPUXZjeCN4SVKsqFdVJ6AjaSJ9K7nL98rYK7qNzndT3cKqPNgPteyXWRulH68A51ecQqHrjTttZcdN9hKt9uBHpzuXsby2QObT+VB4MNjZapa+YYF/WgwJCml4lzn2xMFg1vYZD78pfoJ9e5f2cL1MMlUSDb0TNxmEXfDQ77H/pRpKDz0=
|
signingkey = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLyOvkr1nRqMVv3UAizmk6C+q40H4khvw7qIXXXyOyFmzjwYx/Cuxoi4uZVjX+q4qFYJ+c312uu6YXiEtfyoCao3wub8r1cLBQ3eIvuyWp2K8Ixcd9JmFmLmoeiENpJxqyr0WPZLDkrCWUZCsQQh8zzGFnfciUdUdTiZ7s21AEhhmFRSdFlVfQSlGMFxU321psg1YilcP80bDwFd1FsL4TssSkwlbgP/twqnpZ4436TTo7kp0UnH/RZkfRdDWScKHaWgncBG0CZeQxGWnRp8fvZn/7gDnthcZhvnDALVBE7QFuZ90GxqVw3IGpHryV0mFO6EGQ9Ke9YX7pKVZPUXZjeCN4SVKsqFdVJ6AjaSJ9K7nL98rYK7qNzndT3cKqPNgPteyXWRulH68A51ecQqHrjTttZcdN9hKt9uBHpzuXsby2QObT+VB4MNjZapa+YYF/WgwJCml4lzn2xMFg1vYZD78pfoJ9e5f2cL1MMlUSDb0TNxmEXfDQ77H/pRpKDz0=
|
||||||
|
|
||||||
[gpg "ssh"]
|
[gpg "ssh"]
|
||||||
program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign
|
program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign
|
||||||
allowedSignersFile = ~/.ssh/allowed_signers
|
allowedSignersFile = ~/.ssh/allowed_signers
|
||||||
|
|
||||||
[commit]
|
[commit]
|
||||||
gpgsign = true
|
gpgsign = true
|
||||||
|
|
||||||
[credential "https://github.com"]
|
[credential "https://github.com"]
|
||||||
helper =
|
helper =
|
||||||
helper = !/opt/homebrew/bin/gh auth git-credential
|
helper = !/opt/homebrew/bin/gh auth git-credential
|
||||||
|
|
||||||
[credential "https://gist.github.com"]
|
[credential "https://gist.github.com"]
|
||||||
helper =
|
helper =
|
||||||
helper = !/opt/homebrew/bin/gh auth git-credential
|
helper = !/opt/homebrew/bin/gh auth git-credential
|
||||||
|
|||||||
6
install
6
install
@@ -25,9 +25,9 @@ git submodule update --init --recursive "${DOTBOT_DIR}"
|
|||||||
if [ "${DOTBOT_HOST}" != "" ]; then
|
if [ "${DOTBOT_HOST}" != "" ]; then
|
||||||
DOTBOT_HOST_CONFIG="${BASEDIR}/hosts/${DOTBOT_HOST}/${CONFIG}"
|
DOTBOT_HOST_CONFIG="${BASEDIR}/hosts/${DOTBOT_HOST}/${CONFIG}"
|
||||||
echo "-> Trying if host config can be found: ${DOTBOT_HOST_CONFIG}"
|
echo "-> Trying if host config can be found: ${DOTBOT_HOST_CONFIG}"
|
||||||
[ -r "$DOTBOT_HOST_CONFIG" ] && [ -f "$DOTBOT_HOST_CONFIG" ] \
|
[ -r "$DOTBOT_HOST_CONFIG" ] && [ -f "$DOTBOT_HOST_CONFIG" ] &&
|
||||||
&& echo "(!) Found $DOTBOT_HOST_CONFIG" \
|
echo "(!) Found $DOTBOT_HOST_CONFIG" &&
|
||||||
&& "$DOTBOT_BIN_PATH" \
|
"$DOTBOT_BIN_PATH" \
|
||||||
-d "$BASEDIR" \
|
-d "$BASEDIR" \
|
||||||
--plugin-dir=tools/dotbot-brew \
|
--plugin-dir=tools/dotbot-brew \
|
||||||
--plugin-dir=tools/dotbot-include \
|
--plugin-dir=tools/dotbot-include \
|
||||||
|
|||||||
@@ -35,10 +35,14 @@
|
|||||||
glob: true
|
glob: true
|
||||||
relink: true
|
relink: true
|
||||||
path: config/*
|
path: config/*
|
||||||
exclude: [config/nvm]
|
exclude: [config/nvm, config/fzf]
|
||||||
~/.local/bin:
|
~/.local/bin:
|
||||||
glob: true
|
glob: true
|
||||||
path: local/bin/*
|
path: local/bin/*
|
||||||
|
exclude: [local/bin/fzf]
|
||||||
|
~/.local/fzf:
|
||||||
|
glob: true
|
||||||
|
path: config/fzf/*
|
||||||
~/.local/man:
|
~/.local/man:
|
||||||
glob: true
|
glob: true
|
||||||
path: local/man/**
|
path: local/man/**
|
||||||
@@ -55,5 +59,5 @@
|
|||||||
- bash local/bin/dfm install all
|
- bash local/bin/dfm install all
|
||||||
- pipx:
|
- pipx:
|
||||||
file: tools/requirements-pipx.txt
|
file: tools/requirements-pipx.txt
|
||||||
stdout: false
|
stdout: true
|
||||||
stderr: true
|
stderr: true
|
||||||
|
|||||||
Submodule local/bin/asdf updated: f00f759f3d...753c0b7265
@@ -29,7 +29,9 @@ if ! declare -f msg_err > /dev/null; then
|
|||||||
# $1 - error message (string)
|
# $1 - error message (string)
|
||||||
msg_err()
|
msg_err()
|
||||||
{
|
{
|
||||||
|
# shellcheck disable=SC2317
|
||||||
echo "(!) ERROR: $1" >&2
|
echo "(!) ERROR: $1" >&2
|
||||||
|
# shellcheck disable=SC2317
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
@@ -39,7 +41,9 @@ if ! declare -f msg_done > /dev/null; then
|
|||||||
# $1 - message (string)
|
# $1 - message (string)
|
||||||
msg_done()
|
msg_done()
|
||||||
{
|
{
|
||||||
|
# shellcheck disable=SC2317
|
||||||
echo "✓ $1"
|
echo "✓ $1"
|
||||||
|
# shellcheck disable=SC2317
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
@@ -54,15 +58,15 @@ if ! declare -f array_diff > /dev/null; then
|
|||||||
# Source: https://stackoverflow.com/a/42399479/594940
|
# Source: https://stackoverflow.com/a/42399479/594940
|
||||||
array_diff()
|
array_diff()
|
||||||
{
|
{
|
||||||
|
# shellcheck disable=SC1083,SC2086
|
||||||
eval local ARR1=\(\"\${$2[@]}\"\)
|
eval local ARR1=\(\"\${$2[@]}\"\)
|
||||||
|
# shellcheck disable=SC1083,SC2086
|
||||||
eval local ARR2=\(\"\${$3[@]}\"\)
|
eval local ARR2=\(\"\${$3[@]}\"\)
|
||||||
local IFS=$'\n'
|
local IFS=$'\n'
|
||||||
mapfile -t "$1" < <(comm -23 <(echo "${ARR1[*]}" | sort) <(echo "${ARR2[*]}" | sort))
|
mapfile -t "$1" < <(comm -23 <(echo "${ARR1[*]}" | sort) <(echo "${ARR2[*]}" | sort))
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
VERSION_NVM="v0.39.5"
|
|
||||||
|
|
||||||
# Loads configs for better installation experience
|
# Loads configs for better installation experience
|
||||||
source "$DOTFILES/config/shared.sh"
|
source "$DOTFILES/config/shared.sh"
|
||||||
|
|
||||||
@@ -148,13 +152,13 @@ section_install()
|
|||||||
$0 install macos
|
$0 install macos
|
||||||
$0 install fonts
|
$0 install fonts
|
||||||
$0 brew install
|
$0 brew install
|
||||||
$0 install ohmyposh
|
#$0 install ohmyposh
|
||||||
$0 install asdf
|
$0 install asdf
|
||||||
$0 install composer
|
$0 install composer
|
||||||
$0 install fzf
|
$0 install fzf
|
||||||
$0 install go
|
#$0 install go
|
||||||
$0 install cheat-databases
|
$0 install cheat-databases
|
||||||
$0 install imagick
|
#$0 install imagick
|
||||||
$0 install nvm
|
$0 install nvm
|
||||||
$0 install npm
|
$0 install npm
|
||||||
# $0 install ntfy
|
# $0 install ntfy
|
||||||
@@ -328,7 +332,8 @@ section_brew()
|
|||||||
|
|
||||||
declare -a BREW_LIST_TRACKED_WITHOUT_DEPS
|
declare -a BREW_LIST_TRACKED_WITHOUT_DEPS
|
||||||
for f in "${BREW_LIST_ALL[@]}"; do
|
for f in "${BREW_LIST_ALL[@]}"; do
|
||||||
if [[ ! " ${BREW_LIST_DEPENDENCIES[@]} " =~ " ${f} " ]]; then
|
# shellcheck disable=SC2199
|
||||||
|
if [[ " ${BREW_LIST_DEPENDENCIES[@]} " != *" ${f} "* ]]; then
|
||||||
BREW_LIST_TRACKED_WITHOUT_DEPS+=("$f")
|
BREW_LIST_TRACKED_WITHOUT_DEPS+=("$f")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -416,6 +421,7 @@ section_helpers()
|
|||||||
"env:Show environment variables"
|
"env:Show environment variables"
|
||||||
"functions:Show functions"
|
"functions:Show functions"
|
||||||
"nvim:Show nvim keybindings"
|
"nvim:Show nvim keybindings"
|
||||||
|
# shellcheck disable=SC2016
|
||||||
'path:Show $PATH dir by dir'
|
'path:Show $PATH dir by dir'
|
||||||
"tmux:Show tmux keybindings"
|
"tmux:Show tmux keybindings"
|
||||||
"wezterm:Show wezterm keybindings"
|
"wezterm:Show wezterm keybindings"
|
||||||
@@ -445,7 +451,29 @@ section_helpers()
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
"colors")
|
"colors")
|
||||||
for i in {0..255}; do echo -en "\e[38;5;${i}m${i} "; done
|
max=255
|
||||||
|
start=0
|
||||||
|
|
||||||
|
while [ "$start" -le "$max" ]; do
|
||||||
|
for i in $(seq "$start" $((start + 9))); do
|
||||||
|
if [ "$i" -le "$max" ]; then
|
||||||
|
# Outputs colored number
|
||||||
|
# printf " \e[38;5;%sm%4s\e[0m" "$i" "$i"
|
||||||
|
|
||||||
|
# Outputs colored block with number inside
|
||||||
|
# printf " \e[48;5;%sm\e[38;5;15m%5s \e[0m" "$i" "$i"
|
||||||
|
|
||||||
|
# Outputs colored block and color number
|
||||||
|
# printf " \e[48;5;%sm \e[0m %3d" "$i" "$i"
|
||||||
|
|
||||||
|
# Outputs color number and colored block
|
||||||
|
printf "%3d \e[48;5;%sm \e[0m " "$i" "$i"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf "\n"
|
||||||
|
start=$((start + 10))
|
||||||
|
done
|
||||||
|
|
||||||
;;
|
;;
|
||||||
"env")
|
"env")
|
||||||
env | sort
|
env | sort
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ indent_type = "Spaces"
|
|||||||
indent_width = 2
|
indent_width = 2
|
||||||
quote_style = "AutoPreferSingle"
|
quote_style = "AutoPreferSingle"
|
||||||
call_parentheses = "None"
|
call_parentheses = "None"
|
||||||
collapse_simple_statement = "Always"
|
collapse_simple_statement = "Never"
|
||||||
|
|
||||||
[sort_requires]
|
[sort_requires]
|
||||||
enabled = true
|
enabled = true
|
||||||
Submodule tools/dotbot updated: 6489f28311...7e6ec66718
Reference in New Issue
Block a user