backup: 2025-04-08
This commit is contained in:
parent
fee9b8f25a
commit
5b3b5d07dd
|
@ -0,0 +1,7 @@
|
||||||
|
source /Users/marsway/.vvconfig/.aliases/crack.sh
|
||||||
|
source /Users/marsway/.vvconfig/.aliases/edit.sh
|
||||||
|
source /Users/marsway/.vvconfig/.aliases/git.sh
|
||||||
|
source /Users/marsway/.vvconfig/.aliases/mc.sh
|
||||||
|
source /Users/marsway/.vvconfig/.aliases/quickpath.sh
|
||||||
|
source /Users/marsway/.vvconfig/.aliases/quickssh.sh
|
||||||
|
source /Users/marsway/.vvconfig/.aliases/scripts.sh
|
|
@ -0,0 +1 @@
|
||||||
|
alias nv='nvim'
|
|
@ -0,0 +1,8 @@
|
||||||
|
alias g='git'
|
||||||
|
# Git
|
||||||
|
alias gb='git branch'
|
||||||
|
alias gs='git status'
|
||||||
|
alias gl='git log'
|
||||||
|
alias gd='git diff'
|
||||||
|
alias gp='git pull'
|
||||||
|
alias gm='git commit -m'
|
|
@ -0,0 +1,4 @@
|
||||||
|
mc() {
|
||||||
|
mkdir $1
|
||||||
|
cd $1
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
alias co='cd ~/Documents/coding/'
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Quick ssh
|
||||||
|
alias api='ssh root@api.eagle.local'
|
||||||
|
alias autops='ssh root@autops.eagle.local'
|
||||||
|
alias toolchain='ssh root@autops.eagle.local'
|
||||||
|
alias esq='ssh root@101.35.8.154'
|
||||||
|
alias cpid='ssh-copy-id'
|
||||||
|
alias apidb='ssh root@apidb.eagle.local'
|
||||||
|
alias oness='ssh root@suzones.eagle.local'
|
||||||
|
alias proxy='ssh root@suzproxy01.eagle.local'
|
||||||
|
alias apimonitor='ssh root@apimonitor.eagle.local'
|
||||||
|
alias portal='ssh root@portal.eagle.local'
|
||||||
|
alias datac='ssh root@datacenter.eagle.local'
|
||||||
|
alias apip='ssh root@47.116.120.231'
|
||||||
|
alias gtss="ssh 'ubuntu@git.marsway.red'"
|
|
@ -0,0 +1 @@
|
||||||
|
alias backup-forgejo='bash /Users/$USER/.vvconfig/scripts/backup_forgejo.sh'
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/zsh
|
||||||
|
rm ./aliases.sh
|
||||||
|
for i in $(realpath ./*.sh); do
|
||||||
|
echo "source $i" >> aliases.sh
|
||||||
|
done
|
|
@ -0,0 +1,51 @@
|
||||||
|
[general]
|
||||||
|
live_config_reload = true
|
||||||
|
import = [
|
||||||
|
"~/.config/alacritty/theme-falcon.toml",
|
||||||
|
"~/.config/alacritty/keybinding.toml"
|
||||||
|
]
|
||||||
|
|
||||||
|
[terminal.shell]
|
||||||
|
program = "/opt/homebrew/bin/fish"
|
||||||
|
|
||||||
|
[window]
|
||||||
|
decorations = "Buttonless"
|
||||||
|
position = {x = 0, y = 0}
|
||||||
|
padding = {x=10, y=3}
|
||||||
|
dynamic_padding = true
|
||||||
|
dimensions = {columns=160, lines=25}
|
||||||
|
#level = "AlwaysOnTop"
|
||||||
|
opacity = 0.8
|
||||||
|
blur = true
|
||||||
|
#startup_mode = "Maximized"
|
||||||
|
|
||||||
|
[env]
|
||||||
|
TERM = "xterm-256color"
|
||||||
|
[mouse]
|
||||||
|
hide_when_typing = true
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
draw_bold_text_with_bright_colors = false
|
||||||
|
|
||||||
|
[cursor]
|
||||||
|
style = {shape="Beam", blinking="Always"}
|
||||||
|
|
||||||
|
[font]
|
||||||
|
size = 16.0
|
||||||
|
#offset = {x=0, y=8}
|
||||||
|
glyph_offset = {x=0, y=0}
|
||||||
|
italic = {family = "JetBrainsMono Nerd Font", style = "Italic"}
|
||||||
|
bold = {family = "JetBrainsMono Nerd Font", style = "Regular"}
|
||||||
|
bold_italic = {family = "JetBrainsMono Nerd Font", style = "Italic"}
|
||||||
|
normal = {family = "JetBrainsMono Nerd Font", style = "Italic"}
|
||||||
|
|
||||||
|
[scrolling]
|
||||||
|
history = 100000
|
||||||
|
multiplier = 4
|
||||||
|
|
||||||
|
[selection]
|
||||||
|
save_to_clipboard = true
|
||||||
|
semantic_escape_chars = ''',│`|:"' ()[]{}<>'''
|
||||||
|
|
||||||
|
[debug]
|
||||||
|
#render_timer = true
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Key bindings
|
||||||
|
# A list with all available `key` names can be found here:
|
||||||
|
# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants
|
||||||
|
#
|
||||||
|
# Run "xxd -psd" to find hex codes of keys.
|
||||||
|
#
|
||||||
|
# Alacritty + Tmux key integratio
|
||||||
|
# `\x1c` is `C-\` as tmux prefix
|
||||||
|
# `\x1b` is `Esc`
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
action = "SpawnNewInstance"
|
||||||
|
key = "N"
|
||||||
|
mods = "Command"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
chars = "\u001Bb"
|
||||||
|
key = "Left"
|
||||||
|
mods = "Alt"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
chars = "\u001Bf"
|
||||||
|
key = "Right"
|
||||||
|
mods = "Alt"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
chars = "\u001BOH"
|
||||||
|
key = "Left"
|
||||||
|
mode = "AppCursor"
|
||||||
|
mods = "Command"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
chars = "\u001BOF"
|
||||||
|
key = "Right"
|
||||||
|
mode = "AppCursor"
|
||||||
|
mods = "Command"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
chars = "\u0015"
|
||||||
|
key = "Back"
|
||||||
|
mods = "Command"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
chars = "\u001B\u007F"
|
||||||
|
key = "Back"
|
||||||
|
mods = "Alt"
|
Binary file not shown.
|
@ -0,0 +1,33 @@
|
||||||
|
# falcon colorscheme for alacritty
|
||||||
|
# by fenetikm, https//github.com/fenetikm/falcon
|
||||||
|
|
||||||
|
# Default colors
|
||||||
|
[colors.primary]
|
||||||
|
background = '#020221'
|
||||||
|
foreground = '#b4b4b9'
|
||||||
|
|
||||||
|
[colors.cursor]
|
||||||
|
text = '#020221'
|
||||||
|
cursor = '#ffe8c0'
|
||||||
|
|
||||||
|
# Normal colors
|
||||||
|
[colors.normal]
|
||||||
|
black = '#000004'
|
||||||
|
red = '#ff3600'
|
||||||
|
green = '#718e3f'
|
||||||
|
yellow = '#ffc552'
|
||||||
|
blue = '#635196'
|
||||||
|
magenta = '#ff761a'
|
||||||
|
cyan = '#34bfa4'
|
||||||
|
white = '#b4b4b9'
|
||||||
|
|
||||||
|
# Bright colors
|
||||||
|
[colors.bright]
|
||||||
|
black = '#020221'
|
||||||
|
red = '#ff8e78'
|
||||||
|
green = '#b1bf75'
|
||||||
|
yellow = '#ffd392'
|
||||||
|
blue = '#99a4bc'
|
||||||
|
magenta = '#ffb07b'
|
||||||
|
cyan = '#8bccbf'
|
||||||
|
white = '#f8f8ff'
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 86c578469e2bf784faf6f916883bf48349ff4f6d
|
|
|
@ -0,0 +1,587 @@
|
||||||
|
# docker.fish - docker completions for fish shell
|
||||||
|
#
|
||||||
|
# This file is generated by gen_docker_fish_completions.py from:
|
||||||
|
# https://github.com/barnybug/docker-fish-completion
|
||||||
|
#
|
||||||
|
# To install the completions:
|
||||||
|
# mkdir -p ~/.config/fish/completions
|
||||||
|
# cp docker.fish ~/.config/fish/completions
|
||||||
|
#
|
||||||
|
# Completion supported:
|
||||||
|
# - parameters
|
||||||
|
# - commands
|
||||||
|
# - containers
|
||||||
|
# - images
|
||||||
|
# - repositories
|
||||||
|
|
||||||
|
function __fish_docker_no_subcommand --description 'Test if docker has yet to be given the subcommand'
|
||||||
|
for i in (commandline -opc)
|
||||||
|
if contains -- $i attach build commit cp create diff events exec export history images import info inspect kill load login logout logs network pause port ps pull push rename restart rm rmi run save search start stop tag top trust unpause version wait stats
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_containers --description 'Print a list of docker containers' -a select
|
||||||
|
switch $select
|
||||||
|
case running
|
||||||
|
docker ps -a --no-trunc --filter status=running --format "{{.ID}}\n{{.Names}}" | tr ',' '\n'
|
||||||
|
case stopped
|
||||||
|
docker ps -a --no-trunc --filter status=exited --format "{{.ID}}\n{{.Names}}" | tr ',' '\n'
|
||||||
|
case all
|
||||||
|
docker ps -a --no-trunc --format "{{.ID}}\n{{.Names}}" | tr ',' '\n'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_networks --description 'Print a list of docker networks'
|
||||||
|
docker network ls --format "{{.ID}}\n{{.Name}}" | tr ',' '\n'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function __fish_docker_no_subcommand_trust --description 'Test if docker has yet to be given the trust subcommand'
|
||||||
|
if __fish_seen_subcommand_from trust
|
||||||
|
for i in (commandline -opc)
|
||||||
|
if contains -- $i inspect key revoke sign signer
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_docker_subcommand_path --description 'Test if command has all arguments in any order'
|
||||||
|
set -l cmd (commandline -poc)
|
||||||
|
set -e cmd[1]
|
||||||
|
for sub in $argv
|
||||||
|
if not contains -- $sub $cmd
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_docker_subcommand_path_without --description 'Test if command has all arguments in any order'
|
||||||
|
set -l cmd (commandline -poc)
|
||||||
|
set -e cmd[1]
|
||||||
|
for sub in $argv
|
||||||
|
if contains -- $sub $cmd
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_images --description 'Print a list of docker images'
|
||||||
|
docker images --format "{{.Repository}}:{{.Tag}}" | command grep -v '<none>'
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_repositories --description 'Print a list of docker repositories'
|
||||||
|
docker images --format "{{.Repository}}" | command grep -v '<none>' | command sort | command uniq
|
||||||
|
end
|
||||||
|
|
||||||
|
# common options
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s b -l bridge -d 'Attach containers to a pre-existing network bridge'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l bip -d "Use this CIDR notation address for the network bridge's IP, not compatible with -b"
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s D -l debug -d 'Enable debug mode'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s d -l daemon -d 'Enable daemon mode'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l dns -d 'Force Docker to use specific DNS servers'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l dns-opt -d 'Force Docker to use specific DNS options'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l dns-search -d 'Force Docker to use specific DNS search domains'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l exec-opt -d 'Set runtime execution options'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l fixed-cidr -d 'IPv4 subnet for fixed IPs (e.g. 10.20.0.0/16)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l fixed-cidr-v6 -d 'IPv6 subnet for fixed IPs (e.g.: 2001:a02b/48)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s G -l group -d 'Group to assign the unix socket specified by -H when running in daemon mode'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s g -l graph -d 'Path to use as the root of the Docker runtime'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s H -l host -d 'The socket(s) to bind to in daemon mode or connect to in client mode, specified using one or more tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s h -l help -d 'Print usage'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l icc -d 'Allow unrestricted inter-container and Docker daemon host communication'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l insecure-registry -d 'Enable insecure communication with specified registries (no certificate verification for HTTPS and enable HTTP fallback) (e.g., localhost:5000 or 10.20.0.0/16)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ip -d 'Default IP address to use when binding container ports'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ip-forward -d 'Enable net.ipv4.ip_forward and IPv6 forwarding if --fixed-cidr-v6 is defined. IPv6 forwarding may interfere with your existing IPv6 configuration when using Router Advertisement.'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ip-masq -d "Enable IP masquerading for bridge's IP range"
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l iptables -d "Enable Docker's addition of iptables rules"
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ipv6 -d 'Enable IPv6 networking'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s l -l log-level -d 'Set the logging level ("debug", "info", "warn", "error", "fatal")'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l label -d 'Set key=value labels to the daemon (displayed in `docker info`)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l mtu -d 'Set the containers network MTU'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s p -l pidfile -d 'Path to use for daemon PID file'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l registry-mirror -d 'Specify a preferred registry mirror'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s s -l storage-driver -d 'Force the Docker runtime to use a specific storage driver'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l selinux-enabled -d 'Enable selinux support. SELinux does not presently support the BTRFS storage driver'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l storage-opt -d 'Set storage driver options'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tls -d 'Use TLS; implied by --tlsverify'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlscacert -d 'Trust only remotes providing a certificate signed by the CA given here'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlscert -d 'Path to TLS certificate file'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlskey -d 'Path to TLS key file'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlsverify -d 'Use TLS and verify the remote (daemon: verify client, client: verify daemon)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s v -l version -d 'Print version information and quit'
|
||||||
|
|
||||||
|
# subcommands
|
||||||
|
# attach
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a attach -d 'Attach local standard input, output, and error streams to a running container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l detach-keys -d 'Override the key sequence for detaching a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l no-stdin -d 'Do not attach STDIN'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l sig-proxy -d 'Proxy all received signals to the process'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# build
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a build -d 'Build an image from a Dockerfile'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l add-host -d 'Add a custom host-to-IP mapping (host:ip)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l build-arg -d 'Set build-time variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cache-from -d 'Images to consider as cache sources'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cgroup-parent -d 'Optional parent cgroup for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l compress -d 'Compress the build context using gzip'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpu-period -d 'Limit the CPU CFS (Completely Fair Scheduler) period'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpu-quota -d 'Limit the CPU CFS (Completely Fair Scheduler) quota'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s c -l cpu-shares -d 'CPU shares (relative weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpuset-cpus -d 'CPUs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpuset-mems -d 'MEMs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l disable-content-trust -d 'Skip image verification'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s f -l file -d "Name of the Dockerfile (Default is ‘PATH/Dockerfile’)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l force-rm -d 'Always remove intermediate containers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l iddfile -d 'Write the image ID to the file'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l isolation -d 'Container isolation technology'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l label -d 'Set metadata for an image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s m -l memory -d 'Memory limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l memory-swap -d 'Swap limit equal to memory plus swap: ‘-1’ to enable unlimited swap'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l network -d 'Set the networking mode for the RUN instructions during build'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l no-cache -d 'Do not use cache when building the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l pull -d 'Always attempt to pull a newer version of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s q -l quiet -d 'Suppress the build output and print image ID on success'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l rm -d 'Remove intermediate containers after a successful build'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l security-opt -d 'Security options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l shm-size -d 'Size of /dev/shm'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s t -l tag -d 'Name and optionally a tag in the ‘name:tag’ format'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l target -d 'Set the target build stage to build'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l ulimit -d 'Ulimit options'
|
||||||
|
|
||||||
|
# commit
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a commit -d "Create a new image from a container's changes"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s a -l author -d 'Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s c -l change -d 'Apply Dockerfile instruction to the created image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s m -l message -d 'Commit message'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s p -l pause -d 'Pause container during commit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# cp
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a cp -d "Copy files/folders between a container and the local filesystem"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from cp' -s a -l archive -d 'Archive mode (copy all uid/gid information)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from cp' -s L -l follow-link -d 'Always follow symbol link in SRC_PATH'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from cp' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# create
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a create -d 'Create a new container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l add-host -d 'Add a custom host-to-IP mapping (host:ip)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l annotation -d 'Add an annotation to the container (passed through to the OCI runtime)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s a -l attach -d 'Attach to STDIN, STDOUT or STDERR.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l blkio-weight -d 'Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l blkio-weight-device -d 'Block IO weight (relative device weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cap-add -d 'Add Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cap-drop -d 'Drop Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cgroupns -d 'Cgroup namespace mode to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cgroup-parent -d 'Optional parent cgroup for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cidfile -d 'Write the container ID to the file'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-count -d 'CPU count (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-percent -d 'CPU percent (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-period -d 'Limit CPU CFS (Completely Fair Scheduler) period'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-quota -d 'Limit CPU CFS (Completely Fair Scheduler) quota'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-rt-period -d 'Limit CPU real-time period in microseconds'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-rt-runtime -d 'Limit CPU real-time runtime in microseconds'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-shares -d 'CPU shares (relative weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpus -d 'Number of CPUs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpuset-cpus -d 'CPUs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpuset-mems -d 'MEMs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device -d 'Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc:rwm)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-cgroup-rule -d 'Add a rule to the cgroup allowed devices list'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-read-bps -d 'Limit read rate (bytes per second) from a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-read-iops -d 'Limit read rate (IO per second) from a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-write-bps -d 'Limit write rate (bytes per second) to a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-write-iops -d 'Limit write rate (IO per second) to a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l disable-content-trust -d 'Skip image verification'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns -d 'Set custom DNS servers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns-opt -d 'Set DNS options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns-option -d 'Set DNS options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns-search -d 'Set custom DNS search domains'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s e -l env -d 'Set environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l entrypoint -d 'Overwrite the default ENTRYPOINT of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l env-file -d 'Read in a line delimited file of environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l expose -d 'Expose a port or a range of ports'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l group-add -d 'Add additional groups to join'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-cmd -d 'Command to run to check health'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-interval -d 'Time between running the check (ms|s|m|h) (default 0s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-retries -d 'Consecutive failures needed to report unhealthy'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-start-period -d 'Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-timeout -d 'Maximum time to allow one check to run (ms|s|m|h) (default 0s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s h -l hostname -d 'Container host name'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l init -d 'Run an init inside the container that forwards signals and reaps processes'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s i -l interactive -d 'Keep STDIN open even if not attached'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l io-maxbandwidth -d 'Maximum IO bandwidth limit for the system drive (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l io-maxiops -d 'Maximum IOps limit for the system drive (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ip -d 'IPv4 address (e.g., 172.30.100.104)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ip6 -d 'IPv6 address (e.g., 2001:db8::33)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ipc -d 'IPC mode to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l isolation -d 'Container isolation technology'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l kernel-memory -d 'Kernel memory limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s l -l label -d 'Set meta data on a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l label-file -d 'Read in a line delimited file of labels'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l link -d 'Add link to another container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l link-local-ip -d 'Container IPv4/IPv6 link-local addresses'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l log-driver -d 'Logging driver for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l log-opt -d 'Log driver options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l mac-address -d 'Container MAC address (e.g., 92:d0:c6:0a:29:33)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s m -l memory -d 'Memory limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l memory-reservation -d 'Memory soft limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l memory-swap -d 'Swap limit equal to memory plus swap: ‘-1’ to enable unlimited swap'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l memory-swappiness -d 'Tune container memory swappiness (0 to 100)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l mount -d 'Attach a filesystem mount to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l name -d 'Assign a name to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s net -l network -d 'Connect a container to a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s net-alias -l network-alias -d 'Add network-scoped alias for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l no-healthcheck -d 'Disable any container-specified HEALTHCHECK'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l oom-kill-disable -d 'Disable OOM Killer'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l oom-score-adj -d 'Tune host’s OOM preferences (-1000 to 1000)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l pid -d 'PID namespace to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l pids-limit -d 'Tune container pids limit (set -1 for unlimited )'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l privileged -d 'Give extended privileges to this container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s p -l publish -d "Publish a container’s port(s) to the host"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s P -l publish-all -d 'Publish all exposed ports to random ports'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l read-only -d "Mount the container's root filesystem as read only"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l restart -d 'Restart policy to apply when a container exits'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l rm -d 'Automatically remove the container when it exits'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l runtime -d 'Runtime to use for this container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l security-opt -d 'Security Options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l shm-size -d 'Size of /dev/shm'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l stop-signal -d 'Signal to stop a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l stop-timeout -d 'Timeout (in seconds) to stop a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l storage-opt -d 'Storage driver options for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l sysctl -d 'Sysctl options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l tmpfs -d 'Mount a tmpfs directory'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s t -l tty -d 'Allocate a pseudo-TTY'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ulimit -d 'Ulimit options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s u -l user -d ' Username or UID (format: <name|uid>[:<group|gid>])'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l userns -d 'User namespace to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l uts -d 'UTS namespace to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s v -l volume -d 'Bind mount a volume'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l volume-driver -d 'Optional volume driver for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l volumes-from -d 'Mount volumes from the specified container(s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s w -l workdir -d 'Working directory inside the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# diff
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a diff -d "Inspect changes on a container's filesystem"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from diff' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from diff' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# events
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a events -d 'Get real time events from the server'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -s f -l filter -d "Filter output based on conditions provided"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l format -d 'Format the output using the given Go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l since -d 'Show all events created since timestamp'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l until -d 'Stream events until this timestamp'
|
||||||
|
|
||||||
|
# exec
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a exec -d 'Execute a command in a running container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s d -l detach -d 'Detached mode: run command in the background'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -l detach-keys -d 'Override the key sequence for detaching a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s e -l env -d 'Set environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s i -l interactive -d 'Keep STDIN open even if not attached'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -l privileged -d 'Give extended privileges to the command'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s t -l tty -d 'Allocate a pseudo-TTY'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s u -l user -d 'Username or UID (format: <name|uid>[:<group|gid>])'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s w -l workdir -d 'Working directory inside the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# export
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a export -d 'Stream the contents of a container as a tar archive'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from export' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from export' -s o -l output -d 'Write to a file, instead of STDOUT'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from export' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# history
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a history -d 'Show the history of an image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -l format -d 'Format the output using the given Go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -s H -l human -d 'Print sizes and dates in human readable format'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -s q -l quiet -d 'Only show image IDs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# images
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a images -d 'List images'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -s a -l all -d 'Show all images (default hides intermediate images)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l digests -d 'Show digests'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -s f -l filter -d 'Filter output based on conditions provided'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l format -d 'Format the output using the given Go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -s q -l quiet -d 'Only show image IDs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -a '(__fish_print_docker_repositories)' -d "Repository"
|
||||||
|
|
||||||
|
# import
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a import -d 'Create a new filesystem image from the contents of a tarball'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from import' -s c -l change -d 'Apply Dockerfile instruction to the created image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from import' -s m -l message -d 'Set commit message for imported image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from import' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# info
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a info -d 'Display system-wide information'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from info' -s f -l format -d 'Format the output using the given go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from info' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# inspect
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a inspect -d 'Return low-level information on a container or image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -s f -l format -d 'Format the output using the given go template.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -s s -l size -d 'Display total file sizes if the type is container.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -l type -d 'Return JSON for specified type'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# kill
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a kill -d 'Kill a running container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from kill' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from kill' -s s -l signal -d 'Signal to send to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from kill' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# load
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a load -d 'Load an image from a tar archive'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from load' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from load' -s i -l input -d 'Read from a tar archive file, instead of STDIN'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from load' -s q -l quiet -d 'Suppress the load output'
|
||||||
|
|
||||||
|
# login
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a login -d 'Log in to a registry'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -s p -l password -d 'Password'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -l password-stdin -d 'Take the password from stdin'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -s u -l username -d 'Username'
|
||||||
|
|
||||||
|
# logout
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a logout -d 'Log out from a registry'
|
||||||
|
|
||||||
|
# logs
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a logs -d 'Fetch the logs of a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -s f -l follow -d 'Follow log output'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -s t -l timestamps -d 'Show timestamps'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -l since -d 'Show logs since timestamp'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -s n -l tail -d 'Output the specified number of lines at the end of logs (defaults to all logs)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# network
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a network -d 'Manage networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a connect -d 'Connect a container to a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a create -d 'Create a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a disconnect -d 'Disconnect a container from a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a inspect -d 'Display detailed information on one or more networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a ls -d 'List networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a prune -d 'Remove all unused networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a rm -d 'Remove one or more networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network rm' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network connect' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network disconnect' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network inspect' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
|
||||||
|
# port
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a port -d 'Lookup the public-facing port that is NAT-ed to PRIVATE_PORT'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from port' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from port' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# pause
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a pause -d 'Pause all processes within a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pause' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# ps
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a ps -d 'List containers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s a -l all -d 'Show all containers. Only running containers are shown by default.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l before -d 'Show only container created before Id or Name, include non-running ones.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s f -l filter -d 'Provide filter values. Valid filters:'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s l -l latest -d 'Show only the latest created container, include non-running ones.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s n -d 'Show n last created containers, include non-running ones.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s q -l quiet -d 'Only display container IDs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s s -l size -d 'Display total file sizes'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l since -d 'Show only containers created since Id or Name, include non-running ones.'
|
||||||
|
|
||||||
|
# pull
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a pull -d 'Download an image from a registry'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -s a -l all-tags -d 'Download all tagged images in the repository'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -a '(__fish_print_docker_repositories)' -d "Repository"
|
||||||
|
|
||||||
|
# push
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a push -d 'Upload an image to a registry'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from push' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from push' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from push' -a '(__fish_print_docker_repositories)' -d "Repository"
|
||||||
|
|
||||||
|
# rename
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a rename -d 'Rename an existing container'
|
||||||
|
|
||||||
|
# restart
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a restart -d 'Restart a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from restart' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from restart' -s t -l time -d 'Number of seconds to try to stop for before killing the container. Once killed it will then be restarted. Default is 10 seconds.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from restart' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# rm
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a rm -d 'Remove one or more containers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s f -l force -d 'Force the removal of a running container (uses SIGKILL)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s l -l link -d 'Remove the specified link and not the underlying container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s v -l volumes -d 'Remove anonymous volumes associated with the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -a '(__fish_print_docker_containers stopped)' -d "Container"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s f -l force -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# rmi
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a rmi -d 'Remove one or more images'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -s f -l force -d 'Force removal of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -l no-prune -d 'Do not delete untagged parents'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# run
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a run -d 'Create and run a new container from an image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l annotation -d 'Add an annotation to the container (passed through to the OCI runtime)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s a -l attach -d 'Attach to STDIN, STDOUT or STDERR.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l add-host -d 'Add a custom host-to-IP mapping (host:ip)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s c -l cpu-shares -d 'CPU shares (relative weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cap-add -d 'Add Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cap-drop -d 'Drop Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cidfile -d 'Write the container ID to the file'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cgroupns -d 'Cgroup namespace mode to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cpuset -d 'CPUs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s d -l detach -d 'Detached mode: run the container in the background and print the new container ID'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l device -d 'Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc:rwm)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-cgroup-rule -d 'Add a rule to the cgroup allowed devices list (e.g. --device-cgroup-rule="c 13:37 rwm")'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l dns -d 'Set custom DNS servers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l dns-opt -d "Set custom DNS options (Use --dns-opt='' if you don't wish to set options)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l dns-search -d "Set custom DNS search domains (Use --dns-search=. if you don't wish to set the search domain)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s e -l env -d 'Set environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l entrypoint -d 'Overwrite the default ENTRYPOINT of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l env-file -d 'Read in a line delimited file of environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l expose -d 'Expose a port or a range of ports (e.g. --expose=3300-3310) from the container without publishing it to your host'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l group-add -d 'Add additional groups to run as'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s h -l hostname -d 'Container host name'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s i -l interactive -d 'Keep STDIN open even if not attached'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l ipc -d 'Default is to create a private IPC namespace (POSIX SysV IPC) for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l link -d 'Add link to another container in the form of <name|id>:alias'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s m -l memory -d 'Memory limit (format: <number>[<unit>], where unit = b, k, m or g)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l mac-address -d 'Container MAC address (e.g., 92:d0:c6:0a:29:33)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l memory-swap -d "Total memory usage (memory + swap), set '-1' to disable swap (format: <number>[<unit>], where unit = b, k, m or g)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l mount -d 'Attach a filesystem mount to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l name -d 'Assign a name to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l net -d 'Set the Network mode for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s P -l publish-all -d 'Publish all exposed ports to random ports on the host interfaces'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s p -l publish -d "Publish a container's port to the host"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l pid -d 'Default is to create a private PID namespace for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l privileged -d 'Give extended privileges to this container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l read-only -d "Mount the container's root filesystem as read only"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l restart -d 'Restart policy to apply when a container exits (no, on-failure[:max-retry], always)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l rm -d 'Automatically remove the container when it exits (incompatible with -d)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l security-opt -d 'Security Options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l sig-proxy -d 'Proxy received signals to the process (non-TTY mode only). SIGCHLD, SIGSTOP, and SIGKILL are not proxied.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l stop-signal -d 'Signal to kill a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s t -l tty -d 'Allocate a pseudo-TTY'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s u -l user -d 'Username or UID'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l tmpfs -d 'Mount tmpfs on a directory'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s v -l volume -d 'Bind mount a volume (e.g., from the host: -v /host:/container, from Docker: -v /container)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l volumes-from -d 'Mount volumes from the specified container(s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s w -l workdir -d 'Working directory inside the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# save
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a save -d 'Save an image to a tar archive'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from save' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from save' -s o -l output -d 'Write to an file, instead of STDOUT'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from save' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# search
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a search -d 'Search for an image on the registry (defaults to the Docker Hub)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -l automated -d 'Only show automated builds'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -s s -l stars -d 'Only displays with at least x stars'
|
||||||
|
|
||||||
|
# start
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a start -d 'Start a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -s a -l attach -d "Attach container's STDOUT and STDERR and forward all signals to the process"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -s i -l interactive -d "Attach container's STDIN"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -a '(__fish_print_docker_containers stopped)' -d "Container"
|
||||||
|
|
||||||
|
# stats
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a stats -d "Display a live stream of one or more containers' resource usage statistics"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stats' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stats' -l no-stream -d 'Disable streaming stats and only pull the first result'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stats' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# stop
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a stop -d 'Stop a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stop' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stop' -s t -l time -d 'Number of seconds to wait for the container to stop before killing it. Default is 10 seconds.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stop' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# tag
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a tag -d 'Tag an image into a repository'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from tag' -s f -l force -d 'Force'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from tag' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# top
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a top -d 'Lookup the running processes of a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from top' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from top' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
#trust
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a trust -d 'Manage trust on Docker images'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from trust' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
#trust inspect
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a inspect -d 'Return low-level information about keys and signatures'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust inspect' -l pretty -d 'Print the information in a human friendly format'
|
||||||
|
|
||||||
|
#trust key
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a key -d 'Manage keys for signing Docker images'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key; and __fish_docker_subcommand_path_without generate load' -a generate -d 'Generate and load a signing key-pair'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key load' -l dir -d 'Directory to generate key in, defaults to current directory'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key; and __fish_docker_subcommand_path_without generate load' -a load -d 'Load a private key file for signing'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key load' -l name -d 'Name for the loaded key (default "signer")'
|
||||||
|
|
||||||
|
#trust revoke
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a revoke -d 'Remove trust for an image'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust revoke' -s y -l yes -d 'Do not prompt for confirmation'
|
||||||
|
|
||||||
|
#trust sign
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a sign -d 'Sign an image'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust sign' -l local -d 'Sign a locally tagged image'
|
||||||
|
|
||||||
|
#trust signer
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a signer -d 'Manage entities who can sign Docker images'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust signer; and __fish_docker_subcommand_path_without add remove' -a add -d 'Add a signer'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust signer; and __fish_docker_subcommand_path_without add remove' -a remove -d 'remove a signer'
|
||||||
|
|
||||||
|
# unpause
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a unpause -d 'Unpause a paused container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from unpause' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# version
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a version -d 'Show the Docker version information'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from version' -s f -l format -d 'Format the output using the given go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from version' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# wait
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a wait -d 'Block until a container stops, then print its exit code'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from wait' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from wait' -a '(__fish_print_docker_containers running)' -d "Container"
|
|
@ -0,0 +1,249 @@
|
||||||
|
|
||||||
|
# Copyright 2016 The Kubernetes Authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
# fish completion for kubectl -*- shell-script -*-
|
||||||
|
|
||||||
|
function __kubectl_debug
|
||||||
|
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||||
|
if test -n "$file"
|
||||||
|
echo "$argv" >> $file
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function __kubectl_perform_completion
|
||||||
|
__kubectl_debug "Starting __kubectl_perform_completion"
|
||||||
|
|
||||||
|
# Extract all args except the last one
|
||||||
|
set -l args (commandline -opc)
|
||||||
|
# Extract the last arg and escape it in case it is a space
|
||||||
|
set -l lastArg (string escape -- (commandline -ct))
|
||||||
|
|
||||||
|
__kubectl_debug "args: $args"
|
||||||
|
__kubectl_debug "last arg: $lastArg"
|
||||||
|
|
||||||
|
# Disable ActiveHelp which is not supported for fish shell
|
||||||
|
set -l requestComp "KUBECTL_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
|
||||||
|
|
||||||
|
__kubectl_debug "Calling $requestComp"
|
||||||
|
set -l results (eval $requestComp 2> /dev/null)
|
||||||
|
|
||||||
|
# Some programs may output extra empty lines after the directive.
|
||||||
|
# Let's ignore them or else it will break completion.
|
||||||
|
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||||
|
for line in $results[-1..1]
|
||||||
|
if test (string trim -- $line) = ""
|
||||||
|
# Found an empty line, remove it
|
||||||
|
set results $results[1..-2]
|
||||||
|
else
|
||||||
|
# Found non-empty line, we have our proper output
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l comps $results[1..-2]
|
||||||
|
set -l directiveLine $results[-1]
|
||||||
|
|
||||||
|
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||||
|
# completions must be prefixed with the flag
|
||||||
|
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||||
|
|
||||||
|
__kubectl_debug "Comps: $comps"
|
||||||
|
__kubectl_debug "DirectiveLine: $directiveLine"
|
||||||
|
__kubectl_debug "flagPrefix: $flagPrefix"
|
||||||
|
|
||||||
|
for comp in $comps
|
||||||
|
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||||
|
end
|
||||||
|
|
||||||
|
printf "%s\n" "$directiveLine"
|
||||||
|
end
|
||||||
|
|
||||||
|
# this function limits calls to __kubectl_perform_completion, by caching the result behind $__kubectl_perform_completion_once_result
|
||||||
|
function __kubectl_perform_completion_once
|
||||||
|
__kubectl_debug "Starting __kubectl_perform_completion_once"
|
||||||
|
|
||||||
|
if test -n "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "Seems like a valid result already exists, skipping __kubectl_perform_completion"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
set --global __kubectl_perform_completion_once_result (__kubectl_perform_completion)
|
||||||
|
if test -z "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "No completions, probably due to a failure"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
__kubectl_debug "Performed completions and set __kubectl_perform_completion_once_result"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# this function is used to clear the $__kubectl_perform_completion_once_result variable after completions are run
|
||||||
|
function __kubectl_clear_perform_completion_once_result
|
||||||
|
__kubectl_debug ""
|
||||||
|
__kubectl_debug "========= clearing previously set __kubectl_perform_completion_once_result variable =========="
|
||||||
|
set --erase __kubectl_perform_completion_once_result
|
||||||
|
__kubectl_debug "Succesfully erased the variable __kubectl_perform_completion_once_result"
|
||||||
|
end
|
||||||
|
|
||||||
|
function __kubectl_requires_order_preservation
|
||||||
|
__kubectl_debug ""
|
||||||
|
__kubectl_debug "========= checking if order preservation is required =========="
|
||||||
|
|
||||||
|
__kubectl_perform_completion_once
|
||||||
|
if test -z "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "Error determining if order preservation is required"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l directive (string sub --start 2 $__kubectl_perform_completion_once_result[-1])
|
||||||
|
__kubectl_debug "Directive is: $directive"
|
||||||
|
|
||||||
|
set -l shellCompDirectiveKeepOrder 32
|
||||||
|
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
|
||||||
|
__kubectl_debug "Keeporder is: $keeporder"
|
||||||
|
|
||||||
|
if test $keeporder -ne 0
|
||||||
|
__kubectl_debug "This does require order preservation"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
__kubectl_debug "This doesn't require order preservation"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# This function does two things:
|
||||||
|
# - Obtain the completions and store them in the global __kubectl_comp_results
|
||||||
|
# - Return false if file completion should be performed
|
||||||
|
function __kubectl_prepare_completions
|
||||||
|
__kubectl_debug ""
|
||||||
|
__kubectl_debug "========= starting completion logic =========="
|
||||||
|
|
||||||
|
# Start fresh
|
||||||
|
set --erase __kubectl_comp_results
|
||||||
|
|
||||||
|
__kubectl_perform_completion_once
|
||||||
|
__kubectl_debug "Completion results: $__kubectl_perform_completion_once_result"
|
||||||
|
|
||||||
|
if test -z "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "No completion, probably due to a failure"
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l directive (string sub --start 2 $__kubectl_perform_completion_once_result[-1])
|
||||||
|
set --global __kubectl_comp_results $__kubectl_perform_completion_once_result[1..-2]
|
||||||
|
|
||||||
|
__kubectl_debug "Completions are: $__kubectl_comp_results"
|
||||||
|
__kubectl_debug "Directive is: $directive"
|
||||||
|
|
||||||
|
set -l shellCompDirectiveError 1
|
||||||
|
set -l shellCompDirectiveNoSpace 2
|
||||||
|
set -l shellCompDirectiveNoFileComp 4
|
||||||
|
set -l shellCompDirectiveFilterFileExt 8
|
||||||
|
set -l shellCompDirectiveFilterDirs 16
|
||||||
|
|
||||||
|
if test -z "$directive"
|
||||||
|
set directive 0
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||||
|
if test $compErr -eq 1
|
||||||
|
__kubectl_debug "Received error directive: aborting."
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||||
|
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||||
|
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||||
|
__kubectl_debug "File extension filtering or directory filtering not supported"
|
||||||
|
# Do full file completion instead
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||||
|
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||||
|
|
||||||
|
__kubectl_debug "nospace: $nospace, nofiles: $nofiles"
|
||||||
|
|
||||||
|
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||||
|
# we need to count the number of valid completions.
|
||||||
|
# To do so, we will filter on prefix as the completions we have received
|
||||||
|
# may not already be filtered so as to allow fish to match on different
|
||||||
|
# criteria than the prefix.
|
||||||
|
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||||
|
set -l prefix (commandline -t | string escape --style=regex)
|
||||||
|
__kubectl_debug "prefix: $prefix"
|
||||||
|
|
||||||
|
set -l completions (string match -r -- "^$prefix.*" $__kubectl_comp_results)
|
||||||
|
set --global __kubectl_comp_results $completions
|
||||||
|
__kubectl_debug "Filtered completions are: $__kubectl_comp_results"
|
||||||
|
|
||||||
|
# Important not to quote the variable for count to work
|
||||||
|
set -l numComps (count $__kubectl_comp_results)
|
||||||
|
__kubectl_debug "numComps: $numComps"
|
||||||
|
|
||||||
|
if test $numComps -eq 1; and test $nospace -ne 0
|
||||||
|
# We must first split on \t to get rid of the descriptions to be
|
||||||
|
# able to check what the actual completion will be.
|
||||||
|
# We don't need descriptions anyway since there is only a single
|
||||||
|
# real completion which the shell will expand immediately.
|
||||||
|
set -l split (string split --max 1 \t $__kubectl_comp_results[1])
|
||||||
|
|
||||||
|
# Fish won't add a space if the completion ends with any
|
||||||
|
# of the following characters: @=/:.,
|
||||||
|
set -l lastChar (string sub -s -1 -- $split)
|
||||||
|
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||||
|
# In other cases, to support the "nospace" directive we trick the shell
|
||||||
|
# by outputting an extra, longer completion.
|
||||||
|
__kubectl_debug "Adding second completion to perform nospace directive"
|
||||||
|
set --global __kubectl_comp_results $split[1] $split[1].
|
||||||
|
__kubectl_debug "Completions are now: $__kubectl_comp_results"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||||
|
# To be consistent with bash and zsh, we only trigger file
|
||||||
|
# completion when there are no other completions
|
||||||
|
__kubectl_debug "Requesting file completion"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||||
|
# so we can properly delete any completions provided by another script.
|
||||||
|
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||||
|
# the existing completions will only be loaded if the program can be found.
|
||||||
|
if type -q "kubectl"
|
||||||
|
# The space after the program name is essential to trigger completion for the program
|
||||||
|
# and not completion of the program name itself.
|
||||||
|
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||||
|
complete --do-complete "kubectl " > /dev/null 2>&1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||||
|
complete -c kubectl -e
|
||||||
|
|
||||||
|
# this will get called after the two calls below and clear the $__kubectl_perform_completion_once_result global
|
||||||
|
complete -c kubectl -n '__kubectl_clear_perform_completion_once_result'
|
||||||
|
# The call to __kubectl_prepare_completions will setup __kubectl_comp_results
|
||||||
|
# which provides the program's completion choices.
|
||||||
|
# If this doesn't require order preservation, we don't use the -k flag
|
||||||
|
complete -c kubectl -n 'not __kubectl_requires_order_preservation && __kubectl_prepare_completions' -f -a '$__kubectl_comp_results'
|
||||||
|
# otherwise we use the -k flag
|
||||||
|
complete -k -c kubectl -n '__kubectl_requires_order_preservation && __kubectl_prepare_completions' -f -a '$__kubectl_comp_results'
|
|
@ -0,0 +1,8 @@
|
||||||
|
function brew
|
||||||
|
command /bin/zsh -c "brew $argv"
|
||||||
|
echo "Updating Brewfile..."
|
||||||
|
command /bin/zsh -c "brew bundle dump --force --file=~/.vvconfig/Brewfile"
|
||||||
|
end
|
||||||
|
function brew_install
|
||||||
|
brew bundle --file="~/.vvconfig/Brewfile"
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
function l
|
||||||
|
command ls --color=auto -l $argv
|
||||||
|
end
|
||||||
|
function la
|
||||||
|
command ls --color=auto -la $argv
|
||||||
|
end
|
||||||
|
function lg
|
||||||
|
command ls --color=auto -la | grep $argv[1]
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Path to Oh My Fish install.
|
||||||
|
set -q XDG_DATA_HOME
|
||||||
|
and set -gx OMF_PATH "$XDG_DATA_HOME/omf"
|
||||||
|
or set -gx OMF_PATH "$HOME/.local/share/omf"
|
||||||
|
|
||||||
|
# Load Oh My Fish configuration.
|
||||||
|
source $OMF_PATH/init.fish
|
|
@ -0,0 +1,3 @@
|
||||||
|
function gts
|
||||||
|
ssh 'ubuntu@git.marsway.red'
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function v
|
||||||
|
command nvim $argv
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
lua ~/.vvconfig/scripts/z.lua/z.lua --init fish | source
|
||||||
|
abbr -a zs 'z -c'
|
||||||
|
abbr -a zb 'z -b'
|
||||||
|
abbr -a zbi 'z -b -i'
|
|
@ -0,0 +1,6 @@
|
||||||
|
if status is-interactive
|
||||||
|
# Commands to run in interactive sessions can go here
|
||||||
|
if ! contains -- /opt/homebrew/bin $fish_user_paths
|
||||||
|
fish_add_path /opt/homebrew/bin
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,104 @@
|
||||||
|
# This file contains fish universal variable definitions.
|
||||||
|
# VERSION: 3.0
|
||||||
|
SETUVAR THEME_EDEN_PROMPT_CHAR:\u00bb
|
||||||
|
SETUVAR --export ZLUA_LUAEXE:/opt/homebrew/bin/lua
|
||||||
|
SETUVAR --export ZLUA_SCRIPT:/Users/marsway/\x2evvconfig/scripts/z\x2elua/z\x2elua
|
||||||
|
SETUVAR _ZL_DATA:/Users/marsway/\x2elocal/share/zlua/zlua\x2etxt
|
||||||
|
SETUVAR _ZL_DATA_DIR:/Users/marsway/\x2elocal/share/zlua
|
||||||
|
SETUVAR __fish_initialized:3800
|
||||||
|
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||||
|
SETUVAR fish_color_autosuggestion:brblack
|
||||||
|
SETUVAR fish_color_cancel:\x2dr
|
||||||
|
SETUVAR fish_color_command:normal
|
||||||
|
SETUVAR fish_color_comment:red
|
||||||
|
SETUVAR fish_color_cwd:green
|
||||||
|
SETUVAR fish_color_cwd_root:red
|
||||||
|
SETUVAR fish_color_end:green
|
||||||
|
SETUVAR fish_color_error:brred
|
||||||
|
SETUVAR fish_color_escape:brcyan
|
||||||
|
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_host:normal
|
||||||
|
SETUVAR fish_color_host_remote:yellow
|
||||||
|
SETUVAR fish_color_normal:normal
|
||||||
|
SETUVAR fish_color_operator:brcyan
|
||||||
|
SETUVAR fish_color_param:cyan
|
||||||
|
SETUVAR fish_color_quote:yellow
|
||||||
|
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_status:red
|
||||||
|
SETUVAR fish_color_user:brgreen
|
||||||
|
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||||
|
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||||
|
SETUVAR fish_pager_color_completion:normal
|
||||||
|
SETUVAR fish_pager_color_description:yellow\x1e\x2di
|
||||||
|
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||||
|
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||||
|
SETUVAR fish_pager_color_selected_background:\x2dr
|
||||||
|
SETUVAR fish_user_paths:/opt/homebrew/bin
|
||||||
|
SETUVAR pure_begin_prompt_with_current_directory:true
|
||||||
|
SETUVAR pure_check_for_new_release:false
|
||||||
|
SETUVAR pure_color_at_sign:pure_color_mute
|
||||||
|
SETUVAR pure_color_aws_profile:pure_color_warning
|
||||||
|
SETUVAR pure_color_command_duration:pure_color_warning
|
||||||
|
SETUVAR pure_color_current_directory:pure_color_primary
|
||||||
|
SETUVAR pure_color_danger:red
|
||||||
|
SETUVAR pure_color_dark:black
|
||||||
|
SETUVAR pure_color_git_branch:pure_color_mute
|
||||||
|
SETUVAR pure_color_git_dirty:pure_color_mute
|
||||||
|
SETUVAR pure_color_git_stash:pure_color_info
|
||||||
|
SETUVAR pure_color_git_unpulled_commits:pure_color_info
|
||||||
|
SETUVAR pure_color_git_unpushed_commits:pure_color_info
|
||||||
|
SETUVAR pure_color_hostname:pure_color_mute
|
||||||
|
SETUVAR pure_color_info:cyan
|
||||||
|
SETUVAR pure_color_jobs:pure_color_normal
|
||||||
|
SETUVAR pure_color_k8s_context:pure_color_success
|
||||||
|
SETUVAR pure_color_k8s_namespace:pure_color_primary
|
||||||
|
SETUVAR pure_color_k8s_prefix:pure_color_info
|
||||||
|
SETUVAR pure_color_light:white
|
||||||
|
SETUVAR pure_color_mute:brblack
|
||||||
|
SETUVAR pure_color_nixdevshell_prefix:pure_color_info
|
||||||
|
SETUVAR pure_color_nixdevshell_symbol:pure_color_mute
|
||||||
|
SETUVAR pure_color_normal:normal
|
||||||
|
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
|
||||||
|
SETUVAR pure_color_primary:blue
|
||||||
|
SETUVAR pure_color_prompt_on_error:pure_color_danger
|
||||||
|
SETUVAR pure_color_prompt_on_success:pure_color_success
|
||||||
|
SETUVAR pure_color_success:magenta
|
||||||
|
SETUVAR pure_color_system_time:pure_color_mute
|
||||||
|
SETUVAR pure_color_username_normal:pure_color_mute
|
||||||
|
SETUVAR pure_color_username_root:pure_color_light
|
||||||
|
SETUVAR pure_color_virtualenv:pure_color_mute
|
||||||
|
SETUVAR pure_color_warning:yellow
|
||||||
|
SETUVAR pure_enable_aws_profile:true
|
||||||
|
SETUVAR pure_enable_container_detection:true
|
||||||
|
SETUVAR pure_enable_git:true
|
||||||
|
SETUVAR pure_enable_k8s:false
|
||||||
|
SETUVAR pure_enable_nixdevshell:false
|
||||||
|
SETUVAR pure_enable_single_line_prompt:false
|
||||||
|
SETUVAR pure_enable_virtualenv:true
|
||||||
|
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
|
||||||
|
SETUVAR pure_separate_prompt_on_error:false
|
||||||
|
SETUVAR pure_shorten_prompt_current_directory_length:0
|
||||||
|
SETUVAR pure_shorten_window_title_current_directory_length:0
|
||||||
|
SETUVAR pure_show_jobs:false
|
||||||
|
SETUVAR pure_show_prefix_root_prompt:false
|
||||||
|
SETUVAR pure_show_subsecond_command_duration:false
|
||||||
|
SETUVAR pure_show_system_time:false
|
||||||
|
SETUVAR pure_symbol_aws_profile_prefix:
|
||||||
|
SETUVAR pure_symbol_container_prefix:
|
||||||
|
SETUVAR pure_symbol_git_dirty:\x2a
|
||||||
|
SETUVAR pure_symbol_git_stash:\u2261
|
||||||
|
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
|
||||||
|
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
|
||||||
|
SETUVAR pure_symbol_k8s_prefix:\u2638
|
||||||
|
SETUVAR pure_symbol_nixdevshell_prefix:\u2744\ufe0f
|
||||||
|
SETUVAR pure_symbol_prefix_root_prompt:\x23
|
||||||
|
SETUVAR pure_symbol_prompt:\U0001f3c2
|
||||||
|
SETUVAR pure_symbol_reverse_prompt:\u276e
|
||||||
|
SETUVAR pure_symbol_ssh_prefix:
|
||||||
|
SETUVAR pure_symbol_title_bar_separator:\x2d
|
||||||
|
SETUVAR pure_symbol_virtualenv_prefix:
|
||||||
|
SETUVAR pure_threshold_command_duration:5
|
||||||
|
SETUVAR pure_truncate_prompt_current_directory_keeps:\x2d1
|
||||||
|
SETUVAR pure_truncate_window_title_current_directory_keeps:\x2d1
|
|
@ -0,0 +1,3 @@
|
||||||
|
function !!
|
||||||
|
eval command sudo $history[1]
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
function backup_forgejo
|
||||||
|
set -l userdir "/Users/$USER/"
|
||||||
|
echo "Start backing up..." > $userdir/Documents/forgejo_backup/log
|
||||||
|
scp ubuntu@git.marsway.red:/home/ubuntu/forgejo.zip "$userdir/Documents/forgejo_backup/$(date +%Y%m%d).zip"
|
||||||
|
|
||||||
|
echo "Deleting old backs..."
|
||||||
|
find "$userdir/Documents/forgejo_backup/" -name "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].zip" -mtime +6 -ls >> $userdir/Documents/forgejo_backup/log
|
||||||
|
find "$userdir/Documents/forgejo_backup/" -name "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].zip" -mtime +6 -delete
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function du
|
||||||
|
command du -h -d 1 $argv[1]
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function fish_greeting
|
||||||
|
command neofetch
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function fish_title
|
||||||
|
prompt_pwd
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function g
|
||||||
|
command git $argv
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
function mc
|
||||||
|
mkdir -p $argv[1]
|
||||||
|
cd $argv[1]
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
function p
|
||||||
|
if contains -- -d $argv
|
||||||
|
# 如果参数中包含 -d
|
||||||
|
set -u all_proxy
|
||||||
|
else
|
||||||
|
set -x all_proxy "localhost:7897"
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function pd
|
||||||
|
command ~/.vvconfig/scripts/pd-crack.sh
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function sibelius_crack
|
||||||
|
command ~/.vvconfig/scripts/Seblius_2024.3_Trail_Reset.command
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
function tree
|
||||||
|
command tree -C $argv
|
||||||
|
end
|
|
@ -0,0 +1,587 @@
|
||||||
|
# docker.fish - docker completions for fish shell
|
||||||
|
#
|
||||||
|
# This file is generated by gen_docker_fish_completions.py from:
|
||||||
|
# https://github.com/barnybug/docker-fish-completion
|
||||||
|
#
|
||||||
|
# To install the completions:
|
||||||
|
# mkdir -p ~/.config/fish/completions
|
||||||
|
# cp docker.fish ~/.config/fish/completions
|
||||||
|
#
|
||||||
|
# Completion supported:
|
||||||
|
# - parameters
|
||||||
|
# - commands
|
||||||
|
# - containers
|
||||||
|
# - images
|
||||||
|
# - repositories
|
||||||
|
|
||||||
|
function __fish_docker_no_subcommand --description 'Test if docker has yet to be given the subcommand'
|
||||||
|
for i in (commandline -opc)
|
||||||
|
if contains -- $i attach build commit cp create diff events exec export history images import info inspect kill load login logout logs network pause port ps pull push rename restart rm rmi run save search start stop tag top trust unpause version wait stats
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_containers --description 'Print a list of docker containers' -a select
|
||||||
|
switch $select
|
||||||
|
case running
|
||||||
|
docker ps -a --no-trunc --filter status=running --format "{{.ID}}\n{{.Names}}" | tr ',' '\n'
|
||||||
|
case stopped
|
||||||
|
docker ps -a --no-trunc --filter status=exited --format "{{.ID}}\n{{.Names}}" | tr ',' '\n'
|
||||||
|
case all
|
||||||
|
docker ps -a --no-trunc --format "{{.ID}}\n{{.Names}}" | tr ',' '\n'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_networks --description 'Print a list of docker networks'
|
||||||
|
docker network ls --format "{{.ID}}\n{{.Name}}" | tr ',' '\n'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function __fish_docker_no_subcommand_trust --description 'Test if docker has yet to be given the trust subcommand'
|
||||||
|
if __fish_seen_subcommand_from trust
|
||||||
|
for i in (commandline -opc)
|
||||||
|
if contains -- $i inspect key revoke sign signer
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_docker_subcommand_path --description 'Test if command has all arguments in any order'
|
||||||
|
set -l cmd (commandline -poc)
|
||||||
|
set -e cmd[1]
|
||||||
|
for sub in $argv
|
||||||
|
if not contains -- $sub $cmd
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_docker_subcommand_path_without --description 'Test if command has all arguments in any order'
|
||||||
|
set -l cmd (commandline -poc)
|
||||||
|
set -e cmd[1]
|
||||||
|
for sub in $argv
|
||||||
|
if contains -- $sub $cmd
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_images --description 'Print a list of docker images'
|
||||||
|
docker images --format "{{.Repository}}:{{.Tag}}" | command grep -v '<none>'
|
||||||
|
end
|
||||||
|
|
||||||
|
function __fish_print_docker_repositories --description 'Print a list of docker repositories'
|
||||||
|
docker images --format "{{.Repository}}" | command grep -v '<none>' | command sort | command uniq
|
||||||
|
end
|
||||||
|
|
||||||
|
# common options
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s b -l bridge -d 'Attach containers to a pre-existing network bridge'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l bip -d "Use this CIDR notation address for the network bridge's IP, not compatible with -b"
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s D -l debug -d 'Enable debug mode'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s d -l daemon -d 'Enable daemon mode'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l dns -d 'Force Docker to use specific DNS servers'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l dns-opt -d 'Force Docker to use specific DNS options'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l dns-search -d 'Force Docker to use specific DNS search domains'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l exec-opt -d 'Set runtime execution options'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l fixed-cidr -d 'IPv4 subnet for fixed IPs (e.g. 10.20.0.0/16)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l fixed-cidr-v6 -d 'IPv6 subnet for fixed IPs (e.g.: 2001:a02b/48)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s G -l group -d 'Group to assign the unix socket specified by -H when running in daemon mode'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s g -l graph -d 'Path to use as the root of the Docker runtime'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s H -l host -d 'The socket(s) to bind to in daemon mode or connect to in client mode, specified using one or more tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s h -l help -d 'Print usage'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l icc -d 'Allow unrestricted inter-container and Docker daemon host communication'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l insecure-registry -d 'Enable insecure communication with specified registries (no certificate verification for HTTPS and enable HTTP fallback) (e.g., localhost:5000 or 10.20.0.0/16)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ip -d 'Default IP address to use when binding container ports'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ip-forward -d 'Enable net.ipv4.ip_forward and IPv6 forwarding if --fixed-cidr-v6 is defined. IPv6 forwarding may interfere with your existing IPv6 configuration when using Router Advertisement.'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ip-masq -d "Enable IP masquerading for bridge's IP range"
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l iptables -d "Enable Docker's addition of iptables rules"
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l ipv6 -d 'Enable IPv6 networking'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s l -l log-level -d 'Set the logging level ("debug", "info", "warn", "error", "fatal")'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l label -d 'Set key=value labels to the daemon (displayed in `docker info`)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l mtu -d 'Set the containers network MTU'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s p -l pidfile -d 'Path to use for daemon PID file'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l registry-mirror -d 'Specify a preferred registry mirror'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s s -l storage-driver -d 'Force the Docker runtime to use a specific storage driver'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l selinux-enabled -d 'Enable selinux support. SELinux does not presently support the BTRFS storage driver'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l storage-opt -d 'Set storage driver options'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tls -d 'Use TLS; implied by --tlsverify'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlscacert -d 'Trust only remotes providing a certificate signed by the CA given here'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlscert -d 'Path to TLS certificate file'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlskey -d 'Path to TLS key file'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -l tlsverify -d 'Use TLS and verify the remote (daemon: verify client, client: verify daemon)'
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -s v -l version -d 'Print version information and quit'
|
||||||
|
|
||||||
|
# subcommands
|
||||||
|
# attach
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a attach -d 'Attach local standard input, output, and error streams to a running container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l detach-keys -d 'Override the key sequence for detaching a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l no-stdin -d 'Do not attach STDIN'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -l sig-proxy -d 'Proxy all received signals to the process'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from attach' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# build
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a build -d 'Build an image from a Dockerfile'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l add-host -d 'Add a custom host-to-IP mapping (host:ip)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l build-arg -d 'Set build-time variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cache-from -d 'Images to consider as cache sources'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cgroup-parent -d 'Optional parent cgroup for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l compress -d 'Compress the build context using gzip'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpu-period -d 'Limit the CPU CFS (Completely Fair Scheduler) period'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpu-quota -d 'Limit the CPU CFS (Completely Fair Scheduler) quota'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s c -l cpu-shares -d 'CPU shares (relative weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpuset-cpus -d 'CPUs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l cpuset-mems -d 'MEMs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l disable-content-trust -d 'Skip image verification'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s f -l file -d "Name of the Dockerfile (Default is ‘PATH/Dockerfile’)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l force-rm -d 'Always remove intermediate containers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l iddfile -d 'Write the image ID to the file'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l isolation -d 'Container isolation technology'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l label -d 'Set metadata for an image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s m -l memory -d 'Memory limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l memory-swap -d 'Swap limit equal to memory plus swap: ‘-1’ to enable unlimited swap'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l network -d 'Set the networking mode for the RUN instructions during build'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l no-cache -d 'Do not use cache when building the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l pull -d 'Always attempt to pull a newer version of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s q -l quiet -d 'Suppress the build output and print image ID on success'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l rm -d 'Remove intermediate containers after a successful build'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l security-opt -d 'Security options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l shm-size -d 'Size of /dev/shm'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -s t -l tag -d 'Name and optionally a tag in the ‘name:tag’ format'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l target -d 'Set the target build stage to build'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from build' -l ulimit -d 'Ulimit options'
|
||||||
|
|
||||||
|
# commit
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a commit -d "Create a new image from a container's changes"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s a -l author -d 'Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s c -l change -d 'Apply Dockerfile instruction to the created image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s m -l message -d 'Commit message'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -s p -l pause -d 'Pause container during commit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from commit' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# cp
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a cp -d "Copy files/folders between a container and the local filesystem"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from cp' -s a -l archive -d 'Archive mode (copy all uid/gid information)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from cp' -s L -l follow-link -d 'Always follow symbol link in SRC_PATH'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from cp' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# create
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a create -d 'Create a new container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l add-host -d 'Add a custom host-to-IP mapping (host:ip)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l annotation -d 'Add an annotation to the container (passed through to the OCI runtime)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s a -l attach -d 'Attach to STDIN, STDOUT or STDERR.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l blkio-weight -d 'Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l blkio-weight-device -d 'Block IO weight (relative device weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cap-add -d 'Add Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cap-drop -d 'Drop Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cgroupns -d 'Cgroup namespace mode to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cgroup-parent -d 'Optional parent cgroup for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cidfile -d 'Write the container ID to the file'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-count -d 'CPU count (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-percent -d 'CPU percent (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-period -d 'Limit CPU CFS (Completely Fair Scheduler) period'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-quota -d 'Limit CPU CFS (Completely Fair Scheduler) quota'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-rt-period -d 'Limit CPU real-time period in microseconds'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-rt-runtime -d 'Limit CPU real-time runtime in microseconds'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpu-shares -d 'CPU shares (relative weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpus -d 'Number of CPUs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpuset-cpus -d 'CPUs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l cpuset-mems -d 'MEMs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device -d 'Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc:rwm)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-cgroup-rule -d 'Add a rule to the cgroup allowed devices list'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-read-bps -d 'Limit read rate (bytes per second) from a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-read-iops -d 'Limit read rate (IO per second) from a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-write-bps -d 'Limit write rate (bytes per second) to a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-write-iops -d 'Limit write rate (IO per second) to a device'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l disable-content-trust -d 'Skip image verification'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns -d 'Set custom DNS servers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns-opt -d 'Set DNS options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns-option -d 'Set DNS options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l dns-search -d 'Set custom DNS search domains'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s e -l env -d 'Set environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l entrypoint -d 'Overwrite the default ENTRYPOINT of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l env-file -d 'Read in a line delimited file of environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l expose -d 'Expose a port or a range of ports'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l group-add -d 'Add additional groups to join'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-cmd -d 'Command to run to check health'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-interval -d 'Time between running the check (ms|s|m|h) (default 0s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-retries -d 'Consecutive failures needed to report unhealthy'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-start-period -d 'Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l health-timeout -d 'Maximum time to allow one check to run (ms|s|m|h) (default 0s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s h -l hostname -d 'Container host name'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l init -d 'Run an init inside the container that forwards signals and reaps processes'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s i -l interactive -d 'Keep STDIN open even if not attached'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l io-maxbandwidth -d 'Maximum IO bandwidth limit for the system drive (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l io-maxiops -d 'Maximum IOps limit for the system drive (Windows only)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ip -d 'IPv4 address (e.g., 172.30.100.104)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ip6 -d 'IPv6 address (e.g., 2001:db8::33)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ipc -d 'IPC mode to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l isolation -d 'Container isolation technology'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l kernel-memory -d 'Kernel memory limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s l -l label -d 'Set meta data on a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l label-file -d 'Read in a line delimited file of labels'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l link -d 'Add link to another container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l link-local-ip -d 'Container IPv4/IPv6 link-local addresses'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l log-driver -d 'Logging driver for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l log-opt -d 'Log driver options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l mac-address -d 'Container MAC address (e.g., 92:d0:c6:0a:29:33)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s m -l memory -d 'Memory limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l memory-reservation -d 'Memory soft limit'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l memory-swap -d 'Swap limit equal to memory plus swap: ‘-1’ to enable unlimited swap'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l memory-swappiness -d 'Tune container memory swappiness (0 to 100)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l mount -d 'Attach a filesystem mount to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l name -d 'Assign a name to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s net -l network -d 'Connect a container to a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s net-alias -l network-alias -d 'Add network-scoped alias for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l no-healthcheck -d 'Disable any container-specified HEALTHCHECK'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l oom-kill-disable -d 'Disable OOM Killer'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l oom-score-adj -d 'Tune host’s OOM preferences (-1000 to 1000)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l pid -d 'PID namespace to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l pids-limit -d 'Tune container pids limit (set -1 for unlimited )'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l privileged -d 'Give extended privileges to this container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s p -l publish -d "Publish a container’s port(s) to the host"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s P -l publish-all -d 'Publish all exposed ports to random ports'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l read-only -d "Mount the container's root filesystem as read only"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l restart -d 'Restart policy to apply when a container exits'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l rm -d 'Automatically remove the container when it exits'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l runtime -d 'Runtime to use for this container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l security-opt -d 'Security Options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l shm-size -d 'Size of /dev/shm'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l stop-signal -d 'Signal to stop a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l stop-timeout -d 'Timeout (in seconds) to stop a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l storage-opt -d 'Storage driver options for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l sysctl -d 'Sysctl options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l tmpfs -d 'Mount a tmpfs directory'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s t -l tty -d 'Allocate a pseudo-TTY'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l ulimit -d 'Ulimit options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s u -l user -d ' Username or UID (format: <name|uid>[:<group|gid>])'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l userns -d 'User namespace to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l uts -d 'UTS namespace to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s v -l volume -d 'Bind mount a volume'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l volume-driver -d 'Optional volume driver for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l volumes-from -d 'Mount volumes from the specified container(s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -s w -l workdir -d 'Working directory inside the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# diff
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a diff -d "Inspect changes on a container's filesystem"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from diff' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from diff' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# events
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a events -d 'Get real time events from the server'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -s f -l filter -d "Filter output based on conditions provided"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l format -d 'Format the output using the given Go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l since -d 'Show all events created since timestamp'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from events' -l until -d 'Stream events until this timestamp'
|
||||||
|
|
||||||
|
# exec
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a exec -d 'Execute a command in a running container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s d -l detach -d 'Detached mode: run command in the background'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -l detach-keys -d 'Override the key sequence for detaching a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s e -l env -d 'Set environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s i -l interactive -d 'Keep STDIN open even if not attached'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -l privileged -d 'Give extended privileges to the command'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s t -l tty -d 'Allocate a pseudo-TTY'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s u -l user -d 'Username or UID (format: <name|uid>[:<group|gid>])'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -s w -l workdir -d 'Working directory inside the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from exec' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# export
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a export -d 'Stream the contents of a container as a tar archive'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from export' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from export' -s o -l output -d 'Write to a file, instead of STDOUT'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from export' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# history
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a history -d 'Show the history of an image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -l format -d 'Format the output using the given Go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -s H -l human -d 'Print sizes and dates in human readable format'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -s q -l quiet -d 'Only show image IDs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from history' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# images
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a images -d 'List images'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -s a -l all -d 'Show all images (default hides intermediate images)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l digests -d 'Show digests'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -s f -l filter -d 'Filter output based on conditions provided'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l format -d 'Format the output using the given Go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -s q -l quiet -d 'Only show image IDs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from images' -a '(__fish_print_docker_repositories)' -d "Repository"
|
||||||
|
|
||||||
|
# import
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a import -d 'Create a new filesystem image from the contents of a tarball'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from import' -s c -l change -d 'Apply Dockerfile instruction to the created image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from import' -s m -l message -d 'Set commit message for imported image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from import' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# info
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a info -d 'Display system-wide information'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from info' -s f -l format -d 'Format the output using the given go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from info' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# inspect
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a inspect -d 'Return low-level information on a container or image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -s f -l format -d 'Format the output using the given go template.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -s s -l size -d 'Display total file sizes if the type is container.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -l type -d 'Return JSON for specified type'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from inspect' -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# kill
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a kill -d 'Kill a running container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from kill' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from kill' -s s -l signal -d 'Signal to send to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from kill' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# load
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a load -d 'Load an image from a tar archive'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from load' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from load' -s i -l input -d 'Read from a tar archive file, instead of STDIN'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from load' -s q -l quiet -d 'Suppress the load output'
|
||||||
|
|
||||||
|
# login
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a login -d 'Log in to a registry'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -s p -l password -d 'Password'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -l password-stdin -d 'Take the password from stdin'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from login' -s u -l username -d 'Username'
|
||||||
|
|
||||||
|
# logout
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a logout -d 'Log out from a registry'
|
||||||
|
|
||||||
|
# logs
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a logs -d 'Fetch the logs of a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -s f -l follow -d 'Follow log output'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -s t -l timestamps -d 'Show timestamps'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -l since -d 'Show logs since timestamp'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -s n -l tail -d 'Output the specified number of lines at the end of logs (defaults to all logs)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from logs' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# network
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a network -d 'Manage networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a connect -d 'Connect a container to a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a create -d 'Create a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a disconnect -d 'Disconnect a container from a network'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a inspect -d 'Display detailed information on one or more networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a ls -d 'List networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a prune -d 'Remove all unused networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -a rm -d 'Remove one or more networks'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network rm' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network connect' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network disconnect' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from network inspect' -a '(__fish_print_docker_networks)' -d "Network"
|
||||||
|
|
||||||
|
# port
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a port -d 'Lookup the public-facing port that is NAT-ed to PRIVATE_PORT'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from port' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from port' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# pause
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a pause -d 'Pause all processes within a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pause' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# ps
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a ps -d 'List containers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s a -l all -d 'Show all containers. Only running containers are shown by default.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l before -d 'Show only container created before Id or Name, include non-running ones.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s f -l filter -d 'Provide filter values. Valid filters:'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s l -l latest -d 'Show only the latest created container, include non-running ones.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s n -d 'Show n last created containers, include non-running ones.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s q -l quiet -d 'Only display container IDs'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -s s -l size -d 'Display total file sizes'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from ps' -l since -d 'Show only containers created since Id or Name, include non-running ones.'
|
||||||
|
|
||||||
|
# pull
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a pull -d 'Download an image from a registry'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -s a -l all-tags -d 'Download all tagged images in the repository'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from pull' -a '(__fish_print_docker_repositories)' -d "Repository"
|
||||||
|
|
||||||
|
# push
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a push -d 'Upload an image to a registry'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from push' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from push' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from push' -a '(__fish_print_docker_repositories)' -d "Repository"
|
||||||
|
|
||||||
|
# rename
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a rename -d 'Rename an existing container'
|
||||||
|
|
||||||
|
# restart
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a restart -d 'Restart a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from restart' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from restart' -s t -l time -d 'Number of seconds to try to stop for before killing the container. Once killed it will then be restarted. Default is 10 seconds.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from restart' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# rm
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a rm -d 'Remove one or more containers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s f -l force -d 'Force the removal of a running container (uses SIGKILL)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s l -l link -d 'Remove the specified link and not the underlying container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s v -l volumes -d 'Remove anonymous volumes associated with the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -a '(__fish_print_docker_containers stopped)' -d "Container"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rm' -s f -l force -a '(__fish_print_docker_containers all)' -d "Container"
|
||||||
|
|
||||||
|
# rmi
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a rmi -d 'Remove one or more images'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -s f -l force -d 'Force removal of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -l no-prune -d 'Do not delete untagged parents'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from rmi' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# run
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a run -d 'Create and run a new container from an image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l annotation -d 'Add an annotation to the container (passed through to the OCI runtime)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s a -l attach -d 'Attach to STDIN, STDOUT or STDERR.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l add-host -d 'Add a custom host-to-IP mapping (host:ip)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s c -l cpu-shares -d 'CPU shares (relative weight)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cap-add -d 'Add Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cap-drop -d 'Drop Linux capabilities'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cidfile -d 'Write the container ID to the file'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cgroupns -d 'Cgroup namespace mode to use'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l cpuset -d 'CPUs in which to allow execution (0-3, 0,1)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s d -l detach -d 'Detached mode: run the container in the background and print the new container ID'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l device -d 'Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc:rwm)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l device-cgroup-rule -d 'Add a rule to the cgroup allowed devices list (e.g. --device-cgroup-rule="c 13:37 rwm")'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l dns -d 'Set custom DNS servers'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l dns-opt -d "Set custom DNS options (Use --dns-opt='' if you don't wish to set options)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l dns-search -d "Set custom DNS search domains (Use --dns-search=. if you don't wish to set the search domain)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s e -l env -d 'Set environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l entrypoint -d 'Overwrite the default ENTRYPOINT of the image'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l env-file -d 'Read in a line delimited file of environment variables'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l expose -d 'Expose a port or a range of ports (e.g. --expose=3300-3310) from the container without publishing it to your host'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from create' -l group-add -d 'Add additional groups to run as'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s h -l hostname -d 'Container host name'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s i -l interactive -d 'Keep STDIN open even if not attached'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l ipc -d 'Default is to create a private IPC namespace (POSIX SysV IPC) for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l link -d 'Add link to another container in the form of <name|id>:alias'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s m -l memory -d 'Memory limit (format: <number>[<unit>], where unit = b, k, m or g)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l mac-address -d 'Container MAC address (e.g., 92:d0:c6:0a:29:33)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l memory-swap -d "Total memory usage (memory + swap), set '-1' to disable swap (format: <number>[<unit>], where unit = b, k, m or g)"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l mount -d 'Attach a filesystem mount to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l name -d 'Assign a name to the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l net -d 'Set the Network mode for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s P -l publish-all -d 'Publish all exposed ports to random ports on the host interfaces'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s p -l publish -d "Publish a container's port to the host"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l pid -d 'Default is to create a private PID namespace for the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l privileged -d 'Give extended privileges to this container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l read-only -d "Mount the container's root filesystem as read only"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l restart -d 'Restart policy to apply when a container exits (no, on-failure[:max-retry], always)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l rm -d 'Automatically remove the container when it exits (incompatible with -d)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l security-opt -d 'Security Options'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l sig-proxy -d 'Proxy received signals to the process (non-TTY mode only). SIGCHLD, SIGSTOP, and SIGKILL are not proxied.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l stop-signal -d 'Signal to kill a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s t -l tty -d 'Allocate a pseudo-TTY'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s u -l user -d 'Username or UID'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l tmpfs -d 'Mount tmpfs on a directory'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s v -l volume -d 'Bind mount a volume (e.g., from the host: -v /host:/container, from Docker: -v /container)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -l volumes-from -d 'Mount volumes from the specified container(s)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -s w -l workdir -d 'Working directory inside the container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from run' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# save
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a save -d 'Save an image to a tar archive'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from save' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from save' -s o -l output -d 'Write to an file, instead of STDOUT'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from save' -a '(__fish_print_docker_images)' -d "Image"
|
||||||
|
|
||||||
|
# search
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a search -d 'Search for an image on the registry (defaults to the Docker Hub)'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -l automated -d 'Only show automated builds'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -l no-trunc -d "Don't truncate output"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from search' -s s -l stars -d 'Only displays with at least x stars'
|
||||||
|
|
||||||
|
# start
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a start -d 'Start a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -s a -l attach -d "Attach container's STDOUT and STDERR and forward all signals to the process"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -s i -l interactive -d "Attach container's STDIN"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from start' -a '(__fish_print_docker_containers stopped)' -d "Container"
|
||||||
|
|
||||||
|
# stats
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a stats -d "Display a live stream of one or more containers' resource usage statistics"
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stats' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stats' -l no-stream -d 'Disable streaming stats and only pull the first result'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stats' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# stop
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a stop -d 'Stop a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stop' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stop' -s t -l time -d 'Number of seconds to wait for the container to stop before killing it. Default is 10 seconds.'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from stop' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# tag
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a tag -d 'Tag an image into a repository'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from tag' -s f -l force -d 'Force'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from tag' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# top
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a top -d 'Lookup the running processes of a container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from top' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from top' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
#trust
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a trust -d 'Manage trust on Docker images'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from trust' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
#trust inspect
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a inspect -d 'Return low-level information about keys and signatures'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust inspect' -l pretty -d 'Print the information in a human friendly format'
|
||||||
|
|
||||||
|
#trust key
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a key -d 'Manage keys for signing Docker images'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key; and __fish_docker_subcommand_path_without generate load' -a generate -d 'Generate and load a signing key-pair'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key load' -l dir -d 'Directory to generate key in, defaults to current directory'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key; and __fish_docker_subcommand_path_without generate load' -a load -d 'Load a private key file for signing'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust key load' -l name -d 'Name for the loaded key (default "signer")'
|
||||||
|
|
||||||
|
#trust revoke
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a revoke -d 'Remove trust for an image'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust revoke' -s y -l yes -d 'Do not prompt for confirmation'
|
||||||
|
|
||||||
|
#trust sign
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a sign -d 'Sign an image'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust sign' -l local -d 'Sign a locally tagged image'
|
||||||
|
|
||||||
|
#trust signer
|
||||||
|
complete -c docker -A -f -n '__fish_docker_no_subcommand_trust' -a signer -d 'Manage entities who can sign Docker images'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust signer; and __fish_docker_subcommand_path_without add remove' -a add -d 'Add a signer'
|
||||||
|
complete -c docker -A -f -n '__fish_docker_subcommand_path trust signer; and __fish_docker_subcommand_path_without add remove' -a remove -d 'remove a signer'
|
||||||
|
|
||||||
|
# unpause
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a unpause -d 'Unpause a paused container'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from unpause' -a '(__fish_print_docker_containers running)' -d "Container"
|
||||||
|
|
||||||
|
# version
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a version -d 'Show the Docker version information'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from version' -s f -l format -d 'Format the output using the given go template'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from version' -l help -d 'Print usage'
|
||||||
|
|
||||||
|
# wait
|
||||||
|
complete -c docker -f -n '__fish_docker_no_subcommand' -a wait -d 'Block until a container stops, then print its exit code'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from wait' -l help -d 'Print usage'
|
||||||
|
complete -c docker -A -f -n '__fish_seen_subcommand_from wait' -a '(__fish_print_docker_containers running)' -d "Container"
|
|
@ -0,0 +1,249 @@
|
||||||
|
|
||||||
|
# Copyright 2016 The Kubernetes Authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
# fish completion for kubectl -*- shell-script -*-
|
||||||
|
|
||||||
|
function __kubectl_debug
|
||||||
|
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||||
|
if test -n "$file"
|
||||||
|
echo "$argv" >> $file
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function __kubectl_perform_completion
|
||||||
|
__kubectl_debug "Starting __kubectl_perform_completion"
|
||||||
|
|
||||||
|
# Extract all args except the last one
|
||||||
|
set -l args (commandline -opc)
|
||||||
|
# Extract the last arg and escape it in case it is a space
|
||||||
|
set -l lastArg (string escape -- (commandline -ct))
|
||||||
|
|
||||||
|
__kubectl_debug "args: $args"
|
||||||
|
__kubectl_debug "last arg: $lastArg"
|
||||||
|
|
||||||
|
# Disable ActiveHelp which is not supported for fish shell
|
||||||
|
set -l requestComp "KUBECTL_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
|
||||||
|
|
||||||
|
__kubectl_debug "Calling $requestComp"
|
||||||
|
set -l results (eval $requestComp 2> /dev/null)
|
||||||
|
|
||||||
|
# Some programs may output extra empty lines after the directive.
|
||||||
|
# Let's ignore them or else it will break completion.
|
||||||
|
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||||
|
for line in $results[-1..1]
|
||||||
|
if test (string trim -- $line) = ""
|
||||||
|
# Found an empty line, remove it
|
||||||
|
set results $results[1..-2]
|
||||||
|
else
|
||||||
|
# Found non-empty line, we have our proper output
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l comps $results[1..-2]
|
||||||
|
set -l directiveLine $results[-1]
|
||||||
|
|
||||||
|
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||||
|
# completions must be prefixed with the flag
|
||||||
|
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||||
|
|
||||||
|
__kubectl_debug "Comps: $comps"
|
||||||
|
__kubectl_debug "DirectiveLine: $directiveLine"
|
||||||
|
__kubectl_debug "flagPrefix: $flagPrefix"
|
||||||
|
|
||||||
|
for comp in $comps
|
||||||
|
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||||
|
end
|
||||||
|
|
||||||
|
printf "%s\n" "$directiveLine"
|
||||||
|
end
|
||||||
|
|
||||||
|
# this function limits calls to __kubectl_perform_completion, by caching the result behind $__kubectl_perform_completion_once_result
|
||||||
|
function __kubectl_perform_completion_once
|
||||||
|
__kubectl_debug "Starting __kubectl_perform_completion_once"
|
||||||
|
|
||||||
|
if test -n "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "Seems like a valid result already exists, skipping __kubectl_perform_completion"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
set --global __kubectl_perform_completion_once_result (__kubectl_perform_completion)
|
||||||
|
if test -z "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "No completions, probably due to a failure"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
__kubectl_debug "Performed completions and set __kubectl_perform_completion_once_result"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# this function is used to clear the $__kubectl_perform_completion_once_result variable after completions are run
|
||||||
|
function __kubectl_clear_perform_completion_once_result
|
||||||
|
__kubectl_debug ""
|
||||||
|
__kubectl_debug "========= clearing previously set __kubectl_perform_completion_once_result variable =========="
|
||||||
|
set --erase __kubectl_perform_completion_once_result
|
||||||
|
__kubectl_debug "Succesfully erased the variable __kubectl_perform_completion_once_result"
|
||||||
|
end
|
||||||
|
|
||||||
|
function __kubectl_requires_order_preservation
|
||||||
|
__kubectl_debug ""
|
||||||
|
__kubectl_debug "========= checking if order preservation is required =========="
|
||||||
|
|
||||||
|
__kubectl_perform_completion_once
|
||||||
|
if test -z "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "Error determining if order preservation is required"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l directive (string sub --start 2 $__kubectl_perform_completion_once_result[-1])
|
||||||
|
__kubectl_debug "Directive is: $directive"
|
||||||
|
|
||||||
|
set -l shellCompDirectiveKeepOrder 32
|
||||||
|
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
|
||||||
|
__kubectl_debug "Keeporder is: $keeporder"
|
||||||
|
|
||||||
|
if test $keeporder -ne 0
|
||||||
|
__kubectl_debug "This does require order preservation"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
__kubectl_debug "This doesn't require order preservation"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# This function does two things:
|
||||||
|
# - Obtain the completions and store them in the global __kubectl_comp_results
|
||||||
|
# - Return false if file completion should be performed
|
||||||
|
function __kubectl_prepare_completions
|
||||||
|
__kubectl_debug ""
|
||||||
|
__kubectl_debug "========= starting completion logic =========="
|
||||||
|
|
||||||
|
# Start fresh
|
||||||
|
set --erase __kubectl_comp_results
|
||||||
|
|
||||||
|
__kubectl_perform_completion_once
|
||||||
|
__kubectl_debug "Completion results: $__kubectl_perform_completion_once_result"
|
||||||
|
|
||||||
|
if test -z "$__kubectl_perform_completion_once_result"
|
||||||
|
__kubectl_debug "No completion, probably due to a failure"
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l directive (string sub --start 2 $__kubectl_perform_completion_once_result[-1])
|
||||||
|
set --global __kubectl_comp_results $__kubectl_perform_completion_once_result[1..-2]
|
||||||
|
|
||||||
|
__kubectl_debug "Completions are: $__kubectl_comp_results"
|
||||||
|
__kubectl_debug "Directive is: $directive"
|
||||||
|
|
||||||
|
set -l shellCompDirectiveError 1
|
||||||
|
set -l shellCompDirectiveNoSpace 2
|
||||||
|
set -l shellCompDirectiveNoFileComp 4
|
||||||
|
set -l shellCompDirectiveFilterFileExt 8
|
||||||
|
set -l shellCompDirectiveFilterDirs 16
|
||||||
|
|
||||||
|
if test -z "$directive"
|
||||||
|
set directive 0
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||||
|
if test $compErr -eq 1
|
||||||
|
__kubectl_debug "Received error directive: aborting."
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||||
|
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||||
|
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||||
|
__kubectl_debug "File extension filtering or directory filtering not supported"
|
||||||
|
# Do full file completion instead
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||||
|
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||||
|
|
||||||
|
__kubectl_debug "nospace: $nospace, nofiles: $nofiles"
|
||||||
|
|
||||||
|
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||||
|
# we need to count the number of valid completions.
|
||||||
|
# To do so, we will filter on prefix as the completions we have received
|
||||||
|
# may not already be filtered so as to allow fish to match on different
|
||||||
|
# criteria than the prefix.
|
||||||
|
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||||
|
set -l prefix (commandline -t | string escape --style=regex)
|
||||||
|
__kubectl_debug "prefix: $prefix"
|
||||||
|
|
||||||
|
set -l completions (string match -r -- "^$prefix.*" $__kubectl_comp_results)
|
||||||
|
set --global __kubectl_comp_results $completions
|
||||||
|
__kubectl_debug "Filtered completions are: $__kubectl_comp_results"
|
||||||
|
|
||||||
|
# Important not to quote the variable for count to work
|
||||||
|
set -l numComps (count $__kubectl_comp_results)
|
||||||
|
__kubectl_debug "numComps: $numComps"
|
||||||
|
|
||||||
|
if test $numComps -eq 1; and test $nospace -ne 0
|
||||||
|
# We must first split on \t to get rid of the descriptions to be
|
||||||
|
# able to check what the actual completion will be.
|
||||||
|
# We don't need descriptions anyway since there is only a single
|
||||||
|
# real completion which the shell will expand immediately.
|
||||||
|
set -l split (string split --max 1 \t $__kubectl_comp_results[1])
|
||||||
|
|
||||||
|
# Fish won't add a space if the completion ends with any
|
||||||
|
# of the following characters: @=/:.,
|
||||||
|
set -l lastChar (string sub -s -1 -- $split)
|
||||||
|
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||||
|
# In other cases, to support the "nospace" directive we trick the shell
|
||||||
|
# by outputting an extra, longer completion.
|
||||||
|
__kubectl_debug "Adding second completion to perform nospace directive"
|
||||||
|
set --global __kubectl_comp_results $split[1] $split[1].
|
||||||
|
__kubectl_debug "Completions are now: $__kubectl_comp_results"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||||
|
# To be consistent with bash and zsh, we only trigger file
|
||||||
|
# completion when there are no other completions
|
||||||
|
__kubectl_debug "Requesting file completion"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||||
|
# so we can properly delete any completions provided by another script.
|
||||||
|
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||||
|
# the existing completions will only be loaded if the program can be found.
|
||||||
|
if type -q "kubectl"
|
||||||
|
# The space after the program name is essential to trigger completion for the program
|
||||||
|
# and not completion of the program name itself.
|
||||||
|
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||||
|
complete --do-complete "kubectl " > /dev/null 2>&1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||||
|
complete -c kubectl -e
|
||||||
|
|
||||||
|
# this will get called after the two calls below and clear the $__kubectl_perform_completion_once_result global
|
||||||
|
complete -c kubectl -n '__kubectl_clear_perform_completion_once_result'
|
||||||
|
# The call to __kubectl_prepare_completions will setup __kubectl_comp_results
|
||||||
|
# which provides the program's completion choices.
|
||||||
|
# If this doesn't require order preservation, we don't use the -k flag
|
||||||
|
complete -c kubectl -n 'not __kubectl_requires_order_preservation && __kubectl_prepare_completions' -f -a '$__kubectl_comp_results'
|
||||||
|
# otherwise we use the -k flag
|
||||||
|
complete -k -c kubectl -n '__kubectl_requires_order_preservation && __kubectl_prepare_completions' -f -a '$__kubectl_comp_results'
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Path to Oh My Fish install.
|
||||||
|
set -q XDG_DATA_HOME
|
||||||
|
and set -gx OMF_PATH "$XDG_DATA_HOME/omf"
|
||||||
|
or set -gx OMF_PATH "$HOME/.local/share/omf"
|
||||||
|
|
||||||
|
# Load Oh My Fish configuration.
|
||||||
|
source $OMF_PATH/init.fish
|
|
@ -0,0 +1,3 @@
|
||||||
|
if status is-interactive
|
||||||
|
# Commands to run in interactive sessions can go here
|
||||||
|
end
|
|
@ -0,0 +1,98 @@
|
||||||
|
# This file contains fish universal variable definitions.
|
||||||
|
# VERSION: 3.0
|
||||||
|
SETUVAR __fish_initialized:3800
|
||||||
|
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||||
|
SETUVAR fish_color_autosuggestion:brblack
|
||||||
|
SETUVAR fish_color_cancel:\x2dr
|
||||||
|
SETUVAR fish_color_command:normal
|
||||||
|
SETUVAR fish_color_comment:red
|
||||||
|
SETUVAR fish_color_cwd:green
|
||||||
|
SETUVAR fish_color_cwd_root:red
|
||||||
|
SETUVAR fish_color_end:green
|
||||||
|
SETUVAR fish_color_error:brred
|
||||||
|
SETUVAR fish_color_escape:brcyan
|
||||||
|
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_host:normal
|
||||||
|
SETUVAR fish_color_host_remote:yellow
|
||||||
|
SETUVAR fish_color_normal:normal
|
||||||
|
SETUVAR fish_color_operator:brcyan
|
||||||
|
SETUVAR fish_color_param:cyan
|
||||||
|
SETUVAR fish_color_quote:yellow
|
||||||
|
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_status:red
|
||||||
|
SETUVAR fish_color_user:brgreen
|
||||||
|
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||||
|
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||||
|
SETUVAR fish_pager_color_completion:normal
|
||||||
|
SETUVAR fish_pager_color_description:yellow\x1e\x2di
|
||||||
|
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||||
|
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||||
|
SETUVAR fish_pager_color_selected_background:\x2dr
|
||||||
|
SETUVAR pure_begin_prompt_with_current_directory:true
|
||||||
|
SETUVAR pure_check_for_new_release:false
|
||||||
|
SETUVAR pure_color_at_sign:pure_color_mute
|
||||||
|
SETUVAR pure_color_aws_profile:pure_color_warning
|
||||||
|
SETUVAR pure_color_command_duration:pure_color_warning
|
||||||
|
SETUVAR pure_color_current_directory:pure_color_primary
|
||||||
|
SETUVAR pure_color_danger:red
|
||||||
|
SETUVAR pure_color_dark:black
|
||||||
|
SETUVAR pure_color_git_branch:pure_color_mute
|
||||||
|
SETUVAR pure_color_git_dirty:pure_color_mute
|
||||||
|
SETUVAR pure_color_git_stash:pure_color_info
|
||||||
|
SETUVAR pure_color_git_unpulled_commits:pure_color_info
|
||||||
|
SETUVAR pure_color_git_unpushed_commits:pure_color_info
|
||||||
|
SETUVAR pure_color_hostname:pure_color_mute
|
||||||
|
SETUVAR pure_color_info:cyan
|
||||||
|
SETUVAR pure_color_jobs:pure_color_normal
|
||||||
|
SETUVAR pure_color_k8s_context:pure_color_success
|
||||||
|
SETUVAR pure_color_k8s_namespace:pure_color_primary
|
||||||
|
SETUVAR pure_color_k8s_prefix:pure_color_info
|
||||||
|
SETUVAR pure_color_light:white
|
||||||
|
SETUVAR pure_color_mute:brblack
|
||||||
|
SETUVAR pure_color_nixdevshell_prefix:pure_color_info
|
||||||
|
SETUVAR pure_color_nixdevshell_symbol:pure_color_mute
|
||||||
|
SETUVAR pure_color_normal:normal
|
||||||
|
SETUVAR pure_color_prefix_root_prompt:pure_color_danger
|
||||||
|
SETUVAR pure_color_primary:blue
|
||||||
|
SETUVAR pure_color_prompt_on_error:pure_color_danger
|
||||||
|
SETUVAR pure_color_prompt_on_success:pure_color_success
|
||||||
|
SETUVAR pure_color_success:magenta
|
||||||
|
SETUVAR pure_color_system_time:pure_color_mute
|
||||||
|
SETUVAR pure_color_username_normal:pure_color_mute
|
||||||
|
SETUVAR pure_color_username_root:pure_color_light
|
||||||
|
SETUVAR pure_color_virtualenv:pure_color_mute
|
||||||
|
SETUVAR pure_color_warning:yellow
|
||||||
|
SETUVAR pure_enable_aws_profile:true
|
||||||
|
SETUVAR pure_enable_container_detection:true
|
||||||
|
SETUVAR pure_enable_git:true
|
||||||
|
SETUVAR pure_enable_k8s:false
|
||||||
|
SETUVAR pure_enable_nixdevshell:false
|
||||||
|
SETUVAR pure_enable_single_line_prompt:false
|
||||||
|
SETUVAR pure_enable_virtualenv:true
|
||||||
|
SETUVAR pure_reverse_prompt_symbol_in_vimode:true
|
||||||
|
SETUVAR pure_separate_prompt_on_error:false
|
||||||
|
SETUVAR pure_shorten_prompt_current_directory_length:0
|
||||||
|
SETUVAR pure_shorten_window_title_current_directory_length:0
|
||||||
|
SETUVAR pure_show_jobs:false
|
||||||
|
SETUVAR pure_show_prefix_root_prompt:false
|
||||||
|
SETUVAR pure_show_subsecond_command_duration:false
|
||||||
|
SETUVAR pure_show_system_time:false
|
||||||
|
SETUVAR pure_symbol_aws_profile_prefix:
|
||||||
|
SETUVAR pure_symbol_container_prefix:
|
||||||
|
SETUVAR pure_symbol_git_dirty:\x2a
|
||||||
|
SETUVAR pure_symbol_git_stash:\u2261
|
||||||
|
SETUVAR pure_symbol_git_unpulled_commits:\u21e3
|
||||||
|
SETUVAR pure_symbol_git_unpushed_commits:\u21e1
|
||||||
|
SETUVAR pure_symbol_k8s_prefix:\u2638
|
||||||
|
SETUVAR pure_symbol_nixdevshell_prefix:\u2744\ufe0f
|
||||||
|
SETUVAR pure_symbol_prefix_root_prompt:\x23
|
||||||
|
SETUVAR pure_symbol_prompt:\U0001f3c2
|
||||||
|
SETUVAR pure_symbol_reverse_prompt:\u276e
|
||||||
|
SETUVAR pure_symbol_ssh_prefix:
|
||||||
|
SETUVAR pure_symbol_title_bar_separator:\x2d
|
||||||
|
SETUVAR pure_symbol_virtualenv_prefix:
|
||||||
|
SETUVAR pure_threshold_command_duration:5
|
||||||
|
SETUVAR pure_truncate_prompt_current_directory_keeps:\x2d1
|
||||||
|
SETUVAR pure_truncate_window_title_current_directory_keeps:\x2d1
|
|
@ -0,0 +1,3 @@
|
||||||
|
if not vim.g.vscode then
|
||||||
|
require("core")
|
||||||
|
end
|
|
@ -0,0 +1,152 @@
|
||||||
|
-- Now use `<A-o>` or `<A-1>` to back to the `dotstutor`.
|
||||||
|
local autocmd = {}
|
||||||
|
|
||||||
|
function autocmd.nvim_create_augroups(definitions)
|
||||||
|
for group_name, definition in pairs(definitions) do
|
||||||
|
-- Prepend an underscore to avoid name clashes
|
||||||
|
vim.api.nvim_command("augroup _" .. group_name)
|
||||||
|
vim.api.nvim_command("autocmd!")
|
||||||
|
for _, def in ipairs(definition) do
|
||||||
|
local command = table.concat(vim.iter({ "autocmd", def }):flatten(math.huge):totable(), " ")
|
||||||
|
vim.api.nvim_command(command)
|
||||||
|
end
|
||||||
|
vim.api.nvim_command("augroup END")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Hold off on configuring anything related to the LSP until LspAttach
|
||||||
|
local mapping = require("keymap.completion")
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
group = vim.api.nvim_create_augroup("LspKeymapLoader", { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
if not _G._debugging then
|
||||||
|
-- LSP Keymaps
|
||||||
|
mapping.lsp(event.buf)
|
||||||
|
|
||||||
|
-- LSP Inlay Hints
|
||||||
|
local inlayhints_enabled = require("core.settings").lsp_inlayhints
|
||||||
|
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||||
|
if client and client.server_capabilities.inlayHintProvider ~= nil then
|
||||||
|
vim.lsp.inlay_hint.enable(inlayhints_enabled == true, { bufnr = event.buf })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- auto close NvimTree
|
||||||
|
vim.api.nvim_create_autocmd("BufEnter", {
|
||||||
|
group = vim.api.nvim_create_augroup("NvimTreeClose", { clear = true }),
|
||||||
|
pattern = "NvimTree_*",
|
||||||
|
callback = function()
|
||||||
|
local layout = vim.api.nvim_call_function("winlayout", {})
|
||||||
|
if
|
||||||
|
layout[1] == "leaf"
|
||||||
|
and vim.bo[vim.api.nvim_win_get_buf(layout[2])].filetype == "NvimTree"
|
||||||
|
and layout[3] == nil
|
||||||
|
then
|
||||||
|
vim.api.nvim_command([[confirm quit]])
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- auto close some filetype with <q>
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = {
|
||||||
|
"qf",
|
||||||
|
"help",
|
||||||
|
"man",
|
||||||
|
"notify",
|
||||||
|
"nofile",
|
||||||
|
"lspinfo",
|
||||||
|
"terminal",
|
||||||
|
"prompt",
|
||||||
|
"toggleterm",
|
||||||
|
"copilot",
|
||||||
|
"startuptime",
|
||||||
|
"tsplayground",
|
||||||
|
"PlenaryTestPopup",
|
||||||
|
},
|
||||||
|
callback = function(event)
|
||||||
|
vim.bo[event.buf].buflisted = false
|
||||||
|
vim.api.nvim_buf_set_keymap(event.buf, "n", "q", "<Cmd>close<CR>", { silent = true })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
function autocmd.load_autocmds()
|
||||||
|
local definitions = {
|
||||||
|
lazy = {},
|
||||||
|
bufs = {
|
||||||
|
-- Reload vim config automatically
|
||||||
|
{
|
||||||
|
"BufWritePost",
|
||||||
|
[[$VIM_PATH/{*.vim,*.yaml,vimrc} nested source $MYVIMRC | redraw]],
|
||||||
|
},
|
||||||
|
-- Reload Vim script automatically if setlocal autoread
|
||||||
|
{
|
||||||
|
"BufWritePost,FileWritePost",
|
||||||
|
"*.vim",
|
||||||
|
[[nested if &l:autoread > 0 | source <afile> | echo 'source ' . bufname('%') | endif]],
|
||||||
|
},
|
||||||
|
{ "BufWritePre", "/tmp/*", "setlocal noundofile" },
|
||||||
|
{ "BufWritePre", "COMMIT_EDITMSG", "setlocal noundofile" },
|
||||||
|
{ "BufWritePre", "MERGE_MSG", "setlocal noundofile" },
|
||||||
|
{ "BufWritePre", "*.tmp", "setlocal noundofile" },
|
||||||
|
{ "BufWritePre", "*.bak", "setlocal noundofile" },
|
||||||
|
-- auto place to last edit
|
||||||
|
{
|
||||||
|
"BufReadPost",
|
||||||
|
"*",
|
||||||
|
[[if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g'\"" | endif]],
|
||||||
|
},
|
||||||
|
-- Auto toggle fcitx5
|
||||||
|
-- {"InsertLeave", "* :silent", "!fcitx5-remote -c"},
|
||||||
|
-- {"BufCreate", "*", ":silent !fcitx5-remote -c"},
|
||||||
|
-- {"BufEnter", "*", ":silent !fcitx5-remote -c "},
|
||||||
|
-- {"BufLeave", "*", ":silent !fcitx5-remote -c "}
|
||||||
|
},
|
||||||
|
wins = {
|
||||||
|
-- Highlight current line only on focused window
|
||||||
|
{
|
||||||
|
"WinEnter,BufEnter,InsertLeave",
|
||||||
|
"*",
|
||||||
|
[[if ! &cursorline && &filetype !~# '^\(dashboard\|clap_\)' && ! &pvw | setlocal cursorline | endif]],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WinLeave,BufLeave,InsertEnter",
|
||||||
|
"*",
|
||||||
|
[[if &cursorline && &filetype !~# '^\(dashboard\|clap_\)' && ! &pvw | setlocal nocursorline | endif]],
|
||||||
|
},
|
||||||
|
-- Attempt to write shada when leaving nvim
|
||||||
|
{
|
||||||
|
"VimLeave",
|
||||||
|
"*",
|
||||||
|
[[if has('nvim') | wshada | else | wviminfo! | endif]],
|
||||||
|
},
|
||||||
|
-- Check if file changed when its window is focus, more eager than 'autoread'
|
||||||
|
{ "FocusGained", "* checktime" },
|
||||||
|
-- Equalize window dimensions when resizing vim window
|
||||||
|
{ "VimResized", "*", [[tabdo wincmd =]] },
|
||||||
|
},
|
||||||
|
ft = {
|
||||||
|
{ "FileType", "*", "setlocal formatoptions-=cro" },
|
||||||
|
{ "FileType", "alpha", "setlocal showtabline=0" },
|
||||||
|
{ "FileType", "markdown", "setlocal wrap" },
|
||||||
|
{ "FileType", "dap-repl", "lua require('dap.ext.autocompl').attach()" },
|
||||||
|
{
|
||||||
|
"FileType",
|
||||||
|
"c,cpp",
|
||||||
|
"nnoremap <leader>h :ClangdSwitchSourceHeaderVSplit<CR>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
yank = {
|
||||||
|
{
|
||||||
|
"TextYankPost",
|
||||||
|
"*",
|
||||||
|
[[silent! lua vim.highlight.on_yank({higroup="IncSearch", timeout=300})]],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
autocmd.nvim_create_augroups(require("modules.utils").extend_config(definitions, "user.event"))
|
||||||
|
end
|
||||||
|
|
||||||
|
autocmd.load_autocmds()
|
|
@ -0,0 +1,18 @@
|
||||||
|
local global = {}
|
||||||
|
local os_name = vim.uv.os_uname().sysname
|
||||||
|
|
||||||
|
function global:load_variables()
|
||||||
|
self.is_mac = os_name == "Darwin"
|
||||||
|
self.is_linux = os_name == "Linux"
|
||||||
|
self.is_windows = os_name == "Windows_NT"
|
||||||
|
self.is_wsl = vim.fn.has("wsl") == 1
|
||||||
|
self.vim_path = vim.fn.stdpath("config")
|
||||||
|
self.cache_dir = vim.fn.stdpath("cache")
|
||||||
|
self.data_dir = string.format("%s/site/", vim.fn.stdpath("data"))
|
||||||
|
self.modules_dir = self.vim_path .. "/modules"
|
||||||
|
self.home = self.is_windows and os.getenv("USERPROFILE") or os.getenv("HOME")
|
||||||
|
end
|
||||||
|
|
||||||
|
global:load_variables()
|
||||||
|
|
||||||
|
return global
|
|
@ -0,0 +1,121 @@
|
||||||
|
local settings = require("core.settings")
|
||||||
|
local global = require("core.global")
|
||||||
|
|
||||||
|
-- Create cache dir and data dirs
|
||||||
|
local createdir = function()
|
||||||
|
local data_dirs = {
|
||||||
|
global.cache_dir .. "/backup",
|
||||||
|
global.cache_dir .. "/session",
|
||||||
|
global.cache_dir .. "/swap",
|
||||||
|
global.cache_dir .. "/tags",
|
||||||
|
global.cache_dir .. "/undo",
|
||||||
|
}
|
||||||
|
-- Only check whether cache_dir exists, this would be enough.
|
||||||
|
if vim.fn.isdirectory(global.cache_dir) == 0 then
|
||||||
|
---@diagnostic disable-next-line: param-type-mismatch
|
||||||
|
vim.fn.mkdir(global.cache_dir, "p")
|
||||||
|
for _, dir in pairs(data_dirs) do
|
||||||
|
if vim.fn.isdirectory(dir) == 0 then
|
||||||
|
vim.fn.mkdir(dir, "p")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local leader_map = function()
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
-- NOTE:
|
||||||
|
-- > Uncomment the following if you're using a <leader> other than <Space>, and you wish
|
||||||
|
-- > to disable advancing one character by pressing <Space> in normal/visual mode.
|
||||||
|
-- vim.api.nvim_set_keymap("n", " ", "", { noremap = true })
|
||||||
|
-- vim.api.nvim_set_keymap("x", " ", "", { noremap = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
local gui_config = function()
|
||||||
|
if next(settings.gui_config) then
|
||||||
|
vim.api.nvim_set_option_value(
|
||||||
|
"guifont",
|
||||||
|
settings.gui_config.font_name .. ":h" .. settings.gui_config.font_size,
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local neovide_config = function()
|
||||||
|
for name, config in pairs(settings.neovide_config) do
|
||||||
|
vim.g["neovide_" .. name] = config
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local clipboard_config = function()
|
||||||
|
if global.is_mac then
|
||||||
|
vim.g.clipboard = {
|
||||||
|
name = "macOS-clipboard",
|
||||||
|
copy = { ["+"] = "pbcopy", ["*"] = "pbcopy" },
|
||||||
|
paste = { ["+"] = "pbpaste", ["*"] = "pbpaste" },
|
||||||
|
cache_enabled = 0,
|
||||||
|
}
|
||||||
|
elseif global.is_wsl then
|
||||||
|
vim.g.clipboard = {
|
||||||
|
name = "win32yank-wsl",
|
||||||
|
copy = {
|
||||||
|
["+"] = "win32yank.exe -i --crlf",
|
||||||
|
["*"] = "win32yank.exe -i --crlf",
|
||||||
|
},
|
||||||
|
paste = {
|
||||||
|
["+"] = "win32yank.exe -o --lf",
|
||||||
|
["*"] = "win32yank.exe -o --lf",
|
||||||
|
},
|
||||||
|
cache_enabled = 0,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local shell_config = function()
|
||||||
|
if global.is_windows then
|
||||||
|
if not (vim.fn.executable("pwsh") == 1 or vim.fn.executable("powershell") == 1) then
|
||||||
|
vim.notify(
|
||||||
|
[[
|
||||||
|
Failed to setup terminal config
|
||||||
|
|
||||||
|
PowerShell is either not installed, missing from PATH, or not executable;
|
||||||
|
cmd.exe will be used instead for `:!` (shell bang) and toggleterm.nvim.
|
||||||
|
|
||||||
|
You're recommended to install PowerShell for better experience.]],
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "[core] Runtime Warning" }
|
||||||
|
)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local basecmd = "-NoLogo -MTA -ExecutionPolicy RemoteSigned"
|
||||||
|
local ctrlcmd = "-Command [console]::InputEncoding = [console]::OutputEncoding = [System.Text.Encoding]::UTF8"
|
||||||
|
local set_opts = vim.api.nvim_set_option_value
|
||||||
|
set_opts("shell", vim.fn.executable("pwsh") == 1 and "pwsh" or "powershell", {})
|
||||||
|
set_opts("shellcmdflag", string.format("%s %s;", basecmd, ctrlcmd), {})
|
||||||
|
set_opts("shellredir", "-RedirectStandardOutput %s -NoNewWindow -Wait", {})
|
||||||
|
set_opts("shellpipe", "2>&1 | Out-File -Encoding UTF8 %s; exit $LastExitCode", {})
|
||||||
|
set_opts("shellquote", "", {})
|
||||||
|
set_opts("shellxquote", "", {})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local load_core = function()
|
||||||
|
createdir()
|
||||||
|
leader_map()
|
||||||
|
|
||||||
|
gui_config()
|
||||||
|
neovide_config()
|
||||||
|
clipboard_config()
|
||||||
|
shell_config()
|
||||||
|
|
||||||
|
require("core.options")
|
||||||
|
require("core.event")
|
||||||
|
require("core.pack")
|
||||||
|
require("keymap")
|
||||||
|
|
||||||
|
vim.api.nvim_set_option_value("background", settings.background, {})
|
||||||
|
vim.cmd.colorscheme(settings.colorscheme)
|
||||||
|
end
|
||||||
|
|
||||||
|
load_core()
|
|
@ -0,0 +1,131 @@
|
||||||
|
local global = require("core.global")
|
||||||
|
|
||||||
|
local function load_options()
|
||||||
|
local global_local = {
|
||||||
|
-- backupdir = global.cache_dir .. "/backup/",
|
||||||
|
-- directory = global.cache_dir .. "/swap/",
|
||||||
|
-- spellfile = global.cache_dir .. "/spell/en.uft-8.add",
|
||||||
|
-- viewdir = global.cache_dir .. "/view/",
|
||||||
|
autoindent = true,
|
||||||
|
autoread = true,
|
||||||
|
autowrite = true,
|
||||||
|
backspace = "indent,eol,start",
|
||||||
|
backup = false,
|
||||||
|
backupskip = "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*,*/shm/*,/private/var/*,.vault.vim",
|
||||||
|
breakat = [[\ \ ;:,!?]],
|
||||||
|
breakindentopt = "shift:2,min:20",
|
||||||
|
clipboard = "unnamedplus",
|
||||||
|
cmdheight = 1, -- 0, 1, 2
|
||||||
|
cmdwinheight = 5,
|
||||||
|
complete = ".,w,b,k,kspell",
|
||||||
|
completeopt = "menuone,noselect,popup",
|
||||||
|
concealcursor = "niv",
|
||||||
|
conceallevel = 0,
|
||||||
|
cursorcolumn = true,
|
||||||
|
cursorline = true,
|
||||||
|
diffopt = "filler,iwhite,internal,linematch:60,algorithm:patience",
|
||||||
|
display = "lastline",
|
||||||
|
encoding = "utf-8",
|
||||||
|
equalalways = false,
|
||||||
|
errorbells = true,
|
||||||
|
fileformats = "unix,mac,dos",
|
||||||
|
foldenable = true,
|
||||||
|
foldlevelstart = 99,
|
||||||
|
formatoptions = "1jcroql",
|
||||||
|
grepformat = "%f:%l:%c:%m",
|
||||||
|
grepprg = "rg --hidden --vimgrep --smart-case --",
|
||||||
|
helpheight = 12,
|
||||||
|
hidden = true,
|
||||||
|
history = 2000,
|
||||||
|
ignorecase = true,
|
||||||
|
inccommand = "nosplit",
|
||||||
|
incsearch = true,
|
||||||
|
infercase = true,
|
||||||
|
jumpoptions = "stack",
|
||||||
|
laststatus = 3,
|
||||||
|
linebreak = true,
|
||||||
|
list = true,
|
||||||
|
listchars = "tab:»·,nbsp:+,trail:·,extends:→,precedes:←",
|
||||||
|
magic = true,
|
||||||
|
mousescroll = "ver:3,hor:6",
|
||||||
|
number = true,
|
||||||
|
previewheight = 12,
|
||||||
|
-- Do NOT adjust the following option (pumblend) if you're using transparent background
|
||||||
|
pumblend = 0,
|
||||||
|
pumheight = 15,
|
||||||
|
redrawtime = 1500,
|
||||||
|
relativenumber = true,
|
||||||
|
ruler = true,
|
||||||
|
scrolloff = 2,
|
||||||
|
sessionoptions = "buffers,curdir,folds,help,tabpages,winpos,winsize",
|
||||||
|
shada = "!,'500,<50,@100,s10,h",
|
||||||
|
shiftround = true,
|
||||||
|
shiftwidth = 4,
|
||||||
|
shortmess = "aoOTIcF",
|
||||||
|
showbreak = "↳ ",
|
||||||
|
showcmd = false,
|
||||||
|
showmode = false,
|
||||||
|
showtabline = 2,
|
||||||
|
sidescrolloff = 5,
|
||||||
|
signcolumn = "yes",
|
||||||
|
smartcase = true,
|
||||||
|
smarttab = true,
|
||||||
|
smoothscroll = true,
|
||||||
|
splitbelow = true,
|
||||||
|
splitkeep = "screen",
|
||||||
|
splitright = true,
|
||||||
|
startofline = false,
|
||||||
|
swapfile = false,
|
||||||
|
switchbuf = "usetab,uselast",
|
||||||
|
synmaxcol = 2500,
|
||||||
|
tabstop = 4,
|
||||||
|
termguicolors = true,
|
||||||
|
timeout = true,
|
||||||
|
timeoutlen = 300,
|
||||||
|
ttimeout = true,
|
||||||
|
ttimeoutlen = 0,
|
||||||
|
undodir = global.cache_dir .. "/undo/",
|
||||||
|
undofile = true,
|
||||||
|
-- Please do NOT set `updatetime` to above 500, otherwise most plugins may not function correctly
|
||||||
|
updatetime = 200,
|
||||||
|
viewoptions = "folds,cursor,curdir,slash,unix",
|
||||||
|
virtualedit = "block",
|
||||||
|
visualbell = true,
|
||||||
|
whichwrap = "h,l,<,>,[,],~",
|
||||||
|
wildignore = ".git,.hg,.svn,*.pyc,*.o,*.out,*.jpg,*.jpeg,*.png,*.gif,*.zip,**/tmp/**,*.DS_Store,**/node_modules/**,**/bower_modules/**",
|
||||||
|
wildignorecase = true,
|
||||||
|
-- Do NOT adjust the following option (winblend) if you're using transparent background
|
||||||
|
winblend = 0,
|
||||||
|
winminwidth = 10,
|
||||||
|
winwidth = 30,
|
||||||
|
wrap = false,
|
||||||
|
wrapscan = true,
|
||||||
|
writebackup = false,
|
||||||
|
}
|
||||||
|
|
||||||
|
local function isempty(s)
|
||||||
|
return s == nil or s == ""
|
||||||
|
end
|
||||||
|
local function use_if_defined(val, fallback)
|
||||||
|
return val ~= nil and val or fallback
|
||||||
|
end
|
||||||
|
|
||||||
|
-- custom python provider
|
||||||
|
local conda_prefix = os.getenv("CONDA_PREFIX")
|
||||||
|
if not isempty(conda_prefix) then
|
||||||
|
vim.g.python_host_prog = use_if_defined(vim.g.python_host_prog, conda_prefix .. "/bin/python")
|
||||||
|
vim.g.python3_host_prog = use_if_defined(vim.g.python3_host_prog, conda_prefix .. "/bin/python")
|
||||||
|
else
|
||||||
|
vim.g.python_host_prog = use_if_defined(vim.g.python_host_prog, "python")
|
||||||
|
vim.g.python3_host_prog = use_if_defined(vim.g.python3_host_prog, "python3")
|
||||||
|
end
|
||||||
|
|
||||||
|
for name, value in pairs(require("modules.utils").extend_config(global_local, "user.options")) do
|
||||||
|
vim.api.nvim_set_option_value(name, value, {})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Newtrw liststyle: https://medium.com/usevim/the-netrw-style-options-3ebe91d42456
|
||||||
|
vim.g.netrw_liststyle = 3
|
||||||
|
|
||||||
|
load_options()
|
|
@ -0,0 +1,161 @@
|
||||||
|
local fn, api = vim.fn, vim.api
|
||||||
|
local global = require("core.global")
|
||||||
|
local is_mac = global.is_mac
|
||||||
|
local vim_path = global.vim_path
|
||||||
|
local data_dir = global.data_dir
|
||||||
|
local lazy_path = data_dir .. "lazy/lazy.nvim"
|
||||||
|
local modules_dir = vim_path .. "/lua/modules"
|
||||||
|
local user_config_dir = vim_path .. "/lua/user"
|
||||||
|
|
||||||
|
local settings = require("core.settings")
|
||||||
|
local use_ssh = settings.use_ssh
|
||||||
|
|
||||||
|
local icons = {
|
||||||
|
kind = require("modules.utils.icons").get("kind"),
|
||||||
|
documents = require("modules.utils.icons").get("documents"),
|
||||||
|
ui = require("modules.utils.icons").get("ui"),
|
||||||
|
ui_sep = require("modules.utils.icons").get("ui", true),
|
||||||
|
misc = require("modules.utils.icons").get("misc"),
|
||||||
|
}
|
||||||
|
|
||||||
|
local Lazy = {}
|
||||||
|
|
||||||
|
function Lazy:load_plugins()
|
||||||
|
self.modules = {}
|
||||||
|
|
||||||
|
local append_nativertp = function()
|
||||||
|
package.path = package.path
|
||||||
|
.. string.format(
|
||||||
|
";%s;%s;%s",
|
||||||
|
modules_dir .. "/configs/?.lua",
|
||||||
|
modules_dir .. "/configs/?/init.lua",
|
||||||
|
user_config_dir .. "/?.lua"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
local get_plugins_list = function()
|
||||||
|
local list = {}
|
||||||
|
local plugins_list = vim.split(fn.glob(modules_dir .. "/plugins/*.lua"), "\n")
|
||||||
|
local user_plugins_list = vim.split(fn.glob(user_config_dir .. "/plugins/*.lua"), "\n", { trimempty = true })
|
||||||
|
vim.list_extend(plugins_list, user_plugins_list)
|
||||||
|
for _, f in ipairs(plugins_list) do
|
||||||
|
-- aggregate the plugins from `/plugins/*.lua` and `/user/plugins/*.lua` to a plugin list of a certain field for later `require` action.
|
||||||
|
-- current fields contains: completion, editor, lang, tool, ui
|
||||||
|
list[#list + 1] = f:find(modules_dir) and f:sub(#modules_dir - 6, -1) or f:sub(#user_config_dir - 3, -1)
|
||||||
|
end
|
||||||
|
return list
|
||||||
|
end
|
||||||
|
|
||||||
|
append_nativertp()
|
||||||
|
|
||||||
|
for _, m in ipairs(get_plugins_list()) do
|
||||||
|
-- require modules returned from `get_plugins_list()` function.
|
||||||
|
local modules = require(m:sub(0, #m - 4))
|
||||||
|
if type(modules) == "table" then
|
||||||
|
for name, conf in pairs(modules) do
|
||||||
|
self.modules[#self.modules + 1] = vim.tbl_extend("force", { name }, conf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for _, name in ipairs(settings.disabled_plugins) do
|
||||||
|
self.modules[#self.modules + 1] = { name, enabled = false }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Lazy:load_lazy()
|
||||||
|
if not vim.uv.fs_stat(lazy_path) then
|
||||||
|
local lazy_repo = use_ssh and "git@github.com:folke/lazy.nvim.git " or "https://github.com/folke/lazy.nvim.git "
|
||||||
|
api.nvim_command("!git clone --filter=blob:none --branch=stable " .. lazy_repo .. lazy_path)
|
||||||
|
end
|
||||||
|
self:load_plugins()
|
||||||
|
|
||||||
|
local clone_prefix = use_ssh and "git@github.com:%s.git" or "https://github.com/%s.git"
|
||||||
|
local lazy_settings = {
|
||||||
|
root = data_dir .. "lazy", -- directory where plugins will be installed
|
||||||
|
git = {
|
||||||
|
-- log = { "-10" }, -- show the last 10 commits
|
||||||
|
timeout = 300,
|
||||||
|
url_format = clone_prefix,
|
||||||
|
},
|
||||||
|
install = {
|
||||||
|
-- install missing plugins on startup. This doesn't increase startup time.
|
||||||
|
missing = true,
|
||||||
|
colorscheme = { settings.colorscheme },
|
||||||
|
},
|
||||||
|
ui = {
|
||||||
|
-- a number <1 is a percentage., >1 is a fixed size
|
||||||
|
size = { width = 0.88, height = 0.8 },
|
||||||
|
wrap = true, -- wrap the lines in the ui
|
||||||
|
-- The border to use for the UI window. Accepts same border values as |nvim_open_win()|.
|
||||||
|
border = "rounded",
|
||||||
|
icons = {
|
||||||
|
cmd = icons.misc.Code,
|
||||||
|
config = icons.ui.Gear,
|
||||||
|
event = icons.kind.Event,
|
||||||
|
ft = icons.documents.Files,
|
||||||
|
init = icons.misc.ManUp,
|
||||||
|
import = icons.documents.Import,
|
||||||
|
keys = icons.ui.Keyboard,
|
||||||
|
loaded = icons.ui.Check,
|
||||||
|
not_loaded = icons.misc.Ghost,
|
||||||
|
plugin = icons.ui.Package,
|
||||||
|
runtime = icons.misc.Vim,
|
||||||
|
source = icons.kind.StaticMethod,
|
||||||
|
start = icons.ui.Play,
|
||||||
|
list = {
|
||||||
|
icons.ui_sep.BigCircle,
|
||||||
|
icons.ui_sep.BigUnfilledCircle,
|
||||||
|
icons.ui_sep.Square,
|
||||||
|
icons.ui_sep.ChevronRight,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
performance = {
|
||||||
|
cache = {
|
||||||
|
enabled = true,
|
||||||
|
path = vim.fn.stdpath("cache") .. "/lazy/cache",
|
||||||
|
-- Once one of the following events triggers, caching will be disabled.
|
||||||
|
-- To cache all modules, set this to `{}`, but that is not recommended.
|
||||||
|
disable_events = { "UIEnter", "BufReadPre" },
|
||||||
|
ttl = 3600 * 24 * 2, -- keep unused modules for up to 2 days
|
||||||
|
},
|
||||||
|
reset_packpath = true, -- reset the package path to improve startup time
|
||||||
|
rtp = {
|
||||||
|
reset = true, -- reset the runtime path to $VIMRUNTIME and the config directory
|
||||||
|
---@type string[]
|
||||||
|
paths = {}, -- add any custom paths here that you want to include in the rtp
|
||||||
|
disabled_plugins = {
|
||||||
|
-- Comment out `"editorconfig"` to enable native EditorConfig support
|
||||||
|
-- WARN: Sleuth.vim already includes all the features provided by this plugin.
|
||||||
|
-- Do NOT enable both at the same time, or you risk breaking the entire detection system.
|
||||||
|
"editorconfig",
|
||||||
|
-- Do not load spell files
|
||||||
|
"spellfile",
|
||||||
|
-- Do not use builtin matchit.vim and matchparen.vim because we're using vim-matchup
|
||||||
|
"matchit",
|
||||||
|
"matchparen",
|
||||||
|
-- Do not load tohtml.vim
|
||||||
|
"tohtml",
|
||||||
|
-- Do not load zipPlugin.vim, gzip.vim and tarPlugin.vim (all of these plugins are
|
||||||
|
-- related to reading files inside compressed containers)
|
||||||
|
"gzip",
|
||||||
|
"tarPlugin",
|
||||||
|
"zipPlugin",
|
||||||
|
-- Disable remote plugins
|
||||||
|
-- NOTE:
|
||||||
|
-- > Disabling rplugin.vim will make `wilder.nvim` complain about missing rplugins during :checkhealth,
|
||||||
|
-- > but since it's config doesn't require python rtp (strictly), it's fine to ignore that for now.
|
||||||
|
-- "rplugin",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if is_mac then
|
||||||
|
lazy_settings.concurrency = 20
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.opt.rtp:prepend(lazy_path)
|
||||||
|
require("lazy").setup(self.modules, lazy_settings)
|
||||||
|
end
|
||||||
|
|
||||||
|
Lazy:load_lazy()
|
|
@ -0,0 +1,225 @@
|
||||||
|
local settings = {}
|
||||||
|
|
||||||
|
-- Set it to false if you want to use https to update plugins and treesitter parsers.
|
||||||
|
---@type boolean
|
||||||
|
settings["use_ssh"] = true
|
||||||
|
|
||||||
|
-- Set it to false if you don't use copilot
|
||||||
|
---@type boolean
|
||||||
|
settings["use_copilot"] = true
|
||||||
|
|
||||||
|
-- Set it to false if there is no need to format on save.
|
||||||
|
---@type boolean
|
||||||
|
settings["format_on_save"] = true
|
||||||
|
|
||||||
|
-- Set format timeout here (in ms).
|
||||||
|
---@type number
|
||||||
|
settings["format_timeout"] = 1000
|
||||||
|
|
||||||
|
-- Set it to false if the notification after formatting is annoying.
|
||||||
|
---@type boolean
|
||||||
|
settings["format_notify"] = true
|
||||||
|
|
||||||
|
-- Set it to true if you prefer formatting ONLY the *changed lines* as defined by your version control system.
|
||||||
|
-- NOTE: This entry will only be respected if:
|
||||||
|
-- > The buffer to be formatted is under version control (Git or Mercurial);
|
||||||
|
-- > Any of the server attached to that buffer supports |DocumentRangeFormattingProvider| server capability.
|
||||||
|
-- Otherwise Neovim would fall back to format the whole buffer, and a warning will be issued.
|
||||||
|
---@type boolean
|
||||||
|
settings["format_modifications_only"] = false
|
||||||
|
|
||||||
|
-- Set the format disabled directories here, files under these dirs won't be formatted on save.
|
||||||
|
--- NOTE: Directories may contain regular expressions (grammar: vim). |regexp|
|
||||||
|
--- NOTE: Directories are automatically normalized. |vim.fs.normalize()|
|
||||||
|
---@type string[]
|
||||||
|
settings["format_disabled_dirs"] = {
|
||||||
|
-- Example
|
||||||
|
"~/format_disabled_dir",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Filetypes in this list will skip lsp formatting if rhs is true.
|
||||||
|
---@type table<string, boolean>
|
||||||
|
settings["formatter_block_list"] = {
|
||||||
|
lua = false, -- example
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Servers in this list will skip setting formatting capabilities if rhs is true.
|
||||||
|
---@type table<string, boolean>
|
||||||
|
settings["server_formatting_block_list"] = {
|
||||||
|
clangd = true,
|
||||||
|
lua_ls = true,
|
||||||
|
ts_ls = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set it to false if you want to turn off LSP Inlay Hints
|
||||||
|
---@type boolean
|
||||||
|
settings["lsp_inlayhints"] = true
|
||||||
|
|
||||||
|
-- Set it to false if diagnostics virtual text is annoying.
|
||||||
|
-- If disabled, you may browse lsp diagnostics using trouble.nvim (press `gt` to toggle it).
|
||||||
|
---@type boolean
|
||||||
|
settings["diagnostics_virtual_text"] = true
|
||||||
|
|
||||||
|
-- Set it to one of the values below if you want to change the visible severity level of lsp diagnostics.
|
||||||
|
-- Priority: `Error` > `Warning` > `Information` > `Hint`.
|
||||||
|
-- > e.g. if you set this option to `Warning`, only lsp warnings and errors will be shown.
|
||||||
|
-- NOTE: This entry only works when `diagnostics_virtual_text` is true.
|
||||||
|
---@type "ERROR"|"WARN"|"INFO"|"HINT"
|
||||||
|
settings["diagnostics_level"] = "HINT"
|
||||||
|
|
||||||
|
-- Set the plugins to disable here.
|
||||||
|
-- Example: "Some-User/A-Repo"
|
||||||
|
---@type string[]
|
||||||
|
settings["disabled_plugins"] = {}
|
||||||
|
|
||||||
|
-- Set it to false if you don't use nvim to open big files.
|
||||||
|
---@type boolean
|
||||||
|
settings["load_big_files_faster"] = true
|
||||||
|
|
||||||
|
-- Change the colors of the global palette here.
|
||||||
|
-- Settings will complete their replacement at initialization.
|
||||||
|
-- Parameters will be automatically completed as you type.
|
||||||
|
-- Example: { sky = "#04A5E5" }
|
||||||
|
---@type palette[]
|
||||||
|
settings["palette_overwrite"] = {}
|
||||||
|
|
||||||
|
-- Set the colorscheme to use here.
|
||||||
|
-- Available values are: `catppuccin`, `catppuccin-latte`, `catppucin-mocha`, `catppuccin-frappe`, `catppuccin-macchiato`.
|
||||||
|
---@type string
|
||||||
|
settings["colorscheme"] = "catppuccin"
|
||||||
|
|
||||||
|
-- Set it to true if your terminal has transparent background.
|
||||||
|
---@type boolean
|
||||||
|
settings["transparent_background"] = false
|
||||||
|
|
||||||
|
-- Set background color to use here.
|
||||||
|
-- Useful if you would like to use a colorscheme that has a light and dark variant like `edge`.
|
||||||
|
-- Valid values are: `dark`, `light`.
|
||||||
|
---@type "dark"|"light"
|
||||||
|
settings["background"] = "dark"
|
||||||
|
|
||||||
|
-- Set the command for handling external URLs here. The executable must be available on your $PATH.
|
||||||
|
-- This entry is IGNORED on Windows and macOS, which have their default handlers builtin.
|
||||||
|
---@type string
|
||||||
|
settings["external_browser"] = "chrome-cli open"
|
||||||
|
|
||||||
|
-- Set the language servers that will be installed during bootstrap here.
|
||||||
|
-- check the below link for all the supported LSPs:
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/tree/master/lua/lspconfig/server_configurations
|
||||||
|
---@type string[]
|
||||||
|
settings["lsp_deps"] = {
|
||||||
|
"bashls",
|
||||||
|
"clangd",
|
||||||
|
"html",
|
||||||
|
"jsonls",
|
||||||
|
"lua_ls",
|
||||||
|
"pylsp",
|
||||||
|
"gopls",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set the general-purpose servers that will be installed during bootstrap here.
|
||||||
|
-- Check the below link for all supported sources.
|
||||||
|
-- in `code_actions`, `completion`, `diagnostics`, `formatting`, `hover` folders:
|
||||||
|
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins
|
||||||
|
---@type string[]
|
||||||
|
settings["null_ls_deps"] = {
|
||||||
|
"clang_format",
|
||||||
|
"gofumpt",
|
||||||
|
"goimports",
|
||||||
|
"prettier",
|
||||||
|
"shfmt",
|
||||||
|
"stylua",
|
||||||
|
"vint",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set the Debug Adapter Protocol (DAP) clients that will be installed and configured during bootstrap here.
|
||||||
|
-- Check the below link for all supported DAPs:
|
||||||
|
-- https://github.com/jay-babu/mason-nvim-dap.nvim/blob/main/lua/mason-nvim-dap/mappings/source.lua
|
||||||
|
---@type string[]
|
||||||
|
settings["dap_deps"] = {
|
||||||
|
"codelldb", -- C-Family
|
||||||
|
"delve", -- Go
|
||||||
|
"python", -- Python (debugpy)
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set the Treesitter parsers that will be installed during bootstrap here.
|
||||||
|
-- Check the below link for all supported languages:
|
||||||
|
-- https://github.com/nvim-treesitter/nvim-treesitter#supported-languages
|
||||||
|
---@type string[]
|
||||||
|
settings["treesitter_deps"] = {
|
||||||
|
"bash",
|
||||||
|
"c",
|
||||||
|
"cpp",
|
||||||
|
"css",
|
||||||
|
"go",
|
||||||
|
"gomod",
|
||||||
|
"html",
|
||||||
|
"javascript",
|
||||||
|
"json",
|
||||||
|
"jsonc",
|
||||||
|
"latex",
|
||||||
|
"lua",
|
||||||
|
"make",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
"python",
|
||||||
|
"rust",
|
||||||
|
"typescript",
|
||||||
|
"vimdoc",
|
||||||
|
"vue",
|
||||||
|
"yaml",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set the options for neovim's gui clients like `neovide` and `neovim-qt` here.
|
||||||
|
-- NOTE: Currently, only the following options related to the GUI are supported. Other entries will be IGNORED.
|
||||||
|
---@type { font_name: string, font_size: number }
|
||||||
|
settings["gui_config"] = {
|
||||||
|
font_name = "JetBrainsMono Nerd Font",
|
||||||
|
font_size = 12,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set the options specific to `neovide` here.
|
||||||
|
-- NOTE: You should remove the `neovide_` prefix (with trailing underscore) from all your entries below.
|
||||||
|
-- Check the below link for all supported entries:
|
||||||
|
-- https://neovide.dev/configuration.html
|
||||||
|
---@type table<string, boolean|number|string>
|
||||||
|
settings["neovide_config"] = {
|
||||||
|
no_idle = true,
|
||||||
|
refresh_rate = 120,
|
||||||
|
cursor_vfx_mode = "railgun",
|
||||||
|
cursor_vfx_opacity = 200.0,
|
||||||
|
cursor_antialiasing = true,
|
||||||
|
cursor_trail_length = 0.05,
|
||||||
|
cursor_animation_length = 0.03,
|
||||||
|
cursor_vfx_particle_speed = 20.0,
|
||||||
|
cursor_vfx_particle_density = 5.0,
|
||||||
|
cursor_vfx_particle_lifetime = 1.2,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set the dashboard startup image here
|
||||||
|
-- You can generate the ascii image using: https://github.com/TheZoraiz/ascii-image-converter
|
||||||
|
-- More info: https://github.com/ayamir/nvimdots/wiki/Issues#change-dashboard-startup-image
|
||||||
|
---@type string[]
|
||||||
|
settings["dashboard_image"] = {
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⣠⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣡⣾⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣟⠻⣿⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⣿⡿⢫⣷⣿⣿⣿⣿⣿⣿⣿⣾⣯⣿⡿⢧⡚⢷⣌⣽⣿⣿⣿⣿⣿⣶⡌⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⣿⠇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⣇⣘⠿⢹⣿⣿⣿⣿⣿⣻⢿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣻⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⡇⠀⣬⠏⣿⡇⢻⣿⣿⣿⣿⣿⣿⣿⣷⣼⣿⣿⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢻⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⠀⠈⠁⠀⣿⡇⠘⡟⣿⣿⣿⣿⣿⣿⣿⣿⡏⠿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣇⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⡏⠀⠀⠐⠀⢻⣇⠀⠀⠹⣿⣿⣿⣿⣿⣿⣩⡶⠼⠟⠻⠞⣿⡈⠻⣟⢻⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⢿⠀⡆⠀⠘⢿⢻⡿⣿⣧⣷⢣⣶⡃⢀⣾⡆⡋⣧⠙⢿⣿⣿⣟⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⡥⠂⡐⠀⠁⠑⣾⣿⣿⣾⣿⣿⣿⡿⣷⣷⣿⣧⣾⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⡿⣿⣍⡴⠆⠀⠀⠀⠀⠀⠀⠀⠀⣼⣄⣀⣷⡄⣙⢿⣿⣿⣿⣿⣯⣶⣿⣿⢟⣾⣿⣿⢡⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⡏⣾⣿⣿⣿⣷⣦⠀⠀⠀⢀⡀⠀⠀⠠⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣡⣾⣿⣿⢏⣾⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⣿⣿⣿⣿⣿⡴⠀⠀⠀⠀⠀⠠⠀⠰⣿⣿⣿⣷⣿⠿⠿⣿⣿⣭⡶⣫⠔⢻⢿⢇⣾⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⣿⣿⣿⡿⢫⣽⠟⣋⠀⠀⠀⠀⣶⣦⠀⠀⠀⠈⠻⣿⣿⣿⣾⣿⣿⣿⣿⡿⣣⣿⣿⢸⣾⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⡿⠛⣹⣶⣶⣶⣾⣿⣷⣦⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠉⠛⠻⢿⣿⡿⠫⠾⠿⠋⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⡆⣠⢀⣴⣏⡀⠀⠀⠀⠉⠀⠀⢀⣠⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⠿⠛⠛⠛⠛⠛⠛⠻⢿⣿⣿⣿⣿⣯⣟⠷⢷⣿⡿⠋⠀⠀⠀⠀⣵⡀⢠⡿⠋⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
[[⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⢿⣿⣿⠂⠀⠀⠀⠀⠀⢀⣽⣿⣿⣿⣿⣿⣿⣿⣍⠛⠿⣿⣿⣿⣿⣿⣿]],
|
||||||
|
}
|
||||||
|
|
||||||
|
return require("modules.utils").extend_config(settings, "user.settings")
|
|
@ -0,0 +1,169 @@
|
||||||
|
---@class map_rhs
|
||||||
|
---@field cmd string
|
||||||
|
---@field options table
|
||||||
|
---@field options.noremap boolean
|
||||||
|
---@field options.silent boolean
|
||||||
|
---@field options.expr boolean
|
||||||
|
---@field options.nowait boolean
|
||||||
|
---@field options.callback function
|
||||||
|
---@field options.desc string
|
||||||
|
---@field buffer boolean|number
|
||||||
|
local rhs_options = {}
|
||||||
|
|
||||||
|
function rhs_options:new()
|
||||||
|
local instance = {
|
||||||
|
cmd = "",
|
||||||
|
options = {
|
||||||
|
noremap = false,
|
||||||
|
silent = false,
|
||||||
|
expr = false,
|
||||||
|
nowait = false,
|
||||||
|
callback = nil,
|
||||||
|
desc = "",
|
||||||
|
},
|
||||||
|
buffer = false,
|
||||||
|
}
|
||||||
|
setmetatable(instance, self)
|
||||||
|
self.__index = self
|
||||||
|
return instance
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:map_cmd(cmd_string)
|
||||||
|
self.cmd = cmd_string
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:map_cr(cmd_string)
|
||||||
|
self.cmd = (":%s<CR>"):format(cmd_string)
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:map_args(cmd_string)
|
||||||
|
self.cmd = (":%s<Space>"):format(cmd_string)
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:map_cu(cmd_string)
|
||||||
|
-- <C-u> to eliminate the automatically inserted range in visual mode
|
||||||
|
self.cmd = (":<C-u>%s<CR>"):format(cmd_string)
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param callback fun():nil
|
||||||
|
--- Takes a callback that will be called when the key is pressed
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:map_callback(callback)
|
||||||
|
self.cmd = ""
|
||||||
|
self.options.callback = callback
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:with_silent()
|
||||||
|
self.options.silent = true
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param description_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:with_desc(description_string)
|
||||||
|
self.options.desc = description_string
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:with_noremap()
|
||||||
|
self.options.noremap = true
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:with_expr()
|
||||||
|
self.options.expr = true
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:with_nowait()
|
||||||
|
self.options.nowait = true
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param num number
|
||||||
|
---@return map_rhs
|
||||||
|
function rhs_options:with_buffer(num)
|
||||||
|
self.buffer = num
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
local bind = {}
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function bind.map_cr(cmd_string)
|
||||||
|
local ro = rhs_options:new()
|
||||||
|
return ro:map_cr(cmd_string)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function bind.map_cmd(cmd_string)
|
||||||
|
local ro = rhs_options:new()
|
||||||
|
return ro:map_cmd(cmd_string)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function bind.map_cu(cmd_string)
|
||||||
|
local ro = rhs_options:new()
|
||||||
|
return ro:map_cu(cmd_string)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return map_rhs
|
||||||
|
function bind.map_args(cmd_string)
|
||||||
|
local ro = rhs_options:new()
|
||||||
|
return ro:map_args(cmd_string)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param callback fun():nil
|
||||||
|
---@return map_rhs
|
||||||
|
function bind.map_callback(callback)
|
||||||
|
local ro = rhs_options:new()
|
||||||
|
return ro:map_callback(callback)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param cmd_string string
|
||||||
|
---@return string escaped_string
|
||||||
|
function bind.escape_termcode(cmd_string)
|
||||||
|
return vim.api.nvim_replace_termcodes(cmd_string, true, true, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param mapping table<string, map_rhs>
|
||||||
|
function bind.nvim_load_mapping(mapping)
|
||||||
|
for key, value in pairs(mapping) do
|
||||||
|
local modes, keymap = key:match("([^|]*)|?(.*)")
|
||||||
|
if type(value) == "table" then
|
||||||
|
for _, mode in ipairs(vim.split(modes, "")) do
|
||||||
|
local rhs = value.cmd
|
||||||
|
local options = value.options
|
||||||
|
local buf = value.buffer
|
||||||
|
if buf and type(buf) == "number" then
|
||||||
|
vim.api.nvim_buf_set_keymap(buf, mode, keymap, rhs, options)
|
||||||
|
else
|
||||||
|
vim.api.nvim_set_keymap(mode, keymap, rhs, options)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return bind
|
|
@ -0,0 +1,91 @@
|
||||||
|
local bind = require("keymap.bind")
|
||||||
|
local map_cr = bind.map_cr
|
||||||
|
local map_callback = bind.map_callback
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
fmt = {
|
||||||
|
["n|<A-f>"] = map_cr("FormatToggle"):with_noremap():with_silent():with_desc("formatter: Toggle format on save"),
|
||||||
|
["n|<A-S-f>"] = map_cr("Format"):with_noremap():with_silent():with_desc("formatter: Format buffer manually"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
bind.nvim_load_mapping(mappings.fmt)
|
||||||
|
|
||||||
|
--- The following code allows this file to be exported ---
|
||||||
|
--- for use with LSP lazy-loaded keymap bindings ---
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
---@param buf integer
|
||||||
|
function M.lsp(buf)
|
||||||
|
local map = {
|
||||||
|
-- LSP-related keymaps, ONLY effective in buffers with LSP(s) attached
|
||||||
|
["n|<leader>li"] = map_cr("LspInfo"):with_silent():with_buffer(buf):with_desc("lsp: Info"),
|
||||||
|
["n|<leader>lr"] = map_cr("LspRestart"):with_silent():with_buffer(buf):with_nowait():with_desc("lsp: Restart"),
|
||||||
|
["n|go"] = map_callback(function()
|
||||||
|
require("edgy").toggle("right")
|
||||||
|
end)
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Toggle outline"),
|
||||||
|
["n|g["] = map_cr("Lspsaga diagnostic_jump_prev")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Prev diagnostic"),
|
||||||
|
["n|g]"] = map_cr("Lspsaga diagnostic_jump_next")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Next diagnostic"),
|
||||||
|
["n|<leader>lx"] = map_cr("Lspsaga show_line_diagnostics ++unfocus")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Line diagnostic"),
|
||||||
|
["n|gs"] = map_callback(function()
|
||||||
|
vim.lsp.buf.signature_help()
|
||||||
|
end):with_desc("lsp: Signature help"),
|
||||||
|
["n|gr"] = map_cr("Lspsaga rename"):with_silent():with_buffer(buf):with_desc("lsp: Rename in file range"),
|
||||||
|
["n|gR"] = map_cr("Lspsaga rename ++project")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Rename in project range"),
|
||||||
|
["n|K"] = map_cr("Lspsaga hover_doc"):with_silent():with_buffer(buf):with_desc("lsp: Show doc"),
|
||||||
|
["nv|ga"] = map_cr("Lspsaga code_action")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Code action for cursor"),
|
||||||
|
["n|gd"] = map_cr("Glance definitions"):with_silent():with_buffer(buf):with_desc("lsp: Preview definition"),
|
||||||
|
["n|gD"] = map_cr("Lspsaga goto_definition"):with_silent():with_buffer(buf):with_desc("lsp: Goto definition"),
|
||||||
|
["n|gh"] = map_cr("Glance references"):with_silent():with_buffer(buf):with_desc("lsp: Show reference"),
|
||||||
|
["n|gm"] = map_cr("Glance implementations")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Show implementation"),
|
||||||
|
["n|gci"] = map_cr("Lspsaga incoming_calls")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Show incoming calls"),
|
||||||
|
["n|gco"] = map_cr("Lspsaga outgoing_calls")
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(buf)
|
||||||
|
:with_desc("lsp: Show outgoing calls"),
|
||||||
|
["n|<leader>lv"] = map_callback(function()
|
||||||
|
_toggle_virtualtext()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("lsp: Toggle virtual text display of current buffer"),
|
||||||
|
["n|<leader>lh"] = map_callback(function()
|
||||||
|
_toggle_inlayhint()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("lsp: Toggle inlay hints dispaly of current buffer"),
|
||||||
|
}
|
||||||
|
bind.nvim_load_mapping(map)
|
||||||
|
|
||||||
|
local ok, user_mappings = pcall(require, "user.keymap.completion")
|
||||||
|
if ok and type(user_mappings.lsp) == "function" then
|
||||||
|
require("modules.utils.keymap").replace(user_mappings.lsp(buf))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -0,0 +1,140 @@
|
||||||
|
local bind = require("keymap.bind")
|
||||||
|
local map_cr = bind.map_cr
|
||||||
|
local map_cu = bind.map_cu
|
||||||
|
local map_cmd = bind.map_cmd
|
||||||
|
local map_callback = bind.map_callback
|
||||||
|
local et = bind.escape_termcode
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
builtins = {
|
||||||
|
-- Builtins: Save & Quit
|
||||||
|
["n|<C-s>"] = map_cu("write"):with_noremap():with_silent():with_desc("edit: Save file"),
|
||||||
|
["n|<C-q>"] = map_cr("wq"):with_desc("edit: Save file and quit"),
|
||||||
|
["n|<A-S-q>"] = map_cr("q!"):with_desc("edit: Force quit"),
|
||||||
|
|
||||||
|
-- Builtins: Insert mode
|
||||||
|
["i|<C-u>"] = map_cmd("<C-G>u<C-U>"):with_noremap():with_desc("edit: Delete previous block"),
|
||||||
|
["i|<C-b>"] = map_cmd("<Left>"):with_noremap():with_desc("edit: Move cursor to left"),
|
||||||
|
["i|<C-a>"] = map_cmd("<ESC>^i"):with_noremap():with_desc("edit: Move cursor to line start"),
|
||||||
|
["i|<C-s>"] = map_cmd("<Esc>:w<CR>"):with_desc("edit: Save file"),
|
||||||
|
["i|<C-q>"] = map_cmd("<Esc>:wq<CR>"):with_desc("edit: Save file and quit"),
|
||||||
|
|
||||||
|
-- Builtins: Command mode
|
||||||
|
["c|<C-b>"] = map_cmd("<Left>"):with_noremap():with_desc("edit: Left"),
|
||||||
|
["c|<C-f>"] = map_cmd("<Right>"):with_noremap():with_desc("edit: Right"),
|
||||||
|
["c|<C-a>"] = map_cmd("<Home>"):with_noremap():with_desc("edit: Home"),
|
||||||
|
["c|<C-e>"] = map_cmd("<End>"):with_noremap():with_desc("edit: End"),
|
||||||
|
["c|<C-d>"] = map_cmd("<Del>"):with_noremap():with_desc("edit: Delete"),
|
||||||
|
["c|<C-h>"] = map_cmd("<BS>"):with_noremap():with_desc("edit: Backspace"),
|
||||||
|
["c|<C-t>"] = map_cmd([[<C-R>=expand("%:p:h") . "/" <CR>]])
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("edit: Complete path of current file"),
|
||||||
|
|
||||||
|
-- Builtins: Visual mode
|
||||||
|
["v|J"] = map_cmd(":m '>+1<CR>gv=gv"):with_desc("edit: Move this line down"),
|
||||||
|
["v|K"] = map_cmd(":m '<-2<CR>gv=gv"):with_desc("edit: Move this line up"),
|
||||||
|
["v|<"] = map_cmd("<gv"):with_desc("edit: Decrease indent"),
|
||||||
|
["v|>"] = map_cmd(">gv"):with_desc("edit: Increase indent"),
|
||||||
|
|
||||||
|
-- Builtins: "Suckless" - named after r/suckless
|
||||||
|
["n|Y"] = map_cmd("y$"):with_desc("edit: Yank text to EOL"),
|
||||||
|
["n|D"] = map_cmd("d$"):with_desc("edit: Delete text to EOL"),
|
||||||
|
["n|n"] = map_cmd("nzzzv"):with_noremap():with_desc("edit: Next search result"),
|
||||||
|
["n|N"] = map_cmd("Nzzzv"):with_noremap():with_desc("edit: Prev search result"),
|
||||||
|
["n|J"] = map_cmd("mzJ`z"):with_noremap():with_desc("edit: Join next line"),
|
||||||
|
["n|<S-Tab>"] = map_cr("normal za"):with_noremap():with_silent():with_desc("edit: Toggle code fold"),
|
||||||
|
["n|<Esc>"] = map_callback(function()
|
||||||
|
_flash_esc_or_noh()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("edit: Clear search highlight"),
|
||||||
|
["n|<leader>o"] = map_cr("setlocal spell! spelllang=en_us"):with_desc("edit: Toggle spell check"),
|
||||||
|
},
|
||||||
|
plugins = {
|
||||||
|
-- Plugin: persisted.nvim
|
||||||
|
["n|<leader>ss"] = map_cu("SessionSave"):with_noremap():with_silent():with_desc("session: Save"),
|
||||||
|
["n|<leader>sl"] = map_cu("SessionLoad"):with_noremap():with_silent():with_desc("session: Load current"),
|
||||||
|
["n|<leader>sd"] = map_cu("SessionDelete"):with_noremap():with_silent():with_desc("session: Delete"),
|
||||||
|
|
||||||
|
-- Plugin: comment.nvim
|
||||||
|
["n|gcc"] = map_callback(function()
|
||||||
|
return vim.v.count == 0 and et("<Plug>(comment_toggle_linewise_current)")
|
||||||
|
or et("<Plug>(comment_toggle_linewise_count)")
|
||||||
|
end)
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_expr()
|
||||||
|
:with_desc("edit: Toggle comment for line"),
|
||||||
|
["n|gbc"] = map_callback(function()
|
||||||
|
return vim.v.count == 0 and et("<Plug>(comment_toggle_blockwise_current)")
|
||||||
|
or et("<Plug>(comment_toggle_blockwise_count)")
|
||||||
|
end)
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_expr()
|
||||||
|
:with_desc("edit: Toggle comment for block"),
|
||||||
|
["n|gc"] = map_cmd("<Plug>(comment_toggle_linewise)")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("edit: Toggle comment for line with operator"),
|
||||||
|
["n|gb"] = map_cmd("<Plug>(comment_toggle_blockwise)")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("edit: Toggle comment for block with operator"),
|
||||||
|
["x|gc"] = map_cmd("<Plug>(comment_toggle_linewise_visual)")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("edit: Toggle comment for line with selection"),
|
||||||
|
["x|gb"] = map_cmd("<Plug>(comment_toggle_blockwise_visual)")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("edit: Toggle comment for block with selection"),
|
||||||
|
|
||||||
|
-- Plugin: diffview.nvim
|
||||||
|
["n|<leader>gd"] = map_cr("DiffviewOpen"):with_silent():with_noremap():with_desc("git: Show diff"),
|
||||||
|
["n|<leader>gD"] = map_cr("DiffviewClose"):with_silent():with_noremap():with_desc("git: Close diff"),
|
||||||
|
|
||||||
|
-- Plugin: hop.nvim
|
||||||
|
["nv|<leader>w"] = map_cmd("<Cmd>HopWordMW<CR>"):with_noremap():with_desc("jump: Goto word"),
|
||||||
|
["nv|<leader>j"] = map_cmd("<Cmd>HopLineMW<CR>"):with_noremap():with_desc("jump: Goto line"),
|
||||||
|
["nv|<leader>k"] = map_cmd("<Cmd>HopLineMW<CR>"):with_noremap():with_desc("jump: Goto line"),
|
||||||
|
["nv|<leader>c"] = map_cmd("<Cmd>HopChar1MW<CR>"):with_noremap():with_desc("jump: Goto one char"),
|
||||||
|
["nv|<leader>C"] = map_cmd("<Cmd>HopChar2MW<CR>"):with_noremap():with_desc("jump: Goto two chars"),
|
||||||
|
|
||||||
|
-- Plugin: grug-far
|
||||||
|
["n|<leader>Ss"] = map_callback(function()
|
||||||
|
require("grug-far").open()
|
||||||
|
end)
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("editn: Toggle search & replace panel"),
|
||||||
|
["n|<leader>Sp"] = map_callback(function()
|
||||||
|
require("grug-far").open({ prefills = { search = vim.fn.expand("<cword>") } })
|
||||||
|
end)
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("editn: search&replace current word (project)"),
|
||||||
|
["v|<leader>Sp"] = map_callback(function()
|
||||||
|
require("grug-far").with_visual_selection()
|
||||||
|
end)
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("edit: search & replace current word (project)"),
|
||||||
|
["n|<leader>Sf"] = map_callback(function()
|
||||||
|
require("grug-far").open({ prefills = { paths = vim.fn.expand("%") } })
|
||||||
|
end)
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("editn: search & replace current word (file)"),
|
||||||
|
|
||||||
|
-- Plugin: nvim-treehopper
|
||||||
|
["o|m"] = map_cu("lua require('tsht').nodes()"):with_silent():with_desc("jump: Operate across syntax tree"),
|
||||||
|
|
||||||
|
-- Plugin: suda.vim
|
||||||
|
["n|<A-s>"] = map_cu("SudaWrite"):with_silent():with_noremap():with_desc("editn: Save file using sudo"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
bind.nvim_load_mapping(mappings.builtins)
|
||||||
|
bind.nvim_load_mapping(mappings.plugins)
|
|
@ -0,0 +1,86 @@
|
||||||
|
_G._command_panel = function()
|
||||||
|
require("telescope.builtin").keymaps({
|
||||||
|
lhs_filter = function(lhs)
|
||||||
|
return not string.find(lhs, "Þ")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
_G._flash_esc_or_noh = function()
|
||||||
|
local flash_active, state = pcall(function()
|
||||||
|
return require("flash.plugins.char").state
|
||||||
|
end)
|
||||||
|
if flash_active and state then
|
||||||
|
state:hide()
|
||||||
|
else
|
||||||
|
pcall(vim.cmd.noh)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
_G._telescope_collections = function(picker_type)
|
||||||
|
local actions = require("telescope.actions")
|
||||||
|
local action_state = require("telescope.actions.state")
|
||||||
|
local conf = require("telescope.config").values
|
||||||
|
local finder = require("telescope.finders")
|
||||||
|
local pickers = require("telescope.pickers")
|
||||||
|
picker_type = picker_type or {}
|
||||||
|
|
||||||
|
local collections = vim.tbl_keys(require("search.tabs").collections)
|
||||||
|
pickers
|
||||||
|
.new(picker_type, {
|
||||||
|
prompt_title = "Telescope Collections",
|
||||||
|
finder = finder.new_table({ results = collections }),
|
||||||
|
sorter = conf.generic_sorter(picker_type),
|
||||||
|
attach_mappings = function(bufnr)
|
||||||
|
actions.select_default:replace(function()
|
||||||
|
actions.close(bufnr)
|
||||||
|
local selection = action_state.get_selected_entry()
|
||||||
|
require("search").open({ collection = selection[1] })
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
:find()
|
||||||
|
end
|
||||||
|
|
||||||
|
_G._toggle_inlayhint = function()
|
||||||
|
local is_enabled = vim.lsp.inlay_hint.is_enabled()
|
||||||
|
|
||||||
|
vim.lsp.inlay_hint.enable(not is_enabled)
|
||||||
|
vim.notify(
|
||||||
|
(is_enabled and "Inlay hint disabled successfully" or "Inlay hint enabled successfully"),
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "LSP Inlay Hint" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
local _vt_enabled = require("core.settings").diagnostics_virtual_text
|
||||||
|
_G._toggle_virtualtext = function()
|
||||||
|
if vim.diagnostic.is_enabled() then
|
||||||
|
_vt_enabled = not _vt_enabled
|
||||||
|
vim.diagnostic[_vt_enabled and "show" or "hide"]()
|
||||||
|
vim.notify(
|
||||||
|
(_vt_enabled and "Virtual text is now displayed" or "Virtual text is now hidden"),
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "LSP Diagnostic" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local _lazygit = nil
|
||||||
|
_G._toggle_lazygit = function()
|
||||||
|
if vim.fn.executable("lazygit") == 1 then
|
||||||
|
if not _lazygit then
|
||||||
|
_lazygit = require("toggleterm.terminal").Terminal:new({
|
||||||
|
cmd = "lazygit",
|
||||||
|
direction = "float",
|
||||||
|
close_on_exit = true,
|
||||||
|
hidden = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
_lazygit:toggle()
|
||||||
|
else
|
||||||
|
vim.notify("Command [lazygit] not found!", vim.log.levels.ERROR, { title = "toggleterm.nvim" })
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,50 @@
|
||||||
|
require("keymap.helpers")
|
||||||
|
local bind = require("keymap.bind")
|
||||||
|
local map_cr = bind.map_cr
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
core = {
|
||||||
|
-- Package manager: lazy.nvim
|
||||||
|
["n|<leader>ph"] = map_cr("Lazy"):with_silent():with_noremap():with_nowait():with_desc("package: Show"),
|
||||||
|
["n|<leader>ps"] = map_cr("Lazy sync"):with_silent():with_noremap():with_nowait():with_desc("package: Sync"),
|
||||||
|
["n|<leader>pu"] = map_cr("Lazy update")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_nowait()
|
||||||
|
:with_desc("package: Update"),
|
||||||
|
["n|<leader>pi"] = map_cr("Lazy install")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_nowait()
|
||||||
|
:with_desc("package: Install"),
|
||||||
|
["n|<leader>pl"] = map_cr("Lazy log"):with_silent():with_noremap():with_nowait():with_desc("package: Log"),
|
||||||
|
["n|<leader>pc"] = map_cr("Lazy check"):with_silent():with_noremap():with_nowait():with_desc("package: Check"),
|
||||||
|
["n|<leader>pd"] = map_cr("Lazy debug"):with_silent():with_noremap():with_nowait():with_desc("package: Debug"),
|
||||||
|
["n|<leader>pp"] = map_cr("Lazy profile")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_nowait()
|
||||||
|
:with_desc("package: Profile"),
|
||||||
|
["n|<leader>pr"] = map_cr("Lazy restore")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_nowait()
|
||||||
|
:with_desc("package: Restore"),
|
||||||
|
["n|<leader>px"] = map_cr("Lazy clean"):with_silent():with_noremap():with_nowait():with_desc("package: Clean"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
bind.nvim_load_mapping(mappings.core)
|
||||||
|
|
||||||
|
-- Builtin & Plugin keymaps
|
||||||
|
require("keymap.completion")
|
||||||
|
require("keymap.editor")
|
||||||
|
require("keymap.lang")
|
||||||
|
require("keymap.tool")
|
||||||
|
require("keymap.ui")
|
||||||
|
|
||||||
|
-- User keymaps
|
||||||
|
local ok, def = pcall(require, "user.keymap.init")
|
||||||
|
if ok then
|
||||||
|
require("modules.utils.keymap").replace(def)
|
||||||
|
end
|
|
@ -0,0 +1,16 @@
|
||||||
|
local bind = require("keymap.bind")
|
||||||
|
local map_cr = bind.map_cr
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
plugins = {
|
||||||
|
-- Plugin: render-markdown.nvim
|
||||||
|
["n|<F1>"] = map_cr("RenderMarkdown toggle")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: toggle markdown preview within nvim"),
|
||||||
|
-- Plugin: MarkdownPreview
|
||||||
|
["n|<F12>"] = map_cr("MarkdownPreviewToggle"):with_noremap():with_silent():with_desc("tool: Preview markdown"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
bind.nvim_load_mapping(mappings.plugins)
|
|
@ -0,0 +1,216 @@
|
||||||
|
local vim_path = require("core.global").vim_path
|
||||||
|
local bind = require("keymap.bind")
|
||||||
|
local map_cr = bind.map_cr
|
||||||
|
local map_cu = bind.map_cu
|
||||||
|
local map_cmd = bind.map_cmd
|
||||||
|
local map_callback = bind.map_callback
|
||||||
|
require("keymap.helpers")
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
plugins = {
|
||||||
|
-- Plugin: edgy
|
||||||
|
["n|<C-n>"] = map_callback(function()
|
||||||
|
require("edgy").toggle("left")
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("filetree: Toggle"),
|
||||||
|
|
||||||
|
-- Plugin: vim-fugitive
|
||||||
|
["n|gps"] = map_cr("G push"):with_noremap():with_silent():with_desc("git: Push"),
|
||||||
|
["n|gpl"] = map_cr("G pull"):with_noremap():with_silent():with_desc("git: Pull"),
|
||||||
|
["n|<leader>gG"] = map_cu("Git"):with_noremap():with_silent():with_desc("git: Open git-fugitive"),
|
||||||
|
|
||||||
|
-- Plugin: nvim-tree
|
||||||
|
["n|<leader>nf"] = map_cr("NvimTreeFindFile"):with_noremap():with_silent():with_desc("filetree: Find file"),
|
||||||
|
["n|<leader>nr"] = map_cr("NvimTreeRefresh"):with_noremap():with_silent():with_desc("filetree: Refresh"),
|
||||||
|
|
||||||
|
-- Plugin: sniprun
|
||||||
|
["v|<leader>r"] = map_cr("SnipRun"):with_noremap():with_silent():with_desc("tool: Run code by range"),
|
||||||
|
["n|<leader>r"] = map_cu([[%SnipRun]]):with_noremap():with_silent():with_desc("tool: Run code by file"),
|
||||||
|
|
||||||
|
-- Plugin: toggleterm
|
||||||
|
["t|<Esc><Esc>"] = map_cmd([[<C-\><C-n>]]):with_noremap():with_silent(), -- switch to normal mode in terminal.
|
||||||
|
["n|<C-\\>"] = map_cr("ToggleTerm direction=horizontal")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle horizontal"),
|
||||||
|
["i|<C-\\>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=horizontal<CR>")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle horizontal"),
|
||||||
|
["t|<C-\\>"] = map_cmd("<Cmd>ToggleTerm<CR>")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle horizontal"),
|
||||||
|
["n|<A-\\>"] = map_cr("ToggleTerm direction=vertical")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle vertical"),
|
||||||
|
["i|<A-\\>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=vertical<CR>")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle vertical"),
|
||||||
|
["t|<A-\\>"] = map_cmd("<Cmd>ToggleTerm<CR>")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle vertical"),
|
||||||
|
["n|<F5>"] = map_cr("ToggleTerm direction=vertical")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle vertical"),
|
||||||
|
["i|<F5>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=vertical<CR>")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle vertical"),
|
||||||
|
["t|<F5>"] = map_cmd("<Cmd>ToggleTerm<CR>"):with_noremap():with_silent():with_desc("terminal: Toggle vertical"),
|
||||||
|
["n|<A-d>"] = map_cr("ToggleTerm direction=float")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle float"),
|
||||||
|
["i|<A-d>"] = map_cmd("<Esc><Cmd>ToggleTerm direction=float<CR>")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("terminal: Toggle float"),
|
||||||
|
["t|<A-d>"] = map_cmd("<Cmd>ToggleTerm<CR>"):with_noremap():with_silent():with_desc("terminal: Toggle float"),
|
||||||
|
["n|<leader>gg"] = map_callback(function()
|
||||||
|
_toggle_lazygit()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("git: Toggle lazygit"),
|
||||||
|
|
||||||
|
-- Plugin: trouble
|
||||||
|
["n|gt"] = map_cr("Trouble diagnostics toggle")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("lsp: Toggle trouble list"),
|
||||||
|
["n|<leader>lw"] = map_cr("Trouble diagnostics toggle")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("lsp: Show workspace diagnostics"),
|
||||||
|
["n|<leader>lp"] = map_cr("Trouble project_diagnostics toggle")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("lsp: Show project diagnostics"),
|
||||||
|
["n|<leader>ld"] = map_cr("Trouble diagnostics toggle filter.buf=0")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("lsp: Show document diagnostics"),
|
||||||
|
|
||||||
|
-- Plugin: telescope
|
||||||
|
["n|<C-p>"] = map_callback(function()
|
||||||
|
_command_panel()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Toggle command panel"),
|
||||||
|
["n|<leader>fc"] = map_callback(function()
|
||||||
|
_telescope_collections(require("telescope.themes").get_dropdown())
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Open Telescope collections"),
|
||||||
|
["n|<leader>ff"] = map_callback(function()
|
||||||
|
require("search").open({ collection = "file" })
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Find files"),
|
||||||
|
["n|<leader>fp"] = map_callback(function()
|
||||||
|
require("search").open({ collection = "pattern" })
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Find patterns"),
|
||||||
|
["v|<leader>fs"] = map_callback(function()
|
||||||
|
local opts = vim.fn.getcwd() == vim_path and { additional_args = { "--no-ignore" } } or {}
|
||||||
|
require("telescope-live-grep-args.shortcuts").grep_visual_selection(opts)
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Find word under cursor"),
|
||||||
|
["n|<leader>fg"] = map_callback(function()
|
||||||
|
require("search").open({ collection = "git" })
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Locate Git objects"),
|
||||||
|
["n|<leader>fd"] = map_callback(function()
|
||||||
|
require("search").open({ collection = "dossier" })
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Retrieve dossiers"),
|
||||||
|
["n|<leader>fm"] = map_callback(function()
|
||||||
|
require("search").open({ collection = "misc" })
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("tool: Miscellaneous"),
|
||||||
|
|
||||||
|
-- Plugin: dap
|
||||||
|
["n|<F6>"] = map_callback(function()
|
||||||
|
require("dap").continue()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Run/Continue"),
|
||||||
|
["n|<F7>"] = map_callback(function()
|
||||||
|
require("dap").terminate()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Stop"),
|
||||||
|
["n|<F8>"] = map_callback(function()
|
||||||
|
require("dap").toggle_breakpoint()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Toggle breakpoint"),
|
||||||
|
["n|<F9>"] = map_callback(function()
|
||||||
|
require("dap").step_into()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Step into"),
|
||||||
|
["n|<F10>"] = map_callback(function()
|
||||||
|
require("dap").step_out()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Step out"),
|
||||||
|
["n|<F11>"] = map_callback(function()
|
||||||
|
require("dap").step_over()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Step over"),
|
||||||
|
["n|<leader>db"] = map_callback(function()
|
||||||
|
require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: "))
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Set breakpoint with condition"),
|
||||||
|
["n|<leader>dc"] = map_callback(function()
|
||||||
|
require("dap").run_to_cursor()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Run to cursor"),
|
||||||
|
["n|<leader>dl"] = map_callback(function()
|
||||||
|
require("dap").run_last()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Run last"),
|
||||||
|
["n|<leader>do"] = map_callback(function()
|
||||||
|
require("dap").repl.open()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("debug: Open REPL"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
bind.nvim_load_mapping(mappings.plugins)
|
|
@ -0,0 +1,171 @@
|
||||||
|
local bind = require("keymap.bind")
|
||||||
|
local map_cr = bind.map_cr
|
||||||
|
local map_cu = bind.map_cu
|
||||||
|
local map_cmd = bind.map_cmd
|
||||||
|
local map_callback = bind.map_callback
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
builtins = {
|
||||||
|
-- Builtins: Buffer
|
||||||
|
["n|<leader>bn"] = map_cu("enew"):with_noremap():with_silent():with_desc("buffer: New"),
|
||||||
|
|
||||||
|
-- Builtins: Terminal
|
||||||
|
["t|<C-w>h"] = map_cmd("<Cmd>wincmd h<CR>"):with_silent():with_noremap():with_desc("window: Focus left"),
|
||||||
|
["t|<C-w>l"] = map_cmd("<Cmd>wincmd l<CR>"):with_silent():with_noremap():with_desc("window: Focus right"),
|
||||||
|
["t|<C-w>j"] = map_cmd("<Cmd>wincmd j<CR>"):with_silent():with_noremap():with_desc("window: Focus down"),
|
||||||
|
["t|<C-w>k"] = map_cmd("<Cmd>wincmd k<CR>"):with_silent():with_noremap():with_desc("window: Focus up"),
|
||||||
|
|
||||||
|
-- Builtins: Tabpage
|
||||||
|
["n|tn"] = map_cr("tabnew"):with_noremap():with_silent():with_desc("tab: Create a new tab"),
|
||||||
|
["n|tk"] = map_cr("tabnext"):with_noremap():with_silent():with_desc("tab: Move to next tab"),
|
||||||
|
["n|tj"] = map_cr("tabprevious"):with_noremap():with_silent():with_desc("tab: Move to previous tab"),
|
||||||
|
["n|to"] = map_cr("tabonly"):with_noremap():with_silent():with_desc("tab: Only keep current tab"),
|
||||||
|
},
|
||||||
|
plugins = {
|
||||||
|
-- Plugin: nvim-bufdel
|
||||||
|
["n|<A-q>"] = map_cr("BufDel"):with_noremap():with_silent():with_desc("buffer: Close current"),
|
||||||
|
|
||||||
|
-- Plugin: bufferline.nvim
|
||||||
|
["n|<A-i>"] = map_cr("BufferLineCycleNext"):with_noremap():with_silent():with_desc("buffer: Switch to next"),
|
||||||
|
["n|<A-o>"] = map_cr("BufferLineCyclePrev"):with_noremap():with_silent():with_desc("buffer: Switch to prev"),
|
||||||
|
["n|<A-S-i>"] = map_cr("BufferLineMoveNext")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("buffer: Move current to next"),
|
||||||
|
["n|<A-S-o>"] = map_cr("BufferLineMovePrev")
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_desc("buffer: Move current to prev"),
|
||||||
|
["n|<leader>be"] = map_cr("BufferLineSortByExtension"):with_noremap():with_desc("buffer: Sort by extension"),
|
||||||
|
["n|<leader>bd"] = map_cr("BufferLineSortByDirectory"):with_noremap():with_desc("buffer: Sort by directory"),
|
||||||
|
["n|<A-1>"] = map_cr("BufferLineGoToBuffer 1"):with_noremap():with_silent():with_desc("buffer: Goto buffer 1"),
|
||||||
|
["n|<A-2>"] = map_cr("BufferLineGoToBuffer 2"):with_noremap():with_silent():with_desc("buffer: Goto buffer 2"),
|
||||||
|
["n|<A-3>"] = map_cr("BufferLineGoToBuffer 3"):with_noremap():with_silent():with_desc("buffer: Goto buffer 3"),
|
||||||
|
["n|<A-4>"] = map_cr("BufferLineGoToBuffer 4"):with_noremap():with_silent():with_desc("buffer: Goto buffer 4"),
|
||||||
|
["n|<A-5>"] = map_cr("BufferLineGoToBuffer 5"):with_noremap():with_silent():with_desc("buffer: Goto buffer 5"),
|
||||||
|
["n|<A-6>"] = map_cr("BufferLineGoToBuffer 6"):with_noremap():with_silent():with_desc("buffer: Goto buffer 6"),
|
||||||
|
["n|<A-7>"] = map_cr("BufferLineGoToBuffer 7"):with_noremap():with_silent():with_desc("buffer: Goto buffer 7"),
|
||||||
|
["n|<A-8>"] = map_cr("BufferLineGoToBuffer 8"):with_noremap():with_silent():with_desc("buffer: Goto buffer 8"),
|
||||||
|
["n|<A-9>"] = map_cr("BufferLineGoToBuffer 9"):with_noremap():with_silent():with_desc("buffer: Goto buffer 9"),
|
||||||
|
|
||||||
|
-- Plugin: smart-splits.nvim
|
||||||
|
["n|<A-h>"] = map_cu("SmartResizeLeft")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("window: Resize -3 horizontally"),
|
||||||
|
["n|<A-j>"] = map_cu("SmartResizeDown"):with_silent():with_noremap():with_desc("window: Resize -3 vertically"),
|
||||||
|
["n|<A-k>"] = map_cu("SmartResizeUp"):with_silent():with_noremap():with_desc("window: Resize +3 vertically"),
|
||||||
|
["n|<A-l>"] = map_cu("SmartResizeRight")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("window: Resize +3 horizontally"),
|
||||||
|
["n|<C-h>"] = map_cu("SmartCursorMoveLeft"):with_silent():with_noremap():with_desc("window: Focus left"),
|
||||||
|
["n|<C-j>"] = map_cu("SmartCursorMoveDown"):with_silent():with_noremap():with_desc("window: Focus down"),
|
||||||
|
["n|<C-k>"] = map_cu("SmartCursorMoveUp"):with_silent():with_noremap():with_desc("window: Focus up"),
|
||||||
|
["n|<C-l>"] = map_cu("SmartCursorMoveRight"):with_silent():with_noremap():with_desc("window: Focus right"),
|
||||||
|
["n|<leader>Wh"] = map_cu("SmartSwapLeft")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("window: Move window leftward"),
|
||||||
|
["n|<leader>Wj"] = map_cu("SmartSwapDown")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("window: Move window downward"),
|
||||||
|
["n|<leader>Wk"] = map_cu("SmartSwapUp"):with_silent():with_noremap():with_desc("window: Move window upward"),
|
||||||
|
["n|<leader>Wl"] = map_cu("SmartSwapRight")
|
||||||
|
:with_silent()
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("window: Move window rightward"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
bind.nvim_load_mapping(mappings.builtins)
|
||||||
|
bind.nvim_load_mapping(mappings.plugins)
|
||||||
|
|
||||||
|
--- The following code enables this file to be exported ---
|
||||||
|
--- for use with gitsigns lazy-loaded keymap bindings ---
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.gitsigns(bufnr)
|
||||||
|
local gitsigns = require("gitsigns")
|
||||||
|
local map = {
|
||||||
|
["n|]g"] = map_callback(function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
return "]g"
|
||||||
|
end
|
||||||
|
vim.schedule(function()
|
||||||
|
gitsigns.nav_hunk("next")
|
||||||
|
end)
|
||||||
|
return "<Ignore>"
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_expr()
|
||||||
|
:with_desc("git: Goto next hunk"),
|
||||||
|
["n|[g"] = map_callback(function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
return "[g"
|
||||||
|
end
|
||||||
|
vim.schedule(function()
|
||||||
|
gitsigns.nav_hunk("prev")
|
||||||
|
end)
|
||||||
|
return "<Ignore>"
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_expr()
|
||||||
|
:with_desc("git: Goto prev hunk"),
|
||||||
|
["n|<leader>gs"] = map_callback(function()
|
||||||
|
gitsigns.stage_hunk()
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("git: Toggle staging/unstaging of hunk"),
|
||||||
|
["v|<leader>gs"] = map_callback(function()
|
||||||
|
gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("git: Toggle staging/unstaging of selected hunk"),
|
||||||
|
["n|<leader>gr"] = map_callback(function()
|
||||||
|
gitsigns.reset_hunk()
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("git: Reset hunk"),
|
||||||
|
["v|<leader>gr"] = map_callback(function()
|
||||||
|
gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("git: Reset hunk"),
|
||||||
|
["n|<leader>gR"] = map_callback(function()
|
||||||
|
gitsigns.reset_buffer()
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("git: Reset buffer"),
|
||||||
|
["n|<leader>gp"] = map_callback(function()
|
||||||
|
gitsigns.preview_hunk()
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("git: Preview hunk"),
|
||||||
|
["n|<leader>gb"] = map_callback(function()
|
||||||
|
gitsigns.blame_line({ full = true })
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap()
|
||||||
|
:with_desc("git: Blame line"),
|
||||||
|
-- Text objects
|
||||||
|
["ox|ih"] = map_callback(function()
|
||||||
|
gitsigns.select_hunk()
|
||||||
|
end)
|
||||||
|
:with_buffer(bufnr)
|
||||||
|
:with_noremap(),
|
||||||
|
}
|
||||||
|
bind.nvim_load_mapping(map)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -0,0 +1,206 @@
|
||||||
|
return function()
|
||||||
|
local icons = {
|
||||||
|
kind = require("modules.utils.icons").get("kind"),
|
||||||
|
type = require("modules.utils.icons").get("type"),
|
||||||
|
cmp = require("modules.utils.icons").get("cmp"),
|
||||||
|
}
|
||||||
|
|
||||||
|
local border = function(hl)
|
||||||
|
return {
|
||||||
|
{ "┌", hl },
|
||||||
|
{ "─", hl },
|
||||||
|
{ "┐", hl },
|
||||||
|
{ "│", hl },
|
||||||
|
{ "┘", hl },
|
||||||
|
{ "─", hl },
|
||||||
|
{ "└", hl },
|
||||||
|
{ "│", hl },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local compare = require("cmp.config.compare")
|
||||||
|
compare.lsp_scores = function(entry1, entry2)
|
||||||
|
local diff
|
||||||
|
if entry1.completion_item.score and entry2.completion_item.score then
|
||||||
|
diff = (entry2.completion_item.score * entry2.score) - (entry1.completion_item.score * entry1.score)
|
||||||
|
else
|
||||||
|
diff = entry2.score - entry1.score
|
||||||
|
end
|
||||||
|
return (diff < 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
local use_copilot = require("core.settings").use_copilot
|
||||||
|
local comparators = use_copilot == true
|
||||||
|
and {
|
||||||
|
require("copilot_cmp.comparators").prioritize,
|
||||||
|
require("copilot_cmp.comparators").score,
|
||||||
|
-- require("cmp_tabnine.compare"),
|
||||||
|
compare.offset, -- Items closer to cursor will have lower priority
|
||||||
|
compare.exact,
|
||||||
|
-- compare.scopes,
|
||||||
|
compare.lsp_scores,
|
||||||
|
compare.sort_text,
|
||||||
|
compare.score,
|
||||||
|
compare.recently_used,
|
||||||
|
-- compare.locality, -- Items closer to cursor will have higher priority, conflicts with `offset`
|
||||||
|
require("cmp-under-comparator").under,
|
||||||
|
compare.kind,
|
||||||
|
compare.length,
|
||||||
|
compare.order,
|
||||||
|
}
|
||||||
|
or {
|
||||||
|
-- require("cmp_tabnine.compare"),
|
||||||
|
compare.offset, -- Items closer to cursor will have lower priority
|
||||||
|
compare.exact,
|
||||||
|
-- compare.scopes,
|
||||||
|
compare.lsp_scores,
|
||||||
|
compare.sort_text,
|
||||||
|
compare.score,
|
||||||
|
compare.recently_used,
|
||||||
|
-- compare.locality, -- Items closer to cursor will have higher priority, conflicts with `offset`
|
||||||
|
require("cmp-under-comparator").under,
|
||||||
|
compare.kind,
|
||||||
|
compare.length,
|
||||||
|
compare.order,
|
||||||
|
}
|
||||||
|
|
||||||
|
local cmp = require("cmp")
|
||||||
|
require("modules.utils").load_plugin("cmp", {
|
||||||
|
preselect = cmp.PreselectMode.None,
|
||||||
|
window = {
|
||||||
|
completion = {
|
||||||
|
border = border("PmenuBorder"),
|
||||||
|
winhighlight = "Normal:Pmenu,CursorLine:PmenuSel,Search:PmenuSel",
|
||||||
|
scrollbar = false,
|
||||||
|
},
|
||||||
|
documentation = {
|
||||||
|
border = border("CmpDocBorder"),
|
||||||
|
winhighlight = "Normal:CmpDoc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sorting = {
|
||||||
|
priority_weight = 2,
|
||||||
|
comparators = comparators,
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
fields = { "abbr", "kind", "menu" },
|
||||||
|
format = function(entry, vim_item)
|
||||||
|
local lspkind_icons = vim.tbl_deep_extend("force", icons.kind, icons.type, icons.cmp)
|
||||||
|
-- load lspkind icons
|
||||||
|
vim_item.kind =
|
||||||
|
string.format(" %s %s", lspkind_icons[vim_item.kind] or icons.cmp.undefined, vim_item.kind or "")
|
||||||
|
|
||||||
|
-- set up labels for completion entries
|
||||||
|
vim_item.menu = setmetatable({
|
||||||
|
cmp_tabnine = "[TN]",
|
||||||
|
copilot = "[CPLT]",
|
||||||
|
buffer = "[BUF]",
|
||||||
|
orgmode = "[ORG]",
|
||||||
|
nvim_lsp = "[LSP]",
|
||||||
|
nvim_lua = "[LUA]",
|
||||||
|
path = "[PATH]",
|
||||||
|
tmux = "[TMUX]",
|
||||||
|
treesitter = "[TS]",
|
||||||
|
latex_symbols = "[LTEX]",
|
||||||
|
luasnip = "[SNIP]",
|
||||||
|
spell = "[SPELL]",
|
||||||
|
}, {
|
||||||
|
__index = function()
|
||||||
|
return "[BTN]" -- builtin/unknown source names
|
||||||
|
end,
|
||||||
|
})[entry.source.name]
|
||||||
|
|
||||||
|
-- cut down long results
|
||||||
|
local label = vim_item.abbr
|
||||||
|
local truncated_label = vim.fn.strcharpart(label, 0, 80)
|
||||||
|
if truncated_label ~= label then
|
||||||
|
vim_item.abbr = truncated_label .. "..."
|
||||||
|
end
|
||||||
|
|
||||||
|
-- deduplicate results from nvim_lsp
|
||||||
|
if entry.source.name == "nvim_lsp" then
|
||||||
|
vim_item.dup = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
return vim_item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
matching = {
|
||||||
|
disallow_partial_fuzzy_matching = false,
|
||||||
|
},
|
||||||
|
performance = {
|
||||||
|
async_budget = 1,
|
||||||
|
max_view_entries = 120,
|
||||||
|
},
|
||||||
|
-- You can set mappings if you want
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
|
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
|
["<C-d>"] = cmp.mapping.scroll_docs(-4),
|
||||||
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
|
["<C-w>"] = cmp.mapping.abort(),
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
||||||
|
elseif require("luasnip").expand_or_locally_jumpable() then
|
||||||
|
require("luasnip").expand_or_jump()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Select })
|
||||||
|
elseif require("luasnip").jumpable(-1) then
|
||||||
|
require("luasnip").jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
["<CR>"] = cmp.mapping({
|
||||||
|
i = function(fallback)
|
||||||
|
if cmp.visible() and cmp.get_active_entry() then
|
||||||
|
cmp.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false })
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
s = cmp.mapping.confirm({ select = true }),
|
||||||
|
c = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true }),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require("luasnip").lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- You should specify your *installed* sources.
|
||||||
|
sources = {
|
||||||
|
{ name = "nvim_lsp", max_item_count = 350 },
|
||||||
|
{ name = "nvim_lua" },
|
||||||
|
{ name = "luasnip" },
|
||||||
|
{ name = "path" },
|
||||||
|
{ name = "treesitter" },
|
||||||
|
{ name = "spell" },
|
||||||
|
{ name = "tmux" },
|
||||||
|
{ name = "orgmode" },
|
||||||
|
{
|
||||||
|
name = "buffer",
|
||||||
|
option = {
|
||||||
|
get_bufnrs = function()
|
||||||
|
return vim.api.nvim_buf_line_count(0) < 7500 and vim.api.nvim_list_bufs() or {}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ name = "latex_symbols" },
|
||||||
|
{ name = "copilot" },
|
||||||
|
-- { name = "codeium" },
|
||||||
|
-- { name = "cmp_tabnine" },
|
||||||
|
},
|
||||||
|
experimental = {
|
||||||
|
ghost_text = {
|
||||||
|
hl_group = "Whitespace",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("codeium", {})
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("copilot_cmp", {})
|
||||||
|
end
|
|
@ -0,0 +1,28 @@
|
||||||
|
return function()
|
||||||
|
vim.defer_fn(function()
|
||||||
|
require("modules.utils").load_plugin("copilot", {
|
||||||
|
cmp = {
|
||||||
|
enabled = true,
|
||||||
|
method = "getCompletionsCycling",
|
||||||
|
},
|
||||||
|
panel = {
|
||||||
|
-- if true, it can interfere with completions in copilot-cmp
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
suggestion = {
|
||||||
|
-- if true, it can interfere with completions in copilot-cmp
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
filetypes = {
|
||||||
|
["bigfile"] = false,
|
||||||
|
["dap-repl"] = false,
|
||||||
|
["fugitive"] = false,
|
||||||
|
["fugitiveblame"] = false,
|
||||||
|
["git"] = false,
|
||||||
|
["gitcommit"] = false,
|
||||||
|
["log"] = false,
|
||||||
|
["toggleterm"] = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end, 100)
|
||||||
|
end
|
|
@ -0,0 +1 @@
|
||||||
|
return { "-style={BasedOnStyle: LLVM, IndentWidth: 4}" }
|
|
@ -0,0 +1,205 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
local settings = require("core.settings")
|
||||||
|
local disabled_workspaces = settings.format_disabled_dirs
|
||||||
|
local format_on_save = settings.format_on_save
|
||||||
|
local format_notify = settings.format_notify
|
||||||
|
local format_modifications_only = settings.format_modifications_only
|
||||||
|
local server_formatting_block_list = settings.server_formatting_block_list
|
||||||
|
local format_timeout = settings.format_timeout
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("Format", function()
|
||||||
|
M.format({
|
||||||
|
timeout = format_timeout,
|
||||||
|
filter = M.format_filter,
|
||||||
|
})
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("FormatToggle", function()
|
||||||
|
M.toggle_format_on_save()
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
local block_list = settings.formatter_block_list
|
||||||
|
vim.api.nvim_create_user_command("FormatterToggleFt", function(opts)
|
||||||
|
if block_list[opts.args] == nil then
|
||||||
|
vim.notify(
|
||||||
|
string.format("[LSP] Formatter for [%s] has been recorded in list and disabled.", opts.args),
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "LSP Formatter Warning" }
|
||||||
|
)
|
||||||
|
block_list[opts.args] = true
|
||||||
|
else
|
||||||
|
block_list[opts.args] = not block_list[opts.args]
|
||||||
|
vim.notify(
|
||||||
|
string.format(
|
||||||
|
"[LSP] Formatter for [%s] has been %s.",
|
||||||
|
opts.args,
|
||||||
|
not block_list[opts.args] and "enabled" or "disabled"
|
||||||
|
),
|
||||||
|
not block_list[opts.args] and vim.log.levels.INFO or vim.log.levels.WARN,
|
||||||
|
{ title = string.format("LSP Formatter %s", not block_list[opts.args] and "Info" or "Warning") }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end, { nargs = 1, complete = "filetype" })
|
||||||
|
|
||||||
|
function M.enable_format_on_save(is_configured)
|
||||||
|
local opts = { pattern = "*", timeout = format_timeout }
|
||||||
|
vim.api.nvim_create_augroup("format_on_save", { clear = true })
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
|
group = "format_on_save",
|
||||||
|
pattern = opts.pattern,
|
||||||
|
callback = function()
|
||||||
|
require("completion.formatting").format({
|
||||||
|
timeout_ms = opts.timeout,
|
||||||
|
filter = M.format_filter,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
if not is_configured then
|
||||||
|
vim.notify(
|
||||||
|
"Successfully enabled format-on-save",
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "Settings modification success" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.disable_format_on_save(is_configured)
|
||||||
|
pcall(vim.api.nvim_del_augroup_by_name, "format_on_save")
|
||||||
|
if not is_configured then
|
||||||
|
vim.notify(
|
||||||
|
"Successfully disabled format-on-save",
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "Settings modification success" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.configure_format_on_save()
|
||||||
|
if format_on_save then
|
||||||
|
M.enable_format_on_save(true)
|
||||||
|
else
|
||||||
|
M.disable_format_on_save(true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.toggle_format_on_save()
|
||||||
|
local status = pcall(vim.api.nvim_get_autocmds, {
|
||||||
|
group = "format_on_save",
|
||||||
|
event = "BufWritePre",
|
||||||
|
})
|
||||||
|
if not status then
|
||||||
|
M.enable_format_on_save(false)
|
||||||
|
else
|
||||||
|
M.disable_format_on_save(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.format_filter(clients)
|
||||||
|
return vim.tbl_filter(function(client)
|
||||||
|
local status_ok, formatting_supported = pcall(function()
|
||||||
|
return client.supports_method("textDocument/formatting")
|
||||||
|
end)
|
||||||
|
if status_ok and formatting_supported and client.name == "null-ls" then
|
||||||
|
return "null-ls"
|
||||||
|
elseif not server_formatting_block_list[client.name] and status_ok and formatting_supported then
|
||||||
|
return client.name
|
||||||
|
end
|
||||||
|
end, clients)
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.format(opts)
|
||||||
|
local filedir = vim.fn.expand("%:p:h")
|
||||||
|
for i = 1, #disabled_workspaces do
|
||||||
|
if vim.regex(vim.fs.normalize(disabled_workspaces[i])):match_str(filedir) ~= nil then
|
||||||
|
vim.notify(
|
||||||
|
string.format(
|
||||||
|
"[LSP] Formatting for all files under [%s] has been disabled.",
|
||||||
|
vim.fs.normalize(disabled_workspaces[i])
|
||||||
|
),
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "LSP Formatter Warning" }
|
||||||
|
)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local bufnr = opts.bufnr or vim.api.nvim_get_current_buf()
|
||||||
|
local clients = vim.lsp.get_clients({ bufnr = bufnr })
|
||||||
|
|
||||||
|
if opts.filter then
|
||||||
|
clients = opts.filter(clients)
|
||||||
|
elseif opts.id then
|
||||||
|
clients = vim.tbl_filter(function(client)
|
||||||
|
return client.id == opts.id
|
||||||
|
end, clients)
|
||||||
|
elseif opts.name then
|
||||||
|
clients = vim.tbl_filter(function(client)
|
||||||
|
return client.name == opts.name
|
||||||
|
end, clients)
|
||||||
|
end
|
||||||
|
|
||||||
|
clients = vim.tbl_filter(function(client)
|
||||||
|
return client.supports_method("textDocument/formatting")
|
||||||
|
end, clients)
|
||||||
|
|
||||||
|
if #clients == 0 then
|
||||||
|
vim.notify(
|
||||||
|
"[LSP] Format request failed, no matching language servers.",
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "Formatting Failed" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
local timeout_ms = opts.timeout_ms
|
||||||
|
for _, client in pairs(clients) do
|
||||||
|
if block_list[vim.bo.filetype] == true then
|
||||||
|
vim.notify(
|
||||||
|
string.format(
|
||||||
|
"[LSP][%s] Formatting for [%s] has been disabled. This file is not being processed.",
|
||||||
|
client.name,
|
||||||
|
vim.bo.filetype
|
||||||
|
),
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "LSP Formatter Warning" }
|
||||||
|
)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if
|
||||||
|
format_modifications_only
|
||||||
|
and require("lsp-format-modifications").format_modifications(client, bufnr).success
|
||||||
|
then
|
||||||
|
if format_notify then
|
||||||
|
vim.notify(
|
||||||
|
string.format("[LSP] Format changed lines successfully with %s!", client.name),
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "LSP Range Format Success" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fall back to format the whole buffer (even if partial formatting failed)
|
||||||
|
local params = vim.lsp.util.make_formatting_params(opts.formatting_options)
|
||||||
|
local result, err = client.request_sync("textDocument/formatting", params, timeout_ms, bufnr)
|
||||||
|
if result and result.result then
|
||||||
|
vim.lsp.util.apply_text_edits(result.result, bufnr, client.offset_encoding)
|
||||||
|
if format_notify then
|
||||||
|
vim.notify(
|
||||||
|
string.format("[LSP] Format successfully with %s!", client.name),
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "LSP Format Success" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
elseif err then
|
||||||
|
vim.notify(
|
||||||
|
string.format("[LSP][%s] %s", client.name, err),
|
||||||
|
vim.log.levels.ERROR,
|
||||||
|
{ title = "LSP Format Error" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -0,0 +1,83 @@
|
||||||
|
return function()
|
||||||
|
local icons = { ui = require("modules.utils.icons").get("ui", true) }
|
||||||
|
local actions = require("glance").actions
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("glance", {
|
||||||
|
height = 20,
|
||||||
|
zindex = 50,
|
||||||
|
preview_win_opts = {
|
||||||
|
cursorline = true,
|
||||||
|
number = true,
|
||||||
|
wrap = true,
|
||||||
|
},
|
||||||
|
border = {
|
||||||
|
enable = require("core.settings").transparent_background,
|
||||||
|
top_char = "―",
|
||||||
|
bottom_char = "―",
|
||||||
|
},
|
||||||
|
list = {
|
||||||
|
position = "right",
|
||||||
|
width = 0.33, -- 33% width relative to the active window, min 0.1, max 0.5
|
||||||
|
},
|
||||||
|
folds = {
|
||||||
|
folded = true, -- Automatically fold list on startup
|
||||||
|
fold_closed = icons.ui.ArrowClosed,
|
||||||
|
fold_open = icons.ui.ArrowOpen,
|
||||||
|
},
|
||||||
|
indent_lines = { enable = true },
|
||||||
|
winbar = { enable = true },
|
||||||
|
mappings = {
|
||||||
|
list = {
|
||||||
|
["k"] = actions.previous,
|
||||||
|
["j"] = actions.next,
|
||||||
|
["<Up>"] = actions.previous,
|
||||||
|
["<Down>"] = actions.next,
|
||||||
|
["<S-Tab>"] = actions.previous_location, -- Bring the cursor to the previous location skipping groups in the list
|
||||||
|
["<Tab>"] = actions.next_location, -- Bring the cursor to the next location skipping groups in the list
|
||||||
|
["<C-u>"] = actions.preview_scroll_win(8),
|
||||||
|
["<C-d>"] = actions.preview_scroll_win(-8),
|
||||||
|
["<CR>"] = actions.jump,
|
||||||
|
["v"] = actions.jump_vsplit,
|
||||||
|
["s"] = actions.jump_split,
|
||||||
|
["t"] = actions.jump_tab,
|
||||||
|
["c"] = actions.close_fold,
|
||||||
|
["o"] = actions.open_fold,
|
||||||
|
["[]"] = actions.enter_win("preview"), -- Focus preview window
|
||||||
|
["q"] = actions.close,
|
||||||
|
["Q"] = actions.close,
|
||||||
|
["<Esc>"] = actions.close,
|
||||||
|
["gq"] = actions.quickfix,
|
||||||
|
},
|
||||||
|
preview = {
|
||||||
|
["Q"] = actions.close,
|
||||||
|
["<C-c>q"] = actions.close,
|
||||||
|
["<C-c>o"] = actions.jump,
|
||||||
|
["<C-c>v"] = actions.jump_vsplit,
|
||||||
|
["<C-c>s"] = actions.jump_split,
|
||||||
|
["<C-c>t"] = actions.jump_tab,
|
||||||
|
["<C-p>"] = actions.previous_location,
|
||||||
|
["<C-n>"] = actions.next_location,
|
||||||
|
["[]"] = actions.enter_win("list"), -- Focus list window
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hooks = {
|
||||||
|
before_open = function(results, open, _, method)
|
||||||
|
if #results == 0 then
|
||||||
|
vim.notify(
|
||||||
|
"This method is not supported by any of the servers registered for the current buffer",
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "Glance" }
|
||||||
|
)
|
||||||
|
elseif #results == 1 and method == "references" then
|
||||||
|
vim.notify(
|
||||||
|
"The identifier under cursor is the only one found",
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "Glance" }
|
||||||
|
)
|
||||||
|
else
|
||||||
|
open(results)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,15 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("lsp_signature", {
|
||||||
|
bind = true,
|
||||||
|
-- TODO: Remove the following line when nvim-cmp#1613 gets resolved
|
||||||
|
check_completion_visible = false,
|
||||||
|
floating_window = true,
|
||||||
|
floating_window_above_cur_line = true,
|
||||||
|
hi_parameter = "Search",
|
||||||
|
hint_enable = true,
|
||||||
|
transparency = nil, -- disabled by default, allow floating win transparent value 1~100
|
||||||
|
wrap = true,
|
||||||
|
zindex = 45, -- avoid overlap with nvim.cmp
|
||||||
|
handler_opts = { border = "single" },
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,23 @@
|
||||||
|
return function()
|
||||||
|
local nvim_lsp = require("lspconfig")
|
||||||
|
require("completion.neoconf").setup()
|
||||||
|
require("completion.mason").setup()
|
||||||
|
require("completion.mason-lspconfig").setup()
|
||||||
|
|
||||||
|
local opts = {
|
||||||
|
capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
|
||||||
|
}
|
||||||
|
-- Setup lsps that are not supported by `mason.nvim` but supported by `nvim-lspconfig` here.
|
||||||
|
if vim.fn.executable("dart") == 1 then
|
||||||
|
local ok, _opts = pcall(require, "user.configs.lsp-servers.dartls")
|
||||||
|
if not ok then
|
||||||
|
_opts = require("completion.servers.dartls")
|
||||||
|
end
|
||||||
|
local final_opts = vim.tbl_deep_extend("keep", _opts, opts)
|
||||||
|
nvim_lsp.dartls.setup(final_opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
pcall(require, "user.configs.lsp")
|
||||||
|
|
||||||
|
pcall(vim.cmd.LspStart) -- Start LSPs
|
||||||
|
end
|
|
@ -0,0 +1,183 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").gen_lspkind_hl()
|
||||||
|
|
||||||
|
local icons = {
|
||||||
|
cmp = require("modules.utils.icons").get("cmp", true),
|
||||||
|
diagnostics = require("modules.utils.icons").get("diagnostics", true),
|
||||||
|
kind = require("modules.utils.icons").get("kind", true),
|
||||||
|
type = require("modules.utils.icons").get("type", true),
|
||||||
|
ui = require("modules.utils.icons").get("ui", true),
|
||||||
|
}
|
||||||
|
|
||||||
|
local function set_sidebar_icons()
|
||||||
|
-- Set icons for sidebar
|
||||||
|
vim.diagnostic.config({
|
||||||
|
signs = {
|
||||||
|
text = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = icons.diagnostics.Error_alt,
|
||||||
|
[vim.diagnostic.severity.WARN] = icons.diagnostics.Warning_alt,
|
||||||
|
[vim.diagnostic.severity.INFO] = icons.diagnostics.Information_alt,
|
||||||
|
[vim.diagnostic.severity.HINT] = icons.diagnostics.Hint_alt,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
set_sidebar_icons()
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("lspsaga", {
|
||||||
|
-- Breadcrumbs: https://nvimdev.github.io/lspsaga/breadcrumbs/
|
||||||
|
symbol_in_winbar = {
|
||||||
|
enable = false,
|
||||||
|
separator = " " .. icons.ui.Separator,
|
||||||
|
hide_keyword = false,
|
||||||
|
show_file = false,
|
||||||
|
folder_level = 1,
|
||||||
|
color_mode = true,
|
||||||
|
delay = 100,
|
||||||
|
},
|
||||||
|
-- Callhierarchy: https://nvimdev.github.io/lspsaga/callhierarchy/
|
||||||
|
callhierarchy = {
|
||||||
|
layout = "float",
|
||||||
|
keys = {
|
||||||
|
edit = "e",
|
||||||
|
vsplit = "v",
|
||||||
|
split = "s",
|
||||||
|
tabe = "t",
|
||||||
|
quit = "q",
|
||||||
|
shuttle = "[]",
|
||||||
|
toggle_or_req = "u",
|
||||||
|
close = "<Esc>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Code Action: https://nvimdev.github.io/lspsaga/codeaction/
|
||||||
|
code_action = {
|
||||||
|
num_shortcut = true,
|
||||||
|
only_in_cursor = false,
|
||||||
|
show_server_name = true,
|
||||||
|
extend_gitsigns = false,
|
||||||
|
keys = {
|
||||||
|
quit = "q",
|
||||||
|
exec = "<CR>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Diagnostics: https://nvimdev.github.io/lspsaga/diagnostic/
|
||||||
|
diagnostic = {
|
||||||
|
show_code_action = true,
|
||||||
|
jump_num_shortcut = true,
|
||||||
|
max_width = 0.5,
|
||||||
|
max_height = 0.6,
|
||||||
|
text_hl_follow = true,
|
||||||
|
border_follow = true,
|
||||||
|
extend_relatedInformation = true,
|
||||||
|
show_layout = "float",
|
||||||
|
show_normal_height = 10,
|
||||||
|
max_show_width = 0.9,
|
||||||
|
max_show_height = 0.6,
|
||||||
|
diagnostic_only_current = false,
|
||||||
|
keys = {
|
||||||
|
exec_action = "r",
|
||||||
|
quit = "q",
|
||||||
|
toggle_or_jump = "<CR>",
|
||||||
|
quit_in_show = { "q", "<Esc>" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Hover: https://nvimdev.github.io/lspsaga/hover/
|
||||||
|
hover = {
|
||||||
|
max_width = 0.45,
|
||||||
|
max_height = 0.7,
|
||||||
|
open_link = "gl",
|
||||||
|
open_cmd = "silent !" .. require("core.settings").external_browser,
|
||||||
|
},
|
||||||
|
-- Impl: https://nvimdev.github.io/lspsaga/implement/
|
||||||
|
implement = {
|
||||||
|
enable = true,
|
||||||
|
sign = true,
|
||||||
|
virtual_text = false,
|
||||||
|
priority = 100,
|
||||||
|
},
|
||||||
|
-- LightBulb: https://nvimdev.github.io/lspsaga/lightbulb/
|
||||||
|
lightbulb = {
|
||||||
|
enable = false,
|
||||||
|
sign = true,
|
||||||
|
virtual_text = false,
|
||||||
|
debounce = 10,
|
||||||
|
sign_priority = 20,
|
||||||
|
},
|
||||||
|
-- Rename: https://nvimdev.github.io/lspsaga/rename/
|
||||||
|
rename = {
|
||||||
|
in_select = false,
|
||||||
|
auto_save = false,
|
||||||
|
project_max_width = 0.5,
|
||||||
|
project_max_height = 0.5,
|
||||||
|
keys = {
|
||||||
|
quit = "<C-c>",
|
||||||
|
exec = "<CR>",
|
||||||
|
select = "x",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Beacon: https://nvimdev.github.io/lspsaga/misc/#beacon
|
||||||
|
beacon = {
|
||||||
|
enable = true,
|
||||||
|
frequency = 12,
|
||||||
|
},
|
||||||
|
-- Generic UI Options: https://nvimdev.github.io/lspsaga/misc/#generic-ui-options
|
||||||
|
ui = {
|
||||||
|
border = "single", -- Can be single, double, rounded, solid, shadow.
|
||||||
|
devicon = true,
|
||||||
|
title = true,
|
||||||
|
expand = icons.ui.ArrowClosed,
|
||||||
|
collapse = icons.ui.ArrowOpen,
|
||||||
|
code_action = icons.ui.CodeAction,
|
||||||
|
actionfix = icons.ui.Spell,
|
||||||
|
lines = { "┗", "┣", "┃", "━", "┏" },
|
||||||
|
imp_sign = icons.kind.Implementation,
|
||||||
|
kind = {
|
||||||
|
-- Kind
|
||||||
|
Class = { icons.kind.Class, "LspKindClass" },
|
||||||
|
Constant = { icons.kind.Constant, "LspKindConstant" },
|
||||||
|
Constructor = { icons.kind.Constructor, "LspKindConstructor" },
|
||||||
|
Enum = { icons.kind.Enum, "LspKindEnum" },
|
||||||
|
EnumMember = { icons.kind.EnumMember, "LspKindEnumMember" },
|
||||||
|
Event = { icons.kind.Event, "LspKindEvent" },
|
||||||
|
Field = { icons.kind.Field, "LspKindField" },
|
||||||
|
File = { icons.kind.File, "LspKindFile" },
|
||||||
|
Function = { icons.kind.Function, "LspKindFunction" },
|
||||||
|
Interface = { icons.kind.Interface, "LspKindInterface" },
|
||||||
|
Key = { icons.kind.Keyword, "LspKindKey" },
|
||||||
|
Method = { icons.kind.Method, "LspKindMethod" },
|
||||||
|
Module = { icons.kind.Module, "LspKindModule" },
|
||||||
|
Namespace = { icons.kind.Namespace, "LspKindNamespace" },
|
||||||
|
Operator = { icons.kind.Operator, "LspKindOperator" },
|
||||||
|
Package = { icons.kind.Package, "LspKindPackage" },
|
||||||
|
Property = { icons.kind.Property, "LspKindProperty" },
|
||||||
|
Struct = { icons.kind.Struct, "LspKindStruct" },
|
||||||
|
TypeParameter = { icons.kind.TypeParameter, "LspKindTypeParameter" },
|
||||||
|
Variable = { icons.kind.Variable, "LspKindVariable" },
|
||||||
|
-- Type
|
||||||
|
Array = { icons.type.Array, "LspKindArray" },
|
||||||
|
Boolean = { icons.type.Boolean, "LspKindBoolean" },
|
||||||
|
Null = { icons.type.Null, "LspKindNull" },
|
||||||
|
Number = { icons.type.Number, "LspKindNumber" },
|
||||||
|
Object = { icons.type.Object, "LspKindObject" },
|
||||||
|
String = { icons.type.String, "LspKindString" },
|
||||||
|
-- ccls-specific icons.
|
||||||
|
TypeAlias = { icons.kind.TypeAlias, "LspKindTypeAlias" },
|
||||||
|
Parameter = { icons.kind.Parameter, "LspKindParameter" },
|
||||||
|
StaticMethod = { icons.kind.StaticMethod, "LspKindStaticMethod" },
|
||||||
|
-- Microsoft-specific icons.
|
||||||
|
Text = { icons.kind.Text, "LspKindText" },
|
||||||
|
Snippet = { icons.kind.Snippet, "LspKindSnippet" },
|
||||||
|
Folder = { icons.kind.Folder, "LspKindFolder" },
|
||||||
|
Unit = { icons.kind.Unit, "LspKindUnit" },
|
||||||
|
Value = { icons.kind.Value, "LspKindValue" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Scrolling Keymaps: https://nvimdev.github.io/lspsaga/misc/#scrolling-keymaps
|
||||||
|
scroll_preview = {
|
||||||
|
scroll_down = "<C-d>",
|
||||||
|
scroll_up = "<C-u>",
|
||||||
|
},
|
||||||
|
request_timeout = 3000,
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,21 @@
|
||||||
|
return function()
|
||||||
|
local vim_path = require("core.global").vim_path
|
||||||
|
local snippet_path = vim_path .. "/snips/"
|
||||||
|
local user_snippet_path = vim_path .. "/lua/user/snips/"
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("luasnip", {
|
||||||
|
history = true,
|
||||||
|
update_events = "TextChanged,TextChangedI",
|
||||||
|
delete_check_events = "TextChanged,InsertLeave",
|
||||||
|
}, false, require("luasnip").config.set_config)
|
||||||
|
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load({
|
||||||
|
paths = {
|
||||||
|
snippet_path,
|
||||||
|
user_snippet_path,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require("luasnip.loaders.from_lua").lazy_load()
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
require("luasnip.loaders.from_snipmate").lazy_load()
|
||||||
|
end
|
|
@ -0,0 +1,95 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.setup = function()
|
||||||
|
local diagnostics_virtual_text = require("core.settings").diagnostics_virtual_text
|
||||||
|
local diagnostics_level = require("core.settings").diagnostics_level
|
||||||
|
|
||||||
|
local nvim_lsp = require("lspconfig")
|
||||||
|
local mason_lspconfig = require("mason-lspconfig")
|
||||||
|
require("lspconfig.ui.windows").default_options.border = "rounded"
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("mason-lspconfig", {
|
||||||
|
ensure_installed = require("core.settings").lsp_deps,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
|
||||||
|
signs = true,
|
||||||
|
underline = true,
|
||||||
|
virtual_text = diagnostics_virtual_text and {
|
||||||
|
severity = {
|
||||||
|
min = vim.diagnostic.severity[diagnostics_level],
|
||||||
|
},
|
||||||
|
} or false,
|
||||||
|
-- set update_in_insert to false because it was enabled by lspsaga
|
||||||
|
update_in_insert = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
local opts = {
|
||||||
|
capabilities = vim.tbl_deep_extend(
|
||||||
|
"force",
|
||||||
|
vim.lsp.protocol.make_client_capabilities(),
|
||||||
|
require("cmp_nvim_lsp").default_capabilities()
|
||||||
|
),
|
||||||
|
}
|
||||||
|
---A handler to setup all servers defined under `completion/servers/*.lua`
|
||||||
|
---@param lsp_name string
|
||||||
|
local function mason_lsp_handler(lsp_name)
|
||||||
|
-- rust_analyzer is configured using mrcjkb/rustaceanvim
|
||||||
|
-- warn users if they have set it up manually
|
||||||
|
if lsp_name == "rust_analyzer" then
|
||||||
|
local config_exist = pcall(require, "completion.servers." .. lsp_name)
|
||||||
|
if config_exist then
|
||||||
|
vim.notify(
|
||||||
|
[[
|
||||||
|
`rust_analyzer` is configured independently via `mrcjkb/rustaceanvim`. To get rid of this warning,
|
||||||
|
please REMOVE your LSP configuration (rust_analyzer.lua) from the `servers` directory and configure
|
||||||
|
`rust_analyzer` using the appropriate init options provided by `rustaceanvim` instead.]],
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "nvim-lspconfig" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok, custom_handler = pcall(require, "user.configs.lsp-servers." .. lsp_name)
|
||||||
|
local default_ok, default_handler = pcall(require, "completion.servers." .. lsp_name)
|
||||||
|
-- Use preset if there is no user definition
|
||||||
|
if not ok then
|
||||||
|
ok, custom_handler = default_ok, default_handler
|
||||||
|
end
|
||||||
|
|
||||||
|
if not ok then
|
||||||
|
-- Default to use factory config for server(s) that doesn't include a spec
|
||||||
|
nvim_lsp[lsp_name].setup(opts)
|
||||||
|
return
|
||||||
|
elseif type(custom_handler) == "function" then
|
||||||
|
--- Case where language server requires its own setup
|
||||||
|
--- Make sure to call require("lspconfig")[lsp_name].setup() in the function
|
||||||
|
--- See `clangd.lua` for example.
|
||||||
|
custom_handler(opts)
|
||||||
|
elseif type(custom_handler) == "table" then
|
||||||
|
nvim_lsp[lsp_name].setup(
|
||||||
|
vim.tbl_deep_extend(
|
||||||
|
"force",
|
||||||
|
opts,
|
||||||
|
type(default_handler) == "table" and default_handler or {},
|
||||||
|
custom_handler
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else
|
||||||
|
vim.notify(
|
||||||
|
string.format(
|
||||||
|
"Failed to setup [%s].\n\nServer definition under `completion/servers` must return\neither a fun(opts) or a table (got '%s' instead)",
|
||||||
|
lsp_name,
|
||||||
|
type(custom_handler)
|
||||||
|
),
|
||||||
|
vim.log.levels.ERROR,
|
||||||
|
{ title = "nvim-lspconfig" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
mason_lspconfig.setup_handlers({ mason_lsp_handler })
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -0,0 +1,12 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.setup = function()
|
||||||
|
require("modules.utils").load_plugin("mason-null-ls", {
|
||||||
|
ensure_installed = require("core.settings").null_ls_deps,
|
||||||
|
automatic_installation = false,
|
||||||
|
automatic_setup = true,
|
||||||
|
handlers = {},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -0,0 +1,96 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.setup = function()
|
||||||
|
local is_windows = require("core.global").is_windows
|
||||||
|
|
||||||
|
local mason_registry = require("mason-registry")
|
||||||
|
require("lspconfig.ui.windows").default_options.border = "rounded"
|
||||||
|
|
||||||
|
local icons = {
|
||||||
|
ui = require("modules.utils.icons").get("ui", true),
|
||||||
|
misc = require("modules.utils.icons").get("misc", true),
|
||||||
|
}
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("mason", {
|
||||||
|
ui = {
|
||||||
|
border = "single",
|
||||||
|
icons = {
|
||||||
|
package_pending = icons.ui.Modified_alt,
|
||||||
|
package_installed = icons.ui.Check,
|
||||||
|
package_uninstalled = icons.misc.Ghost,
|
||||||
|
},
|
||||||
|
keymaps = {
|
||||||
|
toggle_server_expand = "<CR>",
|
||||||
|
install_server = "i",
|
||||||
|
update_server = "u",
|
||||||
|
check_server_version = "c",
|
||||||
|
update_all_servers = "U",
|
||||||
|
check_outdated_servers = "C",
|
||||||
|
uninstall_server = "X",
|
||||||
|
cancel_installation = "<C-c>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Additional plugins for pylsp
|
||||||
|
mason_registry:on(
|
||||||
|
"package:install:success",
|
||||||
|
vim.schedule_wrap(function(pkg)
|
||||||
|
if pkg.name ~= "python-lsp-server" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local venv = vim.fn.stdpath("data") .. "/mason/packages/python-lsp-server/venv"
|
||||||
|
local python = is_windows and venv .. "/Scripts/python.exe" or venv .. "/bin/python"
|
||||||
|
local black = is_windows and venv .. "/Scripts/black.exe" or venv .. "/bin/black"
|
||||||
|
local ruff = is_windows and venv .. "/Scripts/ruff.exe" or venv .. "/bin/ruff"
|
||||||
|
|
||||||
|
require("plenary.job")
|
||||||
|
:new({
|
||||||
|
command = python,
|
||||||
|
args = {
|
||||||
|
"-m",
|
||||||
|
"pip",
|
||||||
|
"install",
|
||||||
|
"-U",
|
||||||
|
"--disable-pip-version-check",
|
||||||
|
"python-lsp-black",
|
||||||
|
"python-lsp-ruff",
|
||||||
|
"pylsp-rope",
|
||||||
|
},
|
||||||
|
cwd = venv,
|
||||||
|
env = { VIRTUAL_ENV = venv },
|
||||||
|
on_exit = function()
|
||||||
|
if vim.fn.executable(black) == 1 and vim.fn.executable(ruff) == 1 then
|
||||||
|
vim.notify(
|
||||||
|
"Finished installing pylsp plugins",
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "[lsp] Install Status" }
|
||||||
|
)
|
||||||
|
else
|
||||||
|
vim.notify(
|
||||||
|
"Failed to install pylsp plugins. [Executable not found]",
|
||||||
|
vim.log.levels.ERROR,
|
||||||
|
{ title = "[lsp] Install Failure" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_start = function()
|
||||||
|
vim.notify(
|
||||||
|
"Now installing pylsp plugins...",
|
||||||
|
vim.log.levels.INFO,
|
||||||
|
{ title = "[lsp] Install Status", timeout = 6000 }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
on_stderr = function(_, msg_stream)
|
||||||
|
if msg_stream then
|
||||||
|
vim.notify(msg_stream, vim.log.levels.ERROR, { title = "[lsp] Install Failure" })
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
:start()
|
||||||
|
end)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -0,0 +1,20 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.setup = function()
|
||||||
|
require("modules.utils").load_plugin("neoconf", {
|
||||||
|
-- send new configuration to lsp clients when changing json settings
|
||||||
|
live_reload = true,
|
||||||
|
-- name of the local settings files
|
||||||
|
local_settings = ".neoconf.json",
|
||||||
|
-- name of the global settings file in your Neovim config directory
|
||||||
|
global_settings = "neoconf.json",
|
||||||
|
-- import existing settings from other plugins
|
||||||
|
import = {
|
||||||
|
vscode = true, -- local .vscode/settings.json
|
||||||
|
coc = true, -- global/local coc-settings.json
|
||||||
|
nlsp = true, -- global/local nlsp-settings.nvim json settings
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -0,0 +1,77 @@
|
||||||
|
return function()
|
||||||
|
local null_ls = require("null-ls")
|
||||||
|
local btns = null_ls.builtins
|
||||||
|
|
||||||
|
---Return formatter args required by `extra_args`
|
||||||
|
---@param formatter_name string
|
||||||
|
---@return table|nil
|
||||||
|
local function formatter_args(formatter_name)
|
||||||
|
local ok, args = pcall(require, "user.configs.formatters." .. formatter_name)
|
||||||
|
if not ok then
|
||||||
|
args = require("completion.formatters." .. formatter_name)
|
||||||
|
end
|
||||||
|
return args
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Please set additional flags for the supported servers here
|
||||||
|
-- Don't specify any config here if you are using the default one.
|
||||||
|
local sources = {
|
||||||
|
btns.formatting.clang_format.with({
|
||||||
|
filetypes = { "c", "cpp", "objc", "objcpp", "cs", "cuda", "proto" },
|
||||||
|
extra_args = formatter_args("clang_format"),
|
||||||
|
}),
|
||||||
|
btns.formatting.prettier.with({
|
||||||
|
filetypes = {
|
||||||
|
"vue",
|
||||||
|
"typescript",
|
||||||
|
"javascript",
|
||||||
|
"typescriptreact",
|
||||||
|
"javascriptreact",
|
||||||
|
"yaml",
|
||||||
|
"html",
|
||||||
|
"css",
|
||||||
|
"scss",
|
||||||
|
"sh",
|
||||||
|
"markdown",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
require("modules.utils").load_plugin("null-ls", {
|
||||||
|
border = "rounded",
|
||||||
|
debug = false,
|
||||||
|
log_level = "warn",
|
||||||
|
update_in_insert = false,
|
||||||
|
sources = sources,
|
||||||
|
default_timeout = require("core.settings").format_timeout,
|
||||||
|
})
|
||||||
|
|
||||||
|
require("completion.mason-null-ls").setup()
|
||||||
|
|
||||||
|
-- Setup usercmd to register/deregister available source(s)
|
||||||
|
local function _gen_completion()
|
||||||
|
local sources_cont = null_ls.get_source({
|
||||||
|
filetype = vim.bo.filetype,
|
||||||
|
})
|
||||||
|
local completion_items = {}
|
||||||
|
for _, server in pairs(sources_cont) do
|
||||||
|
table.insert(completion_items, server.name)
|
||||||
|
end
|
||||||
|
return completion_items
|
||||||
|
end
|
||||||
|
vim.api.nvim_create_user_command("NullLsToggle", function(opts)
|
||||||
|
if vim.tbl_contains(_gen_completion(), opts.args) then
|
||||||
|
null_ls.toggle({ name = opts.args })
|
||||||
|
else
|
||||||
|
vim.notify(
|
||||||
|
string.format("[Null-ls] Unable to find any registered source named [%s].", opts.args),
|
||||||
|
vim.log.levels.ERROR,
|
||||||
|
{ title = "Null-ls Internal Error" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
nargs = 1,
|
||||||
|
complete = _gen_completion,
|
||||||
|
})
|
||||||
|
|
||||||
|
require("completion.formatting").configure_format_on_save()
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/bashls.lua
|
||||||
|
return {
|
||||||
|
cmd = { "bash-language-server", "start" },
|
||||||
|
filetypes = { "bash", "sh" },
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
local function switch_source_header_splitcmd(bufnr, splitcmd)
|
||||||
|
bufnr = require("lspconfig").util.validate_bufnr(bufnr)
|
||||||
|
local clangd_client = require("lspconfig").util.get_active_client_by_name(bufnr, "clangd")
|
||||||
|
local params = { uri = vim.uri_from_bufnr(bufnr) }
|
||||||
|
if clangd_client then
|
||||||
|
clangd_client.request("textDocument/switchSourceHeader", params, function(err, result)
|
||||||
|
if err then
|
||||||
|
error(tostring(err))
|
||||||
|
end
|
||||||
|
if not result then
|
||||||
|
vim.notify("Corresponding file can’t be determined", vim.log.levels.ERROR, { title = "LSP Error!" })
|
||||||
|
return
|
||||||
|
end
|
||||||
|
vim.api.nvim_command(splitcmd .. " " .. vim.uri_to_fname(result))
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
vim.notify(
|
||||||
|
"Method textDocument/switchSourceHeader is not supported by any active server on this buffer",
|
||||||
|
vim.log.levels.ERROR,
|
||||||
|
{ title = "LSP Error!" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_binary_path_list(binaries)
|
||||||
|
local path_list = {}
|
||||||
|
for _, binary in ipairs(binaries) do
|
||||||
|
local path = vim.fn.exepath(binary)
|
||||||
|
if path ~= "" then
|
||||||
|
table.insert(path_list, path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return table.concat(path_list, ",")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/clangd.lua
|
||||||
|
return function(options)
|
||||||
|
require("lspconfig").clangd.setup({
|
||||||
|
on_attach = options.on_attach,
|
||||||
|
capabilities = vim.tbl_deep_extend("keep", { offsetEncoding = { "utf-16", "utf-8" } }, options.capabilities),
|
||||||
|
single_file_support = true,
|
||||||
|
cmd = {
|
||||||
|
"clangd",
|
||||||
|
"-j=12",
|
||||||
|
"--enable-config",
|
||||||
|
"--background-index",
|
||||||
|
"--pch-storage=memory",
|
||||||
|
-- You MUST set this arg ↓ to your c/cpp compiler location (if not included)!
|
||||||
|
"--query-driver=" .. get_binary_path_list({ "clang++", "clang", "gcc", "g++" }),
|
||||||
|
"--clang-tidy",
|
||||||
|
"--all-scopes-completion",
|
||||||
|
"--completion-style=detailed",
|
||||||
|
"--header-insertion-decorators",
|
||||||
|
"--header-insertion=iwyu",
|
||||||
|
"--limit-references=3000",
|
||||||
|
"--limit-results=350",
|
||||||
|
},
|
||||||
|
commands = {
|
||||||
|
ClangdSwitchSourceHeader = {
|
||||||
|
function()
|
||||||
|
switch_source_header_splitcmd(0, "edit")
|
||||||
|
end,
|
||||||
|
description = "Open source/header in current buffer",
|
||||||
|
},
|
||||||
|
ClangdSwitchSourceHeaderVSplit = {
|
||||||
|
function()
|
||||||
|
switch_source_header_splitcmd(0, "vsplit")
|
||||||
|
end,
|
||||||
|
description = "Open source/header in a new vsplit",
|
||||||
|
},
|
||||||
|
ClangdSwitchSourceHeaderSplit = {
|
||||||
|
function()
|
||||||
|
switch_source_header_splitcmd(0, "split")
|
||||||
|
end,
|
||||||
|
description = "Open source/header in a new split",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,12 @@
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/dartls.lua
|
||||||
|
return {
|
||||||
|
cmd = { "dart", "language-server", "--protocol=lsp" },
|
||||||
|
filetypes = { "dart" },
|
||||||
|
init_options = {
|
||||||
|
closingLabels = true,
|
||||||
|
flutterOutline = true,
|
||||||
|
onlyAnalyzeProjectsWithOpenFiles = true,
|
||||||
|
outline = true,
|
||||||
|
suggestFromUnimportedLibraries = true,
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/gopls.lua
|
||||||
|
return {
|
||||||
|
cmd = { "gopls", "-remote.debug=:0", "-remote=auto" },
|
||||||
|
filetypes = { "go", "gomod", "gosum", "gotmpl", "gohtmltmpl", "gotexttmpl" },
|
||||||
|
flags = { allow_incremental_sync = true, debounce_text_changes = 500 },
|
||||||
|
capabilities = {
|
||||||
|
textDocument = {
|
||||||
|
completion = {
|
||||||
|
contextSupport = true,
|
||||||
|
dynamicRegistration = true,
|
||||||
|
completionItem = {
|
||||||
|
commitCharactersSupport = true,
|
||||||
|
deprecatedSupport = true,
|
||||||
|
preselectSupport = true,
|
||||||
|
insertReplaceSupport = true,
|
||||||
|
labelDetailsSupport = true,
|
||||||
|
snippetSupport = true,
|
||||||
|
documentationFormat = { "markdown", "plaintext" },
|
||||||
|
resolveSupport = {
|
||||||
|
properties = {
|
||||||
|
"documentation",
|
||||||
|
"details",
|
||||||
|
"additionalTextEdits",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
settings = {
|
||||||
|
gopls = {
|
||||||
|
staticcheck = true,
|
||||||
|
semanticTokens = true,
|
||||||
|
usePlaceholders = true,
|
||||||
|
completeUnimported = true,
|
||||||
|
symbolMatcher = "Fuzzy",
|
||||||
|
buildFlags = { "-tags", "integration" },
|
||||||
|
semanticTokenTypes = { string = false },
|
||||||
|
codelenses = {
|
||||||
|
generate = true,
|
||||||
|
gc_details = true,
|
||||||
|
test = true,
|
||||||
|
tidy = true,
|
||||||
|
vendor = true,
|
||||||
|
regenerate_cgo = true,
|
||||||
|
upgrade_dependency = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
-- https://github.com/vscode-langservers/vscode-html-languageserver-bin
|
||||||
|
return {
|
||||||
|
cmd = { "html-languageserver", "--stdio" },
|
||||||
|
filetypes = { "html" },
|
||||||
|
init_options = {
|
||||||
|
configurationSection = { "html", "css", "javascript" },
|
||||||
|
embeddedLanguages = { css = true, javascript = true },
|
||||||
|
},
|
||||||
|
settings = {},
|
||||||
|
single_file_support = true,
|
||||||
|
flags = { debounce_text_changes = 500 },
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/jsonls.lua
|
||||||
|
return {
|
||||||
|
flags = { debounce_text_changes = 500 },
|
||||||
|
settings = {
|
||||||
|
json = {
|
||||||
|
-- Schemas https://www.schemastore.org
|
||||||
|
schemas = {
|
||||||
|
{
|
||||||
|
fileMatch = { "package.json" },
|
||||||
|
url = "https://json.schemastore.org/package.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fileMatch = { "tsconfig*.json" },
|
||||||
|
url = "https://json.schemastore.org/tsconfig.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fileMatch = {
|
||||||
|
".prettierrc",
|
||||||
|
".prettierrc.json",
|
||||||
|
"prettier.config.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/prettierrc.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fileMatch = { ".eslintrc", ".eslintrc.json" },
|
||||||
|
url = "https://json.schemastore.org/eslintrc.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fileMatch = {
|
||||||
|
".babelrc",
|
||||||
|
".babelrc.json",
|
||||||
|
"babel.config.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/babelrc.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fileMatch = { "lerna.json" },
|
||||||
|
url = "https://json.schemastore.org/lerna.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fileMatch = {
|
||||||
|
".stylelintrc",
|
||||||
|
".stylelintrc.json",
|
||||||
|
"stylelint.config.json",
|
||||||
|
},
|
||||||
|
url = "http://json.schemastore.org/stylelintrc.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fileMatch = { "/.github/workflows/*" },
|
||||||
|
url = "https://json.schemastore.org/github-workflow.json",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/lua_ls.lua
|
||||||
|
return {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
runtime = { version = "LuaJIT" },
|
||||||
|
diagnostics = {
|
||||||
|
globals = { "vim" },
|
||||||
|
disable = { "different-requires", "undefined-field" },
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
library = {
|
||||||
|
vim.fn.expand("$VIMRUNTIME/lua"),
|
||||||
|
vim.fn.expand("$VIMRUNTIME/lua/vim/lsp"),
|
||||||
|
},
|
||||||
|
maxPreload = 100000,
|
||||||
|
preloadFileSize = 10000,
|
||||||
|
},
|
||||||
|
hint = { enable = true, setType = true },
|
||||||
|
format = { enable = false },
|
||||||
|
telemetry = { enable = false },
|
||||||
|
-- Do not override treesitter lua highlighting with lua_ls's highlighting
|
||||||
|
semantic = { enable = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/pylsp.lua
|
||||||
|
return {
|
||||||
|
cmd = { "pylsp" },
|
||||||
|
filetypes = { "python" },
|
||||||
|
settings = {
|
||||||
|
pylsp = {
|
||||||
|
plugins = {
|
||||||
|
-- Lint
|
||||||
|
ruff = {
|
||||||
|
enabled = true,
|
||||||
|
select = {
|
||||||
|
-- enable pycodestyle
|
||||||
|
"E",
|
||||||
|
-- enable pyflakes
|
||||||
|
"F",
|
||||||
|
},
|
||||||
|
ignore = {
|
||||||
|
-- ignore E501 (line too long)
|
||||||
|
-- "E501",
|
||||||
|
-- ignore F401 (imported but unused)
|
||||||
|
-- "F401",
|
||||||
|
},
|
||||||
|
extendSelect = { "I" },
|
||||||
|
severities = {
|
||||||
|
-- Hint, Information, Warning, Error
|
||||||
|
F401 = "I",
|
||||||
|
E501 = "I",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
flake8 = { enabled = false },
|
||||||
|
pyflakes = { enabled = false },
|
||||||
|
pycodestyle = { enabled = false },
|
||||||
|
mccabe = { enabled = false },
|
||||||
|
|
||||||
|
-- Code refactor
|
||||||
|
rope = { enabled = true },
|
||||||
|
|
||||||
|
-- Formatting
|
||||||
|
black = { enabled = true },
|
||||||
|
pyls_isort = { enabled = false },
|
||||||
|
autopep8 = { enabled = false },
|
||||||
|
yapf = { enabled = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
return function()
|
||||||
|
require("cmp_tabnine.config"):setup({ max_line = 1000, max_num_results = 20, sort = true })
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("mini.align", {
|
||||||
|
-- Whether to disable showing non-error feedback
|
||||||
|
silent = false,
|
||||||
|
-- Module mappings. Use `''` (empty string) to disable one.
|
||||||
|
mappings = {
|
||||||
|
start = "gea",
|
||||||
|
start_with_preview = "geA",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,39 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("autoclose", {
|
||||||
|
keys = {
|
||||||
|
["("] = { escape = false, close = true, pair = "()" },
|
||||||
|
["["] = { escape = false, close = true, pair = "[]" },
|
||||||
|
["{"] = { escape = false, close = true, pair = "{}" },
|
||||||
|
|
||||||
|
["<"] = { escape = true, close = true, pair = "<>", enabled_filetypes = { "rust" } },
|
||||||
|
[">"] = { escape = true, close = false, pair = "<>" },
|
||||||
|
[")"] = { escape = true, close = false, pair = "()" },
|
||||||
|
["]"] = { escape = true, close = false, pair = "[]" },
|
||||||
|
["}"] = { escape = true, close = false, pair = "{}" },
|
||||||
|
|
||||||
|
['"'] = { escape = true, close = true, pair = '""' },
|
||||||
|
["`"] = { escape = true, close = true, pair = "``" },
|
||||||
|
["'"] = { escape = true, close = true, pair = "''", disabled_filetypes = { "rust" } },
|
||||||
|
},
|
||||||
|
options = {
|
||||||
|
disable_when_touch = false,
|
||||||
|
disabled_filetypes = {
|
||||||
|
"alpha",
|
||||||
|
"bigfile",
|
||||||
|
"checkhealth",
|
||||||
|
"dap-repl",
|
||||||
|
"diff",
|
||||||
|
"help",
|
||||||
|
"log",
|
||||||
|
"notify",
|
||||||
|
"NvimTree",
|
||||||
|
"Outline",
|
||||||
|
"qf",
|
||||||
|
"TelescopePrompt",
|
||||||
|
"toggleterm",
|
||||||
|
"undotree",
|
||||||
|
"vimwiki",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("nvim-ts-autotag", {
|
||||||
|
opts = {
|
||||||
|
enable_close = true, -- Auto close tags
|
||||||
|
enable_rename = true, -- Auto rename pairs of tags
|
||||||
|
enable_close_on_slash = false, -- Auto close on trailing </
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,44 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("Comment", {
|
||||||
|
-- Add a space b/w comment and the line
|
||||||
|
padding = true,
|
||||||
|
-- Whether the cursor should stay at its position
|
||||||
|
sticky = true,
|
||||||
|
-- Lines to be ignored while (un)comment
|
||||||
|
ignore = "^$",
|
||||||
|
-- LHS of toggle mappings in NORMAL mode
|
||||||
|
toggler = {
|
||||||
|
-- Line-comment toggle keymap
|
||||||
|
line = "gcc",
|
||||||
|
-- Block-comment toggle keymap
|
||||||
|
block = "gbc",
|
||||||
|
},
|
||||||
|
-- LHS of operator-pending mappings in NORMAL and VISUAL mode
|
||||||
|
opleader = {
|
||||||
|
-- Line-comment keymap
|
||||||
|
line = "gc",
|
||||||
|
-- Block-comment keymap
|
||||||
|
block = "gb",
|
||||||
|
},
|
||||||
|
-- LHS of extra mappings
|
||||||
|
extra = {
|
||||||
|
-- Add comment on the line above
|
||||||
|
above = "gcO",
|
||||||
|
-- Add comment on the line below
|
||||||
|
below = "gco",
|
||||||
|
-- Add comment at the end of line
|
||||||
|
eol = "gcA",
|
||||||
|
},
|
||||||
|
-- We defined mappings in `lua/keymap/init.lua` with description so disable them here.
|
||||||
|
mappings = {
|
||||||
|
-- Operator-pending mapping; `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}`
|
||||||
|
basic = false,
|
||||||
|
-- Extra mapping; `gco`, `gcO`, `gcA`
|
||||||
|
extra = false,
|
||||||
|
},
|
||||||
|
-- Function to call before (un)comment
|
||||||
|
pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(),
|
||||||
|
-- Function to call after (un)comment
|
||||||
|
post_hook = nil,
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
return function()
|
||||||
|
require("mini.cursorword").setup({
|
||||||
|
-- Delay (in ms) between when cursor moved and when highlighting appeared
|
||||||
|
delay = 200,
|
||||||
|
})
|
||||||
|
require("modules.utils").gen_cursorword_hl()
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("diffview", {
|
||||||
|
diff_binaries = false, -- Show diffs for binaries
|
||||||
|
enhanced_diff_hl = false, -- See ':h diffview-config-enhanced_diff_hl'
|
||||||
|
git_cmd = { "git" }, -- The git executable followed by default args.
|
||||||
|
hg_cmd = { "hg" }, -- The hg executable followed by default args.
|
||||||
|
use_icons = true, -- Requires nvim-web-devicons
|
||||||
|
show_help_hints = true, -- Show hints for how to open the help panel
|
||||||
|
watch_index = true, -- Update views and index buffers when the git index changes.
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,37 @@
|
||||||
|
return function()
|
||||||
|
vim.api.nvim_set_hl(
|
||||||
|
0,
|
||||||
|
"FlashLabel",
|
||||||
|
{ underline = true, bold = true, fg = "Orange", bg = "NONE", ctermfg = "Red", ctermbg = "NONE" }
|
||||||
|
)
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("flash", {
|
||||||
|
labels = "asdfghjklqwertyuiopzxcvbnm",
|
||||||
|
label = {
|
||||||
|
-- allow uppercase labels
|
||||||
|
uppercase = true,
|
||||||
|
-- add a label for the first match in the current window.
|
||||||
|
-- you can always jump to the first match with `<CR>`
|
||||||
|
current = true,
|
||||||
|
-- for the current window, label targets closer to the cursor first
|
||||||
|
distance = true,
|
||||||
|
},
|
||||||
|
modes = {
|
||||||
|
search = { enabled = false },
|
||||||
|
-- options used when flash is activated through
|
||||||
|
-- `f`, `F`, `t`, `T`, `;` and `,` motions
|
||||||
|
char = {
|
||||||
|
enabled = true,
|
||||||
|
-- hide after jump when not using jump labels
|
||||||
|
autohide = false,
|
||||||
|
-- show jump labels
|
||||||
|
jump_labels = false,
|
||||||
|
-- set to `false` to use the current line only
|
||||||
|
multi_line = true,
|
||||||
|
-- When using jump labels, don't use these keys
|
||||||
|
-- This allows using those keys directly after the motion
|
||||||
|
label = { exclude = "hjkliardc" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,20 @@
|
||||||
|
return function()
|
||||||
|
vim.g.maplocalleader = ","
|
||||||
|
require("modules.utils").load_plugin("grug-far", {
|
||||||
|
engine = "ripgrep",
|
||||||
|
engines = {
|
||||||
|
ripgrep = {
|
||||||
|
path = "rg",
|
||||||
|
showReplaceDiff = true,
|
||||||
|
placeholders = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
windowCreationCommand = "bot split",
|
||||||
|
disableBufferLineNumbers = false,
|
||||||
|
icons = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,31 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("nvim-highlight-colors", {
|
||||||
|
render = "background",
|
||||||
|
enable_hex = true,
|
||||||
|
enable_short_hex = true,
|
||||||
|
enable_rgb = true,
|
||||||
|
enable_hsl = true,
|
||||||
|
enable_var_usage = true,
|
||||||
|
enable_named_colors = false,
|
||||||
|
enable_tailwind = false,
|
||||||
|
-- Exclude filetypes or buftypes from highlighting
|
||||||
|
exclude_filetypes = {
|
||||||
|
"alpha",
|
||||||
|
"bigfile",
|
||||||
|
"dap-repl",
|
||||||
|
"fugitive",
|
||||||
|
"git",
|
||||||
|
"notify",
|
||||||
|
"NvimTree",
|
||||||
|
"Outline",
|
||||||
|
"TelescopePrompt",
|
||||||
|
"toggleterm",
|
||||||
|
"undotree",
|
||||||
|
},
|
||||||
|
exclude_buftypes = {
|
||||||
|
"nofile",
|
||||||
|
"prompt",
|
||||||
|
"terminal",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("hop", { keys = "etovxqpdygfblzhckisuran" })
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
return function()
|
||||||
|
vim.g.matchup_transmute_enabled = 1
|
||||||
|
vim.g.matchup_surround_enabled = 1
|
||||||
|
vim.g.matchup_matchparen_offscreen = { method = "popup" }
|
||||||
|
end
|
|
@ -0,0 +1,13 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("persisted", {
|
||||||
|
save_dir = vim.fn.expand(vim.fn.stdpath("data") .. "/sessions/"),
|
||||||
|
autostart = true,
|
||||||
|
-- Set `lazy = false` in `plugins/editor.lua` to enable this
|
||||||
|
autoload = false,
|
||||||
|
follow_cwd = true,
|
||||||
|
use_git_branch = true,
|
||||||
|
should_save = function()
|
||||||
|
return vim.bo.filetype == "alpha" and false or true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,53 @@
|
||||||
|
return function()
|
||||||
|
---@param threshold number @Use global strategy if nr of lines exceeds this value
|
||||||
|
local function init_strategy(threshold)
|
||||||
|
return function()
|
||||||
|
-- Disable on very large files
|
||||||
|
local line_count = vim.api.nvim_buf_line_count(0)
|
||||||
|
if line_count > 7500 then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Disable on parser error
|
||||||
|
local errors = 200
|
||||||
|
vim.treesitter.get_parser():for_each_tree(function(lt)
|
||||||
|
if lt:root():has_error() and errors >= 0 then
|
||||||
|
errors = errors - 1
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
if errors < 0 then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return line_count > threshold and require("rainbow-delimiters").strategy["global"]
|
||||||
|
or require("rainbow-delimiters").strategy["local"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.g.rainbow_delimiters = {
|
||||||
|
strategy = {
|
||||||
|
[""] = init_strategy(500),
|
||||||
|
c = init_strategy(300),
|
||||||
|
cpp = init_strategy(300),
|
||||||
|
lua = init_strategy(500),
|
||||||
|
vimdoc = init_strategy(300),
|
||||||
|
vim = init_strategy(300),
|
||||||
|
},
|
||||||
|
query = {
|
||||||
|
[""] = "rainbow-delimiters",
|
||||||
|
latex = "rainbow-blocks",
|
||||||
|
javascript = "rainbow-delimiters-react",
|
||||||
|
},
|
||||||
|
highlight = {
|
||||||
|
"RainbowDelimiterRed",
|
||||||
|
"RainbowDelimiterOrange",
|
||||||
|
"RainbowDelimiterYellow",
|
||||||
|
"RainbowDelimiterGreen",
|
||||||
|
"RainbowDelimiterBlue",
|
||||||
|
"RainbowDelimiterCyan",
|
||||||
|
"RainbowDelimiterViolet",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("rainbow_delimiters", nil, true)
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
return function()
|
||||||
|
vim.g["suda#prompt"] = "Enter administrator password: "
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("suda", nil, true)
|
||||||
|
end
|
|
@ -0,0 +1,66 @@
|
||||||
|
return vim.schedule_wrap(function()
|
||||||
|
local use_ssh = require("core.settings").use_ssh
|
||||||
|
|
||||||
|
vim.api.nvim_set_option_value("foldmethod", "expr", {})
|
||||||
|
vim.api.nvim_set_option_value("foldexpr", "nvim_treesitter#foldexpr()", {})
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("nvim-treesitter", {
|
||||||
|
ensure_installed = require("core.settings").treesitter_deps,
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
disable = function(ft, bufnr)
|
||||||
|
if
|
||||||
|
vim.tbl_contains({ "gitcommit" }, ft)
|
||||||
|
or (vim.api.nvim_buf_line_count(bufnr) > 7500 and ft ~= "vimdoc")
|
||||||
|
then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local ok, is_large_file = pcall(vim.api.nvim_buf_get_var, bufnr, "bigfile_disable_treesitter")
|
||||||
|
return ok and is_large_file
|
||||||
|
end,
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true,
|
||||||
|
keymaps = {
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["ac"] = "@class.outer",
|
||||||
|
["ic"] = "@class.inner",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
move = {
|
||||||
|
enable = true,
|
||||||
|
set_jumps = true,
|
||||||
|
goto_next_start = {
|
||||||
|
["]["] = "@function.outer",
|
||||||
|
["]m"] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_next_end = {
|
||||||
|
["]]"] = "@function.outer",
|
||||||
|
["]M"] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_previous_start = {
|
||||||
|
["[["] = "@function.outer",
|
||||||
|
["[m"] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_previous_end = {
|
||||||
|
["[]"] = "@function.outer",
|
||||||
|
["[M"] = "@class.outer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
indent = { enable = true },
|
||||||
|
matchup = { enable = true },
|
||||||
|
}, false, require("nvim-treesitter.configs").setup)
|
||||||
|
require("nvim-treesitter.install").prefer_git = true
|
||||||
|
if use_ssh then
|
||||||
|
local parsers = require("nvim-treesitter.parsers").get_parser_configs()
|
||||||
|
for _, parser in pairs(parsers) do
|
||||||
|
parser.install_info.url = parser.install_info.url:gsub("https://github.com/", "git@github.com:")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
|
@ -0,0 +1,7 @@
|
||||||
|
return function()
|
||||||
|
vim.g.skip_ts_context_commentstring_module = true
|
||||||
|
require("modules.utils").load_plugin("ts_context_commentstring", {
|
||||||
|
-- Whether to update the `commentstring` on the `CursorHold` autocmd
|
||||||
|
enable_autocmd = false,
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,12 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("treesitter-context", {
|
||||||
|
enable = true,
|
||||||
|
max_lines = 3, -- How many lines the window should span. Values <= 0 mean no limit.
|
||||||
|
min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
|
||||||
|
line_numbers = true,
|
||||||
|
multiline_threshold = 20, -- Maximum number of lines to collapse for a single context line
|
||||||
|
trim_scope = "outer", -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
|
||||||
|
mode = "cursor", -- Line used to calculate context. Choices: 'cursor', 'topline'
|
||||||
|
zindex = 50, -- Ensure compatibility with Glance's preview window
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
return function()
|
||||||
|
require("modules.utils").load_plugin("bqf", {
|
||||||
|
preview = {
|
||||||
|
border = "single",
|
||||||
|
wrap = true,
|
||||||
|
winblend = 0,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,126 @@
|
||||||
|
local bind = require("keymap.bind")
|
||||||
|
local map_callback = bind.map_callback
|
||||||
|
|
||||||
|
local crates = require("crates")
|
||||||
|
local crates_keymap = {
|
||||||
|
["n|<leader>ct"] = map_callback(function()
|
||||||
|
crates.toggle()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Toggle spec activities"),
|
||||||
|
["n|<leader>cr"] = map_callback(function()
|
||||||
|
crates.reload()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Reload crate specs"),
|
||||||
|
|
||||||
|
["n|<leader>cs"] = map_callback(function()
|
||||||
|
crates.show_popup()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Toggle pop-up window"),
|
||||||
|
["n|<leader>cv"] = map_callback(function()
|
||||||
|
crates.show_versions_popup()
|
||||||
|
crates.show_popup()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Select spec versions"),
|
||||||
|
["n|<leader>cf"] = map_callback(function()
|
||||||
|
crates.show_features_popup()
|
||||||
|
crates.show_popup()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Select spec features"),
|
||||||
|
["n|<leader>cd"] = map_callback(function()
|
||||||
|
crates.show_dependencies_popup()
|
||||||
|
crates.show_popup()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Show project dependencies"),
|
||||||
|
|
||||||
|
["n|<leader>cu"] = map_callback(function()
|
||||||
|
crates.update_crate()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Update current crate's spec"),
|
||||||
|
["v|<leader>cu"] = map_callback(function()
|
||||||
|
crates.update_crates()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Update selected crate's spec"),
|
||||||
|
["n|<leader>ca"] = map_callback(function()
|
||||||
|
crates.update_all_crates()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Update all crates' specs"),
|
||||||
|
["n|<leader>cU"] = map_callback(function()
|
||||||
|
crates.upgrade_crate()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Upgrade current crate"),
|
||||||
|
["v|<leader>cU"] = map_callback(function()
|
||||||
|
crates.upgrade_crates()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Upgrade selected crates"),
|
||||||
|
["n|<leader>cA"] = map_callback(function()
|
||||||
|
crates.upgrade_all_crates()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Upgrade all crates"),
|
||||||
|
|
||||||
|
["n|<leader>cH"] = map_callback(function()
|
||||||
|
crates.open_homepage()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Open current crate's homepage"),
|
||||||
|
["n|<leader>cR"] = map_callback(function()
|
||||||
|
crates.open_repository()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Open current crate's repository"),
|
||||||
|
["n|<leader>cD"] = map_callback(function()
|
||||||
|
crates.open_documentation()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Open current crate's documentation"),
|
||||||
|
["n|<leader>cC"] = map_callback(function()
|
||||||
|
crates.open_crates_io()
|
||||||
|
end)
|
||||||
|
:with_noremap()
|
||||||
|
:with_silent()
|
||||||
|
:with_buffer(0)
|
||||||
|
:with_desc("crates: Browse current crate on crates.io"),
|
||||||
|
}
|
||||||
|
|
||||||
|
bind.nvim_load_mapping(crates_keymap)
|
|
@ -0,0 +1,87 @@
|
||||||
|
return function()
|
||||||
|
local icons = {
|
||||||
|
diagnostics = require("modules.utils.icons").get("diagnostics", true),
|
||||||
|
git = require("modules.utils.icons").get("git", true),
|
||||||
|
misc = require("modules.utils.icons").get("misc", true),
|
||||||
|
ui = require("modules.utils.icons").get("ui", true),
|
||||||
|
kind = require("modules.utils.icons").get("kind", true),
|
||||||
|
}
|
||||||
|
|
||||||
|
require("modules.utils").load_plugin("crates", {
|
||||||
|
smart_insert = true,
|
||||||
|
insert_closing_quote = true,
|
||||||
|
autoload = true,
|
||||||
|
autoupdate = true,
|
||||||
|
autoupdate_throttle = 250,
|
||||||
|
loading_indicator = true,
|
||||||
|
date_format = "%Y-%m-%d",
|
||||||
|
thousands_separator = ",",
|
||||||
|
notification_title = "Crates",
|
||||||
|
curl_args = { "-sL", "--retry", "1" },
|
||||||
|
text = {
|
||||||
|
loading = " " .. icons.misc.Watch .. "Loading",
|
||||||
|
version = " " .. icons.ui.Check .. "%s",
|
||||||
|
prerelease = " " .. icons.diagnostics.Warning_alt .. "%s",
|
||||||
|
yanked = " " .. icons.diagnostics.Error .. "%s",
|
||||||
|
nomatch = " " .. icons.diagnostics.Question .. "No match",
|
||||||
|
upgrade = " " .. icons.diagnostics.Hint_alt .. "%s",
|
||||||
|
error = " " .. icons.diagnostics.Error .. "Error fetching crate",
|
||||||
|
},
|
||||||
|
popup = {
|
||||||
|
autofocus = false,
|
||||||
|
hide_on_select = true,
|
||||||
|
copy_register = '"',
|
||||||
|
style = "minimal",
|
||||||
|
border = "rounded",
|
||||||
|
show_version_date = true,
|
||||||
|
show_dependency_version = true,
|
||||||
|
max_height = 30,
|
||||||
|
min_width = 20,
|
||||||
|
padding = 1,
|
||||||
|
text = {
|
||||||
|
title = icons.ui.Package .. "%s",
|
||||||
|
description = "%s",
|
||||||
|
created_label = icons.misc.Added .. "created" .. " ",
|
||||||
|
created = "%s",
|
||||||
|
updated_label = icons.misc.ManUp .. "updated" .. " ",
|
||||||
|
updated = "%s",
|
||||||
|
downloads_label = icons.ui.CloudDownload .. "downloads ",
|
||||||
|
downloads = "%s",
|
||||||
|
homepage_label = icons.misc.Campass .. "homepage ",
|
||||||
|
homepage = "%s",
|
||||||
|
repository_label = icons.git.Repo .. "repository ",
|
||||||
|
repository = "%s",
|
||||||
|
documentation_label = icons.diagnostics.Information_alt .. "documentation ",
|
||||||
|
documentation = "%s",
|
||||||
|
crates_io_label = icons.ui.Package .. "crates.io ",
|
||||||
|
crates_io = "%s",
|
||||||
|
categories_label = icons.kind.Class .. "categories ",
|
||||||
|
keywords_label = icons.kind.Keyword .. "keywords ",
|
||||||
|
version = " %s",
|
||||||
|
prerelease = icons.diagnostics.Warning_alt .. "%s prerelease",
|
||||||
|
yanked = icons.diagnostics.Error .. "%s yanked",
|
||||||
|
version_date = " %s",
|
||||||
|
feature = " %s",
|
||||||
|
enabled = icons.ui.Play .. "%s",
|
||||||
|
transitive = icons.ui.List .. "%s",
|
||||||
|
normal_dependencies_title = icons.kind.Interface .. "Dependencies",
|
||||||
|
build_dependencies_title = icons.misc.Gavel .. "Build dependencies",
|
||||||
|
dev_dependencies_title = icons.misc.Glass .. "Dev dependencies",
|
||||||
|
dependency = " %s",
|
||||||
|
optional = icons.ui.BigUnfilledCircle .. "%s",
|
||||||
|
dependency_version = " %s",
|
||||||
|
loading = " " .. icons.misc.Watch,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
insert_closing_quote = true,
|
||||||
|
text = {
|
||||||
|
prerelease = " " .. icons.diagnostics.Warning_alt .. "pre-release ",
|
||||||
|
yanked = " " .. icons.diagnostics.Error_alt .. "yanked ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Set buffer-local keymaps
|
||||||
|
require("lang.crates-keymap")
|
||||||
|
end
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue