diff --git a/bootstrap/Windows.ps1 b/bootstrap/Windows.ps1 index 1611145..bd18b93 100644 --- a/bootstrap/Windows.ps1 +++ b/bootstrap/Windows.ps1 @@ -143,7 +143,8 @@ Get-ChildItem -Force -Filter *owerShell | ForEach-Object { $_.Attributes += "Hid # Windows Terminal if (Get-Command wt -ErrorAction SilentlyContinue) { Write-Output "Windows Terminal (wt) installed" -} else { +} +else { winget install -e --id Microsoft.WindowsTerminal } @@ -185,6 +186,7 @@ scoop install extras/bandizip scoop install main/pandoc scoop install extras/sumatrapdf winget install -e --id Google.GoogleDrive +sudo scoop install nonportable/winbtrfs-np # System Enhancements scoop install extras/fancontrol diff --git a/bootstrap/set_symlink_win.ps1 b/bootstrap/set_symlink_win.ps1 index 2919e93..4640ea0 100644 --- a/bootstrap/set_symlink_win.ps1 +++ b/bootstrap/set_symlink_win.ps1 @@ -9,23 +9,23 @@ $BASE_COMMON = Join-Path $DOTFILES "common" $BASE_TOOLS = Join-Path $DOTFILES "tools" $BASE_WIN = Join-Path $DOTFILES "platforms" "win" $linkDots = @{ - "$BASE_WIN\wslconfig" = "$Env:UserProfile\.wslconfig" - "$BASE_WIN\neovide.toml" = "$Env:AppData\neovide\config.toml" - "$BASE_WIN\vsvimrc" = "$Env:Vim\.vsvimrc" - "$BASE_WIN\komorebi" = "$Env:KOMOREBI_CONFIG_HOME" - "$BASE_COMMON\condarc.yaml" = "$Env:XDG_CONFIG_HOME\conda\.condarc" - "$BASE_COMMON\gitconfig" = "$Env:UserProfile\.gitconfig" - "$BASE_COMMON\glow.yaml" = "$Env:AppData\glow\glow.yml" - "$BASE_COMMON\haskeline" = "$Env:UserProfile\.haskeline" - "$BASE_COMMON\ideavimrc" = "$Env:XDG_CONFIG_HOME\ideavim\ideavimrc" - "$BASE_COMMON\lesskey" = "$Env:LessKeyIn" - "$BASE_COMMON\npmrc" = "$Env:NPM_CONFIG_USERCONFIG" - "$BASE_COMMON\NuGet.Config" = "$Env:AppData\NuGet\NuGet.Config" - "$BASE_COMMON\obsidian.vimrc" = "$Env:UserProfile\Obsidian\.obsidian.vimrc" - "$BASE_COMMON\pip.conf" = "$Env:AppData\pip\pip.ini" - "$BASE_COMMON\vimrc" = "$Env:Vim\_vimrc" - "$BASE_TOOLS\ipython" = "$Env:IPYTHONDIR" - "$BASE_TOOLS\nvim" = "$Env:XDG_CONFIG_HOME\nvim" + "$BASE_WIN\wslconfig" = "$Env:UserProfile\.wslconfig" + "$BASE_WIN\neovide.toml" = "$Env:AppData\neovide\config.toml" + "$BASE_WIN\vsvimrc" = "$Env:Vim\.vsvimrc" + "$BASE_WIN\komorebi" = "$Env:KOMOREBI_CONFIG_HOME" + "$BASE_COMMON\condarc.yaml" = "$Env:XDG_CONFIG_HOME\conda\.condarc" + "$BASE_COMMON\gitconfig" = "$Env:UserProfile\.gitconfig" + "$BASE_COMMON\glow.yaml" = "$Env:AppData\glow\glow.yml" + "$BASE_COMMON\haskeline" = "$Env:UserProfile\.haskeline" + "$BASE_COMMON\ideavimrc" = "$Env:XDG_CONFIG_HOME\ideavim\ideavimrc" + "$BASE_COMMON\lesskey" = "$Env:LessKeyIn" + "$BASE_COMMON\npmrc" = "$Env:NPM_CONFIG_USERCONFIG" + "$BASE_COMMON\NuGet.Config" = "$Env:AppData\NuGet\NuGet.Config" + "$BASE_COMMON\obsidian.vimrc" = "$Env:UserProfile\Obsidian\.obsidian.vimrc" + "$BASE_COMMON\pip.conf" = "$Env:AppData\pip\pip.ini" + "$BASE_COMMON\vimrc.noxdg.vimrc" = "$Env:Vim\_vimrc" + "$BASE_TOOLS\ipython" = "$Env:IPYTHONDIR" + "$BASE_TOOLS\nvim" = "$Env:XDG_CONFIG_HOME\nvim" } diff --git a/bootstrap/temp/mocha_port.fish b/bootstrap/temp/mocha_port.fish new file mode 100644 index 0000000..804cf22 --- /dev/null +++ b/bootstrap/temp/mocha_port.fish @@ -0,0 +1,43 @@ +mkdir -p ~/.tmp +# Bat +mkdir -p "$(bat --config-dir)/themes" +wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Latte.tmTheme +wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Frappe.tmTheme +wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme +wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Mocha.tmTheme +bat cache --build +# Tmux +mkdir -p ~/.config/tmux/plugins/catppuccin:w +git clone -b v2.1.2 https://github.com/catppuccin/tmux.git ~/.config/tmux/plugins/catppuccin/tmux +# Yazi +curl https://raw.githubusercontent.com/catppuccin/yazi/refs/heads/main/themes/mocha/catppuccin-mocha-lavender.toml -o ~/.config/yazi/theme.toml +# BTop +curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_mocha.theme -o ~/.config/btop/themes/catppuccin_mocha.theme +curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_latte.theme -o ~/.config/btop/themes/catppuccin_latte.theme +# Delta +curl https://raw.githubusercontent.com/catppuccin/delta/refs/heads/main/catppuccin.gitconfig -o ~/.config/git/catppuccin-delta.gitconfig +# Fzf +set -Ux FZF_DEFAULT_OPTS "\ +--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \ +--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \ +--color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 \ +--color=selected-bg:#45475a \ +--multi" +# LsD +curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-mocha/colors.yaml -o ~/.config/lsd/colors.yaml +curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-latte/colors.yaml -o ~/.config/lsd/colors-light.yaml +# Midnight Commander +# Change or add skin=catppuccin in the [Midnight-Commander] section inside ~/.config/mc/ini OR Choose the skin inside Midnight Commander through F9>Options>Appearance and Save setup through F9>Options/Save setup +mkdir -p $HOME/.local/share/mc/skins +curl https://raw.githubusercontent.com/catppuccin/mc/refs/heads/main/catppuccin.ini -o $HOME/.local/share/mc/skins/catppuccin.ini +# PowerShell +pwsh -C 'git clone https://github.com/catppuccin/powershell.git (Join-Path $Env:PSModulePath.split(":")[0] Catppuccin)' +# Fish +mkdir -p ~/.config/fish/themes +curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Mocha.theme -o ~/.config/fish/themes/Catppuccin\ Mocha.theme +curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Latte.theme -o ~/.config/fish/themes/Catppuccin\ Latte.theme +# fcitx5 +git clone https://github.com/catppuccin/fcitx5.git ~/.tmp/fcitx5 +cd ~/.tmp/fcitx5 +mkdir -p ~/.local/share/fcitx5/themes +cp -r ./src/* ~/.local/share/fcitx5/themes diff --git a/bootstrap/temp/setup_powershell.ps1 b/bootstrap/temp/setup_powershell.ps1 new file mode 100644 index 0000000..086f340 --- /dev/null +++ b/bootstrap/temp/setup_powershell.ps1 @@ -0,0 +1,3 @@ +Install-Module CompletionPredictor +Install-Module PSFzf +Install-Module Posh-Git diff --git a/common/bat.config b/common/bat.config new file mode 100644 index 0000000..46240f4 --- /dev/null +++ b/common/bat.config @@ -0,0 +1,35 @@ +# $DOTFILES/common/bat.config +# Date: 2025-01-26 +# Author: js0ny + +# Location; +# Unix: $XDG_CONFIG_HOME/bat/config +# Windows: %AppData%\bat\config +# Linking: +# ln -sf $DOTFILES/common/bat.config $XDG_CONFIG_HOME/bat/config + +# This is `bat`s configuration file. Each line either contains a comment or +# a command-line option that you want to pass to `bat` by default. You can +# run `bat --help` to get a list of all possible configuration options. + +# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` +# for a list of all available themes +--theme="Catppuccin Mocha" + +# Enable this to use italic text on the terminal. This is not supported on all +# terminal emulators (like tmux, by default): +#--italic-text=always + +# Uncomment the following line to disable automatic paging: +#--paging=never + +# Uncomment the following line if you are using less version >= 551 and want to +# enable mouse scrolling support in `bat` when running inside tmux. This might +# disable text selection, unless you press shift. +--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse" + +# Syntax mappings: map a certain filename pattern to a language. +# Example 1: use the C++ syntax for Arduino .ino files +# Example 2: Use ".gitignore"-style highlighting for ".ignore" files +#--map-syntax "*.ino:C++" +#--map-syntax ".ignore:Git Ignore" diff --git a/common/gitconfig.example b/common/gitconfig.example index 734063f..3c754dd 100644 --- a/common/gitconfig.example +++ b/common/gitconfig.example @@ -10,6 +10,7 @@ [user] # Modify the name and email name = whoami email = whoami@example.com +<<<<<<< HEAD [alias] cl = clone clnh = clone --depth 1 @@ -25,11 +26,20 @@ excludesfile = $XDG_CONFIG_HOME/git/ignore quotePath = false # zh-CN: 解决中文路径问题 eol = lf +======= +[include] + path = ~/.config/git/catppuccin-delta.gitconfig +[core] + editor = nvim + pager = delta + autocrlf = input # Force End of Line in different platforms +>>>>>>> github/master [interactive] diffFilter = delta --color-only [delta] navigate = true dark = true +<<<<<<< HEAD [diff] tool = nvimdiff [difftool] @@ -48,13 +58,24 @@ ff = only [init] defaultBranch = master +======= + features = catppuccin-mocha +>>>>>>> github/master [filter "lfs"] clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true +<<<<<<< HEAD # Force ssh # [url "git@github.com:"] # insteadOf = https://github.com/ [url "git@codeberg.org:"] - insteadOf = https://codeberg.org/ \ No newline at end of file + insteadOf = https://codeberg.org/ +======= +[init] + defaultBranch = master + +# [url "git@github.com:"] # Force ssh +# insteadOf = https://github.com/ +>>>>>>> github/master diff --git a/common/lazygit.yaml b/common/lazygit.yaml index 94799da..cf28735 100644 --- a/common/lazygit.yaml +++ b/common/lazygit.yaml @@ -60,45 +60,37 @@ gui: # Config relating to colors and styles. # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes theme: - # Border color of focused window activeBorderColor: - - green + - '#b4befe' - bold - # Border color of non-focused windows inactiveBorderColor: - - default - # Border color of focused window when searching in that window - searchingActiveBorderColor: - - cyan - - bold - # Color of keybindings help text in the bottom line + - '#a6adc8' optionsTextColor: - - blue - # Background color of selected line. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line + - '#89b4fa' selectedLineBgColor: - - blue + - '#313244' + cherryPickedCommitBgColor: + - '#45475a' + cherryPickedCommitFgColor: + - '#b4befe' + unstagedChangesColor: + - '#f38ba8' + defaultFgColor: + - '#cdd6f4' + searchingActiveBorderColor: + - '#f9e2af' + + authorColors: + '*': '#b4befe' # Background color of selected line when view doesn't have focus. inactiveViewSelectedLineBgColor: - bold - # Foreground color of copied commit - cherryPickedCommitFgColor: - - blue - # Background color of copied commit - cherryPickedCommitBgColor: - - cyan # Foreground color of marked base commit (for rebase) markedBaseCommitFgColor: - blue # Background color of marked base commit (for rebase) markedBaseCommitBgColor: - yellow - # Color for file with unstaged changes - unstagedChangesColor: - - red - # Default text color - defaultFgColor: - - default # Config relating to the commit length indicator commitLength: # If true, show an indicator of commit message length diff --git a/common/lsd.yaml b/common/lsd.yaml new file mode 100644 index 0000000..9adf5e2 --- /dev/null +++ b/common/lsd.yaml @@ -0,0 +1,151 @@ +# Location: $XDG_CONFIG_HOME/lsd/config.yaml +# Linking: +# ln -sf $DOTFILES/common/lsd.yaml $XDG_CONFIG_HOME/lsd/config.yaml +# == Classic == +# This is a shorthand to override some of the options to be backwards compatible +# with `ls`. It affects the "color"->"when", "sorting"->"dir-grouping", "date" +# and "icons"->"when" options. +# Possible values: false, true +classic: false + +# == Blocks == +# This specifies the columns and their order when using the long and the tree +# layout. +# Possible values: permission, user, group, context, size, date, name, inode, links, git +blocks: + - permission + - user + - group + - size + - date + - name + +# == Color == +# This has various color options. (Will be expanded in the future.) +color: + # When to colorize the output. + # When "classic" is set, this is set to "never". + # Possible values: never, auto, always + when: auto + # How to colorize the output. + # When "classic" is set, this is set to "no-color". + # Possible values: default, custom + # When "custom" is set, lsd will look in the config directory for `colors.yaml`. + theme: custom + +# == Date == +# This specifies the date format for the date column. The freeform format +# accepts a strftime like string. +# When "classic" is set, this is set to "date". +# Possible values: date, locale, relative, '+' +# `date_format` will be a `strftime` formatted value. e.g. `date: '+%d %b %y %X'` will give you a date like this: 17 Jun 21 20:14:55 +date: date + +# == Dereference == +# Whether to dereference symbolic links. +# Possible values: false, true +dereference: false + +# == Display == +# What items to display. Do not specify this for the default behavior. +# Possible values: all, almost-all, directory-only +# display: all + +# == Icons == +icons: + # When to use icons. + # When "classic" is set, this is set to "never". + # Possible values: always, auto, never + when: auto + # Which icon theme to use. + # Possible values: fancy, unicode + theme: fancy + # Separator between icon and the name + # Default to 1 space + separator: " " + +# == Ignore Globs == +# A list of globs to ignore when listing. +ignore-globs: + - .git + +# == Indicators == +# Whether to add indicator characters to certain listed files. +# Possible values: false, true +indicators: false + +# == Layout == +# Which layout to use. "oneline" might be a bit confusing here and should be +# called "one-per-line". It might be changed in the future. +# Possible values: grid, tree, oneline +layout: grid + +# == Recursion == +recursion: + # Whether to enable recursion. + # Possible values: false, true + enabled: false + # How deep the recursion should go. This has to be a positive integer. Leave + # it unspecified for (virtually) infinite. + # depth: 3 + +# == Size == +# Specifies the format of the size column. +# Possible values: default, short, bytes +size: default + +# == Permission == +# Specify the format of the permission column +# Possible value: rwx, octal, attributes (windows only), disable +# permission: rwx + +# == Sorting == +sorting: + # Specify what to sort by. + # Possible values: extension, name, time, size, version + column: name + # Whether to reverse the sorting. + # Possible values: false, true + reverse: false + # Whether to group directories together and where. + # When "classic" is set, this is set to "none". + # Possible values: first, last, none + dir-grouping: none + +# == No Symlink == +# Whether to omit showing symlink targets +# Possible values: false, true +no-symlink: false + +# == Total size == +# Whether to display the total size of directories. +# Possible values: false, true +total-size: false + +# == Hyperlink == +# Attach hyperlink to filenames +# Possible values: always, auto, never +hyperlink: never + +# == Symlink arrow == +# Specifies how the symlink arrow display, chars in both ascii and utf8 +symlink-arrow: ⇒ + +# == Header == +# Whether to display block headers. +# Possible values: false, true +header: false + +# == Literal == +# Whether to show quotes on filenames. +# Possible values: false, true +literal: false + +# == Truncate owner == +# How to truncate the username and group names for a file if they exceed a certain +# number of characters. +truncate-owner: + # Number of characters to keep. By default, no truncation is done (empty value). + after: + # String to be appended to a name if truncated. + marker: "" diff --git a/common/starship.toml b/common/starship.toml new file mode 100644 index 0000000..861ec4a --- /dev/null +++ b/common/starship.toml @@ -0,0 +1,394 @@ +# $DOTFILES/common/starship.toml +# Date: 2025-01-26 +# Description: Use one starship config for all shells + +# Location: $XDG_CONFIG_HOME/starship.toml +# Linking: ln -s $DOTFILES/common/starship.toml $XDG_CONFIG_HOME/starship.toml + +"$schema" = 'https://starship.rs/config-schema.json' +palette = "catppuccin_mocha" + +# {{{ format +format = """ +$jobs\ +$os\ +$time\ +[](bg:#DA627D fg:#9A348E)\ +$username\ +$hostname\ +[](fg:#DA627D bg:#FCA17D)\ +$directory\ +$git_branch\ +$git_status\ +[](fg:#FCA17D bg:#86BBD8)\ +$custom\ +$c\ +$cmake\ +$cobol\ +$daml\ +$dart\ +$deno\ +$dotnet\ +$elixir\ +$elm\ +$erlang\ +$fennel\ +$gleam\ +$golang\ +$guix_shell\ +$haskell\ +$haxe\ +$helm\ +$java\ +$julia\ +$kotlin\ +$gradle\ +$lua\ +$nim\ +$nodejs\ +$ocaml\ +$opa\ +$perl\ +$php\ +$pulumi\ +$purescript\ +$python\ +$quarto\ +$raku\ +$rlang\ +$red\ +$ruby\ +$rust\ +$scala\ +$solidity\ +$swift\ +$terraform\ +$typst\ +$vlang\ +$vagrant\ +$zig\ +[](fg:#86BBD8) +$character\ +$shell\ +[](fg:#06969A)\ +""" +# }}} + +# {{{ TODO +# +# $buf\ +# $nix_shell\ +# $conda\ +# $meson\ +# $spack\ +# $memory_usage\ +# $aws\ +# $gcloud\ +# $openstack\ +# $azure\ +# $nats\ +# $direnv\ +# $env_var\ +# $crystal\ +# $custom\ +# $sudo\ +# $cmd_duration\ +# $line_break\ +# $battery\ +# $container\ +# }}} + +# Disable the blank line at the start of the prompt +# add_newline = false + +# You can also replace your username with a neat symbol like  or disable this +# and use the os module below + +# {{{ Part 1 +[jobs] +style = "bg:#9A348E" +format = '[$symbol $number]($style)' + +[os] +style = "bg:#9A348E" +format = '[ $symbol ]($style)' +disabled = false # Disabled by default + +[os.symbols] +Alpaquita = " " +Alpine = " " +AlmaLinux = " " +Amazon = " " +Android = " " +Arch = " " +Artix = " " +CentOS = " " +Debian = " " +DragonFly = " " +Emscripten = " " +EndeavourOS = " " +Fedora = " " +FreeBSD = " " +Garuda = "󰛓 " +Gentoo = " " +HardenedBSD = "󰞌 " +Illumos = "󰈸 " +Kali = " " +Linux = " " +Mabox = " " +Macos = " " +Manjaro = " " +Mariner = " " +MidnightBSD = " " +Mint = " " +NetBSD = " " +NixOS = " " +OpenBSD = "󰈺 " +openSUSE = " " +OracleLinux = "󰌷 " +Pop = " " +Raspbian = " " +Redhat = " " +RedHatEnterprise = " " +RockyLinux = " " +Redox = "󰀘 " +Solus = "󰠳 " +SUSE = " " +Ubuntu = " " +Unknown = " " +Void = " " +Windows = "󰍲 " + +[time] +disabled = false +time_format = "%R" # Hour:Minute Format +# style = "bg:#33658A" +style = "bg:#9A348E" +format = '[$time ]($style)' +# }}} + +# {{{ Part 2 +[username] +show_always = true +style_user = "bg:#DA627D" +style_root = "bg:#DA627D" +# style_user = "bg:#9A348E" +# style_root = "bg:#9A348E" +format = '[ $user ]($style)' +disabled = false + + +[hostname] +ssh_only = false +# format = '[$ssh_symbol](bold blue) [$hostname](bold red) ' +style = "bg:#DA627D" +format = '[@ $hostname ]($style)' +trim_at = '.companyname.com' +disabled = false + + +# }}} + +# {{{ Part 3 +[directory] +style = "bg:#FCA17D fg:#035E82" +format = "[ $path ]($style)" +fish_style_pwd_dir_length = 1 +# truncation_length = 100 +truncation_length = 2 +truncation_symbol = ":" +truncate_to_repo = true + +# Here is how you can shorten some long paths by text replacementtruncation_symbol = ":" +# similar to mapped_locations in Oh My Posh: +[directory.substitutions] +# "Documents" = "󰈙 " +# "Downloads" = " " +# "Music" = " " +# "Pictures" = " " +# "Source" = " " +# ".dotfiles" = " " +# Keep in mind that the order matters. For example: +# "Important Documents" = " 󰈙 " +# will not be replaced, because "Documents" was already substituted before. +# So either put "Important Documents" before "Documents" or use the substituted version: +# "Important 󰈙 " = " 󰈙 " + +[git_branch] +symbol = "" +style = "bg:#FCA17D fg:#035E82" +format = '[ $symbol $branch ]($style)' + +[git_status] +style = "bg:#FCA17D fg:#035E82" +renamed = " " +modified = " " +staged = " " +deleted = " " +format = '[$all_status$ahead_behind ]($style)' +# }}} + +# {{{ Part 4 +[c] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[cmake] +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[dart] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[deno] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[dotnet] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' +detect_extensions = [ + "sln", + "csproj", + "fsproj", + "xproj", + "vbproj", + "cs", + "csx", + "fs", + "fsx", +] + +[docker_context] +symbol = " " +style = "bg:#06969A" +format = '[ $symbol $context ]($style)' + +[elixir] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[elm] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[golang] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[gradle] +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[haskell] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[java] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[julia] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[lua] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[nodejs] +symbol = "" +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[nim] +symbol = "󰆥 " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[rust] +symbol = "" +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + +[scala] +symbol = " " +style = "bg:#86BBD8 fg:#794427" +format = '[ $symbol ($version) ]($style)' + + +# }}} + +# {{{ Part 5 +[shell] +style = "bg:#06969A" +format = '[ $indicator ]($style)' +fish_indicator = "󰈺 " +bash_indicator = '$ ' +zsh_indicator = "% " +powershell_indicator = "PS" +cmd_indicator = "cm" +nu_indicator = "nu" +disabled = false + +[character] +success_symbol = "[ ](bg:#33658A)[](fg:#33658A bg:#06969A)" +error_symbol = "[  ](fg:bold red bg:#33658A)[](fg:#33658A bg:#06969A)" +vimcmd_symbol = "[  ](fg:#32ff6c bg:#33658A)[](fg:#33658A bg:#06969A)" +vimcmd_visual_symbol = "[  ](fg:bold yellow bg:#33658A)[](fg:#33658A bg:#06969A)" +vimcmd_replace_symbol = "[  ](fg:bold purple bg:#33658A)[](fg:#33658A bg:#06969A)" +vimcmd_replace_one_symbol = "[  ](fg:bold purple bg:#33658A)[](fg:#33658A bg:#06969A)" +# success_symbol = "[ ](bg:#33658A)[](fg:#33658A bg:#06969A)" +# success_symbol = "[](fg:#86BBD8 bg:#33658A)" +format = "$symbol" +disabled = false +# }}} + +# {{{ Misc + +[palettes.catppuccin_mocha] +rosewater = "#f5e0dc" +flamingo = "#f2cdcd" +pink = "#f5c2e7" +mauve = "#cba6f7" +red = "#f38ba8" +maroon = "#eba0ac" +peach = "#fab387" +yellow = "#f9e2af" +green = "#a6e3a1" +teal = "#94e2d5" +sky = "#89dceb" +sapphire = "#74c7ec" +blue = "#89b4fa" +lavender = "#b4befe" +text = "#cdd6f4" +subtext1 = "#bac2de" +subtext0 = "#a6adc8" +overlay2 = "#9399b2" +overlay1 = "#7f849c" +overlay0 = "#6c7086" +surface2 = "#585b70" +surface1 = "#45475a" +surface0 = "#313244" +base = "#1e1e2e" +mantle = "#181825" +crust = "#11111b" + +# }}} + +[custom.just] +detect_files = ["Justfile", "justfile", ".Justfile", ".justfile"] +style = "bg:#86BBD8 fg:#794427" +format = "[Just]($style)" diff --git a/common/tmux.conf b/common/tmux.conf index 4323f06..53131ce 100644 --- a/common/tmux.conf +++ b/common/tmux.conf @@ -8,6 +8,11 @@ # Linking: # ln -sf $DOTFILES/common/tmux.conf $XDG_CONFIG_HOME/tmux/tmux.conf +# Theme +# ----------------- +set -g @catppuccin_flavor "mocha" +run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux + # Prefix # ----------------- set-option -g prefix C-a @@ -61,17 +66,9 @@ bind ` resize-pane -Z # Status Bar # ----------------- -set -g status-position top -set-option -g status-bg black -set-option -g status-fg white -set-option -g status-left '#[fg=green][#S] ' -setw -g window-status-current-format '#[fg=colour236,bg=colour39] #I #W ' - # set -g status-position top -# set -g @catppuccin_flavor "frappe" -# run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux -# set -g status-right-length 100 -# set -g status-left-length 100 -# set -g status-left "" -# set -g status-right "#{E:@catppuccin_status_application}" -# set -ag status-right "#{E:@catppuccin_status_session}" +# set-option -g status-bg black +# set-option -g status-fg white +# set-option -g status-left '#[fg=green][#S] ' +# setw -g window-status-current-format '#[fg=colour236,bg=colour39] #I #W ' + diff --git a/common/vim.noxdg.vimrc b/common/vim.noxdg.vimrc index 376cc2a..c402dcf 100644 --- a/common/vim.noxdg.vimrc +++ b/common/vim.noxdg.vimrc @@ -1,59 +1,3 @@ -" $VIMRUNTIME refers to the versioned system directory where Vim stores its -" system runtime files -- /usr/share/vim/vim. -" -" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc. -" This happens after /etc/vim/vimrc(.local) are loaded, so it will override -" any settings in these files. -" -" If you don't want that to happen, uncomment the below line to prevent -" defaults.vim from being loaded. -" let g:skip_defaults_vim = 1 -" -" If you would rather _use_ default.vim's settings, but have the system or -" user vimrc override its settings, then uncomment the line below. -" source $VIMRUNTIME/defaults.vim - -" All Debian-specific settings are defined in $VIMRUNTIME/debian.vim and -" sourced by the call to :runtime you can find below. If you wish to change -" any of those settings, you should do it in this file or -" /etc/vim/vimrc.local, since debian.vim will be overwritten everytime an -" upgrade of the vim packages is performed. It is recommended to make changes -" after sourcing debian.vim so your settings take precedence. - -runtime! debian.vim - -" Uncomment the next line to make Vim more Vi-compatible -" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes -" numerous options, so any other options should be set AFTER changing -" 'compatible'. -"set compatible - -" Vim5 and later versions support syntax highlighting. Uncommenting the next -" line enables syntax highlighting by default. -syntax on - -" If using a dark background within the editing area and syntax highlighting -" turn on this option as well -"set background=dark - -" Uncomment the following to have Vim jump to the last position when -" reopening a file -"au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif - -" Uncomment the following to have Vim load indentation rules and plugins -" according to the detected filetype. -"filetype plugin indent on - -" The following are commented out as they cause vim to behave a lot -" differently from regular Vi. They are highly recommended though. -set showcmd " Show (partial) command in status line. -set showmatch " Show matching brackets. -set ignorecase " Do case insensitive matching -set smartcase " Do smart case matching -set incsearch " Incremental search -"set autowrite " Automatically save before commands like :next and :make -" set hidden " Hide buffers when they are abandoned -"set mouse=a " Enable mouse usage (all modes) " Source a global configuration file if available if filereadable("/etc/vim/vimrc.local") @@ -97,6 +41,8 @@ set hlsearch set incsearch set ignorecase set smartcase +set showcmd +set mouse=a " Enable mouse usage (all modes) set number set relativenumber @@ -104,3 +50,5 @@ set relativenumber set laststatus=2 set showcmd set statusline=%<%f\ %h%m%r\ %=\ [%l,%v]\ [%p%%]\ [\ %Y]\ [󱑉\ %{strftime('%H:%M:%S')}] + +syntax on diff --git a/common/zellij.config.kdl b/common/zellij.config.kdl index 5114373..9c83644 100644 --- a/common/zellij.config.kdl +++ b/common/zellij.config.kdl @@ -1,24 +1,407 @@ -// ~/.config/zellij/config.kdl -// ln -sf $DOTFILES/.config/zellij/config.kdl ~.config/zellij/config.kdl -// https://zellij.dev/documentation/configuration +// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" keybinds { - // keybinds are divided into modes normal { - // bind instructions can include one or more keys (both keys will be bound separately) - // bind keys can include one or more actions (all actions will be performed with no sequential guarantees) - bind "Ctrl g" { SwitchToMode "locked"; } - bind "Ctrl p" { SwitchToMode "pane"; } - bind "Alt n" { NewPane; } - bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } - } - pane { - bind "h" "Left" { MoveFocus "Left"; } - bind "n" "Down" { MoveFocus "Down"; } - bind "e" "Up" { MoveFocus "Up"; } - bind "i" "Right" { MoveFocus "Right"; } - bind "p" { SwitchFocus; } + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } } locked { - bind "Ctrl g" { SwitchToMode "normal"; } + bind "Ctrl g" { SwitchToMode "Normal"; } + } + resize { + bind "Ctrl n" { SwitchToMode "Normal"; } + bind "h" "Left" { Resize "Increase Left"; } + bind "n" "Down" { Resize "Increase Down"; } + bind "e" "Up" { Resize "Increase Up"; } + bind "i" "Right" { Resize "Increase Right"; } + bind "H" { Resize "Decrease Left"; } + bind "N" { Resize "Decrease Down"; } + bind "E" { Resize "Decrease Up"; } + bind "I" { Resize "Decrease Right"; } + bind "=" "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + } + pane { + bind "Ctrl p" { SwitchToMode "Normal"; } + bind "h" "Left" { MoveFocus "Left"; } + bind "i" "Right" { MoveFocus "Right"; } + bind "n" "Down" { MoveFocus "Down"; } + bind "e" "Up" { MoveFocus "Up"; } + bind "p" { SwitchFocus; } + bind "c" { NewPane; SwitchToMode "Normal"; } + bind "N" { NewPane "Down"; SwitchToMode "Normal"; } + bind "I" { NewPane "Right"; SwitchToMode "Normal"; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "z" { TogglePaneFrames; SwitchToMode "Normal"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } + bind "r" { SwitchToMode "RenamePane"; PaneNameInput 0;} + } + move { + bind "Ctrl h" { SwitchToMode "Normal"; } + bind "h" "Left" { MovePane "Left"; } + bind "n" "Down" { MovePane "Down"; } + bind "e" "Up" { MovePane "Up"; } + bind "i" "Right" { MovePane "Right"; } + } + tab { + bind "Ctrl t" { SwitchToMode "Normal"; } + bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; } + bind "h" "Left" "Up" "e" { GoToPreviousTab; } + bind "i" "Right" "Down" "n" { GoToNextTab; } + bind "c" { NewTab; SwitchToMode "Normal"; } + bind "x" { CloseTab; SwitchToMode "Normal"; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } + bind "b" { BreakPane; SwitchToMode "Normal"; } + bind "]" { BreakPaneRight; SwitchToMode "Normal"; } + bind "[" { BreakPaneLeft; SwitchToMode "Normal"; } + bind "1" { GoToTab 1; SwitchToMode "Normal"; } + bind "2" { GoToTab 2; SwitchToMode "Normal"; } + bind "3" { GoToTab 3; SwitchToMode "Normal"; } + bind "4" { GoToTab 4; SwitchToMode "Normal"; } + bind "5" { GoToTab 5; SwitchToMode "Normal"; } + bind "6" { GoToTab 6; SwitchToMode "Normal"; } + bind "7" { GoToTab 7; SwitchToMode "Normal"; } + bind "8" { GoToTab 8; SwitchToMode "Normal"; } + bind "9" { GoToTab 9; SwitchToMode "Normal"; } + bind "Tab" { ToggleTab; } + } + scroll { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "r" { EditScrollback; SwitchToMode "Normal"; } + bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "n" "Down" { ScrollDown; } + bind "e" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + // uncomment this and adjust key if using copy_on_select=false + // bind "Alt c" { Copy; } + } + search { + bind "Ctrl s" { SwitchToMode "Normal"; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } + bind "n" "Down" { ScrollDown; } + bind "e" "Up" { ScrollUp; } + bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } + bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } + bind "d" { HalfPageScrollDown; } + bind "u" { HalfPageScrollUp; } + bind "k" { Search "down"; } + bind "K" { Search "up"; } + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "w" { SearchToggleOption "Wrap"; } + bind "o" { SearchToggleOption "WholeWord"; } + } + entersearch { + bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } + bind "Enter" { SwitchToMode "Search"; } + } + renametab { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; } + } + renamepane { + bind "Ctrl c" { SwitchToMode "Normal"; } + bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } + } + session { + bind "Ctrl o" { SwitchToMode "Normal"; } + bind "Ctrl s" { SwitchToMode "Scroll"; } + bind "d" { Detach; } + bind "w" { + LaunchOrFocusPlugin "session-manager" { + floating true + move_to_focused_tab true + }; + SwitchToMode "Normal" + } + bind "c" { + LaunchOrFocusPlugin "configuration" { + floating true + move_to_focused_tab true + }; + SwitchToMode "Normal" + } + bind "p" { + LaunchOrFocusPlugin "plugin-manager" { + floating true + move_to_focused_tab true + }; + SwitchToMode "Normal" + } + } + tmux { + bind "[" { SwitchToMode "Scroll"; } + bind "Ctrl b" { Write 2; SwitchToMode "Normal"; } + bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } + bind "%" { NewPane "Right"; SwitchToMode "Normal"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + bind "c" { NewTab; SwitchToMode "Normal"; } + bind "," { SwitchToMode "RenameTab"; } + bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } + bind "n" { GoToNextTab; SwitchToMode "Normal"; } + bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; } + bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; } + bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; } + bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; } + bind "o" { FocusNextPane; } + bind "d" { Detach; } + bind "Space" { NextSwapLayout; } + bind "x" { CloseFocus; SwitchToMode "Normal"; } + } + shared_except "locked" { + bind "Ctrl g" { SwitchToMode "Locked"; } + bind "Ctrl q" { Quit; } + bind "Alt f" { ToggleFloatingPanes; } + bind "Alt n" { NewPane; } + bind "Alt i" { MoveTab "Left"; } + bind "Alt o" { MoveTab "Right"; } + bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } + bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } + bind "Alt j" "Alt Down" { MoveFocus "Down"; } + bind "Alt k" "Alt Up" { MoveFocus "Up"; } + bind "Alt =" "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + bind "Alt [" { PreviousSwapLayout; } + bind "Alt ]" { NextSwapLayout; } + } + shared_except "normal" "locked" { + bind "Enter" "Esc" { SwitchToMode "Normal"; } + } + shared_except "pane" "locked" { + bind "Ctrl p" { SwitchToMode "Pane"; } + } + shared_except "resize" "locked" { + bind "Ctrl n" { SwitchToMode "Resize"; } + } + shared_except "scroll" "locked" { + bind "Ctrl s" { SwitchToMode "Scroll"; } + } + shared_except "session" "locked" { + bind "Ctrl o" { SwitchToMode "Session"; } + } + shared_except "tab" "locked" { + bind "Ctrl t" { SwitchToMode "Tab"; } + } + shared_except "move" "locked" { + bind "Ctrl h" { SwitchToMode "Move"; } + } + shared_except "tmux" "locked" { + bind "Ctrl b" { SwitchToMode "Tmux"; } } } + +// Plugin aliases - can be used to change the implementation of Zellij +// changing these requires a restart to take effect +plugins { + tab-bar location="zellij:tab-bar" + status-bar location="zellij:status-bar" + strider location="zellij:strider" + compact-bar location="zellij:compact-bar" + session-manager location="zellij:session-manager" + welcome-screen location="zellij:session-manager" { + welcome_screen true + } + filepicker location="zellij:strider" { + cwd "/" + } + configuration location="zellij:configuration" + plugin-manager location="zellij:plugin-manager" +} + +// Plugins to load in the background when a new session starts +load_plugins { + // "file:/path/to/my-plugin.wasm" + // "https://example.com/my-plugin.wasm" +} + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// (Requires restart) +// Options: +// - detach (Default) +// - quit +// +// on_force_close "quit" + +// Send a request for a simplified ui (without arrow fonts) to plugins +// Options: +// - true +// - false (Default) +// +// simplified_ui true + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Choose the path to override cwd that zellij will use for opening new panes +// +// default_cwd "" + +// Toggle between having pane frames around the panes +// Options: +// - true (default) +// - false +// +// pane_frames true + +// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible +// Options: +// - true (default) +// - false +// +// auto_layout true + +// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected +// (Requires restart) +// Options: +// - true (default) +// - false +// +// session_serialization false + +// Whether pane viewports are serialized along with the session, default is false +// (Requires restart) +// Options: +// - true +// - false (default) +// +// serialize_pane_viewport true + +// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 +// defaults to the scrollback size. If this number is higher than the scrollback size, it will +// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. +// (Requires restart) +// +// scrollback_lines_to_serialize 10000 + +// Define color themes for Zellij +// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes +// Once these themes are defined, one of them should to be selected in the "theme" section of this file +// +// themes { +// dracula { +// fg 248 248 242 +// bg 40 42 54 +// red 255 85 85 +// green 80 250 123 +// yellow 241 250 140 +// blue 98 114 164 +// magenta 255 121 198 +// orange 255 184 108 +// cyan 139 233 253 +// black 0 0 0 +// white 255 255 255 +// } +// } + +// Choose the theme that is specified in the themes section. +// Default: default +// +theme "default" + +// The name of the default layout to load on startup +// Default: "default" +// (Requires restart) +// +// default_layout "compact" + +// Choose the mode that zellij uses when starting up. +// Default: normal +// +// default_mode "locked" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +// (Requires restart) +// Options: +// - true (default) +// - false +// +// mouse_mode false + +// Configure the scroll back buffer size +// This is the number of lines zellij stores for each pane in the scroll back +// buffer. Excess number of lines are discarded in a FIFO fashion. +// (Requires restart) +// Valid values: positive integers +// Default value: 10000 +// +// scroll_buffer_size 10000 + +// Provide a command to execute when copying text. The text will be piped to +// the stdin of the program to perform the copy. This can be used with +// terminal emulators which do not support the OSC 52 ANSI control sequence +// that will be used by default if this option is not set. +// Examples: +// +// copy_command "xclip -selection clipboard" // x11 +// copy_command "wl-copy" // wayland +// copy_command "pbcopy" // osx + +// Choose the destination for copied text +// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. +// Does not apply when using copy_command. +// Options: +// - system (default) +// - primary +// +// copy_clipboard "primary" + +// Enable or disable automatic copy (and clear) of selection when releasing mouse +// Default: true +// +// copy_on_select false + +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// +// scrollback_editor "/usr/bin/vim" + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// (Requires restart) +// Default: false +// +// mirror_session true + +// The folder in which Zellij will look for layouts +// (Requires restart) +// +// layout_dir "/path/to/my/layout_dir" + +// The folder in which Zellij will look for themes +// (Requires restart) +// +// theme_dir "/path/to/my/theme_dir" + +// Enable or disable the rendering of styled and colored underlines (undercurl). +// May need to be disabled for certain unsupported terminals +// (Requires restart) +// Default: true +// +// styled_underlines false + +// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know +// metadata info on this session) +// (Requires restart) +// Default: false +// +// disable_session_metadata true + +// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it) +// (Requires restart) +// Default: true (if the host terminal supports it) +// +// support_kitty_keyboard_protocol false diff --git a/platforms/linux/awesome/rc.lua b/platforms/linux/awesome/rc.lua new file mode 100644 index 0000000..2633e92 --- /dev/null +++ b/platforms/linux/awesome/rc.lua @@ -0,0 +1,604 @@ +-- If LuaRocks is installed, make sure that packages installed through it are +-- found (e.g. lgi). If LuaRocks is not installed, do nothing. +pcall(require, "luarocks.loader") + +-- Standard awesome library +local gears = require("gears") +local awful = require("awful") +require("awful.autofocus") +-- Widget and layout library +local wibox = require("wibox") +-- Theme handling library +local beautiful = require("beautiful") +-- Notification library +local naughty = require("naughty") +local menubar = require("menubar") +local hotkeys_popup = require("awful.hotkeys_popup") +-- Enable hotkeys help widget for VIM and other apps +-- when client with a matching name is opened: +require("awful.hotkeys_popup.keys") + +-- {{{ Error handling +-- Check if awesome encountered an error during startup and fell back to +-- another config (This code will only ever execute for the fallback config) +if awesome.startup_errors then + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, there were errors during startup!", + text = awesome.startup_errors, + }) +end + +-- Handle runtime errors after startup +do + local in_error = false + awesome.connect_signal("debug::error", function(err) + -- Make sure we don't go into an endless error loop + if in_error then + return + end + in_error = true + + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, an error happened!", + text = tostring(err), + }) + in_error = false + end) +end +-- }}} + +-- {{{ Variable definitions +-- Themes define colours, icons, font and wallpapers. +beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") + +-- This is used later as the default terminal and editor to run. +terminal = "wezterm" +editor = os.getenv("EDITOR") or "vim" +editor_cmd = terminal .. " -e " .. editor + +-- Default modkey. +-- Usually, Mod4 is the key with a logo between Control and Alt. +-- If you do not like this or do not have such a key, +-- I suggest you to remap Mod4 to another key using xmodmap or other tools. +-- However, you can use another modifier like Mod1, but it may interact with others. +modkey = "Mod4" + +-- Table of layouts to cover with awful.layout.inc, order matters. +awful.layout.layouts = { + awful.layout.suit.tile, -- Tile by default + awful.layout.suit.floating, + awful.layout.suit.tile.left, + awful.layout.suit.tile.bottom, + awful.layout.suit.tile.top, + awful.layout.suit.fair, + awful.layout.suit.fair.horizontal, + awful.layout.suit.spiral, + awful.layout.suit.spiral.dwindle, + awful.layout.suit.max, + awful.layout.suit.max.fullscreen, + awful.layout.suit.magnifier, + awful.layout.suit.corner.nw, + -- awful.layout.suit.corner.ne, + -- awful.layout.suit.corner.sw, + -- awful.layout.suit.corner.se, +} +-- }}} + +-- {{{ Menu +-- Create a launcher widget and a main menu +myawesomemenu = { + { + "hotkeys", + function() + hotkeys_popup.show_help(nil, awful.screen.focused()) + end, + }, + { "manual", terminal .. " -e man awesome" }, + { "edit config", editor_cmd .. " " .. awesome.conffile }, + { "restart", awesome.restart }, + { + "quit", + function() + awesome.quit() + end, + }, +} + +mymainmenu = awful.menu({ + items = { + { "awesome", myawesomemenu, beautiful.awesome_icon }, + { "open terminal", terminal }, + }, +}) + +mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) + +-- Menubar configuration +menubar.utils.terminal = terminal -- Set the terminal for applications that require it +-- }}} + +-- Keyboard map indicator and switcher +mykeyboardlayout = awful.widget.keyboardlayout() + +-- {{{ Wibar +-- Create a textclock widget +mytextclock = wibox.widget.textclock() + +-- Create a wibox for each screen and add it +local taglist_buttons = gears.table.join( + awful.button({}, 1, function(t) + t:view_only() + end), + awful.button({ modkey }, 1, function(t) + if client.focus then + client.focus:move_to_tag(t) + end + end), + awful.button({}, 3, awful.tag.viewtoggle), + awful.button({ modkey }, 3, function(t) + if client.focus then + client.focus:toggle_tag(t) + end + end), + awful.button({}, 4, function(t) + awful.tag.viewnext(t.screen) + end), + awful.button({}, 5, function(t) + awful.tag.viewprev(t.screen) + end) +) + +local tasklist_buttons = gears.table.join( + awful.button({}, 1, function(c) + if c == client.focus then + c.minimized = true + else + c:emit_signal("request::activate", "tasklist", { raise = true }) + end + end), + awful.button({}, 3, function() + awful.menu.client_list({ theme = { width = 250 } }) + end), + awful.button({}, 4, function() + awful.client.focus.byidx(1) + end), + awful.button({}, 5, function() + awful.client.focus.byidx(-1) + end) +) + +local function set_wallpaper(s) + -- Wallpaper + if beautiful.wallpaper then + local wallpaper = beautiful.wallpaper + -- If wallpaper is a function, call it with the screen + if type(wallpaper) == "function" then + wallpaper = wallpaper(s) + end + gears.wallpaper.maximized(wallpaper, s, true) + end +end + +-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) +screen.connect_signal("property::geometry", set_wallpaper) + +awful.screen.connect_for_each_screen(function(s) + -- Wallpaper + set_wallpaper(s) + + -- Each screen has its own tag table. + awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1]) + + -- Create a promptbox for each screen + s.mypromptbox = awful.widget.prompt() + -- Create an imagebox widget which will contain an icon indicating which layout we're using. + -- We need one layoutbox per screen. + s.mylayoutbox = awful.widget.layoutbox(s) + s.mylayoutbox:buttons(gears.table.join( + awful.button({}, 1, function() + awful.layout.inc(1) + end), + awful.button({}, 3, function() + awful.layout.inc(-1) + end), + awful.button({}, 4, function() + awful.layout.inc(1) + end), + awful.button({}, 5, function() + awful.layout.inc(-1) + end) + )) + -- Create a taglist widget + s.mytaglist = awful.widget.taglist({ + screen = s, + filter = awful.widget.taglist.filter.all, + buttons = taglist_buttons, + }) + + -- Create a tasklist widget + s.mytasklist = awful.widget.tasklist({ + screen = s, + filter = awful.widget.tasklist.filter.currenttags, + buttons = tasklist_buttons, + }) + + -- Create the wibox + s.mywibox = awful.wibar({ position = "top", screen = s }) + + -- Add widgets to the wibox + s.mywibox:setup({ + layout = wibox.layout.align.horizontal, + { -- Left widgets + layout = wibox.layout.fixed.horizontal, + mylauncher, + s.mytaglist, + s.mypromptbox, + }, + s.mytasklist, -- Middle widget + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + mykeyboardlayout, + wibox.widget.systray(), + mytextclock, + s.mylayoutbox, + }, + }) +end) +-- }}} + +-- {{{ Mouse bindings +root.buttons(gears.table.join( + awful.button({}, 3, function() + mymainmenu:toggle() + end), + awful.button({}, 4, awful.tag.viewnext), + awful.button({}, 5, awful.tag.viewprev) +)) +-- }}} + +-- {{{ Key bindings +globalkeys = gears.table.join( + awful.key({ modkey }, "s", hotkeys_popup.show_help, { description = "show help", group = "awesome" }), + awful.key({ modkey }, "Left", awful.tag.viewprev, { description = "view previous", group = "tag" }), + awful.key({ modkey }, "Right", awful.tag.viewnext, { description = "view next", group = "tag" }), + awful.key({ modkey }, "Escape", awful.tag.history.restore, { description = "go back", group = "tag" }), + + awful.key({ modkey }, "n", function() + awful.client.focus.byidx(1) + end, { description = "focus next by index", group = "client" }), + awful.key({ modkey }, "e", function() + awful.client.focus.byidx(-1) + end, { description = "focus previous by index", group = "client" }), + awful.key({ modkey }, "w", function() + mymainmenu:show() + end, { description = "show main menu", group = "awesome" }), + + -- Layout manipulation + awful.key({ modkey, "Shift" }, "n", function() + awful.client.swap.byidx(1) + end, { description = "swap with next client by index", group = "client" }), + awful.key({ modkey, "Shift" }, "e", function() + awful.client.swap.byidx(-1) + end, { description = "swap with previous client by index", group = "client" }), + awful.key({ modkey, "Control" }, "n", function() + awful.screen.focus_relative(1) + end, { description = "focus the next screen", group = "screen" }), + awful.key({ modkey, "Control" }, "e", function() + awful.screen.focus_relative(-1) + end, { description = "focus the previous screen", group = "screen" }), + awful.key({ modkey }, "u", awful.client.urgent.jumpto, { description = "jump to urgent client", group = "client" }), + awful.key({ modkey }, "Tab", function() + awful.client.focus.history.previous() + if client.focus then + client.focus:raise() + end + end, { description = "go back", group = "client" }), + + -- Standard program + awful.key({ modkey }, "Return", function() + awful.spawn(terminal) + end, { description = "open a terminal", group = "launcher" }), + awful.key({ modkey, "Control" }, "r", awesome.restart, { description = "reload awesome", group = "awesome" }), + awful.key({ modkey, "Shift" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }), + + awful.key({ modkey }, "i", function() + awful.tag.incmwfact(0.05) + end, { description = "increase master width factor", group = "layout" }), + awful.key({ modkey }, "h", function() + awful.tag.incmwfact(-0.05) + end, { description = "decrease master width factor", group = "layout" }), + awful.key({ modkey, "Shift" }, "h", function() + awful.tag.incnmaster(1, nil, true) + end, { description = "increase the number of master clients", group = "layout" }), + awful.key({ modkey, "Shift" }, "i", function() + awful.tag.incnmaster(-1, nil, true) + end, { description = "decrease the number of master clients", group = "layout" }), + awful.key({ modkey, "Control" }, "h", function() + awful.tag.incncol(1, nil, true) + end, { description = "increase the number of columns", group = "layout" }), + awful.key({ modkey, "Control" }, "i", function() + awful.tag.incncol(-1, nil, true) + end, { description = "decrease the number of columns", group = "layout" }), + awful.key({ modkey }, "space", function() + awful.spawn.with_shell("albert show") + end, { description = "select next", group = "layout" }), + awful.key({ modkey, "Shift" }, "space", function() + awful.layout.inc(-1) + end, { description = "select previous", group = "layout" }), + + awful.key({ modkey, "Control" }, "k", function() + local c = awful.client.restore() + -- Focus restored client + if c then + c:emit_signal("request::activate", "key.unminimize", { raise = true }) + end + end, { description = "restore minimized", group = "client" }), + + -- Prompt + awful.key({ modkey }, "r", function() + awful.screen.focused().mypromptbox:run() + end, { description = "run prompt", group = "launcher" }), + + awful.key({ modkey }, "x", function() + awful.prompt.run({ + prompt = "Run Lua code: ", + textbox = awful.screen.focused().mypromptbox.widget, + exe_callback = awful.util.eval, + history_path = awful.util.get_cache_dir() .. "/history_eval", + }) + end, { description = "lua execute prompt", group = "awesome" }), + -- Menubar + awful.key({ modkey }, "p", function() + menubar.show() + end, { description = "show the menubar", group = "launcher" }) +) + +clientkeys = gears.table.join( + awful.key({ modkey }, "f", function(c) + c.fullscreen = not c.fullscreen + c:raise() + end, { description = "toggle fullscreen", group = "client" }), + awful.key({ modkey, "Shift" }, "c", function(c) + c:kill() + end, { description = "close", group = "client" }), + awful.key( + { modkey, "Control" }, + "space", + awful.client.floating.toggle, + { description = "toggle floating", group = "client" } + ), + awful.key({ modkey, "Control" }, "Return", function(c) + c:swap(awful.client.getmaster()) + end, { description = "move to master", group = "client" }), + awful.key({ modkey }, "o", function(c) + c:move_to_screen() + end, { description = "move to screen", group = "client" }), + awful.key({ modkey }, "t", function(c) + c.ontop = not c.ontop + end, { description = "toggle keep on top", group = "client" }), + awful.key({ modkey }, "k", function(c) + -- The client currently has the input focus, so it cannot be + -- minimized, since minimized clients can't have the focus. + c.minimized = true + end, { description = "minimize", group = "client" }), + awful.key({ modkey }, "m", function(c) + c.maximized = not c.maximized + c:raise() + end, { description = "(un)maximize", group = "client" }), + awful.key({ modkey, "Control" }, "m", function(c) + c.maximized_vertical = not c.maximized_vertical + c:raise() + end, { description = "(un)maximize vertically", group = "client" }), + awful.key({ modkey, "Shift" }, "m", function(c) + c.maximized_horizontal = not c.maximized_horizontal + c:raise() + end, { description = "(un)maximize horizontally", group = "client" }) +) + +-- Bind all key numbers to tags. +-- Be careful: we use keycodes to make it work on any keyboard layout. +-- This should map on the top row of your keyboard, usually 1 to 9. +for i = 1, 9 do + globalkeys = gears.table.join( + globalkeys, + -- View tag only. + awful.key({ modkey }, "#" .. i + 9, function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + tag:view_only() + end + end, { description = "view tag #" .. i, group = "tag" }), + -- Toggle tag display. + awful.key({ modkey, "Control" }, "#" .. i + 9, function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, { description = "toggle tag #" .. i, group = "tag" }), + -- Move client to tag. + awful.key({ modkey, "Shift" }, "#" .. i + 9, function() + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:move_to_tag(tag) + end + end + end, { description = "move focused client to tag #" .. i, group = "tag" }), + -- Toggle tag on focused client. + awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, function() + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:toggle_tag(tag) + end + end + end, { description = "toggle focused client on tag #" .. i, group = "tag" }) + ) +end + +clientbuttons = gears.table.join( + awful.button({}, 1, function(c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + end), + awful.button({ modkey }, 1, function(c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({ modkey }, 3, function(c) + c:emit_signal("request::activate", "mouse_click", { raise = true }) + awful.mouse.client.resize(c) + end) +) + +-- Set keys +root.keys(globalkeys) +-- }}} + +-- {{{ Rules +-- Rules to apply to new clients (through the "manage" signal). +awful.rules.rules = { + -- All clients will match this rule. + { + rule = {}, + properties = { + border_width = beautiful.border_width, + border_color = beautiful.border_normal, + focus = awful.client.focus.filter, + raise = true, + keys = clientkeys, + buttons = clientbuttons, + screen = awful.screen.preferred, + placement = awful.placement.no_overlap + awful.placement.no_offscreen, + }, + }, + + -- Floating clients. + { + rule_any = { + instance = { + "DTA", -- Firefox addon DownThemAll. + "copyq", -- Includes session name in class. + "pinentry", + }, + class = { + "Arandr", + "Blueman-manager", + "Gpick", + "Kruler", + "MessageWin", -- kalarm. + "Sxiv", + "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size. + "Wpa_gui", + "veromix", + "xtightvncviewer", + }, + + -- Note that the name property shown in xprop might be set slightly after creation of the client + -- and the name shown there might not match defined rules here. + name = { + "Event Tester", -- xev. + }, + role = { + "AlarmWindow", -- Thunderbird's calendar. + "ConfigManager", -- Thunderbird's about:config. + "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. + }, + }, + properties = { floating = true }, + }, + + -- Add titlebars to normal clients and dialogs + { rule_any = { type = { "normal", "dialog" } }, properties = { titlebars_enabled = true } }, + + -- Set Firefox to always map on the tag named "2" on screen 1. + -- { rule = { class = "Firefox" }, + -- properties = { screen = 1, tag = "2" } }, +} +-- }}} + +-- {{{ Signals +-- Signal function to execute when a new client appears. +client.connect_signal("manage", function(c) + -- Set the windows at the slave, + -- i.e. put it at the end of others instead of setting it master. + -- if not awesome.startup then awful.client.setslave(c) end + + if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then + -- Prevent clients from being unreachable after screen count changes. + awful.placement.no_offscreen(c) + end +end) + +-- Add a titlebar if titlebars_enabled is set to true in the rules. +client.connect_signal("request::titlebars", function(c) + -- buttons for the titlebar + local buttons = gears.table.join( + awful.button({}, 1, function() + c:emit_signal("request::activate", "titlebar", { raise = true }) + awful.mouse.client.move(c) + end), + awful.button({}, 3, function() + c:emit_signal("request::activate", "titlebar", { raise = true }) + awful.mouse.client.resize(c) + end) + ) + + awful.titlebar(c):setup({ + { -- Left + awful.titlebar.widget.iconwidget(c), + buttons = buttons, + layout = wibox.layout.fixed.horizontal, + }, + { -- Middle + { -- Title + align = "center", + widget = awful.titlebar.widget.titlewidget(c), + }, + buttons = buttons, + layout = wibox.layout.flex.horizontal, + }, + { -- Right + awful.titlebar.widget.floatingbutton(c), + awful.titlebar.widget.maximizedbutton(c), + awful.titlebar.widget.stickybutton(c), + awful.titlebar.widget.ontopbutton(c), + awful.titlebar.widget.closebutton(c), + layout = wibox.layout.fixed.horizontal(), + }, + layout = wibox.layout.align.horizontal, + }) +end) + +-- Enable sloppy focus, so that focus follows mouse. +client.connect_signal("mouse::enter", function(c) + c:emit_signal("request::activate", "mouse_enter", { raise = false }) +end) + +client.connect_signal("focus", function(c) + c.border_color = beautiful.border_focus +end) +client.connect_signal("unfocus", function(c) + c.border_color = beautiful.border_normal +end) +-- }}} +-- + +autorun = true + +autorunApps = { + "fcitx5", + "albert", +} + +if autorun then + for app = 1, #autorunApps do + awful.spawn(autorunApps[app]) + end +end + +awful.spawn.with_shell("setxkbmap -option caps:escape") +awful.spawn.with_shell("feh --bg-fill ~/Pictures/Wallpaper/current.jpg") diff --git a/platforms/linux/chromium-flags.conf b/platforms/linux/chromium-flags.conf new file mode 100644 index 0000000..db0dfca --- /dev/null +++ b/platforms/linux/chromium-flags.conf @@ -0,0 +1,13 @@ +# $DOTFILES/platforms/linux/chromium-flags.conf +# Date: 2025-01-25 +# Author: js0ny +# Force chromium apps to use kwallet6 for password storage +# This solves the issue of chromium apps not being able to access passwords in non-plasma environments + +# Location: +# ~/.config/chromium-flags.conf +# ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi-flags.conf (For flatpak) +# Linking: +# ln -sf $DOTFILES/platforms/linux/chromium-flags.conf ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi-flags.conf +--password-store=kwallet6 +--enable-wayland-ime diff --git a/platforms/linux/wayland/electron-flags.conf b/platforms/linux/electron-flags.conf similarity index 61% rename from platforms/linux/wayland/electron-flags.conf rename to platforms/linux/electron-flags.conf index 7ff2980..2605ffc 100644 --- a/platforms/linux/wayland/electron-flags.conf +++ b/platforms/linux/electron-flags.conf @@ -5,8 +5,10 @@ # Location: # ~/.config/electron-flags.conf +# ~/.config/code-flags.conf # Linking: -# ln -sf $DOTFILES/platforms/linux/hyprland/electron-flags.conf ~/.config/ +# ln -sf $DOTFILES/platforms/linux/electron-flags.conf ~/.config/electron-flags.conf +# ln -sf $DOTFILES/platforms/linux/electron-flags.conf ~/.config/code-flags.conf # --enable-features=UseOzonePlatform # --ozone-platform=wayland diff --git a/platforms/linux/etc/environment b/platforms/linux/etc/environment new file mode 100644 index 0000000..dcb8961 --- /dev/null +++ b/platforms/linux/etc/environment @@ -0,0 +1,30 @@ +# $DOTFILES/platforms/linux/etc/environment +# Date: 2025-01-25 +# Author: js0ny +# Description: Environment variables that defines the applications and IME +# +# Location: +# /etc/environment +# Linking: +# cp $DOTFILES/platforms/linux/etc/environment /etc/environment +# +# This file is parsed by pam_env module +# +# Syntax: simple "KEY=VAL" pairs on separate lines +# +#QT_QPA_PLATFORMTHEME=qt5ct +#QT_STYLE_OVERRIDE=kvantum +# Software +BROWSER="com.vivaldi.Vivaldi" +EDITOR=nvim +# IME +GTK_IM_MODULE=fcitx +QT_IM_MODULE=fcitx +SDL_IM_MODULE=fcitx +XMODIFIFERS="@im=fcitx" +GLFW_IM_MODULE=fcitx +# Scaling +QT_SCALE_FACTOR=1.75 +# 2 * 0.875 = 1.75 +GDK_SCALE=2 +GDK_DPI_SCALE=0.875 diff --git a/platforms/linux/hypr/dark.conf b/platforms/linux/hypr/dark.conf new file mode 100644 index 0000000..245e6ed --- /dev/null +++ b/platforms/linux/hypr/dark.conf @@ -0,0 +1,78 @@ +# Catppuccin Mocha (Dark) +$rosewater = rgb(f5e0dc) +$rosewaterAlpha = f5e0dc + +$flamingo = rgb(f2cdcd) +$flamingoAlpha = f2cdcd + +$pink = rgb(f5c2e7) +$pinkAlpha = f5c2e7 + +$mauve = rgb(cba6f7) +$mauveAlpha = cba6f7 + +$red = rgb(f38ba8) +$redAlpha = f38ba8 + +$maroon = rgb(eba0ac) +$maroonAlpha = eba0ac + +$peach = rgb(fab387) +$peachAlpha = fab387 + +$yellow = rgb(f9e2af) +$yellowAlpha = f9e2af + +$green = rgb(a6e3a1) +$greenAlpha = a6e3a1 + +$teal = rgb(94e2d5) +$tealAlpha = 94e2d5 + +$sky = rgb(89dceb) +$skyAlpha = 89dceb + +$sapphire = rgb(74c7ec) +$sapphireAlpha = 74c7ec + +$blue = rgb(89b4fa) +$blueAlpha = 89b4fa + +$lavender = rgb(b4befe) +$lavenderAlpha = b4befe + +$text = rgb(cdd6f4) +$textAlpha = cdd6f4 + +$subtext1 = rgb(bac2de) +$subtext1Alpha = bac2de + +$subtext0 = rgb(a6adc8) +$subtext0Alpha = a6adc8 + +$overlay2 = rgb(9399b2) +$overlay2Alpha = 9399b2 + +$overlay1 = rgb(7f849c) +$overlay1Alpha = 7f849c + +$overlay0 = rgb(6c7086) +$overlay0Alpha = 6c7086 + +$surface2 = rgb(585b70) +$surface2Alpha = 585b70 + +$surface1 = rgb(45475a) +$surface1Alpha = 45475a + +$surface0 = rgb(313244) +$surface0Alpha = 313244 + +$base = rgb(1e1e2e) +$baseAlpha = 1e1e2e + +$mantle = rgb(181825) +$mantleAlpha = 181825 + +$crust = rgb(11111b) +$crustAlpha = 11111b diff --git a/platforms/linux/hypr/hyprland.conf b/platforms/linux/hypr/hyprland.conf index 5a1871d..e792802 100644 --- a/platforms/linux/hypr/hyprland.conf +++ b/platforms/linux/hypr/hyprland.conf @@ -6,7 +6,7 @@ # Location: # $XDG_CONFIG_HOME/hypr/hyprland.conf # Linking: (Link the whole `hypr` directory) -# ln -sf $DOTFILES/platforms/linux/hyprland/hypr $XDG_CONFIG_HOME/hypr +# ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr # ####################################################################################### # AUTOGENERATED HYPRLAND CONFIG. @@ -14,6 +14,8 @@ # OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. # ####################################################################################### +source=~/.config/hypr/dark.conf + autogenerated = 0 # remove this line to remove the warning # This is an example Hyprland config file. @@ -38,7 +40,11 @@ xwayland { ################ # See https://wiki.hyprland.org/Configuring/Monitors/ -monitor=,preferred,auto,auto +# +# monitor=,preferred,auto,auto +# Format: +# MONITOR_NAME,RESOLUTION@REFRESH_RATE,OFFSET_XxOFFSET_Y,SCALE +monitor=DP-2,3840x2160@59,0x0,1.666667 ################### @@ -48,9 +54,9 @@ monitor=,preferred,auto,auto # See https://wiki.hyprland.org/Configuring/Keywords/ # Set programs that you use -$terminal = kitty +$terminal = wezterm-gui $fileManager = dolphin -$menu = wofi --show drun +$menu = wofi ################# @@ -62,7 +68,15 @@ $menu = wofi --show drun # exec-once = $terminal # exec-once = nm-applet & -exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & fcitx5 +# exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & fcitx5 & albert +exec-once = waybar & +exec-once = mako & +exec-once = hyprpaper & +exec-once = systemctl --user start hyprpolkitagent +exec-once = fcitx5 & +exec-once = wl-paste --watch cliphist store +# exec-once = QT_SCALE_FACTOR=1 albert & + ############################# @@ -71,7 +85,7 @@ exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & # See https://wiki.hyprland.org/Configuring/Environment-variables/ -env = XCURSOR_SIZE,24 +# env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 @@ -86,19 +100,22 @@ general { gaps_in = 5 gaps_out = 20 - border_size = 2 + border_size = 3 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors - col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg - col.inactive_border = rgba(595959aa) + # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.active_border = $mauve + col.inactive_border = $overlay2 # Set to true enable resizing windows by clicking and dragging on borders and gaps - resize_on_border = false + resize_on_border = true # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false layout = dwindle + + no_border_on_floating = true } # https://wiki.hyprland.org/Configuring/Variables/#decoration @@ -113,7 +130,7 @@ decoration { enabled = true range = 4 render_power = 3 - color = rgba(1a1a1aee) + color = $base } # https://wiki.hyprland.org/Configuring/Variables/#blur @@ -193,7 +210,7 @@ input { kb_layout = us kb_variant = kb_model = - kb_options = + kb_options = caps:escape kb_rules = follow_mouse = 1 @@ -230,7 +247,9 @@ bind = $mainMod, R, exec, $terminal bind = $mainMod, Q, killactive, bind = $mainMod, M, exit, bind = $mainMod, F, exec, $fileManager -bind = $mainMod, V, togglefloating, +bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy +bind = $mainMod SHIFT, V, togglefloating + bind = $mainMod, space, exec, $menu bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, X, togglesplit, # dwindle diff --git a/platforms/linux/hypr/hyprpaper.conf b/platforms/linux/hypr/hyprpaper.conf index 51d9aa6..129a0a5 100644 --- a/platforms/linux/hypr/hyprpaper.conf +++ b/platforms/linux/hypr/hyprpaper.conf @@ -6,7 +6,7 @@ # Location: # $XDG_CONFIG_HOME/hypr/hyprpaper.conf # Linking: (Link the whole `hypr` directory) -# ln -sf $DOTFILES/platforms/linux/hyprland/hypr $XDG_CONFIG_HOME/hypr +# ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr preload = ~/Pictures/Wallpaper/current.jpg wallpaper = DP-2, ~/Pictures/Wallpaper/current.jpg diff --git a/platforms/linux/kde/dolphinrc b/platforms/linux/kde/dolphinrc index 61043b0..86c529b 100644 --- a/platforms/linux/kde/dolphinrc +++ b/platforms/linux/kde/dolphinrc @@ -1,18 +1,9 @@ -# $DOTFILES/platforms/linux/kde/dolphinrc -# Date: 2024-12-22 -# Author: js0ny -# Dolphin - KDE File Explorer - -# Location: -# $XDG_CONFIG_HOME/dolphinrc -# Linking: -# ln -sf $DOTFILES/platforms/linux/kde/dolphinrc $XDG_CONFIG_HOME/dolphinrc - [General] Version=202 ViewPropsTimestamp=2024,12,10,0,19,35.931 + [IconsMode] -PreviewSize=80 +PreviewSize=48 [KFileDialog Settings] Places Icons Auto-resize=false diff --git a/platforms/linux/kde/elisarc b/platforms/linux/kde/elisarc new file mode 100644 index 0000000..999f0ae --- /dev/null +++ b/platforms/linux/kde/elisarc @@ -0,0 +1,18 @@ +# $DOTFILES/platforms/linux/kde/elisarc +# Date: 2024-12-22 +# Author: js0ny +# Dolphin - KDE Music Player + +# Location: +# $XDG_CONFIG_HOME/elisarc +# Linking: +# ln -sf $DOTFILES/platforms/linux/kde/elisarc $XDG_CONFIG_HOME/elisarc + +[ElisaFileIndexer] +RootPath[$e]=$HOME/Music + +[UiSettings] +ColorScheme= + +[Views] +InitialFilesViewPath=/mnt/d/Media/Music diff --git a/platforms/linux/mako-config b/platforms/linux/mako-config new file mode 100644 index 0000000..84fb745 --- /dev/null +++ b/platforms/linux/mako-config @@ -0,0 +1,25 @@ +sort=-time +layer=overlay +background-color=#22222266 +width=450 +height=150 +border-size=1 +border-color=#d3e4c9 +border-radius=12 +icons=1 +max-icon-size=64 +default-timeout=5000 +ignore-timeout=0 +font=PingFangHK +margin=12 +padding=12,20 + +[urgency=low] +border-color=#aaaaaa + +[urgency=normal] +border-color=#cceeff + +[urgency=critical] +border-color=#ff7777 +default-timeout=0 diff --git a/platforms/linux/waybar/config b/platforms/linux/waybar/config new file mode 100644 index 0000000..d8ba47c --- /dev/null +++ b/platforms/linux/waybar/config @@ -0,0 +1,37 @@ +{ + "include": "~/.config/waybar/modules", + "name": "main-bar", + "id": "main-bar", + "layer": "top", + "mode": "dock", + "exclusive": true, + "passthrough": false, + "position": "top", + "output": "DP-2", + "height": 32, + "width": "", + "spacing": 6, + "margin": 0, + "margin-top": 0, + "margin-bottom": 0, + "margin-left": 0, + "margin-right": 0, + "fixed-center": true, + "ipc": true, + "modules-left": [ + "custom/menu", + "hyprland/workspaces" + ], + // "modules-center": [ + // "hyprland/window", + // "mpd" + // ], + "modules-right": [ + "tray", + "pulseaudio", + "custom/weather", + "battery", + "clock", + "custom/power" + ] +} \ No newline at end of file diff --git a/platforms/linux/waybar/modules b/platforms/linux/waybar/modules new file mode 100644 index 0000000..48dd848 --- /dev/null +++ b/platforms/linux/waybar/modules @@ -0,0 +1,149 @@ +// Waybar modules configuration +{ + // waybar-backlight + "backlight": { + "interval": 2, + "align": 0, + "rotate": 0, + //"device": "amdgpu_bl0", + "format": "{icon} {percent}%", + "format-icons": [ + "", + "", + "", + "" + ], + // Commands to execute on events + "on-click": "", + "on-click-middle": "", + "on-click-right": "", + "on-update": "", + "on-scroll-up": "light -A 5%", + "on-scroll-down": "light -U 5%", + "smooth-scrolling-threshold": 1 + }, + "hyprland/workspaces": { + "format": "{icon} {windows}", + "format-window-separator": " ", + "window-rewrite-default": "", + "window-rewrite": { + "title<.*youtube.*>": "", + "class": "", + "class<.*wezterm>": "", + "class": "", + "class": "󱓞", + "class title<.*github.*>": "", + "class": "󰰬", + "obsidian": "󱓩", + "foot": "", + "Cider": "", + "class": "", + "code": "󰨞", + "class<.*telegram.*>": "", + "discord": "", + "neovide": "", + "class": "", + "class<.*wechat.*>": "", + "QQ": "", + "class": "", + "Zotero": "", + "class": "", + "class": "", + } + }, + // waybar-battery + "battery": { + "interval": 60, + "align": 0, + "rotate": 0, + //"bat": "BAT1", + //"adapter": "ACAD", + "full-at": 100, + "design-capacity": false, + "states": { + "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-full": "{icon} Full", + //"format-good": "", + "format-alt": "{icon} {time}", + "format-icons": [ + "", + "", + "", + "", + "" + ], + "format-time": "{H}h {M}min", + "tooltip": true + }, + // waybar-clock + "clock": { + "interval": 1, + "align": 0, + "rotate": 0, + "tooltip-format": "{:%B %Y}\n{calendar}", + "format": " {:%H:%M:%S}", + "format-alt": " {:%a %b %d, %G}" + }, + // waybar-cpu + "cpu": { + "interval": 5, + "format": " {usage}%" + }, + // waybar-custom + "custom/menu": { + "format": "󰣇 ", + "tooltip": false, + "on-click": "wofi" + }, + "custom/power": { + "format": "⏻", + "tooltip": false, + "on-click": "wlogout" + }, + // weather-custom + "custom/weather": { + "format": "{}", + "format-alt": "{alt}: {}", + "format-alt-click": "click-right", + "interval": 1800, + "return-type": "json", + "exec": "~/.config/hypr/scripts/weather.sh", + "exec-if": "ping wttr.in -c1" + }, + // waybar-tray + "tray": { + "icon-size": 16, + "spacing": 10 + }, + "pulseaudio": { + "format": "{volume}% {icon}", + "format-bluetooth": "{volume}% {icon}", + "format-muted": "", + "format-icons": { + "alsa_output.pci-0000_00_1f.3.analog-stereo": "", + "alsa_output.pci-0000_00_1f.3.analog-stereo-muted": "", + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "phone-muted": "", + "portable": "", + "car": "", + "default": [ + "", + "" + ] + }, + "scroll-step": 1, + "on-click": "pavucontrol", + "ignored-sinks": [ + "Easy Effects Sink" + ] + } +} diff --git a/platforms/linux/waybar/style.css b/platforms/linux/waybar/style.css new file mode 100644 index 0000000..c149fca --- /dev/null +++ b/platforms/linux/waybar/style.css @@ -0,0 +1,184 @@ +/** ********** Fonts ********** **/ +* { + font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif; + font-size: 12px; +} + +/** ********** Waybar Window ********** **/ +window#waybar { + background-color: #1e1e2e; + color: #1e1e2e; + border-bottom: 2px solid #313244; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.5; +} + +/** ********** Backlight ********** **/ +#backlight { + background-color: #cba6f7; +} + +/** ********** Battery ********** **/ +#battery { + background-color: #f9e2af; +} + +#battery.charging { +} + +#battery.plugged { +} + +@keyframes blink { + to { + color: #000000; + } +} + +#battery.critical:not(.charging) { + background-color: #f38ba8; + color: #f38ba8; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +/** ********** Clock ********** **/ +#clock { + background-color: #a6e3a1; +} + +/** ********** CPU ********** **/ +#cpu { + background-color: #89dceb; +} + +/** ********** Memory ********** **/ +#memory { + background-color: #eba0ac; +} + +/** ********** Disk ********** **/ +#disk { + background-color: #b4befe; +} + +/** ********** Tray ********** **/ +#tray { + background-color: #cdd6f4; +} +#tray > .passive { + -gtk-icon-effect: dim; +} +#tray > .needs-attention { + -gtk-icon-effect: highlight; +} +#tray > .active { +} + +/** ********** MPD ********** **/ +#mpd { + background-color: #94e2d5; +} + +#mpd.disconnected { + background-color: #f38ba8; +} + +#mpd.stopped { + background-color: #f5c2e7; +} + +#mpd.playing { + background-color: #74c7ec; +} + +#mpd.paused { +} + +/** ********** Pulseaudio ********** **/ +#pulseaudio { + background-color: #fab387; +} + +#pulseaudio.bluetooth { + background-color: #f5c2e7; +} +#pulseaudio.muted { + background-color: #313244; + color: #cdd6f4; +} + +/** ********** Network ********** **/ +#network { + background-color: #89b4fa; +} + +#network.disconnected,#network.disabled { + background-color: #313244; + color: #cdd6f4; +} +#network.linked { +} +#network.ethernet { +} +#network.wifi { +} + +/** ********** Custom ********** **/ +#custom-menu, #custom-power, #custom-weather, #custom-updater { + border-radius: 4px; + margin: 6px 0px; + padding: 2px 8px; +} + +#custom-menu { + background-color: #f5c2e7; + margin-left: 6px; + padding: 2px 6px; + font-size: 16px; +} + +#custom-power { + background-color: #f38ba8; + margin-right: 6px; + padding: 2px 8px; + font-size: 16px; +} + +#custom-updater { + background-color: #e6ed7b; + margin-right: 6px; + padding: 2px 8px; + font-size: 12px; +} + +#custom-weather { + background-color: #cba6f7; + margin-right: 6px; + padding: 2px 8px; + font-size: 12px; +} + +/** Common style **/ +#backlight, +#battery, +#clock, +#cpu, +#disk, +#mode, +#memory, +#mpd, +#tray, +#pulseaudio, +#network { + border-radius: 4px; + margin: 6px 0px; + padding: 2px 8px; +} diff --git a/platforms/linux/wayland/code-flags.conf b/platforms/linux/wayland/code-flags.conf deleted file mode 100644 index 5a37672..0000000 --- a/platforms/linux/wayland/code-flags.conf +++ /dev/null @@ -1,14 +0,0 @@ -# $DOTFILES/platforms/linux/hyprland/code-flags.conf -# Date: 2024-12-22 -# Author: js0ny -# Force VSCode to use Wayland - -# Location: -# ~/.config/code-flags.conf -# Linking: -# ln -sf $DOTFILES/platforms/linux/hyprland/code-flags.conf ~/.config/ - -# --enable-features=UseOzonePlatform -# --ozone-platform=wayland ---ozone-platform-hint=auto ---enable-wayland-ime diff --git a/platforms/linux/wlogout/actions b/platforms/linux/wlogout/actions new file mode 100644 index 0000000..426dcb8 --- /dev/null +++ b/platforms/linux/wlogout/actions @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +## wlogout actions + +# Ask for confirmation +cdialog () { + yad --title='Confirm?' --borders=15 --center --fixed --undecorated --button=Yes:0 --button=No:1 --text="Are you sure?" --text-align=center +} + +if [[ "$1" == '--shutdown' ]]; then + cdialog + if [[ "$?" == 0 ]]; then + systemctl poweroff + else + exit + fi +elif [[ "$1" == '--reboot' ]]; then + cdialog + if [[ "$?" == 0 ]]; then + systemctl reboot + else + exit + fi +elif [[ "$1" == '--hibernate' ]]; then + cdialog + if [[ "$?" == 0 ]]; then + systemctl hibernate + else + exit + fi +elif [[ "$1" == '--lock' ]]; then + ~/.config/hypr/scripts/lockscreen +elif [[ "$1" == '--suspend' ]]; then + cdialog + if [[ "$?" == 0 ]]; then + mpc -q pause + amixer set Master mute + ~/.config/hypr/scripts/lockscreen + systemctl suspend + else + exit + fi +elif [[ "$1" == '--logout' ]]; then + cdialog + if [[ "$?" == 0 ]]; then + kill -9 -1 + else + exit + fi +fi diff --git a/platforms/linux/wlogout/icons/hibernate.png b/platforms/linux/wlogout/icons/hibernate.png new file mode 100644 index 0000000..6e3ba13 Binary files /dev/null and b/platforms/linux/wlogout/icons/hibernate.png differ diff --git a/platforms/linux/wlogout/icons/lock.png b/platforms/linux/wlogout/icons/lock.png new file mode 100644 index 0000000..72530d6 Binary files /dev/null and b/platforms/linux/wlogout/icons/lock.png differ diff --git a/platforms/linux/wlogout/icons/logout.png b/platforms/linux/wlogout/icons/logout.png new file mode 100644 index 0000000..cf1ab31 Binary files /dev/null and b/platforms/linux/wlogout/icons/logout.png differ diff --git a/platforms/linux/wlogout/icons/reboot.png b/platforms/linux/wlogout/icons/reboot.png new file mode 100644 index 0000000..b433e24 Binary files /dev/null and b/platforms/linux/wlogout/icons/reboot.png differ diff --git a/platforms/linux/wlogout/icons/shutdown.png b/platforms/linux/wlogout/icons/shutdown.png new file mode 100644 index 0000000..80e89d1 Binary files /dev/null and b/platforms/linux/wlogout/icons/shutdown.png differ diff --git a/platforms/linux/wlogout/icons/suspend.png b/platforms/linux/wlogout/icons/suspend.png new file mode 100644 index 0000000..a425d19 Binary files /dev/null and b/platforms/linux/wlogout/icons/suspend.png differ diff --git a/platforms/linux/wlogout/layout b/platforms/linux/wlogout/layout new file mode 100644 index 0000000..c0afb9a --- /dev/null +++ b/platforms/linux/wlogout/layout @@ -0,0 +1,30 @@ +{ + "label" : "suspend", + "text" : "Suspend", + "action" : "~/.config/hypr/wlogout/actions --suspend", + "keybind" : "u" +} +{ + "label" : "logout", + "text" : "Logout", + "action" : "~/.config/hypr/wlogout/actions --logout", + "keybind" : "e" +} +{ + "label" : "lock", + "text" : "Lock", + "action" : "~/.config/hypr/wlogout/actions --lock", + "keybind" : "l" +} +{ + "label" : "reboot", + "text" : "Reboot", + "action" : "~/.config/hypr/wlogout/actions --reboot", + "keybind" : "r" +} +{ + "label" : "shutdown", + "text" : "Shutdown", + "action" : "~/.config/hypr/wlogout/actions --shutdown", + "keybind" : "s" +} diff --git a/platforms/linux/wlogout/style.css b/platforms/linux/wlogout/style.css new file mode 100644 index 0000000..095f510 --- /dev/null +++ b/platforms/linux/wlogout/style.css @@ -0,0 +1,52 @@ +/** ********** Fonts ********** **/ +* { + font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif; + font-size: 14px; + font-weight: bold; +} + +/** ********** Main Window ********** **/ +window { + background-color: #1E1E2E; +} + +/** ********** Buttons ********** **/ +button { + background-color: #242434; + color: #FFFFFF; + border: 2px solid #282838; + border-radius: 20px; + background-repeat: no-repeat; + background-position: center; + background-size: 35%; +} + +button:focus, button:active, button:hover { + background-color: #89B4FA; + outline-style: none; +} + +/** ********** Icons ********** **/ +#lock { + background-image: image(url("icons/lock.png"), url("/usr/share/wlogout/icons/lock.png")); +} + +#logout { + background-image: image(url("icons/logout.png"), url("/usr/share/wlogout/icons/logout.png")); +} + +#suspend { + background-image: image(url("icons/suspend.png"), url("/usr/share/wlogout/icons/suspend.png")); +} + +#hibernate { + background-image: image(url("icons/hibernate.png"), url("/usr/share/wlogout/icons/hibernate.png")); +} + +#shutdown { + background-image: image(url("icons/shutdown.png"), url("/usr/share/wlogout/icons/shutdown.png")); +} + +#reboot { + background-image: image(url("icons/reboot.png"), url("/usr/share/wlogout/icons/reboot.png")); +} diff --git a/platforms/mac/neovide.toml b/platforms/mac/neovide.toml index 1ec074b..7b13d21 100644 --- a/platforms/mac/neovide.toml +++ b/platforms/mac/neovide.toml @@ -16,6 +16,6 @@ vsync = true wsl = false [font] -normal = ["CaskaydiaCove Nerd Font"] # Will use the bundled Fira Code Nerd Font by default +normal = ["CaskaydiaCove Nerd Font", "霞鹜文楷等宽"] # Will use the bundled Fira Code Nerd Font by default size = 14.0 diff --git a/platforms/mac/sketchybar/plugins/aerospace.sh b/platforms/mac/sketchybar/plugins/aerospace.sh new file mode 100755 index 0000000..6114c3d --- /dev/null +++ b/platforms/mac/sketchybar/plugins/aerospace.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# make sure it's executable with: +# chmod +x ~/.config/sketchybar/plugins/aerospace.sh + +if [ "$1" = "$FOCUSED_WORKSPACE" ]; then + sketchybar --set $NAME background.drawing=on +else + sketchybar --set $NAME background.drawing=off +fi diff --git a/platforms/mac/sketchybar/sketchybarrc b/platforms/mac/sketchybar/sketchybarrc index beb6fcf..0b57273 100755 --- a/platforms/mac/sketchybar/sketchybarrc +++ b/platforms/mac/sketchybar/sketchybarrc @@ -100,3 +100,19 @@ sketchybar --set music \ ##### Force all scripts to run the first time (never do this in a script) ##### sketchybar --update + + +sketchybar --add event aerospace_workspace_change + +for sid in $(aerospace list-workspaces --all); do + sketchybar --add item space.$sid left \ + --subscribe space.$sid aerospace_workspace_change \ + --set space.$sid \ + background.color=0x44ffffff \ + background.corner_radius=5 \ + background.height=20 \ + background.drawing=off \ + label="$sid" \ + click_script="aerospace workspace $sid" \ + script="$CONFIG_DIR/plugins/aerospace.sh $sid" +done diff --git a/platforms/mac/skhdrc b/platforms/mac/skhdrc index b3ac4d0..accb201 100644 --- a/platforms/mac/skhdrc +++ b/platforms/mac/skhdrc @@ -32,44 +32,44 @@ # # minimize window # alt - m : yabai -m window --minimize -# # float / unfloat window and center on screen -# alt - f : yabai -m window --toggle float +# float / unfloat window and center on screen +ctrl - f : yabai -m window --toggle float -# # toggle window native fullscreen -# shift + alt - f : yabai -m window --toggle native-fullscreen +# toggle window native fullscreen +shift + ctrl - f : yabai -m window --toggle native-fullscreen -# # send window to a space -# shift + ctrl - 1 : yabai -m window --space 1 -# shift + ctrl - 2 : yabai -m window --space 2 -# shift + ctrl - 3 : yabai -m window --space 3 -# shift + ctrl - 4 : yabai -m window --space 4 -# shift + ctrl - 5 : yabai -m window --space 5 -# shift + ctrl - 6 : yabai -m window --space 6 -# shift + ctrl - 7 : yabai -m window --space 7 -# shift + ctrl - 8 : yabai -m window --space 8 -# shift + ctrl - 9 : yabai -m window --space 9 -# shift + ctrl - 0 : yabai -m window --space 10 +# send window to a space +shift + ctrl - 1 : yabai -m window --space 1 +shift + ctrl - 2 : yabai -m window --space 2 +shift + ctrl - 3 : yabai -m window --space 3 +shift + ctrl - 4 : yabai -m window --space 4 +shift + ctrl - 5 : yabai -m window --space 5 +shift + ctrl - 6 : yabai -m window --space 6 +shift + ctrl - 7 : yabai -m window --space 7 +shift + ctrl - 8 : yabai -m window --space 8 +shift + ctrl - 9 : yabai -m window --space 9 +shift + ctrl - 0 : yabai -m window --space 10 # open terminal ctrl - r : open -n -a "Kitty" # moves focus between windows in the current focused display -alt - h : yabai -m window --focus west -alt - n : yabai -m window --focus south -alt - e : yabai -m window --focus north -alt - i : yabai -m window --focus east +ctrl - h : yabai -m window --focus west +ctrl - n : yabai -m window --focus south +ctrl - e : yabai -m window --focus north +ctrl - i : yabai -m window --focus east # moves focus between spaces -alt - 1 : yabai -m space --focus 1 -alt - 2 : yabai -m space --focus 2 -alt - 3 : yabai -m space --focus 3 -alt - 4 : yabai -m space --focus 4 -alt - 5 : yabai -m space --focus 5 -alt - 6 : yabai -m space --focus 6 -alt - 7 : yabai -m space --focus 7 -alt - 8 : yabai -m space --focus 8 -alt - 9 : yabai -m space --focus 9 -alt - 0 : yabai -m space --focus 10 +ctrl - 1 : yabai -m space --focus 1 +ctrl - 2 : yabai -m space --focus 2 +ctrl - 3 : yabai -m space --focus 3 +ctrl - 4 : yabai -m space --focus 4 +ctrl - 5 : yabai -m space --focus 5 +ctrl - 6 : yabai -m space --focus 6 +ctrl - 7 : yabai -m space --focus 7 +ctrl - 8 : yabai -m space --focus 8 +ctrl - 9 : yabai -m space --focus 9 +ctrl - 0 : yabai -m space --focus 10 # delete focused space alt - q : yabai -m space --destroy diff --git a/platforms/win/Microsoft.PowerShell_profile.ps1 b/platforms/win/Microsoft.PowerShell_profile.ps1 index ef8ee96..a011573 100644 --- a/platforms/win/Microsoft.PowerShell_profile.ps1 +++ b/platforms/win/Microsoft.PowerShell_profile.ps1 @@ -60,4 +60,11 @@ ${function:winr} = { winget uninstall $args } ${function:wins} = { winget search $args } ${function:winu} = { winget upgrade $args } -${function:pkill} = { ps *$args* | kill -Force } +${function:pkill} = { Get-Process *$args* | Stop-Process -Force } + + +${function:tmux} = { wsl.exe tmux $args } + +if (Get-Command "sfsu.exe" -ErrorAction SilentlyContinue) { + Invoke-Expression (&sfsu.exe hook) +} diff --git a/platforms/win/ahk/bin/Caps.exe b/platforms/win/ahk/bin/Caps.exe new file mode 100644 index 0000000..bc4a73f Binary files /dev/null and b/platforms/win/ahk/bin/Caps.exe differ diff --git a/platforms/win/ahk/bin/colemak.exe b/platforms/win/ahk/bin/colemak.exe new file mode 100644 index 0000000..4072f3a Binary files /dev/null and b/platforms/win/ahk/bin/colemak.exe differ diff --git a/platforms/win/glzr/glazewm/config.yaml b/platforms/win/glzr/glazewm/config.yaml index ecbda6e..ee52269 100644 --- a/platforms/win/glzr/glazewm/config.yaml +++ b/platforms/win/glzr/glazewm/config.yaml @@ -21,7 +21,7 @@ general: config_reload_commands: [] # Whether to automatically focus windows underneath the cursor. - focus_follows_cursor: true + focus_follows_cursor: false # Whether to switch back and forth between the previously focused # workspace when focusing the current workspace. @@ -89,7 +89,7 @@ window_effects: enabled: false color: "#a1a1a1" hide_title_bar: - enabled: true + enabled: false corner_style: enabled: false style: "square" diff --git a/tools/browser/surfingkeys.js b/tools/browser/surfingkeys.js index 743c673..3574db4 100644 --- a/tools/browser/surfingkeys.js +++ b/tools/browser/surfingkeys.js @@ -19,9 +19,12 @@ api.unmap(''); */ // #endregion -// Settings + +// #region Settings settings.language = "zh-CN"; settings.showModeStatus = false; +// #endregion + // #region Helper const { aceVimMap, @@ -168,6 +171,17 @@ const _addSearchAlias = function ( parseResponse, ); }; + +var q = (selector) => document.querySelector(selector); +var qs = (selector) => document.querySelectorAll(selector); + +var mapkeyFeed = function (key, desc, target, options) { + mapkey(key, desc, function () { + api.Normal.feedkeys(target) + }); +} + + // #endregion // #region Keymap @@ -240,6 +254,17 @@ forwardFactory.pull(mapLists); vForwardFactory.pull(vMapLists); // #endregion +// #region Omnibar +// api.cmap("", ""); +// api.cmap("", ""); +// api.cmap("", ""); +// api.cmap("", ""); +// api.cmap("", ""); +// api.cmap("", ""); +// api.cmap("", ""); +// api.cmap("", ""); +// #endregion + // #region Search Alias removeSearchAlias("s"); // StackOverflow removeSearchAlias("d"); // DuckDuckGo @@ -324,41 +349,182 @@ _addSearchAlias("bl", "Bilibili", "https://search.bilibili.com/all?keyword="); // #endregion // #region Site-specific -// chatgpt.com + +// #region chatgpt.com const chatgptNewChat = function () { - var btn = document.querySelector( + var btn = q( "div.no-draggable:nth-child(3) > span:nth-child(1) > button:nth-child(1)", ); btn.click(); }; const chatgptStartStop = function () { - var btn = document.querySelector("button.h-8:nth-child(2)"); + var btn = q("button.h-8:nth-child(2)"); btn.click(); }; -api.unmap("t", /chatgpt.com/); -api.mapkey("tn", "New Chat", chatgptNewChat, { domain: /chatgpt.com/ }); -api.mapkey("ts", "Start/Stop Generating", chatgptStartStop, { - domain: /chatgpt.com/, -}); -api.mapkey("S", "Start/Stop Generating", chatgptStartStop, { - domain: /chatgpt.com/, -}); -api.mapkey("an", "New Chat", chatgptNewChat, { domain: /chatgpt.com/ }); -api.mapkey("as", "Start/Stop Generating", chatgptStartStop, { +mapkey(",n", "New Chat", chatgptNewChat, { domain: /chatgpt.com/ }); +mapkey(",s", "Start/Stop Generating", chatgptStartStop, { domain: /chatgpt.com/, }); +// #endregion -//api.mapkey('tm', 'Toggle Model', function () { -// var btn = document.querySelector('#radix -\: r2i\:'); -// btn.click(); -//}, { domain: /chatgpt.com/ }); -// perplexity.ai -api.unmap("", /perplexity.ai/); // allows to use perplexity web keybindings -api.mapkey("aB", "Add Perplexity Bookmark", function () { +// #region chat.deepseek.com +mapkey(",s", "Toggle Sidebar", function () { + var btn = qs("div.ds-icon-button"); + btn[0].click(); +}, { domain: /chat.deepseek.com/ }); +mapkey(",e", "Edit last input", function () { + var btn = qs("div.ds-icon-button"); + btn[btn.length - 5].click(); +}, { domain: /chat.deepseek.com/ }); +mapkey(",y", "Yank last oupput", function () { + var btn = qs("div.ds-icon-button"); + btn[btn.length - 4].click(); +}, { domain: /chat.deepseek.com/ }); +mapkey(",r", "Regenerate last output", function () { + var btn = qs("div.ds-icon-button"); + btn[btn.length - 3].click(); +}, { domain: /chat.deepseek.com/ }); +mapkey(",n", "New Chat", function () { + window.location.href = 'https://chat.deepseek.com/'; +}, { domain: /chat.deepseek.com/ }); +mapkey(",t", "Toggle Thinking (R1)", function () { + var btns = qs("div.ds-button"); + btns[0].click(); +}, { domain: /chat.deepseek.com/ }); +mapkey(",w", "Toggle Web Search", function () { + var btns = qs("div.ds-button"); + btns[1].click(); +}, { domain: /chat.deepseek.com/ }); +// #endregion + +// #region app.follow.is +mapkey(",t", "Toggle ", function () { + var btn = qs("button.no-drag-region") + btn[btn.length - 4].click(); +}, { domain: /app.follow.is/ }); + +mapkey(",a", "Toggle AI Summary", function () { + var btn = qs("button.no-drag-region") + btn[btn.length - 3].click(); +}, { domain: /app.follow.is/ }); + +mapkey(",o", "Toggle Original Website", function () { + var btn = qs("button.no-drag-region") + btn[btn.length - 4].click(); +}, { domain: /app.follow.is/ }); +// #endregion + +// #region GitHub +// utils +const gh = {} +gh.repoLink = (owner, repo) => `https://github.com/${owner}/${repo}`; +gh.pageLink = (owner, repo) => `https://${owner}.github.io/${repo}/`; +gh.sourceLink = (owner, repo, path) => `${gh.repoLink(owner, repo)}/tree/${path}`; +gh.rawToSource = (url) => { + const ps = url.split('/').slice(3) + return gh.sourceLink(ps[0], ps[1], ps.slice(4).join('/')); +} +// github.com +mapkey(",e", "Use Web Editor", function () { + const url = new URL(window.location.href); + url.hostname = "github.dev"; + window.location.href = url.href; +}, { domain: /github.com/ }); +mapkey(",E", "Use Web Editor (New Page)", function () { + const url = new URL(window.location.href); + url.hostname = "github.dev"; + tabOpenLink(url.href); +}, { domain: /github.com/ }); +mapkey(",p", "Switch to GitHub Page", function () { + href = window.location.href; + owner = href.split("/")[3]; + repo = href.split("/")[4]; + window.location.href = gh.pageLink(owner, repo); +}, { domain: /github.com/ }); +// github.dev +mapkey(",r", "Switch to GitHub Repo", function () { + const url = new URL(window.location.href); + url.hostname = "github.com"; + window.location.href = url.href; +}, { domain: /github.dev/ }); +// github.io +mapkey(",r", "Switch to GitHub Repo", function () { + const href = window.location.href; + owner = href.split("/")[2].split(".")[0]; + repo = href.split("/")[3]; + tabOpenLink(gh.repoLink(owner, repo)); +}, { domain: /github.io/ }); +mapkey(",R", "Go to GitHub Repo (New tab)", function () { + const href = window.location.href; + owner = href.split("/")[2].split(".")[0]; + repo = href.split("/")[3]; + tabOpenLink(gh.repoLink(owner, repo)); +}, { domain: /github.io/ }); +// raw.githubusercontent.com +mapkey(",r", "Switch to GitHub Repo", function () { + const url = new URL(window.location.href); + var owner, repo; + owner, repo = url.pathname.split('/').slice(1, 3) + window.location.href = gh.repoLink(owner, repo); +}, { domain: /raw.githubusercontent.com/ }); +mapkey(",R", "Switch to GitHub Repo", function () { + const url = new URL(window.location.href); + var owner, repo; + owner, repo = url.pathname.split('/').slice(1, 3) + tabOpenLink(gh.repoLink(owner, repo)); +}, { domain: /raw.githubusercontent.com/ }); +mapkey(",s", "Open Source in GitHub", function () { + window.location.href = gh.rawToSource(window.location.href); +}, { domain: /raw.githubusercontent.com/ }); +mapkey(",S", "Open Source in GitHub (New Page)", function () { + tabOpenLink(gh.rawToSource(window.location.href)); +}, { domain: /raw.githubusercontent.com/ }); + + + +// #endregion GitHub + +// #region perplexity.ai +/** + * 0 - 网络 + * 1 - 学术 + * 2 - 数学 + * 3 - 写作 + * 4 - 视频 + * 5 - 社交 +*/ +const perplexityFocusOn = function (n) { + qs("span.grow button")[0].click() + setTimeout(() => { // Wait for the DOM to update + qs("div.shadow-subtle div.group\\/item")[n].click(); + }, 100); +} +unmap("", /perplexity.ai/); // allows to use perplexity web keybindings +mapkey(",b", "Add Perplexity Bookmark", function () { // button.border:nth-child(2) - var btn = document.querySelector("button.border:nth-child(2)"); + var btn = q("button.border:nth-child(2)"); btn.click(); -}); +}, { domain: /perplexity.ai/ }); +mapkey(",w", "Toggle Writing/Web Search", function () { + perplexityFocusOn(3); +}, { domain: /perplexity.ai/ }); +mapkey(",s", "Start Generating", function () { + var btns = qs("span.grow button") + btns[btns.length - 1].click(); +}, { domain: /perplexity.ai/ }); +mapkey(",y", "Yank Last Output", function () { + var toolbars = qs("div.mt-sm") + var last = toolbars[toolbars.length - 1] + var btns = last.querySelectorAll("button") + btns[4].click(); +}, { domain: /perplexity.ai/ }); +mapkey(",r", "Change model to regenerate last output", function () { + var toolbars = qs("div.mt-sm") + var last = toolbars[toolbars.length - 1] + var btns = last.querySelectorAll("button") + btns[1].click(); +}, { domain: /perplexity.ai/ }); +// #endregion // #endregion @@ -476,4 +642,5 @@ addVimMapKey( // #endregion // #region Hints +api.Hints.setCharacters('qwfpgarstdcv') // #endregion diff --git a/tools/fish/.gitignore b/tools/fish/.gitignore index 6da387b..81de2a5 100644 --- a/tools/fish/.gitignore +++ b/tools/fish/.gitignore @@ -1,2 +1,3 @@ fish_variables completions +themes/ diff --git a/tools/fish/conf.d/colorscheme.fish b/tools/fish/conf.d/colorscheme.fish new file mode 100644 index 0000000..51f18f4 --- /dev/null +++ b/tools/fish/conf.d/colorscheme.fish @@ -0,0 +1 @@ +fish_config theme choose "Catppuccin Mocha" diff --git a/tools/fish/conf.d/prompt.fish b/tools/fish/conf.d/prompt.fish index 890325e..0f56c49 100644 --- a/tools/fish/conf.d/prompt.fish +++ b/tools/fish/conf.d/prompt.fish @@ -8,6 +8,6 @@ # ln -sf $DOTFILES/tools/fish ~/.config/fish if command -v starship > /dev/null - set -gx STARSHIP_CONFIG "~/.dotfiles/tools/starship/starship_fish.toml" starship init fish | source end + diff --git a/tools/nvim/init.lua b/tools/nvim/init.lua index 820a3f2..b7b83ff 100644 --- a/tools/nvim/init.lua +++ b/tools/nvim/init.lua @@ -10,3 +10,4 @@ require("config.options") require("config.plugins") require("config.colorscheme") require("config.keymaps") +require("config.diagnostics") diff --git a/tools/nvim/lazy-lock.json b/tools/nvim/lazy-lock.json index 23c4ad7..2262d55 100644 --- a/tools/nvim/lazy-lock.json +++ b/tools/nvim/lazy-lock.json @@ -1,47 +1,54 @@ { - "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, + "LuaSnip": { "branch": "master", "commit": "2592b91577136dbb355a4708be1e60619456b7f6" }, "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, "auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" }, "betterTerm.nvim": { "branch": "main", "commit": "6f03af3a1ed4d054ecbcb0aa8266ddaf610aa657" }, - "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, - "catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, + "bufferline.nvim": { "branch": "main", "commit": "261a72b90d6db4ed8014f7bda976bcdc9dd7ce76" }, + "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "code_runner.nvim": { "branch": "main", "commit": "65218f8f646fe61e506090522df357539642ae83" }, "conform.nvim": { "branch": "master", "commit": "70019124aa4f2e6838be9fbd2007f6d13b27a96d" }, "copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, - "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "gitsigns.nvim": { "branch": "main", "commit": "76d88f3b584e1f83b2aa51663a32cc6ee8d97eff" }, + "flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" }, + "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, + "gitsigns.nvim": { "branch": "main", "commit": "9541f5e8e24571723cb02a5c2bf078aeacc5a711" }, + "grug-far.nvim": { "branch": "main", "commit": "635e69adf3a714621bd0a289314bc23c5848babb" }, "hover.nvim": { "branch": "main", "commit": "140c4d0ae9397b76baa46b87c574f5377de09309" }, "kanagawa.nvim": { "branch": "master", "commit": "988082eb00b845e4afbcaa4fd8e903da8a3ab3b9" }, - "lazy.nvim": { "branch": "main", "commit": "d8f26efd456190241afd1b0f5235fe6fdba13d4a" }, + "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, + "lazydev.nvim": { "branch": "main", "commit": "a1b78b2ac6f978c72e76ea90ae92a94edf380cfc" }, + "lazygit.nvim": { "branch": "main", "commit": "77a0d42943d8265271e6e6beaed72da54eeb17e7" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "luasnip-latex-snippets.nvim": { "branch": "main", "commit": "cab134611eb755abe9ba95f5d86969f5cece448d" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "e942edf5c85b6a2ab74059ea566cac5b3e1514a4" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "mini.pairs": { "branch": "main", "commit": "7e834c5937d95364cc1740e20d673afe2d034cdb" }, - "nvim-cmp": { "branch": "main", "commit": "8c82d0bd31299dbff7f8e780f5e06d2283de9678" }, - "nvim-lspconfig": { "branch": "master", "commit": "339ccc81e08793c3af9b83882a6ebd90c9cc0d3b" }, - "nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" }, - "nvim-treesitter": { "branch": "master", "commit": "f0c928dbe93533b7e35894a8f957f40150d1f663" }, + "nvim-cmp": { "branch": "main", "commit": "ca4d3330d386e76967e53b85953c170658255ecb" }, + "nvim-lspconfig": { "branch": "master", "commit": "7b0a2f6b14485bb5a237fc1328a487ff3e4a08c5" }, + "nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" }, + "nvim-tree.lua": { "branch": "master", "commit": "c7639482a1598f4756798df1b2d72f79fe5bb34f" }, + "nvim-treesitter": { "branch": "master", "commit": "454354e5998edb448111574e58d5f5f2d6a940bd" }, "nvim-treesitter-context": { "branch": "master", "commit": "d0dd7ce5a9d0be1f28086e818e52fdc5c78975df" }, - "nvim-web-devicons": { "branch": "master", "commit": "aafa5c187a15701a7299a392b907ec15d9a7075f" }, + "nvim-web-devicons": { "branch": "master", "commit": "203da76ecfbb4b192cf830665b03eb651b635c94" }, "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, "onedarkpro.nvim": { "branch": "main", "commit": "0feb5f55dd777352f2dddd7478dd13d050864ee3" }, - "orgmode": { "branch": "master", "commit": "4e4a14a7dd613953eddacbc0f0ff1583817d7de1" }, - "plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, - "render-markdown.nvim": { "branch": "main", "commit": "f0eb5893556200e9f945c0f0ea3c83bbd20dd963" }, - "telescope.nvim": { "branch": "master", "commit": "415af52339215926d705cccc08145f3782c4d132" }, + "render-markdown.nvim": { "branch": "main", "commit": "634acd5da964c32f6947cd0c7802d7a116662665" }, + "telescope.nvim": { "branch": "master", "commit": "2eca9ba22002184ac05eddbe47a7fe2d5a384dfc" }, + "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "trouble.nvim": { "branch": "main", "commit": "50481f414bd3c1a40122c1d759d7e424d5fafe84" }, "vim-floaterm": { "branch": "master", "commit": "4e28c8dd0271e10a5f55142fb6fe9b1599ee6160" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-just": { "branch": "main", "commit": "ed67f198e981f555c0f9e9ed5b69b4b06543a9e1" }, + "vim-visual-multi-colemak-hnei": { "branch": "master", "commit": "2cc37d77590d6569d991ebd8d96ab5867eb5a47a" }, "vim-wakatime": { "branch": "master", "commit": "cf51327a9e08935569614d1cb24e779ee9f45519" }, - "vimtex": { "branch": "master", "commit": "c8412f444bfaf447981242d685c40e45b1c96b82" }, - "which-key.nvim": { "branch": "main", "commit": "1f8d414f61e0b05958c342df9b6a4c89ce268766" }, + "vimtex": { "branch": "master", "commit": "a707d39e77cb27a6d02922f269875d1727860dcf" }, + "which-key.nvim": { "branch": "main", "commit": "9b365a6428a9633e3eeb34dbef1b791511c54f70" }, "winbar.nvim": { "branch": "main", "commit": "13739fdb31be51a1000486189662596f07a59a31" }, "yanky.nvim": { "branch": "main", "commit": "f9b905994cccf3c55f41af3a0a1f4c76c844e411" } } diff --git a/tools/nvim/lua/config/colors.lua b/tools/nvim/lua/config/colors.lua new file mode 100644 index 0000000..4984cd1 --- /dev/null +++ b/tools/nvim/lua/config/colors.lua @@ -0,0 +1,16 @@ +local colors = { + bg = "#202328", + fg = "#bbc2cf", + yellow = "#ECBE7B", + cyan = "#008080", + darkblue = "#081633", + green = "#98be65", + orange = "#FF8800", + violet = "#a9a1e1", + magenta = "#c678dd", + purple = "#c678dd", + blue = "#51afef", + red = "#ec5f67", +} + +return colors diff --git a/tools/nvim/lua/config/colorscheme.lua b/tools/nvim/lua/config/colorscheme.lua index 853c9a0..d7d5672 100644 --- a/tools/nvim/lua/config/colorscheme.lua +++ b/tools/nvim/lua/config/colorscheme.lua @@ -1 +1 @@ -vim.cmd.colorscheme("kanagawa") +vim.cmd.colorscheme("catppuccin-mocha") diff --git a/tools/nvim/lua/config/diagnostics.lua b/tools/nvim/lua/config/diagnostics.lua new file mode 100644 index 0000000..11bb1ed --- /dev/null +++ b/tools/nvim/lua/config/diagnostics.lua @@ -0,0 +1,6 @@ +local signs = require("config.icons").diagnostics + +for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) +end diff --git a/tools/nvim/lua/config/icons.lua b/tools/nvim/lua/config/icons.lua new file mode 100644 index 0000000..c8b0b20 --- /dev/null +++ b/tools/nvim/lua/config/icons.lua @@ -0,0 +1,19 @@ +local M = { + diagnostics = { + Error = "", + Warning = "", + Hint = "", + Information = "", + }, + lsp = "", + indent = "", + git = { + Change = "", + Add = "", + Delete = "", + Rename = "", + Branch = "", + }, +} + +return M diff --git a/tools/nvim/lua/config/servers.lua b/tools/nvim/lua/config/servers.lua index e11a6ec..ecaaebf 100644 --- a/tools/nvim/lua/config/servers.lua +++ b/tools/nvim/lua/config/servers.lua @@ -3,15 +3,30 @@ --- for available server and name local M = {} M.servers = { + "ast_grep", + "bashls", -- Bash "clangd", -- C/C++ + "cssls", -- CSS + "denols", -- Deno -- "cmake", -- CMake "eslint", -- JavaScript + "gopls", -- Go + "hls", -- Haskell "html", -- HTML + "jsonls", -- JSON "lua_ls", -- Lua + "markdown_oxide", -- Markdown "omnisharp", -- C# & F# "powershell_es", -- PowerShell "pyright", -- Python + "rust_analyzer", -- Rust + "svelte", -- Svelte + "svlangserver", -- SystemVerilog + "tailwindcss", -- TailwindCSS + "taplo", -- TOML + "ts_ls", -- TypeScript "vimls", -- vimscript + "yamlls", -- YAML } M.server_config = { diff --git a/tools/nvim/lua/keymaps/basic.lua b/tools/nvim/lua/keymaps/basic.lua index 8035d48..b808bc8 100644 --- a/tools/nvim/lua/keymaps/basic.lua +++ b/tools/nvim/lua/keymaps/basic.lua @@ -56,8 +56,8 @@ local keymaps_basic = { -- Modification of Original Keymap - Colemak { mode = mode_arrow, keys = "i", cmd = "l", opts = { desc = "Right", silent = true } }, { keys = "H", cmd = ":bprevious", opts = { desc = "Previous Buffer" } }, { keys = "I", cmd = ":bnext", opts = { desc = "Next Buffer" } }, - { keys = "N", cmd = "5k", opts = { desc = "Up 5 Lines" } }, - { keys = "E", cmd = "5j", opts = { desc = "Down 5 Lines" } }, + { keys = "N", cmd = "5j", opts = { desc = "Up 5 Lines" } }, + { keys = "E", cmd = "5e", opts = { desc = "Down 5 Lines" } }, { keys = "Y", cmd = "y$", opts = { desc = "Yank to End of Line" } }, { keys = "E", cmd = "5k" }, -- Text object implementation diff --git a/tools/nvim/lua/keymaps/init.lua b/tools/nvim/lua/keymaps/init.lua index d6546bb..7db8106 100644 --- a/tools/nvim/lua/keymaps/init.lua +++ b/tools/nvim/lua/keymaps/init.lua @@ -44,5 +44,6 @@ end -- which-key.nvim require("keymaps.which") +require("keymaps.visual-multi") return M diff --git a/tools/nvim/lua/keymaps/leaders.lua b/tools/nvim/lua/keymaps/leaders.lua index 89823ff..320cf88 100644 --- a/tools/nvim/lua/keymaps/leaders.lua +++ b/tools/nvim/lua/keymaps/leaders.lua @@ -51,13 +51,32 @@ local leader_mappings = { { keys = "n", cmd = "j", opts = { desc = "Down Window" } }, { keys = "e", cmd = "k", opts = { desc = "Up Window" } }, { keys = "i", cmd = "l", opts = { desc = "Right Window" } }, + { keys = "F", cmd = ":NvimTreeFindFileToggle", opts = { desc = "Toggle File Explorer" } }, { keys = "", cmd = "b#", opts = { desc = "Switch to last buffer" } }, - { keys = "!", cmd = ":FloatermToggle", opts = { desc = "" } }, + { keys = "!", cmd = ":FloatermToggle", opts = { desc = "Toggle Terminal" } }, + { keys = '"', cmd = ":!wezterm-gui &", pots = { desc = "Open External Terminal(wezterm)" } }, + { keys = ";", cmd = ":Telescope", pots = { desc = "Show Telescope Commands" } }, }, b = { -- +buffer + { keys = "0", cmd = "b#", opts = { desc = "Switch to last buffer" } }, + { keys = "1", cmd = ":BufferLineGotoBuffer 1", opts = { desc = "Switch to Buffer #1" } }, + { keys = "2", cmd = ":BufferLineGotoBuffer 2", opts = { desc = "Switch to Buffer #2" } }, + { keys = "3", cmd = ":BufferLineGotoBuffer 3", opts = { desc = "Switch to Buffer #3" } }, + { keys = "4", cmd = ":BufferLineGotoBuffer 4", opts = { desc = "Switch to Buffer #4" } }, + { keys = "5", cmd = ":BufferLineGotoBuffer 5", opts = { desc = "Switch to Buffer #5" } }, + { keys = "6", cmd = ":BufferLineGotoBuffer 6", opts = { desc = "Switch to Buffer #6" } }, + { keys = "7", cmd = ":BufferLineGotoBuffer 7", opts = { desc = "Switch to Buffer #7" } }, + { keys = "8", cmd = ":BufferLineGotoBuffer 8", opts = { desc = "Switch to Buffer #8" } }, + { keys = "9", cmd = ":BufferLineGotoBuffer 9", opts = { desc = "Switch to Buffer #9" } }, { keys = "a", cmd = ":Alpha", opts = { desc = "Dashboard" } }, - { keys = "b", cmd = ":Telescope buffers", opts = { desc = "List Buffers" } }, + { keys = "b", cmd = ":BufferLinePick", opts = { desc = "Quick Switch Buffers" } }, + { keys = "B", cmd = ":Telescope buffers", opts = { desc = "List Buffers" } }, { keys = "d", cmd = ":bdelete", opts = { desc = "Delete Buffer" } }, + { keys = "D", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, + { keys = "xx", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, + { keys = "xh", cmd = ":BufferLineCloseLeft", opts = { desc = "Delete Buffers Left" } }, + { keys = "xi", cmd = ":BufferLineCloseRight", opts = { desc = "Delete Buffers Right" } }, + { keys = "X", cmd = ":BufferLineCloseOthers", opts = { desc = "Delete Other Buffers" } }, { keys = "h", cmd = ":bprevious", opts = { desc = "Previous Buffer" } }, { keys = "i", cmd = ":bnext", opts = { desc = "Next Buffer" } }, { keys = "H", cmd = ":bfirst", opts = { desc = "First Buffer" } }, @@ -65,7 +84,9 @@ local leader_mappings = { { keys = "0", cmd = ":bfirst", opts = { desc = "First Buffer" } }, { keys = "^", cmd = ":bfirst", opts = { desc = "First Buffer" } }, { keys = "$", cmd = ":blast", opts = { desc = "Last Buffer" } }, - -- { keys = "s", cmd = ":Telescope buffers", opts = { desc = "Search buffers" } }, + { keys = "s", cmd = ":new", opts = { desc = "Scratch buffers" } }, + { keys = "t", cmd = ":BufferLineTogglePin", opts = { desc = "Pin Buffer" } }, + { keys = "y", cmd = ":%y+", opts = { desc = "Copy Buffer to Clipboard" } }, }, c = { -- +code/compile { keys = "r", cmd = ":RunCode", opts = { desc = "Run code" } }, @@ -76,15 +97,44 @@ local leader_mappings = { }, f = { -- +file/find { keys = "f", cmd = ":Telescope fd", opts = { desc = "Find Files" } }, - { keys = "s", cmd = ":Telescope live_grep", opts = { desc = "Grep Files" } }, + { keys = "F", cmd = ":GrugFar", opts = { desc = "Search & Replace" } }, + { keys = "l", cmd = ":set filetype=", opts = { desc = "Set Filetype to ..." } }, + { keys = "n", cmd = ":new", opts = { desc = "New File" } }, + { keys = "s", cmd = ":write", opts = { desc = "Save File" } }, + { keys = "S", cmd = ":wall", opts = { desc = "Save All Files" } }, { keys = "b", cmd = ":Telescope buffers", opts = { desc = "List Buffers" } }, - { keys = "e", cmd = ":NvimTreeToggle", opts = { desc = "Toggle File Explorer" } }, - { keys = "t", cmd = ":FloatermToggle", opts = { desc = "toggle visibility of the float terminal" } }, + { keys = "D", cmd = "!trash-rm %", opts = { desc = "Delete current file" } }, + { keys = "t", cmd = ":NvimTreeFindFileToggle", opts = { desc = "Toggle File Tree" } }, { keys = "T", cmd = ":FloatermNew", opts = { desc = "Spawn a float terminal" } }, { keys = "h", cmd = ":Telescope oldfiles", opts = { desc = "Search history files" } }, { keys = "c", cmd = ":Telescope find_files cwd=~/.config/nvim", opts = { desc = "Search Config" } }, - { keys = "o", cmd = ":!open %", opts = { desc = "Open file in default program" } }, + { keys = "o", cmd = ":!open %", opts = { desc = "Open file in default program" } }, { keys = "R", cmd = renameCurrentBuffer, opts = { desc = "Rename current file" } }, + { keys = "x", cmd = ":Lazy", opts = { desc = "Open extension view" } }, + { keys = "yy", cmd = ":let @+ = expand('%:p')", opts = { desc = "Copy file path" } }, + { keys = "yY", cmd = ":let @+ = expand('%')", opts = { desc = "Copy relative file path" } }, + { keys = "yn", cmd = ":let @+ = expand('%:t')", opts = { desc = "Copy file name" } }, + { keys = "yN", cmd = ":let @+ = expand('%:t:r')", opts = { desc = "Copy file name without extension" } }, + { keys = "yd", cmd = ":let @+ = expand('%:p:h')", opts = { desc = "Copy directory path" } }, + { + keys = "yl", + cmd = ":let @+ = expand('%:p') . ':' . line('.')", + opts = { desc = "Copy file path with line number" }, + }, + { + keys = "yL", + cmd = ":let @+ = expand('%') . ':' . line('.')", + opts = { desc = "Copy relative file path with line number" }, + }, + }, + g = { -- +git/version control + { keys = "g", cmd = ":LazyGit", opts = { desc = "Toggle LazyGit" } }, + { keys = "c", cmd = ":Telescope git_commits", opts = { desc = "Show commits" } }, + { keys = "b", cmd = ":Gitsigns blame", opts = { desc = "Blame file" } }, + { keys = "d", cmd = ":Gitsigns diffthis", opts = { desc = "Diff file" } }, + { keys = "B", cmd = ":Gitsigns toggle_current_line_blame", opts = { desc = "Toggle line blame" } }, + { keys = "s", cmd = ":Telescope git_status", opts = { desc = "Git Status" } }, + { keys = "t", cmd = ":Telescope git_branches", opts = { desc = "Git Branches" } }, }, p = { -- +project { keys = "p", cmd = ":Telescope projects", opts = { desc = "List all Projects" } }, @@ -97,30 +147,35 @@ local leader_mappings = { { keys = "w", cmd = ":wq", opts = { desc = "Write and Quit" } }, { keys = "W", cmd = ":wall:qa!", opts = { desc = "Write all and Force Quit" } }, }, - t = { -- +toggle + t = { -- +toggle/test { keys = "f", cmd = ":NvimTreeToggle", opts = { desc = "Toggle File Explorer" } }, { keys = "F", cmd = ":FormatToggle", opts = { desc = "Toggle autoformat-on-save" } }, { keys = "t", cmd = ":FloatermToggle", opts = { desc = "toggle visibility of the float terminal" } }, }, u = { -- +ui { keys = "i", cmd = ":Telescope colorscheme", opts = { desc = "Change colorscheme" } }, + { keys = " ", cmd = ":set list!", opts = { desc = "Toggle show all symbols" } }, }, w = { -- +window { keys = "h", cmd = "h", opts = { desc = "Left Window" } }, { keys = "n", cmd = "j", opts = { desc = "Down Window" } }, { keys = "e", cmd = "k", opts = { desc = "Up Window" } }, { keys = "i", cmd = "l", opts = { desc = "Right Window" } }, + { keys = "H", cmd = "H", opts = { desc = "Move Window Left" } }, + { keys = "N", cmd = "J", opts = { desc = "Move Window Down" } }, + { keys = "E", cmd = "K", opts = { desc = "Move Window Up" } }, + { keys = "I", cmd = "L", opts = { desc = "Move Window Right" } }, { keys = "-", cmd = ":split", opts = { desc = "Split to down" } }, { keys = "|", cmd = ":vsplit", opts = { desc = "Split to right" } }, - { keys = "c", cmd = "c", opts = { desc = "Close Window" } }, - { keys = "o", cmd = "o", opts = { desc = "Close Other Windows" } }, + { keys = "/", cmd = ":vsplit", opts = { desc = "Split to right" } }, + { keys = "d", cmd = "c", opts = { desc = "Close Window" } }, + { keys = "D", cmd = "o", opts = { desc = "Close Other Windows" } }, { keys = "r", cmd = "r", opts = { desc = "Rotate Windows" } }, { keys = "R", cmd = "R", opts = { desc = "Reverse Rotate Windows" } }, { keys = "t", cmd = "T", opts = { desc = "Move Window to New Tab" } }, - { keys = "H", cmd = ":vertical resize -5", opts = { desc = "Decrease Window Height" } }, - { keys = "N", cmd = ":resize +5", opts = { desc = "Increase Window Height" } }, - { keys = "E", cmd = ":vertical resize +5", opts = { desc = "Increase Window Width" } }, - { keys = "I", cmd = ":resize -5", opts = { desc = "Decrease Window Width" } }, + { keys = "]", cmd = ":resize +5", opts = { desc = "Increase Window Size" } }, + { keys = "[", cmd = ":resize -5", opts = { desc = "Decrease Window Size" } }, + { keys = "M", cmd = ":resize:vertical resize", opts = { desc = "Maximize window size" } }, }, } diff --git a/tools/nvim/lua/keymaps/nvim-tree.lua b/tools/nvim/lua/keymaps/nvim-tree.lua index 6d85c5c..5fb5d26 100644 --- a/tools/nvim/lua/keymaps/nvim-tree.lua +++ b/tools/nvim/lua/keymaps/nvim-tree.lua @@ -2,7 +2,7 @@ local M = {} M.global = { { mode = "n", keys = "E", cmd = ":NvimTreeToggle" }, - { mode = "n", keys = "", cmd = ":NvimTreeFocus" }, + { mode = "n", keys = "", cmd = ":NvimTreeFindFileToggle" }, } function M.plugin(api, opts) diff --git a/tools/nvim/lua/keymaps/user-command.lua b/tools/nvim/lua/keymaps/user-command.lua index 3395e44..d32b9ed 100644 --- a/tools/nvim/lua/keymaps/user-command.lua +++ b/tools/nvim/lua/keymaps/user-command.lua @@ -28,3 +28,9 @@ end, { desc = "Toggle autoformat-on-save (use ! for buffer-local)", bang = true, }) + +vim.api.nvim_create_user_command("Reload", function() + vim.cmd("luafile ~/.config/nvim/init.lua") +end, { + desc = "Reload Neovim configuration", +}) diff --git a/tools/nvim/lua/keymaps/visual-multi.lua b/tools/nvim/lua/keymaps/visual-multi.lua new file mode 100644 index 0000000..a4600c1 --- /dev/null +++ b/tools/nvim/lua/keymaps/visual-multi.lua @@ -0,0 +1,18 @@ +vim.g.VM_mouse_mappings = 1 +vim.g.VM_default_mappings = 0 +vim.g.VM_custom_motions = { + -- https://github.com/mg979/vim-visual-multi/issues/93 + h = "h", + n = "j", + e = "k", + i = "l", + j = "e", +} + +vim.g.VM_maps = { + ["Add Cursor Down"] = "", + ["Add Cursor Up"] = "", + ["i"] = "l", + ["I"] = "L", + ["n"] = "n", +} diff --git a/tools/nvim/lua/plugins/appearance.lua b/tools/nvim/lua/plugins/appearance.lua index 8557752..af98536 100644 --- a/tools/nvim/lua/plugins/appearance.lua +++ b/tools/nvim/lua/plugins/appearance.lua @@ -25,4 +25,17 @@ return { { import = "plugins.mod.alpha-nvim" }, { import = "plugins.mod.winbar-nvim" }, { import = "plugins.mod.bufferline" }, + { + "lewis6991/gitsigns.nvim", + config = function() + require("gitsigns").setup({ + current_line_blame = true, + }) + end, + }, + { + "folke/todo-comments.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + opts = {}, + }, } diff --git a/tools/nvim/lua/plugins/edit.lua b/tools/nvim/lua/plugins/edit.lua new file mode 100644 index 0000000..1293d48 --- /dev/null +++ b/tools/nvim/lua/plugins/edit.lua @@ -0,0 +1,59 @@ +return { + { + "folke/flash.nvim", + event = "VeryLazy", + ---@type Flash.Config + opts = {}, + -- stylua: ignore + keys = { + { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" }, + { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" }, + { "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" }, + { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" }, + { "", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" }, + }, + }, + { + "js0ny/vim-visual-multi-colemak-hnei", + -- "mg979/vim-visual-multi", + }, + { + "echasnovski/mini.pairs", + version = false, + config = function() + require("mini.pairs").setup() + end, + }, + { + "kylechui/nvim-surround", + version = "*", -- Use for stability; omit to use `main` branch for the latest features + event = "VeryLazy", + config = function() + require("nvim-surround").setup({ + -- Configuration here, or leave empty to use defaults + }) + end, + }, + { + "MagicDuck/grug-far.nvim", + opts = { headerMaxWidth = 80 }, + cmd = "GrugFar", + keys = { + { + "fF", + function() + local grug = require("grug-far") + local ext = vim.bo.buftype == "" and vim.fn.expand("%:e") + grug.open({ + transient = true, + prefills = { + filesFilter = ext and ext ~= "" and "*." .. ext or nil, + }, + }) + end, + mode = { "n", "v" }, + desc = "Search and Replace", + }, + }, + }, +} diff --git a/tools/nvim/lua/plugins/fileutils.lua b/tools/nvim/lua/plugins/fileutils.lua index b299de4..75b0457 100644 --- a/tools/nvim/lua/plugins/fileutils.lua +++ b/tools/nvim/lua/plugins/fileutils.lua @@ -47,9 +47,23 @@ return { end, }, { - "lewis6991/gitsigns.nvim", - config = function() - require("gitsigns").setup() - end, + "kdheepak/lazygit.nvim", + lazy = true, + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + -- optional for floating window border decoration + dependencies = { + "nvim-lua/plenary.nvim", + }, + -- setting the keybinding for LazyGit with 'keys' is recommended in + -- order to load the plugin when the command is run for the first time + keys = { + { "gg", "LazyGit", desc = "LazyGit" }, + }, }, } diff --git a/tools/nvim/lua/plugins/lazy-nvim.lua b/tools/nvim/lua/plugins/lazy-nvim.lua index 8dacc43..85493ef 100644 --- a/tools/nvim/lua/plugins/lazy-nvim.lua +++ b/tools/nvim/lua/plugins/lazy-nvim.lua @@ -29,7 +29,7 @@ require("lazy").setup({ { import = "plugins.completion" }, { import = "plugins.fileutils" }, { import = "plugins.lsp" }, - { import = "plugins.syntax" }, + { import = "plugins.edit" }, { import = "plugins.misc" }, }, -- Configure any other settings here. See the documentation for more details. diff --git a/tools/nvim/lua/plugins/lsp.lua b/tools/nvim/lua/plugins/lsp.lua index 983cadf..3eaa219 100644 --- a/tools/nvim/lua/plugins/lsp.lua +++ b/tools/nvim/lua/plugins/lsp.lua @@ -41,29 +41,24 @@ return { }) end, }, - { - "nvim-orgmode/orgmode", - event = "VeryLazy", - ft = { "org" }, - config = function() - -- Setup orgmode - require("orgmode").setup({ - org_agenda_files = "~/orgfiles/**/*", - org_default_notes_file = "~/orgfiles/refile.org", - }) - - -- NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option - -- add ~org~ to ignore_install - -- require('nvim-treesitter.configs').setup({ - -- ensure_installed = 'all', - -- ignore_install = { 'org' }, - -- }) - end, - }, { import = "plugins.mod.conform-nvim" }, { "nvim-treesitter/nvim-treesitter-context" }, { "NoahTheDuke/vim-just", ft = { "just" }, }, + { import = "plugins.mod.trouble-nvim" }, + + { import = "plugins.mod.nvim-treesitter" }, + { + "folke/lazydev.nvim", + ft = "lua", -- only load on lua files + opts = { + library = { + -- See the configuration section for more details + -- Load luvit types when the `vim.uv` word is found + { path = "${3rd}/luv/library", words = { "vim%.uv" } }, + }, + }, + }, } diff --git a/tools/nvim/lua/plugins/mod/bufferline.lua b/tools/nvim/lua/plugins/mod/bufferline.lua index c02f345..0993078 100644 --- a/tools/nvim/lua/plugins/mod/bufferline.lua +++ b/tools/nvim/lua/plugins/mod/bufferline.lua @@ -4,6 +4,13 @@ return { config = function() require("bufferline").setup({ options = { + diagnostics = "nvim_lsp", + diagnostics_indicator = function(count, level, diagnostics_dict, context) + local icon = level:match("error") and " " or " " + return " " .. icon .. count + end, + + show_buffer_icons = true, numbers = "ordinal", -- 显示 buffer 序号 close_command = "bdelete! %d", -- 关闭 buffer 的命令 right_mouse_command = "bdelete! %d", -- 右键关闭 diff --git a/tools/nvim/lua/plugins/mod/lualine.lua b/tools/nvim/lua/plugins/mod/lualine.lua deleted file mode 100644 index 56af922..0000000 --- a/tools/nvim/lua/plugins/mod/lualine.lua +++ /dev/null @@ -1,236 +0,0 @@ --- Author: shadmansaleh --- Credit: glepnir -local lualine = require("lualine") - --- Color table for highlights --- stylua: ignore -local colors = { - bg = '#202328', - fg = '#bbc2cf', - yellow = '#ECBE7B', - cyan = '#008080', - darkblue = '#081633', - green = '#98be65', - orange = '#FF8800', - violet = '#a9a1e1', - magenta = '#c678dd', - blue = '#51afef', - red = '#ec5f67', -} - -local conditions = { - buffer_not_empty = function() - return vim.fn.empty(vim.fn.expand("%:t")) ~= 1 - end, - hide_in_width = function() - return vim.fn.winwidth(0) > 80 - end, - check_git_workspace = function() - local filepath = vim.fn.expand("%:p:h") - local gitdir = vim.fn.finddir(".git", filepath .. ";") - return gitdir and #gitdir > 0 and #gitdir < #filepath - end, -} - --- Config -local config = { - options = { - disabled_filetypes = { - statusline = { "NvimTree", "alpha" }, - }, - -- Disable sections and component separators - component_separators = "", - section_separators = "", - theme = { - -- We are going to use lualine_c an lualine_x as left and - -- right section. Both are highlighted by c theme . So we - -- are just setting default looks o statusline - normal = { c = { fg = colors.fg, bg = colors.bg } }, - inactive = { c = { fg = colors.fg, bg = colors.bg } }, - }, - }, - sections = { - -- these are to remove the defaults - lualine_a = {}, - lualine_b = {}, - lualine_y = {}, - lualine_z = {}, - -- These will be filled later - lualine_c = {}, - lualine_x = {}, - }, - inactive_sections = { - -- these are to remove the defaults - lualine_a = {}, - lualine_b = {}, - lualine_y = {}, - lualine_z = {}, - lualine_c = {}, - lualine_x = {}, - }, -} - --- Inserts a component in lualine_c at left section -local function ins_left(component) - table.insert(config.sections.lualine_c, component) -end - --- Inserts a component in lualine_x at right section -local function ins_right(component) - table.insert(config.sections.lualine_x, component) -end - -ins_left({ - function() - return "▊" - end, - color = { fg = colors.blue }, -- Sets highlighting of component - padding = { left = 0, right = 1 }, -- We don't need space before this -}) - -ins_left({ - -- mode component - function() - return "" - end, - color = function() - -- auto change color according to neovims mode - local mode_color = { - n = colors.red, - i = colors.green, - v = colors.blue, - [""] = colors.blue, - V = colors.blue, - c = colors.magenta, - no = colors.red, - s = colors.orange, - S = colors.orange, - [""] = colors.orange, - ic = colors.yellow, - R = colors.violet, - Rv = colors.violet, - cv = colors.red, - ce = colors.red, - r = colors.cyan, - rm = colors.cyan, - ["r?"] = colors.cyan, - ["!"] = colors.red, - t = colors.red, - } - return { fg = mode_color[vim.fn.mode()] } - end, - padding = { right = 1 }, -}) - --- ins_left { --- -- filesize component --- 'filesize', --- cond = conditions.buffer_not_empty, --- } - --- ins_left { --- 'filename', --- cond = conditions.buffer_not_empty, --- color = { fg = colors.magenta, gui = 'bold' }, --- } - --- ins_left { 'location' } - -ins_right({ "progress", color = { fg = colors.fg, gui = "bold" } }) - -ins_left({ - "diagnostics", - sources = { "nvim_diagnostic" }, - symbols = { error = " ", warn = " ", info = " " }, - diagnostics_color = { - error = { fg = colors.red }, - warn = { fg = colors.yellow }, - info = { fg = colors.cyan }, - }, -}) - -ins_left({ - function() - return vim.bo.filetype - end, - color = { fg = colors.blue, gui = "bold" }, -}) - -ins_left({ - function() - return vim.bo.shiftwidth .. " space" - end, -}) - -ins_left({ - -- Lsp server name . - function() - local msg = "No Active Lsp" - local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 }) - local clients = vim.lsp.get_clients() - if next(clients) == nil then - return msg - end - for _, client in ipairs(clients) do - local filetypes = client.config.filetypes - if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then - return client.name - end - end - return msg - end, - icon = " ", - color = { fg = "#ffffff", gui = "bold" }, -}) - --- Insert mid section. You can make any number of sections in neovim :) --- for lualine it's any number greater then 2 -ins_left({ - function() - return "%=" - end, -}) - --- Add components to right sections -ins_right({ - "o:encoding", -- option component same as &encoding in viml - fmt = string.upper, -- I'm not sure why it's upper case either ;) - cond = conditions.hide_in_width, - color = { fg = colors.green, gui = "bold" }, -}) - -ins_right({ - "fileformat", - fmt = string.upper, - icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh - color = { fg = colors.green, gui = "bold" }, -}) - -ins_right({ - "branch", - icon = "", - color = { fg = colors.violet, gui = "bold" }, -}) - -ins_right({ - "diff", - -- Is it me or the symbol for modified us really weird - symbols = { added = " ", modified = "󰝤 ", removed = " " }, - diff_color = { - added = { fg = colors.green }, - modified = { fg = colors.orange }, - removed = { fg = colors.red }, - }, - cond = conditions.hide_in_width, -}) - -ins_right({ - function() - return "▊" - end, - color = { fg = colors.blue }, - padding = { left = 1 }, -}) - --- Now don't forget to initialize lualine -lualine.setup(config) diff --git a/tools/nvim/lua/plugins/mod/lualine/components.lua b/tools/nvim/lua/plugins/mod/lualine/components.lua new file mode 100644 index 0000000..df2a593 --- /dev/null +++ b/tools/nvim/lua/plugins/mod/lualine/components.lua @@ -0,0 +1,168 @@ +local M = {} +local colors = require("config.colors") +local icons = require("config.icons") + +local function diff_source() + local gitsigns = vim.b.gitsigns_status_dict + if gitsigns then + return { + added = gitsigns.added, + modified = gitsigns.changed, + removed = gitsigns.removed, + } + end +end + +local conditions = { + buffer_not_empty = function() + return vim.fn.empty(vim.fn.expand("%:t")) ~= 1 + end, + hide_in_width = function() + return vim.fn.winwidth(0) > 80 + end, + check_git_workspace = function() + local filepath = vim.fn.expand("%:p:h") + local gitdir = vim.fn.finddir(".git", filepath .. ";") + return gitdir and #gitdir > 0 and #gitdir < #filepath + end, +} +local mode_color = { + n = colors.blue, + i = colors.green, + v = colors.magenta, + [""] = colors.magenta, + V = colors.magenta, + c = colors.magenta, + no = colors.red, + s = colors.orange, + S = colors.orange, + [""] = colors.orange, + ic = colors.yellow, + R = colors.violet, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ["r?"] = colors.cyan, + ["!"] = colors.red, + t = colors.red, +} + +local mode_color_bg = function() + return { fg = colors.bg, bg = mode_color[vim.fn.mode()] } +end + +-- local mode_color_fg = function() +-- return { fg = mode_color[vim.fn.mode()] } +-- end + +M.mode = { + function() + return "" + end, + color = mode_color_bg, +} + +M.git = { + "branch", + icon = icons.git.Branch, + color = { fg = colors.violet, gui = "bold" }, +} + +M.diagnostics = { + "diagnostics", + sources = { "nvim_diagnostic" }, + symbols = { + error = icons.diagnostics.Error .. " ", + warn = icons.diagnostics.Warning .. " ", + info = icons.diagnostics.Information .. " ", + hint = icons.diagnostics.Hint .. " ", + }, +} + +M.lsp = { + -- Lsp server name . + function() + local msg = "LSP Inactive" + local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 }) + local clients = vim.lsp.get_clients() + if next(clients) == nil then + return msg + end + for _, client in ipairs(clients) do + local filetypes = client.config.filetypes + if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then + return client.name + end + end + return msg + end, + icon = icons.lsp, + color = { fg = colors.yellow, gui = "italic" }, +} + +M.filetype = { + function() + return vim.bo.filetype + end, + color = { fg = colors.blue, gui = "bold" }, +} + +M.eol = { + function() + return vim.bo.eol == true and icons.eol or "" + end, + color = { fg = colors.red }, +} + +M.command = { + "command", + color = { fg = colors.green, gui = "bold" }, +} + +M.encoding = { + "o:encoding", + color = { fg = colors.green, gui = "bold" }, +} + +M.indent = { + function() + local shiftwidth = vim.api.nvim_get_option_value("shiftwidth", { buf = 0 }) + return icons.indent .. " " .. shiftwidth + end, + padding = 1, +} + +-- M.diff = { +-- "diff", +-- -- Is it me or the symbol for modified us really weird +-- symbols = { added = " ", modified = "󰝤 ", removed = " " }, +-- diff_color = { +-- added = { fg = colors.green }, +-- modified = { fg = colors.orange }, +-- removed = { fg = colors.red }, +-- }, +-- cond = conditions.hide_in_width, +-- } +M.diff = { + "diff", + source = diff_source, + -- symbols = { added = " ", modified = "󰝤 ", removed = " " }, + symbols = { + added = icons.git.Add .. " ", + modified = icons.git.Change .. " ", + removed = icons.git.Delete .. " ", + }, + padding = { left = 2, right = 1 }, + diff_color = { + added = { fg = colors.green }, + modified = { fg = colors.yellow }, + removed = { fg = colors.red }, + }, + cond = nil, +} + +M.progress = { "progress", color = mode_color_bg } + +return M diff --git a/tools/nvim/lua/plugins/mod/lualine/init.lua b/tools/nvim/lua/plugins/mod/lualine/init.lua new file mode 100644 index 0000000..6a4b2cc --- /dev/null +++ b/tools/nvim/lua/plugins/mod/lualine/init.lua @@ -0,0 +1,73 @@ +local lualine = require("lualine") + +-- Color table for highlights + +local colors = require("config.colors") +local components = require("plugins.mod.lualine.components") + +-- Config +local config = { + options = { + disabled_filetypes = { + statusline = { "NvimTree", "alpha" }, + }, + -- Disable sections and component separators + component_separators = "", + section_separators = "", + theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + }, + sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + lualine_c = {}, + lualine_x = {}, + }, +} + +-- Inserts a component in lualine_c at left section +local function ins_left(component) + table.insert(config.sections.lualine_c, component) +end + +-- Inserts a component in lualine_x at right section +local function ins_right(component) + table.insert(config.sections.lualine_x, component) +end + +--[[ +VSCode Style: +Remote | Git Branch | Diagnostics | Command | | MID | | Line:Column | Indent | Encoding | EOL | File Type LSP | Notifications +--]] + +ins_left(components.mode) +ins_left(components.diff) +ins_left(components.git) +ins_left(components.diagnostics) +ins_left(components.command) +ins_right(components.indent) +ins_right(components.encoding) +ins_right(components.eol) +ins_right(components.filetype) +ins_right(components.lsp) +ins_right(components.progress) + +lualine.setup(config) diff --git a/tools/nvim/lua/plugins/mod/nvim-cmp.lua b/tools/nvim/lua/plugins/mod/nvim-cmp.lua index 165da17..b8a7140 100644 --- a/tools/nvim/lua/plugins/mod/nvim-cmp.lua +++ b/tools/nvim/lua/plugins/mod/nvim-cmp.lua @@ -43,6 +43,7 @@ return { { name = "nvim_lsp" }, { name = "luasnip" }, { name = "copilot" }, + { name = "lazydev", group_index = 0 }, }, { { name = "buffer" }, { name = "path" }, diff --git a/tools/nvim/lua/plugins/mod/trouble-nvim.lua b/tools/nvim/lua/plugins/mod/trouble-nvim.lua new file mode 100644 index 0000000..a49f503 --- /dev/null +++ b/tools/nvim/lua/plugins/mod/trouble-nvim.lua @@ -0,0 +1,37 @@ +return { + "folke/trouble.nvim", + opts = {}, -- for default options, refer to the configuration section for custom setup. + cmd = "Trouble", + keys = { + { + "eE", + "Trouble diagnostics toggle", + desc = "Diagnostics (Trouble)", + }, + { + "ee", + "Trouble diagnostics toggle filter.buf=0", + desc = "Buffer Diagnostics (Trouble)", + }, + { + "es", + "Trouble symbols toggle focus=false", + desc = "Symbols (Trouble)", + }, + { + "el", + "Trouble lsp toggle focus=false win.position=right", + desc = "LSP Definitions / references / ... (Trouble)", + }, + { + "eL", + "Trouble loclist toggle", + desc = "Location List (Trouble)", + }, + { + "ef", + "Trouble qflist toggle", + desc = "Quickfix List (Trouble)", + }, + }, +} diff --git a/tools/nvim/lua/plugins/mod/winbar-nvim.lua b/tools/nvim/lua/plugins/mod/winbar-nvim.lua index 496ce0c..f0f676e 100644 --- a/tools/nvim/lua/plugins/mod/winbar-nvim.lua +++ b/tools/nvim/lua/plugins/mod/winbar-nvim.lua @@ -7,7 +7,7 @@ return { show_file_path = true, show_symbols = true, colors = { - path = "#9c1d91", + path = "", file_name = "", symbols = "", }, @@ -31,6 +31,7 @@ return { "spectre_panel", "toggleterm", "qf", + "floaterm", }, }) end, diff --git a/tools/nvim/lua/plugins/syntax.lua b/tools/nvim/lua/plugins/syntax.lua deleted file mode 100644 index eea5c64..0000000 --- a/tools/nvim/lua/plugins/syntax.lua +++ /dev/null @@ -1,10 +0,0 @@ -return { - { import = "plugins.mod.nvim-treesitter" }, - { - "echasnovski/mini.pairs", - version = false, - config = function() - require("mini.pairs").setup() - end, - }, -} diff --git a/tools/nvim/playground.txt b/tools/nvim/playground.txt deleted file mode 100644 index c855ece..0000000 --- a/tools/nvim/playground.txt +++ /dev/null @@ -1,4 +0,0 @@ -((( -This is a playground file. -{(1 + 2) * 3} -))) diff --git a/tools/powershell/Completions.ps1 b/tools/powershell/Completions.ps1 index 9dd8cb7..206b55e 100644 --- a/tools/powershell/Completions.ps1 +++ b/tools/powershell/Completions.ps1 @@ -13,8 +13,11 @@ function Invoke-Completion { } 'git' { Import-Module Posh-Git } 'hugo' { hugo completion powershell | Out-String | Invoke-Expression } + 'just' { just --completions powershell | Out-String | Invoke-Expression } 'pip' { pip completion --powershell | Out-String | Invoke-Expression } + 'pixi' { pixi completion --shell powershell | Out-String | Invoke-Expression } 'rg' { rg --generate complete-powershell | Out-String | Invoke-Expression } + 'rustup' { rustup completions powershell rustup | Out-String | Invoke-Expression } 'uv' { uv generate-shell-completion powershell | Out-String | Invoke-Expression } 'wezterm' { wezterm shell-completion --shell power-shell | Out-String | Invoke-Expression } 'winget' { @@ -36,7 +39,12 @@ Set-Alias "icmp" "Invoke-Completion" Register-ArgumentCompleter -CommandName Invoke-Completion -ParameterName 'command' -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) - $cmds = @('docker', 'dotnet', 'git', 'hugo', 'pip', 'rg', 'uv', 'wezterm', 'winget') + $cmds = @('docker', 'dotnet', 'git', 'hugo', 'just', 'pip', 'pixi', 'rg', 'rustup', 'uv', 'wezterm', 'winget') $cmds | Where-Object { $_ -like "$wordToComplete*" } } + + +if ($isWindows) { + Invoke-Completion winget # Enable winget tab completion by default +} diff --git a/tools/powershell/Keymap.ps1 b/tools/powershell/Keymap.ps1 index 41e78f8..eddfc65 100644 --- a/tools/powershell/Keymap.ps1 +++ b/tools/powershell/Keymap.ps1 @@ -26,6 +26,5 @@ Set-PSReadLineKeyHandler -Chord "Ctrl+e" -Function EndOfLine Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function PreviousHistory Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function PreviousHistory Set-PSReadLineKeyHandler -Chord "Ctrl+n" -Function NextHistory - ## Use to Invoke MenuComplete Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete diff --git a/tools/powershell/Modules.ps1 b/tools/powershell/Modules.ps1 index 8236f40..cdc48e8 100644 --- a/tools/powershell/Modules.ps1 +++ b/tools/powershell/Modules.ps1 @@ -7,3 +7,7 @@ if ($IsWindows) { # WinGet Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58 } + +Import-Module -Name PSFzf + +Set-PSReadLineKeyHandler -Chord "Ctrl-r" -ScriptBlock { Invoke-FuzzyHistory } diff --git a/tools/powershell/Prompt.ps1 b/tools/powershell/Prompt.ps1 index 0fe1e0a..d8dc647 100644 --- a/tools/powershell/Prompt.ps1 +++ b/tools/powershell/Prompt.ps1 @@ -2,6 +2,50 @@ # Date: 2024-12-01 # Author: js0ny # Use starship to set prompt -$ENV:STARSHIP_CONFIG = Join-Path $DOTFILES "tools" "starship" "starship_pwsh.toml" Invoke-Expression (&starship init powershell) + +Import-Module Catppuccin + +$Flavor = $Catppuccin['Mocha'] + +# The following colors are used by PowerShell's formatting +# Again PS 7.2+ only +$PSStyle.Formatting.Debug = $Flavor.Sky.Foreground() +$PSStyle.Formatting.Error = $Flavor.Red.Foreground() +$PSStyle.Formatting.ErrorAccent = $Flavor.Blue.Foreground() +$PSStyle.Formatting.FormatAccent = $Flavor.Teal.Foreground() +$PSStyle.Formatting.TableHeader = $Flavor.Rosewater.Foreground() +$PSStyle.Formatting.Verbose = $Flavor.Yellow.Foreground() +$PSStyle.Formatting.Warning = $Flavor.Peach.Foreground() + +$Colors = @{ + # Largely based on the Code Editor style guide + # Emphasis, ListPrediction and ListPredictionSelected are inspired by the Catppuccin fzf theme + + # Powershell colours + Emphasis = $Flavor.Red.Foreground() + Selection = $Flavor.Surface0.Background() + + # PSReadLine prediction colours + InlinePrediction = $Flavor.Overlay0.Foreground() + ListPrediction = $Flavor.Mauve.Foreground() + ListPredictionSelected = $Flavor.Surface0.Background() + + # Syntax highlighting + Command = $Flavor.Blue.Foreground() + Comment = $Flavor.Overlay0.Foreground() + Default = $Flavor.Text.Foreground() + Error = $Flavor.Red.Foreground() + Keyword = $Flavor.Mauve.Foreground() + Member = $Flavor.Rosewater.Foreground() + Number = $Flavor.Peach.Foreground() + Operator = $Flavor.Sky.Foreground() + Parameter = $Flavor.Pink.Foreground() + String = $Flavor.Green.Foreground() + Type = $Flavor.Yellow.Foreground() + Variable = $Flavor.Lavender.Foreground() +} + +# Set the colours +Set-PSReadLineOption -Colors $Colors diff --git a/tools/starship/starship_fish.toml b/tools/starship/starship_fish.toml deleted file mode 100644 index 983acba..0000000 --- a/tools/starship/starship_fish.toml +++ /dev/null @@ -1,144 +0,0 @@ -format = """ -[](#9A348E)\ -$os\ -$username\ -[](bg:#DA627D fg:#9A348E)\ -$directory\ -[](fg:#DA627D bg:#FCA17D)\ -$git_branch\ -$git_status\ -[](fg:#FCA17D bg:#86BBD8)\ -$c\ -$elixir\ -$elm\ -$golang\ -$gradle\ -$haskell\ -$java\ -$julia\ -$nodejs\ -$nim\ -$rust\ -$scala\ -[](fg:#86BBD8 bg:#06969A)\ -$docker_context\ -[](fg:#06969A bg:#33658A)\ -$time\ -[ ](fg:#33658A)\ -""" - -# Disable the blank line at the start of the prompt -# add_newline = false - -# You can also replace your username with a neat symbol like  or disable this -# and use the os module below -[username] -show_always = true -style_user = "bg:#9A348E" -style_root = "bg:#9A348E" -format = '[$user ]($style)' -disabled = false - -# An alternative to the username module which displays a symbol that -# represents the current operating system -[os] -style = "bg:#9A348E" -disabled = true # Disabled by default - -[directory] -style = "bg:#DA627D" -format = "[ $path ]($style)" -truncation_length = 3 -truncation_symbol = "…/" - -# Here is how you can shorten some long paths by text replacement -# similar to mapped_locations in Oh My Posh: -[directory.substitutions] -"Documents" = "󰈙 " -"Downloads" = " " -"Music" = " " -"Pictures" = " " -# Keep in mind that the order matters. For example: -# "Important Documents" = " 󰈙 " -# will not be replaced, because "Documents" was already substituted before. -# So either put "Important Documents" before "Documents" or use the substituted version: -# "Important 󰈙 " = " 󰈙 " - -[c] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[docker_context] -symbol = " " -style = "bg:#06969A" -format = '[ $symbol $context ]($style)' - -[elixir] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[elm] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[git_branch] -symbol = "" -style = "bg:#FCA17D" -format = '[ $symbol $branch ]($style)' - -[git_status] -style = "bg:#FCA17D" -format = '[$all_status$ahead_behind ]($style)' - -[golang] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[gradle] -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[haskell] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[java] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[julia] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[nodejs] -symbol = "" -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[nim] -symbol = "󰆥 " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[rust] -symbol = "" -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[scala] -symbol = " " -style = "bg:#86BBD8" -format = '[ $symbol ($version) ]($style)' - -[time] -disabled = false -time_format = "%R" # Hour:Minute Format -style = "bg:#33658A" -format = '[ ♥ $time ]($style)' diff --git a/tools/starship/starship_nu.toml b/tools/starship/starship_nu.toml deleted file mode 100644 index 5bf9e16..0000000 --- a/tools/starship/starship_nu.toml +++ /dev/null @@ -1,210 +0,0 @@ -# starship.toml -# ~/.config/starship.toml -format = '''$os$time $username @ $hostname $directory $all$character''' -continuation_prompt = "[ cr >](bold cyan) " - -add_newline = true - -[time] -disabled = false -format = '[\[$time\]](purple)' -time_format = '%H:%M' - -[username] -format = '[$user](bold)' -show_always = true - -[hostname] -ssh_only = false -ssh_symbol = '󰞉 ' - -# Currently vimcmd_symbol is not supported in Nu, define in `config.nu` instead -[character] -success_symbol = "" -error_symbol = "" -vimcmd_symbol = "" - - -[directory] -truncation_length = 2 -truncate_to_repo = true -read_only = " 󰌾" -style ="bold cyan" -truncation_symbol = ".../" - -[directory.substitutions] -"~/Documents" = "󰈙 " -"~/Downloads" = " " -"~/Music" = " " -"~/Pictures" = " " -"Source" = " " -"src" = " " - -[aws] -symbol = " " - -[buf] -symbol = " " - -[c] -symbol = " " - -[conda] -symbol = " " - -[crystal] -symbol = " " - -[dart] -symbol = " " - - -[docker_context] -symbol = " " - -[elixir] -symbol = " " - -[elm] -symbol = " " - -[fennel] -symbol = " " - -[fossil_branch] -symbol = " " - -[git_branch] -symbol = " " - -[git_commit] -tag_symbol = '  ' - -[golang] -symbol = " " - -[guix_shell] -symbol = " " - -[haskell] -symbol = " " - -[haxe] -symbol = " " - -[hg_branch] -symbol = " " - -[java] -symbol = " " - -[julia] -symbol = " " - -[kotlin] -symbol = " " - -[lua] -symbol = " " - -[memory_usage] -symbol = "󰍛 " - -[meson] -symbol = "󰔷 " - -[nim] -symbol = "󰆥 " - -[nix_shell] -symbol = " " - -[nodejs] -symbol = " " - -[ocaml] -symbol = " " - -[os] -disabled = false - -[os.symbols] -Alpaquita = " " -Alpine = " " -AlmaLinux = " " -Amazon = " " -Android = " " -Arch = " " -Artix = " " -CentOS = " " -Debian = " " -DragonFly = " " -Emscripten = " " -EndeavourOS = " " -Fedora = " " -FreeBSD = " " -Garuda = "󰛓 " -Gentoo = " " -HardenedBSD = "󰞌 " -Illumos = "󰈸 " -Kali = " " -Linux = " " -Mabox = " " -Macos = " " -Manjaro = " " -Mariner = " " -MidnightBSD = " " -Mint = " " -NetBSD = " " -NixOS = " " -OpenBSD = "󰈺 " -openSUSE = " " -OracleLinux = "󰌷 " -Pop = " " -Raspbian = " " -Redhat = " " -RedHatEnterprise = " " -RockyLinux = " " -Redox = "󰀘 " -Solus = "󰠳 " -SUSE = " " -Ubuntu = " " -Unknown = " " -Void = " " -Windows = "󰍲 " - -[package] -symbol = "󰏗 " - -[perl] -symbol = " " - -[php] -symbol = " " - -[pijul_channel] -symbol = " " - -[python] -symbol = " " - -[rlang] -symbol = "󰟔 " - -[ruby] -symbol = " " - -[rust] -symbol = "󱘗 " - -[scala] -symbol = " " - -[swift] -symbol = " " - -[zig] -symbol = " " - -[gradle] -symbol = " " diff --git a/tools/starship/starship_pwsh.toml b/tools/starship/starship_pwsh.toml deleted file mode 100644 index aec0050..0000000 --- a/tools/starship/starship_pwsh.toml +++ /dev/null @@ -1,208 +0,0 @@ -# starship.toml -# ~/.config/starship.toml -format = '''$os$time $username @ $hostname $directory $all$character''' -continuation_prompt = "[CR > ](bold cyan) " - -add_newline = true - -[time] -disabled = false -format = '[\[$time\]](purple)' -time_format = '%H:%M' - -[username] -format = '[$user](bold)' -show_always = true - -[hostname] -ssh_only = false -ssh_symbol = '󰞉 ' - -[character] -success_symbol = "[PS > ](bold green)" -error_symbol = "[PS > ](bold red)" -vimcmd_symbol = "[Vi < ](bold green)" - -[directory] -truncation_length = 2 -truncate_to_repo = true -read_only = " 󰌾" -style ="bold cyan" -truncation_symbol = ".../" - -[directory.substitutions] -"~/Documents" = "󰈙 " -"~/Downloads" = " " -"~/Music" = " " -"~/Pictures" = " " -"Source" = " " -"src" = " " - -[aws] -symbol = " " - -[buf] -symbol = " " - -[c] -symbol = " " - -[conda] -symbol = " " - -[crystal] -symbol = " " - -[dart] -symbol = " " - - -[docker_context] -symbol = " " - -[elixir] -symbol = " " - -[elm] -symbol = " " - -[fennel] -symbol = " " - -[fossil_branch] -symbol = " " - -[git_branch] -symbol = " " - -[git_commit] -tag_symbol = '  ' - -[golang] -symbol = " " - -[guix_shell] -symbol = " " - -[haskell] -symbol = " " - -[haxe] -symbol = " " - -[hg_branch] -symbol = " " - -[java] -symbol = " " - -[julia] -symbol = " " - -[kotlin] -symbol = " " - -[lua] -symbol = " " - -[memory_usage] -symbol = "󰍛 " - -[meson] -symbol = "󰔷 " - -[nim] -symbol = "󰆥 " - -[nix_shell] -symbol = " " - -[nodejs] -symbol = " " - -[ocaml] -symbol = " " - -[os] -disabled = false - -[os.symbols] -Alpaquita = " " -Alpine = " " -AlmaLinux = " " -Amazon = " " -Android = " " -Arch = " " -Artix = " " -CentOS = " " -Debian = " " -DragonFly = " " -Emscripten = " " -EndeavourOS = " " -Fedora = " " -FreeBSD = " " -Garuda = "󰛓 " -Gentoo = " " -HardenedBSD = "󰞌 " -Illumos = "󰈸 " -Kali = " " -Linux = " " -Mabox = " " -Macos = " " -Manjaro = " " -Mariner = " " -MidnightBSD = " " -Mint = " " -NetBSD = " " -NixOS = " " -OpenBSD = "󰈺 " -openSUSE = " " -OracleLinux = "󰌷 " -Pop = " " -Raspbian = " " -Redhat = " " -RedHatEnterprise = " " -RockyLinux = " " -Redox = "󰀘 " -Solus = "󰠳 " -SUSE = " " -Ubuntu = " " -Unknown = " " -Void = " " -Windows = "󰍲 " - -[package] -symbol = "󰏗 " - -[perl] -symbol = " " - -[php] -symbol = " " - -[pijul_channel] -symbol = " " - -[python] -symbol = " " - -[rlang] -symbol = "󰟔 " - -[ruby] -symbol = " " - -[rust] -symbol = "󱘗 " - -[scala] -symbol = " " - -[swift] -symbol = " " - -[zig] -symbol = " " - -[gradle] -symbol = " " diff --git a/tools/starship/starship_zsh.toml b/tools/starship/starship_zsh.toml deleted file mode 100644 index 2880b83..0000000 --- a/tools/starship/starship_zsh.toml +++ /dev/null @@ -1,209 +0,0 @@ -# starship.toml -# ~/.config/starship.toml -format = '''$os$time $username @ $hostname $directory $all$character''' -continuation_prompt = "[r % ](bold cyan) " - -add_newline = true - -[time] -disabled = false -format = '[\[$time\]](purple)' -time_format = '%H:%M' - -[username] -format = '[$user](bold)' -show_always = true - -[hostname] -ssh_only = false -ssh_symbol = '󰞉 ' - -[character] -success_symbol = "[z % ](bold green)" -error_symbol = "[z % ](bold red)" -vimcmd_symbol = "[v ! ](bold green)" - -[directory] -truncation_length = 2 -truncate_to_repo = true -read_only = " 󰌾" -style ="bold cyan" -truncation_symbol = ":" -fish_style_pwd_dir_length = 1 - -[directory.substitutions] -"~/Documents" = "󰈙 " -"~/Downloads" = " " -"~/Music" = " " -"~/Pictures" = " " -"Source" = " " -"src" = " " - -[aws] -symbol = " " - -[buf] -symbol = " " - -[c] -symbol = " " - -[conda] -symbol = " " - -[crystal] -symbol = " " - -[dart] -symbol = " " - - -[docker_context] -symbol = " " - -[elixir] -symbol = " " - -[elm] -symbol = " " - -[fennel] -symbol = " " - -[fossil_branch] -symbol = " " - -[git_branch] -symbol = " " - -[git_commit] -tag_symbol = '  ' - -[golang] -symbol = " " - -[guix_shell] -symbol = " " - -[haskell] -symbol = " " - -[haxe] -symbol = " " - -[hg_branch] -symbol = " " - -[java] -symbol = " " - -[julia] -symbol = " " - -[kotlin] -symbol = " " - -[lua] -symbol = " " - -[memory_usage] -symbol = "󰍛 " - -[meson] -symbol = "󰔷 " - -[nim] -symbol = "󰆥 " - -[nix_shell] -symbol = " " - -[nodejs] -symbol = " " - -[ocaml] -symbol = " " - -[os] -disabled = false - -[os.symbols] -Alpaquita = " " -Alpine = " " -AlmaLinux = " " -Amazon = " " -Android = " " -Arch = " " -Artix = " " -CentOS = " " -Debian = " " -DragonFly = " " -Emscripten = " " -EndeavourOS = " " -Fedora = " " -FreeBSD = " " -Garuda = "󰛓 " -Gentoo = " " -HardenedBSD = "󰞌 " -Illumos = "󰈸 " -Kali = " " -Linux = " " -Mabox = " " -Macos = " " -Manjaro = " " -Mariner = " " -MidnightBSD = " " -Mint = " " -NetBSD = " " -NixOS = " " -OpenBSD = "󰈺 " -openSUSE = " " -OracleLinux = "󰌷 " -Pop = " " -Raspbian = " " -Redhat = " " -RedHatEnterprise = " " -RockyLinux = " " -Redox = "󰀘 " -Solus = "󰠳 " -SUSE = " " -Ubuntu = " " -Unknown = " " -Void = " " -Windows = "󰍲 " - -[package] -symbol = "󰏗 " - -[perl] -symbol = " " - -[php] -symbol = " " - -[pijul_channel] -symbol = " " - -[python] -symbol = " " - -[rlang] -symbol = "󰟔 " - -[ruby] -symbol = " " - -[rust] -symbol = "󱘗 " - -[scala] -symbol = " " - -[swift] -symbol = " " - -[zig] -symbol = " " - -[gradle] -symbol = " " diff --git a/tools/vscode/extensions/vspacecode.jsonc b/tools/vscode/extensions/vspacecode.jsonc new file mode 100644 index 0000000..8698e86 --- /dev/null +++ b/tools/vscode/extensions/vspacecode.jsonc @@ -0,0 +1,9534 @@ +{ + "vspacecode.bindings": [ + { + "key": " ", + "name": "Find Files", + "icon": "search", + "type": "command", + "command": "workbench.action.quickOpen" + }, + { + "key": "\t", + "name": "Last buffer", + "icon": "go-to-file", + "type": "commands", + "commands": [ + "workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup", + "list.select" + ] + }, + { + "key": "!", + "name": "Show terminal", + "icon": "terminal", + "type": "command", + "command": "workbench.action.terminal.focus" + }, + { + "key": "\"", + "name": "Open new external terminal", + "icon": "chevron-right", + "type": "command", + "command": "workbench.action.terminal.openNativeConsole" + }, + { + "key": "$", + "name": "Run Recent Command in Terminal", + "icon": "terminal", + "type": "command", + "command": "workbench.action.terminal.runRecentCommand" + }, + { + "key": "'", + "name": "Show terminal", + "icon": "terminal", + "type": "command", + "command": "workbench.action.quickOpenView" + }, + { + "key": "*", + "name": "Search in project with selection", + "icon": "search", + "type": "commands", + "commands": [ + "editor.action.addSelectionToNextFindMatch", + "workbench.action.findInFiles", + "search.action.focusSearchList" + ] + }, + { + "key": ".", + "name": "Repeat most recent action", + "icon": "redo", + "type": "command", + "command": "whichkey.repeatMostRecent", + "args": "vspacecode.bindings" + }, + { + "key": "/", + "name": "Search in project", + "icon": "search", + "type": "command", + "command": "workbench.action.findInFiles" + }, + { + "key": "0", + "name": "Focus on files explorer", + "icon": "list-tree", + "type": "command", + "command": "workbench.files.action.focusFilesExplorer" + }, + { + "key": "1", + "name": "Focus 1st window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusFirstEditorGroup" + }, + { + "key": "2", + "name": "Focus 2nd window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusSecondEditorGroup" + }, + { + "key": "3", + "name": "Focus 3rd window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusThirdEditorGroup" + }, + { + "key": "4", + "name": "Focus 4th window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusFourthEditorGroup" + }, + { + "key": "5", + "name": "Focus 5th window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusFifthEditorGroup" + }, + { + "key": "6", + "name": "Focus 6th window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusSixthEditorGroup" + }, + { + "key": "7", + "name": "Focus 7th window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusSeventhEditorGroup" + }, + { + "key": "8", + "name": "Focus 8th window", + "icon": "files", + "type": "command", + "command": "workbench.action.focusEighthEditorGroup" + }, + { + "key": ";", + "name": "Show all commands", + "icon": "keyboard", + "type": "command", + "command": "workbench.action.showCommands" + }, + { + "key": "?", + "name": "Search keybindings", + "icon": "keyboard", + "type": "command", + "command": "whichkey.searchBindings" + }, + { + "key": "v", + "name": "Smart select/expand region", + "icon": "selection", + "type": "transient", + "command": "editor.action.smartSelect.grow", + "bindings": [ + { + "key": "r", + "name": "Run current buffer/selection", + "icon": "play", + "type": "command", + "command": "code-runner.run" + }, + { + "key": "v", + "name": "Grow selection", + "icon": "add", + "type": "command", + "command": "editor.action.smartSelect.grow" + }, + { + "key": "V", + "name": "Shrink selection", + "icon": "remove", + "type": "command", + "command": "editor.action.smartSelect.shrink" + }, + { + "key": "m", + "name": "Select next matches", + "icon": "selection", + "type": "command", + "command": "editor.action.addSelectionToNextFindMatch" + }, + { + "key": "M", + "name": "Select all matches", + "icon": "selection", + "type": "command", + "command": "editor.action.selectHighlights" + }, + { + "key": "n", + "name": "Go to next match under cursor", + "icon": "selection", + "type": "command", + "command": "editor.action.wordHighlight.next" + }, + { + "key": "N", + "name": "Go to previout match under cursor", + "icon": "selection", + "type": "command", + "command": "editor.action.wordHighlight.prev" + } + ] + }, + { + "key": ":", + "name": "+Tasks", + "icon": "tasklist", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Rerun last task", + "icon": "debug-rerun", + "type": "command", + "command": "workbench.action.tasks.reRunTask" + }, + { + "key": ":", + "name": "Run task", + "icon": "play", + "type": "command", + "command": "workbench.action.tasks.runTask" + }, + { + "key": "b", + "name": "Run build tasks", + "icon": "server-process", + "type": "command", + "command": "workbench.action.tasks.build" + }, + { + "key": "c", + "name": "Configure task runner", + "icon": "gear", + "type": "command", + "command": "workbench.action.tasks.configureTaskRunner" + }, + { + "key": "g", + "name": "Show running tasks", + "icon": "checklist", + "type": "command", + "command": "workbench.action.tasks.showTasks" + }, + { + "key": "l", + "name": "Show task log", + "icon": "history", + "type": "command", + "command": "workbench.action.tasks.showLog" + }, + { + "key": "t", + "name": "Run test task", + "icon": "beaker", + "type": "command", + "command": "workbench.action.tasks.test" + }, + { + "key": "x", + "name": "Terminate task", + "icon": "trash", + "type": "command", + "command": "workbench.action.tasks.terminate" + }, + { + "key": "R", + "name": "Restart running task", + "icon": "refresh", + "type": "command", + "command": "workbench.action.tasks.restartTask" + } + ] + }, + { + "key": "b", + "name": "+Buffers", + "icon": "file", + "type": "bindings", + "bindings": [ + { + "key": "0", + "name": "Last buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.lastEditorInGroup" + }, + { + "key": "1", + "name": "First buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex1" + }, + { + "key": "2", + "name": "2nd buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex2" + }, + { + "key": "3", + "name": "3rd buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex3" + }, + { + "key": "4", + "name": "4th buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex4" + }, + { + "key": "5", + "name": "5th buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex5" + }, + { + "key": "6", + "name": "6th buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex6" + }, + { + "key": "7", + "name": "7th buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex7" + }, + { + "key": "8", + "name": "8th buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex8" + }, + { + "key": "9", + "name": "9th buffer in window", + "icon": "arrow-both", + "type": "command", + "command": "workbench.action.openEditorAtIndex9" + }, + { + "key": "b", + "name": "Show all buffers", + "icon": "files", + "type": "command", + "command": "workbench.action.showAllEditorsByMostRecentlyUsed" + }, + { + "key": "d", + "name": "Close active buffer", + "icon": "x", + "type": "command", + "command": "workbench.action.closeActiveEditor" + }, + { + "key": "w", + "name": "+Move buffer", + "icon": "arrow-both", + "type": "bindings", + "bindings": [ + { + "key": "h", + "name": "Move buffer into left window", + "icon": "triangle-left", + "type": "command", + "command": "workbench.action.moveEditorToLeftGroup" + }, + { + "key": "n", + "name": "Move buffer into below window", + "icon": "triangle-down", + "type": "command", + "command": "workbench.action.moveEditorToBelowGroup" + }, + { + "key": "e", + "name": "Move buffer into above window", + "icon": "triangle-up", + "type": "command", + "command": "workbench.action.moveEditorToAboveGroup" + }, + { + "key": "i", + "name": "Move buffer into right window", + "icon": "triangle-right", + "type": "command", + "command": "workbench.action.moveEditorToRightGroup" + } + ] + }, + { + "key": "h", + "name": "Next buffer", + "icon": "arrow-down", + "type": "command", + "command": "workbench.action.nextEditor" + }, + { + "key": "i", + "name": "Previous buffer", + "icon": "arrow-up", + "type": "command", + "command": "workbench.action.previousEditor" + }, + { + "key": "s", + "name": "Scratch buffer", + "icon": "note", + "type": "command", + "command": "workbench.action.files.newUntitledFile" + }, + { + "key": "t", + "name": "Pin buffer", + "icon": "pin", + "type": "command", + "command": "workbench.action.pinEditor" + }, + { + "key": "u", + "name": "Reopen closed buffer", + "icon": "history", + "type": "command", + "command": "workbench.action.reopenClosedEditor" + }, + { + "key": "B", + "name": "Show all buffers in active window", + "icon": "files", + "type": "command", + "command": "workbench.action.showEditorsInActiveGroup" + }, + { + "key": "M", + "name": "Close other buffers", + "icon": "close-all", + "type": "command", + "command": "workbench.action.closeOtherEditors" + }, + { + "key": "P", + "name": "Paste clipboard to buffer", + "icon": "clippy", + "type": "commands", + "commands": [ + "editor.action.selectAll", + "editor.action.clipboardPasteAction" + ] + }, + { + "key": "R", + "name": "Revert the current buffer", + "icon": "discard", + "type": "command", + "command": "workbench.action.files.revert" + }, + { + "key": "T", + "name": "Unpin buffer", + "icon": "pinned", + "type": "command", + "command": "workbench.action.unpinEditor" + }, + { + "key": "Y", + "name": "Copy buffer to clipboard", + "icon": "clippy", + "type": "command", + "command": "vspacecode.copyWholeBuffer" + }, + { + "key": "N", + "name": "+New Buffer", + "icon": "file-add", + "type": "bindings", + "bindings": [ + { + "key": "h", + "name": "New untitled buffer (split left)", + "icon": "arrow-small-left", + "type": "commands", + "commands": [ + "workbench.action.splitEditorLeft", + "workbench.action.files.newUntitledFile", + "workbench.action.closeOtherEditors" + ] + }, + { + "key": "n", + "name": "New untitled buffer (split down)", + "icon": "arrow-small-down", + "type": "commands", + "commands": [ + "workbench.action.splitEditorDown", + "workbench.action.files.newUntitledFile", + "workbench.action.closeOtherEditors" + ] + }, + { + "key": "e", + "name": "New untitled buffer (split up)", + "icon": "arrow-small-up", + "type": "commands", + "commands": [ + "workbench.action.splitEditorUp", + "workbench.action.files.newUntitledFile", + "workbench.action.closeOtherEditors" + ] + }, + { + "key": "i", + "name": "New untitled buffer (split right)", + "icon": "arrow-small-right", + "type": "commands", + "commands": [ + "workbench.action.splitEditorRight", + "workbench.action.files.newUntitledFile", + "workbench.action.closeOtherEditors" + ] + }, + { + "key": "N", + "name": "New untitled buffer", + "icon": "file-add", + "type": "command", + "command": "workbench.action.files.newUntitledFile" + } + ] + } + ] + }, + { + "key": "c", + "name": "+Compile/Comments", + "icon": "gear", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Compile project", + "icon": "gear", + "type": "command", + "command": "workbench.action.tasks.build" + }, + { + "key": "l", + "name": "Toggle line comment", + "icon": "comment", + "type": "command", + "command": "editor.action.commentLine" + }, + { + "key": "e", + "name": "Next error/diagnostics", + "icon": "arrow-down", + "type": "command", + "command": "editor.action.marker.nextInFiles" + }, + { + "key": "e", + "name": "Previous error/diagnostics", + "icon": "arrow-up", + "type": "command", + "command": "editor.action.marker.prevInFiles" + }, + { + "key": "r", + "name": "Run current buffer/selection", + "icon": "play", + "type": "command", + "command": "code-runner.run" + }, + { + "key": "f", + "name": "Format code", + "type": "command", + "icon": "horizontal-rule", + "command": "editor.action.format" + }, + { + "key": " ", + "name": "Trim trailing whitespace", + "type": "command", + "icon": "whitespace", + "command": "editor.action.trimTrailingWhitespace" + }, + { + "key": "s", + "name": "Goto Symbol", + "type": "command", + "icon": "symbol-constructor", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "S", + "name": "Show all symbols", + "type": "command", + "icon": "symbol-class", + "command": "workbench.action.showAllSymbols" + }, + { + "key": "g", + "name": "Next git change", + "type": "command", + "icon": "diff-added", + "command": "editor.action.dirtydiff.next" + }, + { + "key": "G", + "name": "Previous git change", + "type": "command", + "icon": "diff-removed", + "command": "editor.action.dirtydiff.previous" + }, + { + "key": "R", + "name": "Rename symbol under cursor", + "type": "command", + "icon": "symbol-parameter", + "command": "editor.action.rename" + } + ] + }, + { + "key": "d", + "name": "+Debug", + "icon": "bug", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Continue debug", + "icon": "debug-continue", + "type": "command", + "command": "workbench.action.debug.continue" + }, + { + "key": "d", + "name": "Start debug", + "icon": "debug-start", + "type": "command", + "command": "workbench.action.debug.start" + }, + { + "key": "i", + "name": "Step into", + "icon": "debug-step-into", + "type": "command", + "command": "workbench.action.debug.stepInto" + }, + { + "key": "j", + "name": "Jump to cursor", + "icon": "whole-word", + "type": "command", + "command": "debug.jumpToCursor" + }, + { + "key": "o", + "name": "Step out", + "icon": "debug-step-out", + "type": "command", + "command": "workbench.action.debug.stepOut" + }, + { + "key": "p", + "name": "Pause debug", + "icon": "debug-pause", + "type": "command", + "command": "workbench.action.debug.pause" + }, + { + "key": "s", + "name": "Step over", + "icon": "debug-step-over", + "type": "command", + "command": "workbench.action.debug.stepOver" + }, + { + "key": "v", + "name": "REPL", + "icon": "debug-console", + "type": "command", + "command": "workbench.debug.action.toggleRepl" + }, + { + "key": "w", + "name": "Focus on watch window", + "icon": "eye-watch", + "type": "command", + "command": "workbench.debug.action.focusWatchView" + }, + { + "key": "C", + "name": "Continue to cursor", + "icon": "debug-continue", + "type": "command", + "command": "editor.debug.action.runToCursor" + }, + { + "key": "D", + "name": "Run without debugging", + "icon": "run", + "type": "command", + "command": "workbench.action.debug.run" + }, + { + "key": "R", + "name": "Restart debug", + "icon": "debug-restart", + "type": "command", + "command": "workbench.action.debug.restart" + }, + { + "key": "S", + "name": "Stop debug", + "icon": "debug-stop", + "type": "command", + "command": "workbench.action.debug.stop" + }, + { + "key": "W", + "name": "Add to watch", + "icon": "watch-expressions-add", + "type": "command", + "command": "editor.debug.action.selectionToWatch" + }, + { + "key": "b", + "name": "+Breakpoint", + "icon": "debug-breakpoint", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Toggle breakpoint", + "icon": "activate-breakpoints", + "type": "command", + "command": "editor.debug.action.toggleBreakpoint" + }, + { + "key": "c", + "name": "Add conditional breakpoint", + "icon": "debug-breakpoint-conditional", + "type": "command", + "command": "editor.debug.action.conditionalBreakpoint" + }, + { + "key": "d", + "name": "Delete breakpoint", + "icon": "trash", + "type": "command", + "command": "debug.removeBreakpoint" + }, + { + "key": "e", + "name": "Enable breakpoint", + "icon": "debug-breakpoint", + "type": "command", + "command": "debug.enableOrDisableBreakpoint" + }, + { + "key": "f", + "name": "Add function breakpoint", + "icon": "debug-breakpoint-function", + "type": "command", + "command": "workbench.debug.viewlet.action.addFunctionBreakpointAction" + }, + { + "key": "i", + "name": "Toggle inline breakpoint", + "icon": "activate-breakpoints", + "type": "command", + "command": "editor.debug.action.toggleInlineBreakpoint" + }, + { + "key": "n", + "name": "Next breakpoint", + "icon": "arrow-down", + "type": "transient", + "command": "editor.debug.action.goToNextBreakpoint", + "bindings": [ + { + "key": "n", + "name": "Next breakpoint", + "icon": "arrow-down", + "type": "command", + "command": "editor.debug.action.goToNextBreakpoint" + }, + { + "key": "p", + "name": "Previous breakpoint", + "icon": "arrow-up", + "type": "command", + "command": "editor.debug.action.goToPreviousBreakpoint" + } + ] + }, + { + "key": "p", + "name": "Previous breakpoint", + "icon": "arrow-up", + "type": "transient", + "command": "editor.debug.action.goToPreviousBreakpoint", + "bindings": [ + { + "key": "n", + "name": "Next breakpoint", + "icon": "arrow-down", + "type": "command", + "command": "editor.debug.action.goToNextBreakpoint" + }, + { + "key": "p", + "name": "Previous breakpoint", + "icon": "arrow-up", + "type": "command", + "command": "editor.debug.action.goToPreviousBreakpoint" + } + ] + }, + { + "key": "s", + "name": "Disable breakpoint", + "icon": "debug-breakpoint-disabled", + "type": "command", + "command": "debug.enableOrDisableBreakpoint" + }, + { + "key": "D", + "name": "Delete all breakpoints", + "icon": "trash", + "type": "command", + "command": "workbench.debug.viewlet.action.removeAllBreakpoints" + }, + { + "key": "E", + "name": "Enable all breakpoints", + "icon": "expand-all", + "type": "command", + "command": "workbench.debug.viewlet.action.enableAllBreakpoints" + }, + { + "key": "S", + "name": "Disable all breakpoints", + "icon": "collapse-all", + "type": "command", + "command": "workbench.debug.viewlet.action.disableAllBreakpoints" + } + ] + } + ] + }, + { + "key": "e", + "name": "+Errors", + "icon": "error", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Error transient", + "icon": "window", + "type": "transient", + "bindings": [ + { + "key": "f", + "name": "Fix error", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "n", + "name": "Next error", + "icon": "arrow-down", + "type": "command", + "command": "editor.action.marker.nextInFiles" + }, + { + "key": "p", + "name": "Previous error", + "icon": "arrow-up", + "type": "command", + "command": "editor.action.marker.prevInFiles" + }, + { + "key": "N", + "name": "Previous error", + "icon": "arrow-up", + "type": "command", + "command": "editor.action.marker.prevInFiles" + } + ] + }, + { + "key": "e", + "name": "Show error", + "icon": "error", + "type": "command", + "command": "editor.action.showHover" + }, + { + "key": "f", + "name": "Fix error", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "l", + "name": "List errors", + "icon": "list-flat", + "type": "command", + "command": "workbench.actions.view.problems" + }, + { + "key": "n", + "name": "Next error", + "icon": "arrow-down", + "type": "command", + "command": "editor.action.marker.nextInFiles" + }, + { + "key": "p", + "name": "Previous error", + "icon": "arrow-up", + "type": "command", + "command": "editor.action.marker.prevInFiles" + }, + { + "key": "N", + "name": "Previous error", + "icon": "arrow-up", + "type": "command", + "command": "editor.action.marker.prevInFiles" + } + ] + }, + { + "key": "f", + "name": "+File", + "icon": "file", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Open file/folder", + "icon": "folder-opened", + "type": "command", + "command": "file-browser.open" + }, + { + "key": "F", + "name": "grep files", + "icon": "folder-opened", + "type": "command", + "command": "workbench.view.search" + }, + { + "key": "l", + "name": "Change file language", + "icon": "code", + "type": "command", + "command": "workbench.action.editor.changeLanguageMode" + }, + { + "key": "n", + "name": "New file", + "icon": "new-file", + "type": "command", + "command": "explorer.newFile" + }, + { + "key": "o", + "name": "+Open with", + "icon": "file-code", + "type": "command", + "command": "explorer.openWith" + }, + { + "key": "O", + "name": "Open with default application", + "icon": "file-code", + "type": "command", + "command": "openInExternalApp.open" + }, + { + "key": "r", + "name": "+Open recent", + "icon": "clock", + "type": "command", + "command": "workbench.action.openRecent" + }, + { + "key": "s", + "name": "Save file", + "icon": "save", + "type": "command", + "command": "workbench.action.files.save" + }, + { + "key": "t", + "name": "Toggle tree/explorer view", + "icon": "list-tree", + "type": "conditional", + "bindings": [ + { + "key": "", + "name": "Show explorer view", + "type": "command", + "command": "workbench.view.explorer" + }, + { + "key": "when:sideBarVisible && explorerViewletVisible", + "name": "Hide side bar", + "type": "command", + "command": "workbench.action.toggleSidebarVisibility" + } + ] + }, + { + "key": "w", + "name": "Open active in new window", + "icon": "window", + "type": "command", + "command": "workbench.action.files.showOpenedFileInNewWindow" + }, + { + "key": "D", + "name": "Delete current file", + "icon": "trash", + "type": "commands", + "commands": [ + "workbench.files.action.showActiveFileInExplorer", + "deleteFile" + ] + }, + { + "key": "L", + "name": "Locate file (reveal in OS)", + "icon": "file-symlink-directory", + "type": "command", + "command": "revealFileInOS" + }, + { + "key": "R", + "name": "Rename file", + "icon": "edit", + "type": "commands", + "commands": [ + "revealInExplorer", + "renameFile" + ] + }, + { + "key": "S", + "name": "Save all files", + "icon": "save-all", + "type": "command", + "command": "workbench.action.files.saveAll" + }, + { + "key": "x", + "name": "Open extension view", + "icon": "extensions", + "type": "command", + "command": "workbench.files.action.showActiveFileInExplorer" + }, + { + "key": "T", + "name": "Show active file in tree/explorer view", + "icon": "list-tree", + "type": "command", + "command": "workbench.files.action.showActiveFileInExplorer" + }, + { + "key": "e", + "name": "+Editor", + "icon": "settings", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Open configuration", + "icon": "settings", + "type": "command", + "command": "workbench.action.openGlobalSettings" + }, + { + "key": "k", + "name": "Open global key bindings", + "icon": "keyboard", + "type": "command", + "command": "workbench.action.openGlobalKeybindings" + }, + { + "key": "l", + "name": "Open language settings", + "icon": "code", + "type": "command", + "command": "workbench.action.configureLanguageBasedSettings" + }, + { + "key": "s", + "name": "Configure user snippets", + "icon": "symbol-snippet", + "type": "command", + "command": "workbench.action.openSnippets" + }, + { + "key": "C", + "name": "Open workspace settings", + "icon": "settings-edit", + "type": "command", + "command": "workbench.action.openWorkspaceSettings" + }, + { + "key": "K", + "name": "Open global key bindings JSON", + "icon": "json", + "type": "command", + "command": "workbench.action.openGlobalKeybindingsFile" + } + ] + }, + { + "key": "i", + "name": "+Indentation", + "icon": "arrow-right", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Detect indentation", + "icon": "whitespace", + "type": "command", + "command": "editor.action.detectIndentation" + }, + { + "key": "i", + "name": "Change indentation", + "icon": "edit", + "type": "command", + "command": "changeEditorIndentation" + }, + { + "key": "r", + "name": "Reindent", + "icon": "list-flat", + "type": "command", + "command": "editor.action.reindentlines" + }, + { + "key": "s", + "name": "Convert indentation to spaces", + "icon": "arrow-small-right", + "type": "command", + "command": "editor.action.indentationToSpaces" + }, + { + "key": "t", + "name": "Convert indentation to tabs", + "icon": "export", + "type": "command", + "command": "editor.action.indentationToTabs" + }, + { + "key": "R", + "name": "Reindent selected", + "icon": "selection", + "type": "command", + "command": "editor.action.reindentselectedlines" + } + ] + }, + { + "key": "y", + "name": "+Yank", + "icon": "clippy", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Copy path of active file with line and column", + "icon": "list-selection", + "type": "command", + "command": "vspacecode.copyPathWithLineColumn" + }, + { + "key": "d", + "name": "Copy directory path of the active file", + "icon": "file-directory", + "type": "command", + "command": "vspacecode.copyDirectoryPath" + }, + { + "key": "l", + "name": "Copy path of active file with line", + "icon": "list-flat", + "type": "command", + "command": "vspacecode.copyPathWithLine" + }, + { + "key": "n", + "name": "Copy filename of active file", + "icon": "file", + "type": "command", + "command": "vspacecode.copyFilename" + }, + { + "key": "y", + "name": "Copy path of active file", + "icon": "go-to-file", + "type": "command", + "command": "vspacecode.copyPath" + }, + { + "key": "C", + "name": "Copy relative path of active file with line and column", + "icon": "list-selection", + "type": "command", + "command": "vspacecode.copyRelativePathWithLineColumn" + }, + { + "key": "D", + "name": "Copy relative directory path of the active file", + "icon": "file-directory", + "type": "command", + "command": "vspacecode.copyRelativeDirectoryPath" + }, + { + "key": "L", + "name": "Copy relative path of active file with line", + "icon": "list-flat", + "type": "command", + "command": "vspacecode.copyRelativePathWithLine" + }, + { + "key": "N", + "name": "Copy filename without extension of active file", + "icon": "file", + "type": "command", + "command": "vspacecode.copyFilenameBase" + }, + { + "key": "Y", + "name": "Copy relative path of active file", + "icon": "go-to-file", + "type": "command", + "command": "vspacecode.copyRelativePath" + } + ] + } + ] + }, + { + "key": "g", + "name": "+Git", + "icon": "git-branch", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Blame file", + "icon": "file", + "type": "command", + "command": "magit.blame-file" + }, + { + "key": "c", + "name": "Clone", + "icon": "repo-clone", + "type": "command", + "command": "git.clone" + }, + { + "key": "i", + "name": "Initialize repository", + "icon": "repo-create", + "type": "command", + "command": "git.init" + }, + { + "key": "m", + "name": "Magit dispatch", + "icon": "repo", + "type": "command", + "command": "magit.dispatch" + }, + { + "key": "s", + "name": "Status", + "icon": "preview", + "type": "command", + "command": "magit.status" + }, + { + "key": "S", + "name": "Stage file", + "icon": "file-add", + "type": "command", + "command": "magit.stage-file" + }, + { + "key": "U", + "name": "Unstage file", + "icon": "file", + "type": "command", + "command": "magit.unstage-file" + }, + { + "key": "f", + "name": "+File", + "icon": "file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Diff", + "icon": "diff", + "type": "command", + "command": "magit.diff-file" + }, + { + "key": "l", + "name": "Show log/timeline", + "icon": "history", + "type": "command", + "command": "timeline.focus" + } + ] + } + ] + }, + { + "key": "h", + "name": "+Help", + "icon": "question", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Open VSCode Documentation", + "icon": "book", + "type": "command", + "command": "workbench.action.openDocumentationUrl" + }, + { + "key": "k", + "name": "Open global key bindings", + "icon": "keyboard", + "type": "command", + "command": "workbench.action.openGlobalKeybindings" + }, + { + "key": "D", + "name": "Open VSpaceCode Documentation", + "icon": "book", + "type": "command", + "command": "vspacecode.openDocumentationUrl" + }, + { + "key": "I", + "name": "Report VSCode Issue", + "icon": "issues", + "type": "command", + "command": "workbench.action.openIssueReporter" + }, + { + "key": "T", + "name": "Open VSCode Tutorial", + "icon": "lightbulb", + "type": "command", + "command": "workbench.action.showInteractivePlayground" + } + ] + }, + { + "key": "a", + "name": "+Append/Insert", + "icon": "add", + "type": "bindings", + "bindings": [ + { + "key": "s", + "name": "Insert snippet", + "icon": "symbol-snippet", + "type": "command", + "command": "editor.action.insertSnippet" + }, + { + "key": "d", + "name": "Insert date", + "icon": "calendar", + "type": "command", + "command": "insertDateString.insertDate" + }, + { + "key": "D", + "name": "Insert formatted datetime", + "icon": "calendar", + "type": "command", + "command": "insertDateString.insertOwnFormatDateTime" + }, + { + "key": "c", + "name": "+Cursor", + "icon": "cursor", + "type": "transient", + "bindings": [ + { + "key": "c", + "name": "Insert cursor below", + "icon": "triangle-down", + "type": "command", + "command": "editor.action.insertCursorBelow" + }, + { + "key": "C", + "name": "Insert cursor above", + "icon": "triangle-up", + "type": "command", + "command": "editor.action.insertCursorAbove" + } + ] + }, + { + "key": "A", + "name": "Insert cursor at end of each line selected", + "icon": "triangle-right", + "command": "editor.action.insertCursorAtEndOfEachLineSelected" + } + ] + }, + { + "key": "j", + "name": "+Jump/Join/Split", + "icon": "gather", + "type": "bindings", + "bindings": [ + { + "key": "+", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "c", + "name": "Jump to previous change", + "icon": "arrow-up", + "type": "command", + "command": "workbench.action.editor.previousChange" + }, + { + "key": "i", + "name": "Jump to symbol in buffer", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "j", + "name": "Jump to character", + "icon": "case-sensitive", + "type": "command", + "command": "vim.remap", + "args": { + "after": [ + "leader", + "leader", + "s" + ] + } + }, + { + "key": "l", + "name": "Jump to line", + "icon": "list-flat", + "type": "command", + "command": "vim.remap", + "args": { + "after": [ + "leader", + "leader", + "leader", + "b", + "d", + "j", + "k" + ] + } + }, + { + "key": "n", + "name": "Split new line", + "icon": "whitespace", + "type": "command", + "command": "lineBreakInsert" + }, + { + "key": "v", + "name": "Jump to outline/variables", + "icon": "variable", + "type": "command", + "command": "breadcrumbs.focusAndSelect" + }, + { + "key": "w", + "name": "Jump to word", + "icon": "symbol-keyword", + "type": "command", + "command": "vim.remap", + "args": { + "after": [ + "leader", + "leader", + "leader", + "b", + "d", + "w" + ] + } + }, + { + "key": "C", + "name": "Jump to next change", + "icon": "arrow-down", + "type": "command", + "command": "workbench.action.editor.nextChange" + }, + { + "key": "I", + "name": "Jump to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "p", + "name": "+Project", + "icon": "project", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Compile project", + "icon": "gear", + "type": "command", + "command": "workbench.action.tasks.build" + }, + { + "key": "f", + "name": "Add project to favorites", + "icon": "star", + "type": "command", + "command": "projectManager.addToFavorites" + }, + { + "key": "S", + "name": "Save project", + "icon": "save", + "type": "command", + "command": "projectManager.saveProject" + }, + { + "key": "F", + "name": "Filter projects by tags", + "icon": "filter", + "type": "command", + "command": "projectManager.filterProjectsByTag" + }, + { + "key": "p", + "name": "+Switch recent project", + "icon": "project", + "type": "command", + "command": "workbench.action.openRecent" + }, + { + "key": "r", + "name": "+Switch recent project", + "icon": "project", + "type": "command", + "command": "workbench.action.openRecent" + }, + { + "key": "P", + "name": "+Switch Git project", + "icon": "project", + "type": "command", + "command": "projectManager.listProjects" + }, + { + "key": "t", + "name": "Show tree/explorer view", + "icon": "list-tree", + "type": "command", + "command": "workbench.view.explorer" + }, + { + "key": "R", + "name": "+Replace in files", + "icon": "find-replace", + "type": "command", + "command": "workbench.action.replaceInFiles" + }, + { + "key": "T", + "name": "Test project", + "icon": "beaker", + "type": "command", + "command": "workbench.action.tasks.test" + } + ] + }, + { + "key": "q", + "name": "+Quit", + "icon": "x", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Close frame", + "icon": "close", + "type": "command", + "command": "workbench.action.closeWindow" + }, + { + "key": "q", + "name": "Close frame", + "icon": "close", + "type": "command", + "command": "workbench.action.closeWindow" + }, + { + "key": "r", + "name": "Reload frame", + "icon": "refresh", + "type": "command", + "command": "workbench.action.reloadWindow" + }, + { + "key": "s", + "name": "Save all and close frame", + "icon": "save-all", + "type": "commands", + "commands": [ + "workbench.action.files.saveAll", + "workbench.action.closeWindow" + ] + }, + { + "key": "Q", + "name": "Quit application", + "icon": "log-out", + "type": "command", + "command": "workbench.action.quit" + }, + { + "key": "R", + "name": "Reload frame with extensions disabled", + "icon": "refresh", + "type": "command", + "command": "workbench.action.reloadWindowWithExtensionsDisabled" + } + ] + }, + { + "key": "r", + "name": "+Resume/Repeat", + "icon": "clock", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Repeat recent actions", + "icon": "redo", + "type": "command", + "command": "whichkey.repeatRecent", + "args": "vspacecode.bindings" + }, + { + "key": "b", + "name": "Recent buffers", + "icon": "versions", + "type": "command", + "command": "workbench.action.showAllEditorsByMostRecentlyUsed" + }, + { + "key": "s", + "name": "Search in project", + "icon": "search", + "type": "command", + "command": "workbench.action.findInFiles" + } + ] + }, + { + "key": "s", + "name": "+Search/Symbol", + "icon": "search", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Clear highlight", + "icon": "clear-all", + "type": "command", + "command": "vim.remap", + "args": { + "commands": [ + { + "command": ":noh" + } + ] + } + }, + { + "key": "e", + "name": "Edit symbol", + "icon": "edit", + "type": "command", + "command": "editor.action.rename" + }, + { + "key": "h", + "name": "Highlight symbol", + "icon": "symbol-color", + "type": "transient", + "command": "editor.action.wordHighlight.trigger", + "bindings": [ + { + "key": "/", + "name": "Search in project with selection", + "icon": "selection", + "type": "commands", + "commands": [ + "editor.action.addSelectionToNextFindMatch", + "workbench.action.findInFiles" + ] + }, + { + "key": "n", + "name": "Next occurrence", + "icon": "arrow-down", + "type": "command", + "command": "editor.action.wordHighlight.next" + }, + { + "key": "p", + "name": "Previous occurrence", + "icon": "arrow-up", + "type": "command", + "command": "editor.action.wordHighlight.prev" + }, + { + "key": "N", + "name": "Previous occurrence", + "icon": "arrow-up", + "type": "command", + "command": "editor.action.wordHighlight.prev" + } + ] + }, + { + "key": "j", + "name": "Jump to symbol in buffer", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "p", + "name": "Search in project", + "icon": "search", + "type": "command", + "command": "workbench.action.findInFiles" + }, + { + "key": "r", + "name": "Search all references", + "icon": "references", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + }, + { + "key": "s", + "name": "Fuzzy search in current buffer", + "icon": "file", + "type": "command", + "command": "fuzzySearch.activeTextEditorWithCurrentSelection" + }, + { + "key": "J", + "name": "Jump to symbol in project", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.showAllSymbols" + }, + { + "key": "P", + "name": "Search in project with selection", + "icon": "selection", + "type": "commands", + "commands": [ + "editor.action.addSelectionToNextFindMatch", + "workbench.action.findInFiles" + ] + }, + { + "key": "R", + "name": "Search all references in side bar", + "icon": "references", + "type": "command", + "command": "references-view.find" + }, + { + "key": "S", + "name": "Fuzzy search with selection in current buffer", + "icon": "selection", + "type": "commands", + "commands": [ + "editor.action.addSelectionToNextFindMatch", + "fuzzySearch.activeTextEditorWithCurrentSelection" + ] + } + ] + }, + { + "key": "t", + "name": "+Test", + "icon": "beaker", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Run all tests", + "icon": "beaker", + "type": "command", + "command": "testing.runAll" + }, + { + "key": "A", + "name": "Debug all tests", + "icon": "debug", + "type": "command", + "command": "testing.debugAll" + }, + { + "key": "f", + "name": "Re-run failed tests", + "icon": "close", + "type": "command", + "command": "testing.reRunFailedTests" + }, + { + "key": "F", + "name": "Debug failed tests", + "icon": "debug-alt", + "type": "command", + "command": "testing.debugFailedTests" + }, + { + "key": "l", + "name": "Re-run last test", + "icon": "history", + "type": "command", + "command": "testing.reRunLastRun" + }, + { + "key": "L", + "name": "Debug last test", + "icon": "debug-start", + "type": "command", + "command": "testing.debugLastRun" + }, + { + "key": "c", + "name": "Run current test", + "icon": "play", + "type": "command", + "command": "testing.runCurrentTest" + }, + { + "key": "C", + "name": "Debug current test", + "icon": "debug-alt", + "type": "command", + "command": "testing.debugCurrentTest" + }, + { + "key": "x", + "name": "Cancel test run", + "icon": "close", + "type": "command", + "command": "testing.cancelTestRun" + }, + { + "key": "t", + "name": "Run all tests", + "icon": "beaker", + "type": "command", + "command": "testing.runAll" + }, + { + "key": "T", + "name": "Debug all tests", + "icon": "debug", + "type": "command", + "command": "testing.debugAll" + } + ] + }, + { + "key": "u", + "name": "+UI", + "icon": "settings", + "type": "bindings", + "bindings": [ + { + "key": "i", + "name": "Change theme", + "icon": "symbol-color", + "type": "command", + "command": "workbench.action.selectTheme" + }, + { + "key": "c", + "name": "Toggle find case sensitive", + "icon": "case-sensitive", + "type": "command", + "command": "toggleFindCaseSensitive" + }, + { + "key": "w", + "name": "Toggle word wrap", + "icon": "word-wrap", + "type": "command", + "command": "editor.action.toggleWordWrap" + }, + { + "key": " ", + "name": "Toggle render whitespace", + "icon": "whitespace", + "type": "command", + "command": "editor.action.toggleRenderWhitespace" + } + ] + }, + { + "key": "w", + "name": "+Window", + "icon": "split-horizontal", + "type": "bindings", + "bindings": [ + { + "key": "-", + "name": "Split window below", + "icon": "split-vertical", + "type": "command", + "command": "workbench.action.splitEditorDown" + }, + { + "key": "/", + "name": "Split window right", + "icon": "split-horizontal", + "type": "command", + "command": "workbench.action.splitEditor" + }, + { + "key": "\\", + "name": "Split window right", + "icon": "split-horizontal", + "type": "command", + "command": "workbench.action.splitEditor" + }, + { + "key": "1", + "name": "Single column window layout", + "icon": "editor-layout", + "type": "command", + "command": "workbench.action.editorLayoutSingle" + }, + { + "key": "2", + "name": "Double column window layout", + "icon": "editor-layout", + "type": "command", + "command": "workbench.action.editorLayoutTwoColumns" + }, + { + "key": "3", + "name": "Triple column window layout", + "icon": "editor-layout", + "type": "command", + "command": "workbench.action.editorLayoutThreeColumns" + }, + { + "key": "4", + "name": "Grid window layout", + "icon": "editor-layout", + "type": "command", + "command": "workbench.action.editorLayoutTwoByTwoGrid" + }, + { + "key": "=", + "name": "Reset window sizes", + "icon": "move", + "type": "command", + "command": "workbench.action.evenEditorWidths" + }, + { + "key": "[", + "name": "Shrink window", + "icon": "remove", + "type": "transient", + "command": "workbench.action.decreaseViewSize", + "bindings": [ + { + "key": "[", + "name": "Shrink window", + "icon": "remove", + "type": "command", + "command": "workbench.action.decreaseViewSize" + }, + { + "key": "]", + "name": "Enlarge window", + "icon": "add", + "type": "command", + "command": "workbench.action.increaseViewSize" + } + ] + }, + { + "key": "]", + "name": "Enlarge window", + "icon": "add", + "type": "transient", + "command": "workbench.action.increaseViewSize", + "bindings": [ + { + "key": "[", + "name": "Shrink window", + "icon": "remove", + "type": "command", + "command": "workbench.action.decreaseViewSize" + }, + { + "key": "]", + "name": "Enlarge window", + "icon": "add", + "type": "command", + "command": "workbench.action.increaseViewSize" + } + ] + }, + { + "key": "d", + "name": "Close window", + "icon": "close", + "type": "command", + "command": "workbench.action.closeEditorsInGroup" + }, + { + "key": "h", + "name": "Focus window left", + "icon": "arrow-left", + "type": "command", + "command": "workbench.action.navigateLeft" + }, + { + "key": "n", + "name": "Focus window down", + "icon": "arrow-down", + "type": "command", + "command": "workbench.action.navigateDown" + }, + { + "key": "e", + "name": "Focus window up", + "icon": "arrow-up", + "type": "command", + "command": "workbench.action.navigateUp" + }, + { + "key": "i", + "name": "Focus window right", + "icon": "arrow-right", + "type": "command", + "command": "workbench.action.navigateRight" + }, + { + "key": "m", + "name": "Maximize window", + "icon": "screen-full", + "type": "command", + "command": "workbench.action.toggleMaximizeEditorGroup" + }, + { + "key": "o", + "name": "Switch frame", + "icon": "multiple-windows", + "type": "command", + "command": "workbench.action.quickSwitchWindow" + }, + { + "key": "s", + "name": "Split window below", + "icon": "split-vertical", + "type": "command", + "command": "workbench.action.splitEditorDown" + }, + { + "key": "v", + "name": "Split window right", + "icon": "split-horizontal", + "type": "command", + "command": "workbench.action.splitEditor" + }, + { + "key": "w", + "name": "Focus next window", + "icon": "arrow-small-down", + "type": "command", + "command": "workbench.action.focusNextGroup" + }, + { + "key": "x", + "name": "Close current window", + "icon": "close-all", + "type": "command", + "command": "workbench.action.closeEditorsInGroup" + }, + { + "key": "z", + "name": "Combine all buffers", + "icon": "combine", + "type": "command", + "command": "workbench.action.joinAllGroups" + }, + { + "key": "D", + "name": "Close all other windows", + "icon": "close-all", + "type": "command", + "command": "workbench.action.closeEditorsInOtherGroups" + }, + { + "key": "F", + "name": "Open new empty frame", + "icon": "empty-window", + "type": "command", + "command": "workbench.action.newWindow" + }, + { + "key": "H", + "name": "Move window left", + "icon": "triangle-left", + "type": "command", + "command": "workbench.action.moveActiveEditorGroupLeft" + }, + { + "key": "J", + "name": "Move window down", + "icon": "triangle-down", + "type": "command", + "command": "workbench.action.moveActiveEditorGroupDown" + }, + { + "key": "K", + "name": "Move window up", + "icon": "triangle-up", + "type": "command", + "command": "workbench.action.moveActiveEditorGroupUp" + }, + { + "key": "L", + "name": "Move window right", + "icon": "triangle-right", + "type": "command", + "command": "workbench.action.moveActiveEditorGroupRight" + }, + { + "key": "M", + "name": "Maximize window without hiding others", + "icon": "chrome-maximize", + "type": "command", + "command": "workbench.action.toggleEditorWidths" + }, + { + "key": "W", + "name": "Focus previous window", + "icon": "arrow-small-up", + "type": "command", + "command": "workbench.action.focusPreviousGroup" + } + ] + }, + { + "key": "x", + "name": "+Text", + "icon": "symbol-text", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Quick fix", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "a", + "name": "Find all references", + "icon": "references", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + }, + { + "key": "i", + "name": "Organize Imports", + "icon": "selection", + "type": "command", + "command": "editor.action.organizeImports" + }, + { + "key": "o", + "name": "Open link", + "icon": "link-external", + "type": "command", + "command": "editor.action.openLink" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + }, + { + "key": "u", + "name": "To lower case", + "icon": "case-sensitive", + "type": "command", + "command": "editor.action.transformToLowercase" + }, + { + "key": "J", + "name": "Move lines down", + "icon": "triangle-down", + "type": "transient", + "command": "editor.action.moveLinesDownAction", + "bindings": [ + { + "key": "J", + "name": "Move lines down", + "icon": "triangle-down", + "type": "command", + "command": "editor.action.moveLinesDownAction" + }, + { + "key": "K", + "name": "Move lines up", + "icon": "triangle-up", + "type": "command", + "command": "editor.action.moveLinesUpAction" + } + ] + }, + { + "key": "K", + "name": "Move lines up", + "icon": "triangle-up", + "type": "transient", + "command": "editor.action.moveLinesUpAction", + "bindings": [ + { + "key": "J", + "name": "Move lines down", + "icon": "triangle-down", + "type": "command", + "command": "editor.action.moveLinesDownAction" + }, + { + "key": "K", + "name": "Move lines up", + "icon": "triangle-up", + "type": "command", + "command": "editor.action.moveLinesUpAction" + } + ] + }, + { + "key": "R", + "name": "Refactor", + "icon": "edit", + "type": "command", + "command": "editor.action.refactor" + }, + { + "key": "U", + "name": "To upper case", + "icon": "preserve-case", + "type": "command", + "command": "editor.action.transformToUppercase" + }, + { + "key": "d", + "name": "+Delete", + "icon": "trash", + "type": "bindings", + "bindings": [ + { + "key": "w", + "name": "Delete trailing whitespace", + "icon": "whitespace", + "type": "command", + "command": "editor.action.trimTrailingWhitespace" + } + ] + }, + { + "key": "l", + "name": "+Lines", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Duplicate lines down", + "icon": "fold-down", + "type": "command", + "command": "editor.action.copyLinesDownAction" + }, + { + "key": "s", + "name": "Sort lines in ascending order", + "icon": "chevron-left", + "type": "command", + "command": "editor.action.sortLinesAscending" + }, + { + "key": "D", + "name": "Duplicate lines up", + "icon": "fold-up", + "type": "command", + "command": "editor.action.copyLinesUpAction" + }, + { + "key": "S", + "name": "Sort lines in descending order", + "icon": "chevron-right", + "type": "command", + "command": "editor.action.sortLinesDescending" + } + ] + }, + { + "key": "m", + "name": "+Merge conflict", + "icon": "git-merge", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Accept both", + "icon": "arrow-both", + "type": "command", + "command": "merge-conflict.accept.both" + }, + { + "key": "c", + "name": "Accept current", + "icon": "arrow-small-right", + "type": "command", + "command": "merge-conflict.accept.current" + }, + { + "key": "i", + "name": "Accept incoming", + "icon": "arrow-small-left", + "type": "command", + "command": "merge-conflict.accept.incoming" + }, + { + "key": "k", + "name": "Compare current conflict", + "icon": "diff", + "type": "command", + "command": "merge-conflict.compare" + }, + { + "key": "n", + "name": "Next Conflict", + "icon": "arrow-down", + "type": "command", + "command": "merge-conflict.next" + }, + { + "key": "s", + "name": "Accept selection", + "icon": "selection", + "type": "command", + "command": "merge-conflict.accept.selection" + }, + { + "key": "B", + "name": "Accept all both", + "icon": "arrow-both", + "type": "command", + "command": "merge-conflict.accept.all-both" + }, + { + "key": "C", + "name": "Accept all current", + "icon": "arrow-right", + "type": "command", + "command": "merge-conflict.accept.all-current" + }, + { + "key": "I", + "name": "Accept all incoming", + "icon": "arrow-left", + "type": "command", + "command": "merge-conflict.accept.all-incoming" + }, + { + "key": "N", + "name": "Previous Conflict", + "icon": "arrow-up", + "type": "command", + "command": "merge-conflict.previous" + } + ] + } + ] + }, + { + "key": "z", + "name": "+Zoom/Fold", + "icon": "zoom-in", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "+Frame", + "icon": "window", + "type": "transient", + "bindings": [ + { + "key": "+", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "workbench.action.zoomIn" + }, + { + "key": "-", + "name": "Zoom out", + "icon": "zoom-out", + "type": "command", + "command": "workbench.action.zoomOut" + }, + { + "key": "0", + "name": "Reset zoom", + "icon": "search", + "type": "command", + "command": "workbench.action.zoomReset" + }, + { + "key": "=", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "workbench.action.zoomIn" + }, + { + "key": "j", + "name": "Zoom out", + "icon": "zoom-out", + "type": "command", + "command": "workbench.action.zoomOut" + }, + { + "key": "k", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "workbench.action.zoomIn" + } + ] + }, + { + "key": "i", + "name": "+Image preview", + "icon": "eye", + "type": "transient", + "bindings": [ + { + "key": "+", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "imagePreview.zoomIn" + }, + { + "key": "-", + "name": "Zoom out", + "icon": "zoom-out", + "type": "command", + "command": "imagePreview.zoomOut" + }, + { + "key": "=", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "imagePreview.zoomIn" + } + ] + }, + { + "key": "x", + "name": "+Font", + "icon": "case-sensitive", + "type": "transient", + "bindings": [ + { + "key": "+", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "editor.action.fontZoomIn" + }, + { + "key": "-", + "name": "Zoom out", + "icon": "zoom-out", + "type": "command", + "command": "editor.action.fontZoomOut" + }, + { + "key": "0", + "name": "Reset zoom", + "icon": "search", + "type": "command", + "command": "editor.action.fontZoomReset" + }, + { + "key": "=", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "editor.action.fontZoomIn" + }, + { + "key": "j", + "name": "Zoom out", + "icon": "zoom-out", + "type": "command", + "command": "editor.action.fontZoomOut" + }, + { + "key": "k", + "name": "Zoom in", + "icon": "zoom-in", + "type": "command", + "command": "editor.action.fontZoomIn" + } + ] + }, + { + "key": ".", + "name": "+Fold", + "icon": "fold", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Toggle: around a point", + "icon": "selection", + "type": "command", + "command": "editor.toggleFold" + }, + { + "key": "b", + "name": "Close: all block comments", + "icon": "fold", + "type": "command", + "command": "editor.foldAllBlockComments" + }, + { + "key": "c", + "name": "Close: at a point", + "icon": "fold", + "type": "command", + "command": "editor.fold" + }, + { + "key": "g", + "name": "Close: all regions", + "icon": "fold", + "type": "command", + "command": "editor.foldAllMarkerRegions" + }, + { + "key": "m", + "name": "Close: all", + "icon": "fold", + "type": "command", + "command": "editor.foldAll" + }, + { + "key": "o", + "name": "Open: at a point", + "icon": "unfold", + "type": "command", + "command": "editor.unfold" + }, + { + "key": "r", + "name": "Open: all", + "icon": "unfold", + "type": "command", + "command": "editor.unfoldAll" + }, + { + "key": "G", + "name": "Open: all regions", + "icon": "unfold", + "type": "command", + "command": "editor.unfoldAllMarkerRegions" + }, + { + "key": "O", + "name": "Open: recursively", + "icon": "unfold", + "type": "command", + "command": "editor.unfoldRecursively" + } + ] + } + ] + }, + { + "key": "D", + "name": "+Diff/Compare", + "icon": "diff", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Compare active file with clipboard", + "icon": "clippy", + "type": "command", + "command": "workbench.files.action.compareWithClipboard" + }, + { + "key": "m", + "name": "Compare current merge conflict", + "icon": "git-merge", + "type": "command", + "command": "merge-conflict.compare" + }, + { + "key": "s", + "name": "Compare active file with saved", + "icon": "save-as", + "type": "command", + "command": "workbench.files.action.compareWithSaved" + }, + { + "key": "w", + "name": "Toggle ignore trim whitespace", + "icon": "whitespace", + "type": "command", + "command": "toggle.diff.ignoreTrimWhitespace" + }, + { + "key": "D", + "name": "+Compare active file with", + "icon": "diff", + "type": "command", + "command": "workbench.files.action.compareFileWith" + } + ] + }, + { + "key": "F", + "name": "+Frame", + "icon": "window", + "type": "bindings", + "bindings": [ + { + "key": "n", + "name": "Duplicate workspace in new frame", + "icon": "window", + "type": "command", + "command": "workbench.action.duplicateWorkspaceInNewWindow" + }, + { + "key": "o", + "name": "Switch frame", + "icon": "multiple-windows", + "type": "command", + "command": "workbench.action.quickSwitchWindow" + }, + { + "key": "N", + "name": "Open new empty frame", + "icon": "empty-window", + "type": "command", + "command": "workbench.action.newWindow" + } + ] + }, + { + "key": "S", + "name": "+Show", + "icon": "info", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Show debug console", + "icon": "debug-console", + "type": "command", + "command": "workbench.debug.action.toggleRepl" + }, + { + "key": "e", + "name": "Show explorer", + "icon": "list-tree", + "type": "command", + "command": "workbench.view.explorer" + }, + { + "key": "g", + "name": "Show source control", + "icon": "source-control", + "type": "command", + "command": "workbench.view.scm" + }, + { + "key": "n", + "name": "Show notification", + "icon": "comment", + "type": "command", + "command": "notifications.toggleList" + }, + { + "key": "o", + "name": "Show output", + "icon": "output", + "type": "command", + "command": "workbench.action.output.toggleOutput" + }, + { + "key": "p", + "name": "Show problem", + "icon": "error", + "type": "command", + "command": "workbench.actions.view.problems" + }, + { + "key": "r", + "name": "Show remote explorer", + "icon": "remote-explorer", + "type": "command", + "command": "workbench.view.remote" + }, + { + "key": "s", + "name": "Show search", + "icon": "search", + "type": "command", + "command": "workbench.view.search" + }, + { + "key": "t", + "name": "Show test", + "icon": "beaker", + "type": "command", + "command": "workbench.view.extension.test" + }, + { + "key": "x", + "name": "Show extensions", + "icon": "extensions", + "type": "command", + "command": "workbench.view.extensions" + } + ] + }, + { + "key": "T", + "name": "+UI toggles", + "icon": "tools", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Toggle side bar visibility", + "icon": "split-horizontal", + "type": "command", + "command": "workbench.action.toggleSidebarVisibility" + }, + { + "key": "c", + "name": "Toggle centered layout", + "icon": "list-flat", + "type": "command", + "command": "workbench.action.toggleCenteredLayout" + }, + { + "key": "i", + "name": "Select icon theme", + "icon": "symbol-misc", + "type": "command", + "command": "workbench.action.selectIconTheme" + }, + { + "key": "j", + "name": "Toggle panel visibility", + "icon": "output", + "type": "command", + "command": "workbench.action.togglePanel" + }, + { + "key": "m", + "name": "Toggle maximized panel", + "icon": "chevron-up", + "type": "command", + "command": "workbench.action.toggleMaximizedPanel" + }, + { + "key": "s", + "name": "Select theme", + "icon": "paintcan", + "type": "command", + "command": "workbench.action.selectTheme" + }, + { + "key": "t", + "name": "Toggle tool/activity bar visibility", + "icon": "tools", + "type": "command", + "command": "workbench.action.toggleActivityBarVisibility" + }, + { + "key": "z", + "name": "Toggle zen mode", + "icon": "eye", + "type": "command", + "command": "workbench.action.toggleZenMode" + }, + { + "key": "F", + "name": "Toggle full screen", + "icon": "screen-full", + "type": "command", + "command": "workbench.action.toggleFullScreen" + }, + { + "key": "M", + "name": "Toggle minimap", + "icon": "symbol-ruler", + "type": "command", + "command": "editor.action.toggleMinimap" + }, + { + "key": "T", + "name": "Toggle tab visibility", + "icon": "files", + "type": "command", + "command": "workbench.action.toggleTabsVisibility" + } + ] + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "m", + "name": "+Major", + "icon": "code", + "type": "conditional", + "bindings": [ + { + "key": "languageId:c", + "name": "C", + "type": "bindings", + "bindings": [ + { + "key": "h", + "name": "Switch Header/Source", + "icon": "files", + "type": "command", + "command": "clangd.switchheadersource" + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Switch Header/Source", + "icon": "files", + "type": "command", + "command": "clangd.switchheadersource" + }, + { + "key": "d", + "name": "Go to declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.revealDeclaration" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.actions.view.problems" + }, + { + "key": "f", + "name": "Go to file in explorer", + "icon": "file", + "type": "command", + "command": "workbench.files.action.showActiveFileInExplorer" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Rename Symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + }, + { + "key": "f", + "name": "Apply FixIt", + "icon": "lightbulb-autofix", + "type": "command", + "command": "clangd.applyFix" + }, + { + "key": "t", + "name": "Apply Tweak", + "icon": "lightbulb", + "type": "command", + "command": "clangd.applyTweak" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekDeclaration" + }, + { + "key": "g", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:cpp", + "name": "C++", + "type": "bindings", + "bindings": [ + { + "key": "h", + "name": "Switch Header/Source", + "icon": "files", + "type": "command", + "command": "clangd.switchheadersource" + }, + { + "key": "c", + "name": "Show project configuration (.clangd)", + "icon": "project", + "type": "command", + "command": "clangd.projectConfig" + }, + { + "key": "b", + "name": "+Backend", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Show project configuration (.clangd)", + "icon": "project", + "type": "command", + "command": "clangd.projectConfig" + }, + { + "key": "C", + "name": "Show user configuration", + "icon": "gear", + "type": "command", + "command": "clangd.userConffig" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Switch Header/Source", + "icon": "files", + "type": "command", + "command": "C_Cpp.SwitchHeaderSource" + }, + { + "key": "d", + "name": "Go to declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.revealDeclaration" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.actions.view.problems" + }, + { + "key": "f", + "name": "Go to file in explorer", + "icon": "file", + "type": "command", + "command": "workbench.files.action.showActiveFileInExplorer" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Rename Symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "clangd.applyRename" + }, + { + "key": "f", + "name": "Apply FixIt", + "icon": "lightbulb-autofix", + "type": "command", + "command": "clangd.applyFix" + }, + { + "key": "t", + "name": "Apply Tweak", + "icon": "lightbulb", + "type": "command", + "command": "clangd.applyTweak" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekDeclaration" + }, + { + "key": "g", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:latex", + "name": "LaTeX", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "+Backend", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "l", + "name": "View Workshop Messages", + "icon": "output", + "type": "command", + "command": "latex-workshop.log" + }, + { + "key": "m", + "name": "Insert root magic comment", + "icon": "comment", + "type": "command", + "command": "latex-workshop.addtexroot" + }, + { + "key": "s", + "name": "Select the current environment name", + "icon": "package", + "type": "command", + "command": "latex-workshop.select-envname" + }, + { + "key": "S", + "name": "Select the current environment content", + "icon": "package", + "type": "command", + "command": "latex-workshop.select-envcontent" + } + ] + }, + { + "key": "c", + "name": "+Build", + "icon": "gear", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Build Project", + "icon": "project", + "type": "command", + "command": "latex-workshop.build" + }, + { + "key": "i", + "name": "Show compilation info", + "icon": "info", + "type": "command", + "command": "latex-workshop.showCompilationPanel" + }, + { + "key": "k", + "name": "Kill compiler process", + "icon": "stop", + "type": "command", + "command": "latex-workshop.kill" + }, + { + "key": "l", + "name": "Clean up auxiliary files", + "icon": "trash", + "type": "command", + "command": "latex-workshop.clean" + }, + { + "key": "l", + "name": "View compiler logs", + "icon": "output", + "type": "command", + "command": "latex-workshop.compilerlog" + }, + { + "key": "r", + "name": "Build with recipe", + "icon": "heart", + "type": "command", + "command": "latex-workshop.recipes" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "e", + "name": "Navigate to matching begin/end pair", + "icon": "arrow-both", + "type": "command", + "command": "latex-workshop.navigate-envpair" + } + ] + }, + { + "key": "i", + "name": "+Insert", + "icon": "add", + "type": "bindings", + "bindings": [ + { + "key": "e", + "name": "Close current environment", + "icon": "close", + "type": "command", + "command": "latex-workshop.close-env" + }, + { + "key": "i", + "name": "item", + "icon": "list-unordered", + "type": "command", + "command": "latex-workshop.shortcut.item" + }, + { + "key": "w", + "name": "Surround/wrap selection with begin/end", + "icon": "selection", + "type": "command", + "command": "latex-workshop.wrap-env" + } + ] + }, + { + "key": "l", + "name": "+Bibtex", + "icon": "book", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Align", + "icon": "list-flat", + "type": "command", + "command": "latex-workshop.bibalign" + }, + { + "key": "s", + "name": "Sort", + "icon": "selection", + "type": "command", + "command": "latex-workshop.bibsort" + }, + { + "key": "S", + "name": "Sort & Align", + "icon": "list-tree", + "type": "command", + "command": "latex-workshop.bibalignsort" + } + ] + }, + { + "key": "p", + "name": "+Preview", + "icon": "open-preview", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "View Document", + "icon": "preview", + "type": "command", + "command": "latex-workshop.view" + }, + { + "key": "m", + "name": "Toggle Math Preview Panel", + "icon": "symbol-operator", + "type": "command", + "command": "latex-workshop.toggleMathPreviewPanel" + }, + { + "key": "p", + "name": "SyncTeX from cursor", + "icon": "open-preview", + "type": "command", + "command": "latex-workshop.synctex" + }, + { + "key": "r", + "name": "Refresh all viewers", + "icon": "refresh", + "type": "command", + "command": "latex-workshop.refresh-viewer" + } + ] + }, + { + "key": "x", + "name": "+Text", + "icon": "symbol-text", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Bold", + "icon": "bold", + "type": "command", + "command": "latex-workshop.shortcut.textbf" + }, + { + "key": "c", + "name": "Small Caps", + "icon": "preserve-case", + "type": "command", + "command": "latex-workshop.shortcut.textsc" + }, + { + "key": "e", + "name": "Emphasis", + "icon": "eye", + "type": "command", + "command": "latex-workshop.shortcut.emph" + }, + { + "key": "f", + "name": "Sans Serif", + "icon": "text-size", + "type": "command", + "command": "latex-workshop.shortcut.textsf" + }, + { + "key": "i", + "name": "Italic", + "icon": "italic", + "type": "command", + "command": "latex-workshop.shortcut.textit" + }, + { + "key": "n", + "name": "Normal", + "icon": "symbol-text", + "type": "command", + "command": "latex-workshop.shortcut.textnormal" + }, + { + "key": "r", + "name": "Roman", + "icon": "symbol-text", + "type": "command", + "command": "latex-workshop.shortcut.textrm" + }, + { + "key": "t", + "name": "Terminal", + "icon": "chevron-right", + "type": "command", + "command": "latex-workshop.shortcut.texttt" + }, + { + "key": "u", + "name": "Underline", + "icon": "remove", + "type": "command", + "command": "latex-workshop.shortcut.underline" + }, + { + "key": "m", + "name": "+Math Fonts", + "icon": "symbol-operator", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Calligraphic", + "icon": "edit", + "type": "command", + "command": "latex-workshop.shortcut.mathcal" + }, + { + "key": "b", + "name": "Bold", + "icon": "bold", + "type": "command", + "command": "latex-workshop.shortcut.mathbf" + }, + { + "key": "f", + "name": "Sans Serif", + "icon": "text-size", + "type": "command", + "command": "latex-workshop.shortcut.mathsf" + }, + { + "key": "i", + "name": "Italic", + "icon": "italic", + "type": "command", + "command": "latex-workshop.shortcut.mathit" + }, + { + "key": "r", + "name": "Roman", + "icon": "symbol-text", + "type": "command", + "command": "latex-workshop.shortcut.mathrm" + }, + { + "key": "t", + "name": "Terminal", + "icon": "chevron-right", + "type": "command", + "command": "latex-workshop.shortcut.mathtt" + } + ] + } + ] + } + ] + }, + { + "key": "languageId:markdown", + "name": "Markdown", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "+Buffer commands", + "icon": "file", + "type": "bindings", + "bindings": [ + { + "key": "e", + "name": "Export to HTML", + "icon": "file-code", + "type": "command", + "command": "markdown.extension.printToHtml" + }, + { + "key": "p", + "name": "Open preview to the side", + "icon": "open-preview", + "type": "command", + "command": "markdown.showPreviewToSide" + }, + { + "key": "P", + "name": "Open preview in current group", + "icon": "preview", + "type": "command", + "command": "markdown.showPreview" + } + ] + }, + { + "key": "t", + "name": "+Table of Contents", + "icon": "list-tree", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Create Table of Contents", + "icon": "list-tree", + "type": "command", + "command": "markdown.extension.toc.create" + }, + { + "key": "n", + "name": "Add section numbers", + "icon": "list-ordered", + "type": "command", + "command": "markdown.extension.toc.addSecNumbers" + }, + { + "key": "u", + "name": "Update Table of Contents", + "icon": "refresh", + "type": "command", + "command": "markdown.extension.toc.update" + }, + { + "key": "N", + "name": "Remove section numbers", + "icon": "list-unordered", + "type": "command", + "command": "markdown.extension.toc.removeSecNumbers" + } + ] + }, + { + "key": "x", + "name": "+Text", + "icon": "symbol-text", + "type": "bindings", + "bindings": [ + { + "key": "[", + "name": "Decrease Heading level", + "icon": "chevron-left", + "type": "transient", + "command": "markdown.extension.editing.toggleHeadingDown", + "bindings": [ + { + "key": "[", + "name": "Decrease Heading level", + "icon": "chevron-left", + "type": "command", + "command": "markdown.extension.editing.toggleHeadingDown" + }, + { + "key": "]", + "name": "Increase Heading level", + "icon": "chevron-right", + "type": "command", + "command": "markdown.extension.editing.toggleHeadingUp" + } + ] + }, + { + "key": "]", + "name": "Increase Heading level", + "icon": "chevron-right", + "type": "transient", + "command": "markdown.extension.editing.toggleHeadingUp", + "bindings": [ + { + "key": "[", + "name": "Decrease Heading level", + "icon": "chevron-left", + "type": "command", + "command": "markdown.extension.editing.toggleHeadingDown" + }, + { + "key": "]", + "name": "Increase Heading level", + "icon": "chevron-right", + "type": "command", + "command": "markdown.extension.editing.toggleHeadingUp" + } + ] + }, + { + "key": "`", + "name": "Toggle inline code", + "icon": "code", + "type": "command", + "command": "markdown.extension.editing.toggleCodeSpan" + }, + { + "key": "b", + "name": "Toggle bold", + "icon": "bold", + "type": "command", + "command": "markdown.extension.editing.toggleBold" + }, + { + "key": "i", + "name": "Toggle italic", + "icon": "italic", + "type": "command", + "command": "markdown.extension.editing.toggleItalic" + }, + { + "key": "l", + "name": "Toggle list", + "icon": "list-unordered", + "type": "command", + "command": "markdown.extension.editing.toggleList" + }, + { + "key": "m", + "name": "Toggle math", + "icon": "symbol-operator", + "type": "command", + "command": "markdown.extension.editing.toggleMath" + }, + { + "key": "s", + "name": "Toggle strikethrough", + "icon": "remove", + "type": "command", + "command": "markdown.extension.editing.toggleStrikethrough" + }, + { + "key": "~", + "name": "Toggle code block", + "icon": "file-code", + "type": "command", + "command": "markdown.extension.editing.toggleCodeBlock" + } + ] + } + ] + }, + { + "key": "languageId:python", + "name": "Python", + "type": "bindings", + "bindings": [ + { + "key": "v", + "name": "+Virtualenv", + "icon": "package", + "type": "command", + "command": "python.setInterpreter" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "b", + "name": "+Backend", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "o", + "name": "Show LSP output", + "icon": "output", + "type": "command", + "command": "python.viewLanguageServerOutput" + }, + { + "key": "r", + "name": "Restart LSP", + "icon": "server-process", + "type": "command", + "command": "python.analysis.restartLanguageServer" + } + ] + }, + { + "key": "c", + "name": "+Execute", + "icon": "play", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Execute file in terminal", + "icon": "terminal", + "type": "command", + "command": "python.execInTerminal" + }, + { + "key": "C", + "name": "Execute file in terminal", + "icon": "terminal", + "type": "command", + "command": "python.execInTerminal" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in file", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Refactor menu", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.refactor" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + }, + { + "key": "I", + "name": "Sort imports", + "icon": "selection", + "type": "command", + "command": "python.sortImports" + } + ] + }, + { + "key": "s", + "name": "+REPL", + "icon": "repl", + "type": "bindings", + "bindings": [ + { + "key": "i", + "name": "Start REPL", + "icon": "repl", + "type": "command", + "command": "python.startREPL" + }, + { + "key": "l", + "name": "Send line/selection to REPL", + "icon": "selection", + "type": "command", + "command": "python.execSelectionInTerminal" + }, + { + "key": "r", + "name": "Send line/selection to REPL", + "icon": "selection", + "type": "command", + "command": "python.execSelectionInTerminal" + } + ] + }, + { + "key": "t", + "name": "+Test", + "icon": "beaker", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Run all tests", + "icon": "beaker", + "type": "command", + "command": "testing.runAll" + }, + { + "key": "b", + "name": "Run current test file", + "icon": "file", + "type": "command", + "command": "testing.runCurrentFile" + }, + { + "key": "r", + "name": "Re-run failed tests", + "icon": "close", + "type": "command", + "command": "testing.reRunFailTests" + }, + { + "key": "t", + "name": "Select and run test", + "icon": "list-unordered", + "type": "command", + "command": "testing.runSelected" + }, + { + "key": "A", + "name": "Debug all tests", + "icon": "bug", + "type": "command", + "command": "testing.debugAll" + }, + { + "key": "T", + "name": "Select and debug test", + "icon": "debug-alt", + "type": "command", + "command": "testing.debugSelected" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:csharp", + "name": "C#", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "+Backend/OmniSharp", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "o", + "name": "Show output", + "icon": "output", + "type": "command", + "command": "o.showOutput" + }, + { + "key": "r", + "name": "Restart OmniSharp", + "icon": "server-process", + "type": "command", + "command": "o.restart" + }, + { + "key": "s", + "name": "Select a project and start", + "icon": "project", + "type": "command", + "command": "o.pickProjectAndStart" + } + ] + }, + { + "key": "d", + "name": "+Debug", + "icon": "bug", + "type": "bindings", + "bindings": [ + { + "key": "l", + "name": "List process for attach", + "icon": "server-process", + "type": "command", + "command": "csharp.listProcess" + }, + { + "key": "L", + "name": "List remote processes for attach", + "icon": "remote", + "type": "command", + "command": "csharp.listRemoteProcess" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "i", + "name": "Go to implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.goToImplementation" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + } + ] + }, + { + "key": "p", + "name": "+Project", + "icon": "project", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Restore project", + "icon": "clock", + "type": "command", + "command": "dotnet.restore.project" + }, + { + "key": "R", + "name": "Restore all projects", + "icon": "clock", + "type": "command", + "command": "dotnet.restore.all" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Quick fix", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "t", + "name": "+Test", + "icon": "beaker", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Debug test under cursor", + "icon": "testing-debug-icon", + "type": "command", + "command": "dotnet.test.debugTestsInContext" + }, + { + "key": "t", + "name": "Run test under cursor", + "icon": "testing-run-icon", + "type": "command", + "command": "dotnet.test.runTestsInContext" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:fsharp", + "name": "F#", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "c", + "name": "+Compile", + "icon": "gear", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "MSBuild: Build current solution", + "icon": "package", + "type": "command", + "command": "MSBuild.buildCurrentSolution" + }, + { + "key": "d", + "name": "F#: Run default project", + "icon": "play", + "type": "command", + "command": "fsharp.runDefaultProject" + }, + { + "key": "l", + "name": "MSBuild: Clean current solution", + "icon": "trash", + "type": "command", + "command": "MSBuild.cleanCurrentSolution" + }, + { + "key": "p", + "name": "MSBuild: Build current project", + "icon": "project", + "type": "command", + "command": "MSBuild.buildCurrent" + }, + { + "key": "r", + "name": "MSBuild: Re-build current solution", + "icon": "refresh", + "type": "command", + "command": "MSBuild.rebuildCurrentSolution" + }, + { + "key": "D", + "name": "F#: Debug default project", + "icon": "bug", + "type": "command", + "command": "fsharp.debugDefaultProject" + }, + { + "key": "L", + "name": "MSBuild: Clean current project", + "icon": "trash", + "type": "command", + "command": "MSBuild.cleanCurrent" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "t", + "name": "Go to type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.goToTypeDefinition" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "s", + "name": "+FSI REPL", + "icon": "repl", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "FSI: Send file", + "icon": "file", + "type": "command", + "command": "fsi.SendFile" + }, + { + "key": "l", + "name": "FSI: Send line", + "type": "command", + "icon": "list-flat", + "command": "fsi.SendLine" + }, + { + "key": "s", + "name": "FSI: Send selection", + "icon": "list-selection", + "type": "command", + "command": "fsi.SendSelection" + }, + { + "key": "G", + "name": "FSI: Generate project references", + "icon": "references", + "type": "command", + "command": "fsi.GenerateProjectReferences" + }, + { + "key": "L", + "name": "FSI: Send last selection", + "icon": "list-selection", + "type": "command", + "command": "fsi.SendLastSelection" + }, + { + "key": "P", + "name": "FSI: Send references from project", + "icon": "project", + "type": "command", + "command": "fsi.SendProjectReferences" + }, + { + "key": "S", + "name": "FSI: Start", + "icon": "repl", + "type": "command", + "command": "fsi.Start" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + }, + { + "key": "t", + "name": "Peek type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekTypeDefinition" + } + ] + } + ] + }, + { + "key": "languageId:agda", + "name": "Agda", + "type": "bindings", + "bindings": [ + { + "key": ",", + "name": "Show goal type and context (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.goal-type-and-context[Simplified]" + }, + { + "key": ".", + "name": "Show goal type, context and inferred type (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.goal-type-context-and-inferred-type[Simplified]" + }, + { + "key": "=", + "name": "Show constraints", + "icon": "repl", + "type": "command", + "command": "agda-mode.show-constraints" + }, + { + "key": "?", + "name": "Show all goals", + "icon": "repl", + "type": "command", + "command": "agda-mode.show-goals" + }, + { + "key": "a", + "name": "Automatic proof search", + "icon": "repl", + "type": "command", + "command": "agda-mode.auto" + }, + { + "key": "b", + "name": "Move to previous goal", + "icon": "repl", + "type": "command", + "command": "agda-mode.previous-goal" + }, + { + "key": "c", + "name": "Case split", + "icon": "repl", + "type": "command", + "command": "agda-mode.case" + }, + { + "key": "d", + "name": "Infer type (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.infer-type[Simplified]" + }, + { + "key": "e", + "name": "Show context (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.context[Simplified]" + }, + { + "key": "f", + "name": "Move to next goal", + "icon": "repl", + "type": "command", + "command": "agda-mode.next-goal" + }, + { + "key": "h", + "name": "Show helper function type (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.helper-function-type[Simplified]" + }, + { + "key": "l", + "name": "Load file", + "icon": "repl", + "type": "command", + "command": "agda-mode.load" + }, + { + "key": "n", + "name": "Compute normal form (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.compute-normal-form[DefaultCompute]" + }, + { + "key": "r", + "name": "Refine", + "icon": "repl", + "type": "command", + "command": "agda-mode.refine" + }, + { + "key": "s", + "name": "Solve constraints (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.solve-constraints[Simplified]" + }, + { + "key": "t", + "name": "Show goal type (simplified)", + "icon": "repl", + "type": "command", + "command": "agda-mode.goal-type[Simplified]" + }, + { + "key": "w", + "name": "Why in scope", + "icon": "repl", + "type": "bindings", + "command": "agda-mode.why-in-scope" + }, + { + "key": "x", + "name": "+Backend", + "icon": "repl", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Compile module", + "icon": "repl", + "type": "command", + "command": "agda-mode.compile" + }, + { + "key": "h", + "name": "Toggle display of implicit arguments", + "icon": "repl", + "type": "command", + "command": "agda-mode.toggle-display-of-implicit-arguments" + }, + { + "key": "q", + "name": "Quit", + "icon": "repl", + "type": "command", + "command": "agda-mode.quit" + }, + { + "key": "r", + "name": "Restart", + "icon": "repl", + "type": "command", + "command": "agda-mode.restart" + } + ] + } + ] + }, + { + "key": "languageId:clojure", + "name": "Clojure", + "type": "bindings", + "bindings": [ + { + "key": "!", + "name": "Disconnect from REPL", + "icon": "debug-disconnect", + "type": "command", + "command": "calva.disconnect" + }, + { + "key": "\"", + "name": "Jack-in to REPL", + "icon": "repl", + "type": "command", + "command": "calva.jackIn" + }, + { + "key": "'", + "name": "Connect to REPL", + "icon": "repl", + "type": "command", + "command": "calva.connect" + }, + { + "key": ".", + "name": "Connect or jack-in", + "icon": "repl", + "type": "command", + "command": "calva.jackInOrConnect" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format current form", + "icon": "list-selection", + "type": "command", + "command": "calva-fmt.formatCurrentForm" + }, + { + "key": "a", + "name": "Align current form", + "icon": "list-flat", + "type": "command", + "command": "calva-fmt.alignCurrentForm" + }, + { + "key": "d", + "name": "Dedent line", + "icon": "arrow-left", + "type": "command", + "command": "calva-fmt.tabDedent" + }, + { + "key": "i", + "name": "Indent line", + "icon": "arrow-right", + "type": "command", + "command": "calva-fmt.tabIndent" + } + ] + }, + { + "key": "d", + "name": "+Debug", + "icon": "bug", + "type": "bindings", + "bindings": [ + { + "key": "i", + "name": "Last evaluation results", + "icon": "chevron-right", + "type": "command", + "command": "calva.debug.instrument" + }, + { + "key": "r", + "name": "Last evaluation results", + "icon": "chevron-right", + "type": "command", + "command": "calva.copyLastResults" + }, + { + "key": "s", + "name": "Last stacktrace", + "icon": "debug-stackframe", + "type": "command", + "command": "calva.printLastStacktrace" + } + ] + }, + { + "key": "e", + "name": "+Evaluate", + "icon": "chevron-right", + "type": "bindings", + "bindings": [ + { + "key": ":", + "name": "Evaluate current form as comment", + "type": "command", + "command": "calva.evaluateSelectionAsComment" + }, + { + "key": ";", + "name": "Evaluate top-level form as comment", + "type": "command", + "command": "calva.evaluateTopLevelFormAsComment" + }, + { + "key": "e", + "name": "Evaluate current expression", + "type": "command", + "command": "calva.evaluateSelection" + }, + { + "key": "f", + "name": "Evaluate top-level expression", + "type": "command", + "command": "calva.evaluateCurrentTopLevelForm" + }, + { + "key": "i", + "name": "Interrupt evaluation", + "type": "command", + "command": "calva.interruptAllEvaluations" + }, + { + "key": "l", + "name": "Clear inline evaluation results", + "type": "command", + "command": "calva.clearInlineResults" + }, + { + "key": "n", + "name": "Evaluate all code in namespace", + "type": "command", + "command": "calva.loadFile" + }, + { + "key": "s", + "name": "Select expression", + "type": "command", + "command": "calva.selectCurrentForm" + }, + { + "key": "t", + "name": "Clear evaluation results", + "type": "command", + "command": "calva.requireREPLUtilities" + }, + { + "key": "w", + "name": "Replace form with evaluation result", + "type": "command", + "command": "calva.evaluateSelectionReplace" + } + ] + }, + { + "key": "k", + "name": "+Structural editing", + "icon": "symbol-struct", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Toggle paredit mode", + "type": "command", + "command": "paredit.togglemode" + }, + { + "key": "b", + "name": "Barf expression forward", + "type": "command", + "command": "paredit.barfSexpForward" + }, + { + "key": "c", + "name": "Convolute expression", + "type": "command", + "command": "paredit.convolute" + }, + { + "key": "h", + "name": "Backward expression", + "type": "command", + "command": "paredit.backwardSexp" + }, + { + "key": "j", + "name": "Forward down expression", + "type": "command", + "command": "paredit.forwardDownSexp" + }, + { + "key": "k", + "name": "Backward down expression", + "type": "command", + "command": "paredit.backwardDownSexp" + }, + { + "key": "l", + "name": "Forward expression", + "type": "command", + "command": "paredit.forwardSexp" + }, + { + "key": "r", + "name": "Raise expression", + "type": "command", + "command": "paredit.raiseSexp" + }, + { + "key": "s", + "name": "Slurp expression forward", + "type": "command", + "command": "paredit.slurpSexpForward" + }, + { + "key": "t", + "name": "Transpose expression", + "type": "command", + "command": "paredit.transpose" + }, + { + "key": "B", + "name": "Barf expression backward", + "type": "command", + "command": "paredit.barfSexpBackward" + }, + { + "key": "H", + "name": "Backward up expression", + "type": "command", + "command": "paredit.backwardUpSexp" + }, + { + "key": "J", + "name": "Join expression", + "type": "command", + "command": "paredit.joinSexp" + }, + { + "key": "L", + "name": "Forward up expression", + "type": "command", + "command": "paredit.forwardUpSexp" + }, + { + "key": "S", + "name": "Slurp expression backward", + "type": "command", + "command": "paredit.slurpSexpBackward" + }, + { + "key": "w", + "name": "+Wrap", + "type": "bindings", + "bindings": [ + { + "key": "\"", + "name": "Wrap around \"\"", + "type": "command", + "command": "paredit.wrapAroundQuote" + }, + { + "key": "(", + "name": "Wrap around ()", + "type": "command", + "command": "paredit.wrapAroundParens" + }, + { + "key": "[", + "name": "Wrap around []", + "type": "command", + "command": "paredit.wrapAroundSquare" + }, + { + "key": "c", + "name": "Rewrap {}", + "type": "command", + "command": "paredit.rewrapCurly" + }, + { + "key": "p", + "name": "Rewrap ()", + "type": "command", + "command": "paredit.rewrapParens" + }, + { + "key": "q", + "name": "Rewrap \"\"", + "type": "command", + "command": "paredit.rewrapQuote" + }, + { + "key": "s", + "name": "Rewrap []", + "type": "command", + "command": "paredit.rewrapSquare" + }, + { + "key": "{", + "name": "Wrap around {}", + "type": "command", + "command": "paredit.wrapAroundCurly" + } + ] + } + ] + }, + { + "key": "m", + "name": "+Manage REPL session", + "icon": "repl", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Connect or jack-in", + "type": "command", + "command": "calva.jackInOrConnect" + }, + { + "key": "c", + "name": "Connect to REPL server for project", + "type": "command", + "command": "calva.connect" + }, + { + "key": "j", + "name": "Start REPL server for project (jack-in)", + "type": "command", + "command": "calva.jackIn" + }, + { + "key": "q", + "name": "Disconnect (quit) from REPL server", + "type": "command", + "command": "calva.disconnect" + }, + { + "key": "r", + "name": "Refresh changed namespaces", + "type": "command", + "command": "calva.refresh" + }, + { + "key": "s", + "name": "Select cljs build connection", + "type": "command", + "command": "calva.switchCljsBuild" + }, + { + "key": "t", + "name": "Toggle cljc session (clj, cljs)", + "type": "command", + "command": "calva.toggleCLJCSession" + }, + { + "key": "C", + "name": "Run custom REPL command", + "type": "command", + "command": "calva.runCustomREPLCommand" + }, + { + "key": "R", + "name": "Refresh all namespaces", + "type": "command", + "command": "calva.refreshAll" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "+Add", + "type": "bindings", + "bindings": [ + { + "key": "l", + "name": "Add missing library specification", + "type": "command", + "command": "clojureLsp.refactor.addMissingLibspec" + } + ] + }, + { + "key": "c", + "name": "+Cycle clean convert", + "type": "bindings", + "bindings": [ + { + "key": "n", + "name": "Clean namespace definition", + "type": "command", + "command": "clojureLsp.refactor.cleanNs" + }, + { + "key": "p", + "name": "Cycle privacy", + "type": "command", + "command": "clojureLsp.refactor.cyclePrivacy" + } + ] + }, + { + "key": "e", + "name": "+Extract expand", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Extract function", + "type": "command", + "command": "clojureLsp.refactor.extractFunction" + }, + { + "key": "l", + "name": "Expand let", + "type": "command", + "command": "clojureLsp.refactor.expandLet" + } + ] + }, + { + "key": "i", + "name": "+Introduce inline", + "type": "bindings", + "bindings": [ + { + "key": "l", + "name": "Introduce let", + "type": "command", + "command": "clojureLsp.refactor.introduceLet" + }, + { + "key": "s", + "name": "Inline symbol", + "type": "command", + "command": "clojureLsp.refactor.inlineSymbol" + } + ] + }, + { + "key": "m", + "name": "+Move", + "type": "bindings", + "bindings": [ + { + "key": "l", + "name": "Move to let", + "type": "command", + "command": "clojureLsp.refactor.moveToLet" + } + ] + }, + { + "key": "t", + "name": "+Thread macros", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Thread first", + "type": "command", + "command": "clojureLsp.refactor.threadFirst" + }, + { + "key": "l", + "name": "Thread last", + "type": "command", + "command": "clojureLsp.refactor.threadLast" + }, + { + "key": "u", + "name": "Unwind thread", + "type": "command", + "command": "clojureLsp.refactor.unwindThread" + }, + { + "key": "F", + "name": "Thread first all", + "type": "command", + "command": "clojureLsp.refactor.threadFirstAll" + }, + { + "key": "L", + "name": "Thread last all", + "type": "command", + "command": "clojureLsp.refactor.threadLastAll" + }, + { + "key": "U", + "name": "Unwind thread all", + "type": "command", + "command": "clojureLsp.refactor.unwindThread" + } + ] + } + ] + }, + { + "key": "t", + "name": "+Tests", + "icon": "beaker", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Run all tests", + "icon": "beaker", + "type": "command", + "command": "calva.runAllTests" + }, + { + "key": "f", + "name": "Run failing tests", + "icon": "close", + "type": "command", + "command": "calva.rerunTests" + }, + { + "key": "n", + "name": "Run tests in current namespace", + "icon": "symbol-namespace", + "type": "command", + "command": "calva.runNamespaceTests" + }, + { + "key": "t", + "name": "Run current test", + "icon": "whole-word", + "type": "command", + "command": "calva.runTestUnderCursor" + } + ] + }, + { + "key": "T", + "name": "+Toggle", + "icon": "settings", + "type": "bindings", + "bindings": [ + { + "key": "p", + "name": "Toggle pretty print results", + "icon": "eye", + "type": "command", + "command": "calva.togglePrettyPrint" + } + ] + } + ] + }, + { + "key": "languageId:coq", + "name": "coq", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Proof goto current point", + "icon": "debug-start", + "type": "command", + "command": "extension.coq.interpretToPoint" + }, + { + "key": "b", + "name": "Proof step back", + "icon": "debug-step-back", + "type": "command", + "command": "extension.coq.stepBackward" + }, + { + "key": "f", + "name": "Proof step forward", + "icon": "debug-step-over", + "type": "command", + "command": "extension.coq.stepForward" + }, + { + "key": "g", + "name": "Go to the current focus location", + "icon": "sync", + "type": "command", + "command": "extension.coq.moveCursorToFocus" + }, + { + "key": "o", + "name": "Open proof view", + "icon": "open-preview", + "type": "command", + "command": "extension.coq.proofView.open" + }, + { + "key": "v", + "name": "View the proof-state at the cursor position", + "icon": "eye", + "type": "command", + "command": "extension.coq.proofView.viewStateAt" + }, + { + "key": "G", + "name": "Proof goto end", + "icon": "debug-continue", + "type": "command", + "command": "extension.coq.interpretToEnd" + }, + { + "key": "a", + "name": "Ask prover", + "icon": "question", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "About", + "icon": "info", + "type": "command", + "command": "extension.coq.query.prompt.about" + }, + { + "key": "c", + "name": "Check", + "icon": "check", + "type": "command", + "command": "extension.coq.query.prompt.check" + }, + { + "key": "f", + "name": "Find", + "icon": "search", + "type": "command", + "command": "extension.coq.query.prompt.search" + }, + { + "key": "l", + "name": "Locate", + "icon": "location", + "type": "command", + "command": "extension.coq.query.prompt.locate" + }, + { + "key": "p", + "name": "Print", + "icon": "eye", + "type": "command", + "command": "extension.coq.query.prompt.print" + } + ] + }, + { + "key": "p", + "name": "Send command to prover", + "icon": "console", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Finish coq computations", + "icon": "notebook-state-success", + "type": "command", + "command": "extension.coq.finishComputations" + }, + { + "key": "i", + "name": "Interrupt coqtop backend", + "icon": "notebook-stop", + "type": "command", + "command": "extension.coq.interrupt" + }, + { + "key": "q", + "name": "Quit coqtop backend", + "icon": "panel-close", + "type": "command", + "command": "extension.coq.quit" + }, + { + "key": "r", + "name": "Reset coqtop backend", + "icon": "notebook-delete-cell", + "type": "command", + "command": "extension.coq.reset" + } + ] + }, + { + "key": "q", + "name": "Query prover about foucsed symbol", + "icon": "info", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "About", + "icon": "info", + "type": "command", + "command": "extension.coq.query.about" + }, + { + "key": "c", + "name": "Check", + "icon": "check", + "type": "command", + "command": "extension.coq.query.check" + }, + { + "key": "f", + "name": "Find", + "icon": "search", + "type": "command", + "command": "extension.coq.query.search" + }, + { + "key": "l", + "name": "Locate", + "icon": "location", + "type": "command", + "command": "extension.coq.query.locate" + }, + { + "key": "p", + "name": "Print", + "icon": "eye", + "type": "command", + "command": "extension.coq.query.print" + } + ] + }, + { + "key": "T", + "name": "UI toggle", + "icon": "gear", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Toggle display of all basic low level contents", + "icon": "symbol-interface", + "type": "command", + "command": "extension.coq.display.toggle.allBasicLowLevelContents" + }, + { + "key": "c", + "name": "Toggle display of coercions", + "icon": "symbol-enum", + "type": "command", + "command": "extension.coq.display.toggle.coercions" + }, + { + "key": "e", + "name": "Toggle display of existential variable instances", + "icon": "symbol-keyword", + "type": "command", + "command": "extension.coq.display.toggle.existentialVariableInstances" + }, + { + "key": "i", + "name": "Toggle display of implicit arguments", + "icon": "symbol-parameter", + "type": "command", + "command": "extension.coq.display.toggle.implicitArguments" + }, + { + "key": "l", + "name": "Toggle display of all lowLevel contents", + "type": "command", + "icon": "symbol-constant", + "command": "extension.coq.display.toggle.allLowLevelContents" + }, + { + "key": "n", + "name": "Toggle display of notations", + "icon": "symbol-key", + "type": "command", + "command": "extension.coq.display.toggle.notations" + }, + { + "key": "r", + "name": "Toggle display of raw matching expressions", + "icon": "symbol-constructor", + "type": "command", + "command": "extension.coq.display.toggle.rawMatchingExpressions" + }, + { + "key": "u", + "name": "Toggle display of universe levels", + "icon": "symbol-module", + "type": "command", + "command": "extension.coq.display.toggle.universeLevels" + } + ] + } + ] + }, + { + "key": "languageId:dart", + "name": "Dart/Flutter", + "type": "bindings", + "bindings": [ + { + "key": ";", + "name": "Toggle Dartdoc comment", + "icon": "comment", + "type": "command", + "command": "dart.toggleDartdocComment" + }, + { + "key": "a", + "name": "Attach", + "icon": "remote-explorer", + "type": "command", + "command": "flutter.attach" + }, + { + "key": "c", + "name": "Clean", + "icon": "trash", + "type": "command", + "command": "flutter.clean" + }, + { + "key": "i", + "name": "Inspect widget", + "icon": "telescope", + "type": "command", + "command": "flutter.inspectWidget" + }, + { + "key": "m", + "name": "Sort members", + "icon": "selection", + "type": "command", + "command": "dart.sortMembers" + }, + { + "key": "r", + "name": "Hot reload", + "icon": "zap", + "type": "command", + "command": "flutter.hotReload" + }, + { + "key": "s", + "name": "Select device", + "icon": "vm-active", + "type": "command", + "command": "flutter.selectDevice" + }, + { + "key": "u", + "name": "Flutter upgrade", + "icon": "cloud-upload", + "type": "command", + "command": "flutter.upgrade" + }, + { + "key": "A", + "name": "Attach to process", + "icon": "server-process", + "type": "command", + "command": "flutter.attachProcess" + }, + { + "key": "D", + "name": "Flutter doctor", + "icon": "hubot", + "type": "command", + "command": "flutter.doctor" + }, + { + "key": "E", + "name": "Launch emulator", + "icon": "rocket", + "type": "command", + "command": "flutter.launchEmulator" + }, + { + "key": "P", + "name": "Profile app", + "icon": "search", + "type": "command", + "command": "flutter.runProfileMode" + }, + { + "key": "R", + "name": "Hot restart", + "icon": "sync", + "type": "command", + "command": "flutter.hotRestart" + }, + { + "key": "S", + "name": "Screenshot", + "icon": "device-camera", + "type": "command", + "command": "flutter.screenshot" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "i", + "name": "Go to implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.goToImplementation" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to super", + "icon": "symbol-class", + "type": "command", + "command": "dart.goToSuper" + }, + { + "key": "t", + "name": "Go to test/implementation file", + "icon": "beaker", + "type": "command", + "command": "dart.goToTestOrImplementationFile" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "T", + "name": "Go to tests", + "icon": "list-tree", + "type": "command", + "command": "dart.goToTests" + } + ] + }, + { + "key": "l", + "name": "+Logging", + "icon": "output", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Start logging analysis server", + "icon": "server-process", + "type": "command", + "command": "dart.startLoggingAnalysisServer" + }, + { + "key": "d", + "name": "Start logging debugging", + "icon": "bug", + "type": "command", + "command": "dart.startLoggingDebugging" + }, + { + "key": "e", + "name": "Start logging extension only", + "icon": "output", + "type": "command", + "command": "dart.startLoggingExtensionOnly" + }, + { + "key": "s", + "name": "Start logging", + "icon": "output", + "type": "command", + "command": "dart.startLogging" + }, + { + "key": "S", + "name": "Stop logging", + "icon": "output", + "type": "command", + "command": "dart.stopLogging" + } + ] + }, + { + "key": "o", + "name": "+Open", + "icon": "folder-opened", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Analyzer diagnostics", + "icon": "output", + "type": "command", + "command": "dart.openAnalyzerDiagnostics" + }, + { + "key": "c", + "name": "DevTools CPU profiler", + "icon": "telescope", + "type": "command", + "command": "dart.startLoggingDebugging" + }, + { + "key": "d", + "name": "Devtools", + "icon": "tools", + "type": "command", + "command": "flutter.openDevTools" + }, + { + "key": "l", + "name": "DevTools logging", + "icon": "output", + "type": "command", + "command": "dart.openDevToolsLogging" + }, + { + "key": "m", + "name": "DevTools memory", + "icon": "files", + "type": "command", + "command": "dart.openDevToolsMemory" + }, + { + "key": "n", + "name": "DevTools network", + "icon": "pulse", + "type": "command", + "command": "dart.openDevToolsNetwork" + } + ] + }, + { + "key": "p", + "name": "+Project/Packages", + "icon": "project", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Add dependency", + "icon": "symbol-module", + "type": "command", + "command": "dart.addDependency" + }, + { + "key": "g", + "name": "Pub get", + "icon": "cloud-download", + "type": "command", + "command": "flutter.packages.get" + }, + { + "key": "o", + "name": "Pub outdated", + "icon": "compare-changes", + "type": "command", + "command": "flutter.packages.outdated" + }, + { + "key": "u", + "name": "Pub upgrade", + "icon": "cloud-upload", + "type": "command", + "command": "flutter.packages.upgrade" + }, + { + "key": "D", + "name": "Add dev dependency", + "icon": "symbol-module", + "type": "command", + "command": "dart.addDevDependency" + }, + { + "key": "U", + "name": "Pub upgrade -major versions", + "icon": "cloud-upload", + "type": "command", + "command": "flutter.packages.upgrade.majorVersions" + }, + { + "key": "c", + "name": "+Create", + "icon": "add", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Dart project", + "icon": "rocket", + "type": "command", + "commmand": "dart.createProject" + }, + { + "key": "l", + "name": "Flutter plugin project", + "icon": "plug", + "type": "command", + "commmand": "flutter.createProject.plugin" + }, + { + "key": "m", + "name": "Flutter module project", + "icon": "module", + "type": "command", + "commmand": "flutter.createProject.module" + }, + { + "key": "p", + "name": "Flutter project", + "icon": "project", + "type": "command", + "commmand": "flutter.createProject" + }, + { + "key": "D", + "name": "Create DartDoc", + "icon": "book", + "type": "command", + "commmand": "dart.task.dartdoc" + }, + { + "key": "P", + "name": "Flutter package project", + "icon": "package", + "type": "command", + "commmand": "flutter.createProject.package" + } + ] + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Quick fix", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "t", + "name": "+Test", + "icon": "beaker", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Clear test results", + "icon": "trash", + "type": "command", + "command": "testing.clearTestResults" + }, + { + "key": "d", + "name": "Debug test at cursor", + "icon": "testing-debug-icon", + "type": "command", + "command": "testing.debugTestAtCursor" + }, + { + "key": "f", + "name": "Run failed tests", + "icon": "testing-failed-icon", + "type": "command", + "command": "testing.reRunFailTests" + }, + { + "key": "r", + "name": "Run tests", + "icon": "run-all", + "type": "command", + "command": "testing.runAll" + }, + { + "key": "t", + "name": "Run test at cursor", + "icon": "testing-run-icon", + "type": "command", + "command": "testing.runTestAtCursor" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + }, + { + "key": "T", + "name": "+Toggle", + "icon": "settings", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Brightness", + "icon": "star-half", + "type": "command", + "command": "flutter.toggleBrightness" + }, + { + "key": "d", + "name": "Debug painting", + "icon": "paintcan", + "type": "command", + "command": "flutter.toggleDebugPainting" + }, + { + "key": "e", + "name": "Check elevations", + "icon": "check", + "type": "command", + "command": "flutter.toggleCheckElevations" + }, + { + "key": "o", + "name": "Performance overlay", + "icon": "output", + "type": "command", + "command": "flutter.togglePerformanceOverlay" + }, + { + "key": "p", + "name": "Paint baselines", + "icon": "paintcan", + "type": "command", + "command": "flutter.togglePaintBaselines" + }, + { + "key": "r", + "name": "Repaint rainbow", + "icon": "symbol-color", + "type": "command", + "command": "flutter.toggleRepaintRainbow" + }, + { + "key": "s", + "name": "Slow animations", + "icon": "clock", + "type": "command", + "command": "flutter.toggleSlowAnimations" + }, + { + "key": "B", + "name": "Debug mode banner", + "icon": "bug", + "type": "command", + "command": "flutter.toggleDebugModeBanner" + } + ] + } + ] + }, + { + "key": "languageId:elixir", + "name": "Elixir", + "type": "bindings", + "bindings": [ + { + "key": "o", + "name": "Expand selected macro", + "icon": "symbol-function", + "type": "command", + "command": "extension.expandMacro" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "i", + "name": "Go to implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.goToImplementation" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Quick fix", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "p", + "name": "Transform function call to pipe operator", + "icon": "lightbulb-autofix", + "type": "command", + "command": "extension.toPipe" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + }, + { + "key": "P", + "name": "Transform pipe operator to function call", + "icon": "lightbulb-autofix", + "type": "command", + "command": "extension.fromPipe" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:go", + "name": "Go", + "type": "bindings", + "bindings": [ + { + "key": " ", + "name": "Show all commands", + "icon": "rocket", + "type": "command", + "command": "go.show.commands" + }, + { + "key": "a", + "name": "+Actions", + "icon": "zap", + "type": "bindings", + "bindings": [ + { + "key": "P", + "name": "Run code on Go Playground", + "icon": "squirrel", + "type": "command", + "command": "go.playground" + }, + { + "key": "p", + "name": "+Package actions", + "icon": "package", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Build package", + "icon": "gear", + "type": "command", + "command": "go.build.package" + }, + { + "key": "g", + "name": "Get package", + "icon": "cloud-download", + "type": "command", + "command": "go.get.package" + }, + { + "key": "i", + "name": "Install current package", + "icon": "package", + "type": "command", + "command": "go.install.package" + }, + { + "key": "l", + "name": "Lint package", + "icon": "warning", + "type": "command", + "command": "go.lint.package" + }, + { + "key": "s", + "name": "Browse packages", + "icon": "search", + "type": "command", + "command": "go.browse.packages" + }, + { + "key": "v", + "name": "Vet package", + "icon": "dashboard", + "type": "command", + "command": "go.vet.package" + } + ] + }, + { + "key": "w", + "name": "+Workspace actions", + "icon": "project", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Build workspace", + "icon": "gear", + "type": "command", + "command": "go.build.workspace" + }, + { + "key": "l", + "name": "Lint workspace", + "icon": "warning", + "type": "command", + "command": "go.lint.workspace" + }, + { + "key": "p", + "name": "Add package to workspace", + "icon": "add", + "type": "command", + "command": "go.add.package.workspace" + }, + { + "key": "v", + "name": "Vet workspace", + "icon": "dashboard", + "type": "command", + "command": "go.vet.workspace" + } + ] + } + ] + }, + { + "key": "b", + "name": "+Backend/environment", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "e", + "name": "Choose Go environment", + "icon": "package", + "type": "command", + "command": "go.environment.choose" + }, + { + "key": "g", + "name": "Show current GOPATH", + "icon": "file-submodule", + "type": "command", + "command": "go.gopath" + }, + { + "key": "i", + "name": "Install/update tools", + "icon": "cloud-download", + "type": "command", + "command": "go.tools.install" + }, + { + "key": "l", + "name": "Locate configured Go tools", + "icon": "tools", + "type": "command", + "command": "go.locate.tools" + }, + { + "key": "R", + "name": "Restart language server", + "icon": "server-process", + "type": "command", + "command": "go.languageserver.restart" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "h", + "name": "Show call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "references-view.showCallHierarchy" + }, + { + "key": "i", + "name": "Go to implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.goToImplementation" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "t", + "name": "Go to type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.goToTypeDefinition" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + } + ] + }, + { + "key": "i", + "name": "+Insert/remove", + "icon": "add", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Fill struct", + "icon": "symbol-struct", + "type": "command", + "command": "go.fill.struct" + }, + { + "key": "i", + "name": "Add import", + "icon": "symbol-reference", + "type": "command", + "command": "go.import.add" + }, + { + "key": "t", + "name": "Add tags to struct fields", + "icon": "add", + "type": "command", + "command": "go.add.tags" + }, + { + "key": "I", + "name": "Generate interface stubs", + "icon": "symbol-interface", + "type": "command", + "command": "go.impl.cursor" + }, + { + "key": "T", + "name": "Remove tags from struct fields", + "icon": "remove", + "type": "command", + "command": "go.remove.tags" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Quick fix", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "e", + "name": "Extract to function or variable", + "icon": "gather", + "type": "command", + "command": "editor.action.codeAction", + "args": { + "kind": "refactor.extract" + } + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "t", + "name": "+Test", + "icon": "beaker", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Cancel running tests", + "icon": "close", + "type": "command", + "command": "go.test.cancel" + }, + { + "key": "d", + "name": "Debug test at cursor", + "icon": "bug", + "type": "command", + "command": "go.debug.cursor" + }, + { + "key": "f", + "name": "Test file", + "icon": "file", + "type": "command", + "command": "go.test.file" + }, + { + "key": "l", + "name": "Test previous", + "icon": "clock", + "type": "command", + "command": "go.test.previous" + }, + { + "key": "p", + "name": "Test package", + "icon": "package", + "type": "command", + "command": "go.test.package" + }, + { + "key": "s", + "name": "Subtest at cursor", + "icon": "whole-word", + "type": "command", + "command": "go.subtest.cursor" + }, + { + "key": "t", + "name": "Test function at cursor", + "icon": "whole-word", + "type": "command", + "command": "go.test.cursor" + }, + { + "key": "w", + "name": "Test packages in workspace", + "icon": "project", + "type": "command", + "command": "go.test.workspace" + }, + { + "key": "P", + "name": "Apply cover profile", + "icon": "jersey", + "type": "command", + "command": "go.apply.coverprofile" + }, + { + "key": "b", + "name": "+Benchmarks", + "icon": "dashboard", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Benchmark function at cursor", + "icon": "whole-word", + "type": "command", + "command": "go.benchmark.cursor" + }, + { + "key": "p", + "name": "Benchmark package", + "icon": "package", + "type": "command", + "command": "go.benchmark.package" + }, + { + "key": "F", + "name": "Benchmark file", + "icon": "file", + "type": "command", + "command": "go.benchmark.file" + } + ] + }, + { + "key": "g", + "name": "+Generate", + "icon": "gear", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Generate unit tests for function", + "icon": "symbol-function", + "type": "command", + "command": "go.test.generate.function" + }, + { + "key": "p", + "name": "Generate unit tests for package", + "icon": "package", + "type": "command", + "command": "go.test.generate.package" + }, + { + "key": "F", + "name": "Generate unit tests for file", + "icon": "file", + "type": "command", + "command": "go.test.generate.file" + } + ] + }, + { + "key": "T", + "name": "+Toggle", + "icon": "settings", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Toggle test coverage in current package", + "icon": "package", + "type": "command", + "command": "go.test.coverage" + }, + { + "key": "f", + "name": "Toggle open test file", + "icon": "file", + "type": "command", + "command": "go.toggle.test.file" + } + ] + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "h", + "name": "Peek call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "editor.showCallHierarchy" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:java", + "name": "Java", + "type": "bindings", + "bindings": [ + { + "key": "h", + "name": "Describe thing at point", + "icon": "book", + "type": "command", + "command": "editor.action.showHover" + }, + { + "key": "D", + "name": "Debug Java file", + "icon": "debug-alt", + "type": "command", + "command": "java.debug.debugJavaFile" + }, + { + "key": "R", + "name": "Run Java file", + "icon": "run", + "type": "command", + "command": "java.debug.runJavaFile" + }, + { + "key": "a", + "name": "+Code actions", + "icon": "zap", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Execute code action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.codeAction" + }, + { + "key": "f", + "name": "Execute fix action", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "r", + "name": "Refactor action", + "icon": "edit", + "type": "command", + "command": "editor.action.refactor" + }, + { + "key": "s", + "name": "Source action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.sourceAction" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to error list", + "icon": "command", + "type": "command", + "command": "workbench.action.showErrorsWarnings" + }, + { + "key": "h", + "name": "Show call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "references-view.showCallHierarchy" + }, + { + "key": "i", + "name": "Go to implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.goToImplementation" + }, + { + "key": "o", + "name": "Go to super implementation", + "icon": "symbol-module", + "type": "command", + "command": "java.action.navigateToSuperImplementation" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "t", + "name": "Go to type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.goToTypeDefinition" + }, + { + "key": "u", + "name": "Go to subtype hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "java.action.showSubtypeHierarchy" + }, + { + "key": "H", + "name": "Go to type hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "java.action.showTypeHierarchy" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + }, + { + "key": "T", + "name": "Go to test", + "icon": "beaker", + "type": "command", + "command": "java.test.goToTest" + }, + { + "key": "U", + "name": "Go to supertype hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "java.action.showSupertypeHierarchy" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Execute code actions", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.codeAction" + }, + { + "key": "e", + "name": "Extract to function or variable", + "icon": "gather", + "type": "command", + "command": "editor.action.codeAction", + "args": { + "kind": "refactor.extract" + } + }, + { + "key": "o", + "name": "Organize imports", + "icon": "edit", + "type": "command", + "command": "editor.action.organizeImports" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "edit", + "type": "command", + "command": "editor.action.rename" + }, + { + "key": "R", + "name": "Refactor actions", + "icon": "edit", + "type": "command", + "command": "editor.action.refactor" + } + ] + }, + { + "key": "t", + "name": "+Test", + "icon": "beaker", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Run all tests", + "icon": "beaker", + "type": "command", + "command": "testing.runAll" + }, + { + "key": "b", + "name": "Run current test file", + "icon": "file", + "type": "command", + "command": "testing.runCurrentFile" + }, + { + "key": "r", + "name": "Re-run failed tests", + "icon": "close", + "type": "command", + "command": "testing.reRunFailTests" + }, + { + "key": "t", + "name": "Select and run test", + "icon": "list-unordered", + "type": "command", + "command": "testing.runSelected" + }, + { + "key": "A", + "name": "Debug all tests", + "icon": "bug", + "type": "command", + "command": "testing.debugAll" + }, + { + "key": "T", + "name": "Select and debug test", + "icon": "debug-alt", + "type": "command", + "command": "testing.debugSelected" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "h", + "name": "Peek call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "editor.showCallHierarchy" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + }, + { + "key": "t", + "name": "Peek type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekTypeDefinition" + } + ] + } + ] + }, + { + "key": "languageId:javascript", + "name": "JavaScript", + "type": "bindings", + "bindings": [ + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "h", + "name": "Show call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "references-view.showCallHierarchy" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "t", + "name": "Go to type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.goToTypeDefinition" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "h", + "name": "Peek call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "editor.showCallHierarchy" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + }, + { + "key": "t", + "name": "Peek type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekTypeDefinition" + } + ] + } + ] + }, + { + "key": "languageId:julia", + "name": "Julia", + "type": "bindings", + "bindings": [ + { + "key": ",", + "name": "Execute code in REPL", + "icon": "play", + "type": "command", + "command": "language-julia.executeJuliaCodeInREPL" + }, + { + "key": "d", + "name": "Show documentation", + "icon": "book", + "type": "command", + "command": "language-julia.show-documentation" + }, + { + "key": "p", + "name": "Show plots", + "icon": "pulse", + "type": "command", + "command": "language-julia.show-plotpane" + }, + { + "key": "w", + "name": "Focus on workspace view", + "icon": "play", + "type": "command", + "command": "REPLVariables.focus" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "b", + "name": "+Backend", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "i", + "name": "Re-index language server cache", + "icon": "output", + "type": "command", + "command": "language-julia.refreshLanguageServer" + }, + { + "key": "l", + "name": "Toggle linter", + "icon": "check", + "type": "command", + "command": "language-julia.toggleLinter" + }, + { + "key": "r", + "name": "Restart language server", + "icon": "server-process", + "type": "command", + "command": "language-julia.restartLanguageServer" + } + ] + }, + { + "key": "c", + "name": "+Compile/debug", + "icon": "play", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Add to compiled modules/functions", + "icon": "plus", + "type": "command", + "command": "language-julia.switchToCompiled" + }, + { + "key": "c", + "name": "Switch all to compiled", + "icon": "debug", + "type": "command", + "command": "language-julia.switchAllToCompiled" + }, + { + "key": "d", + "name": "Debug file in new process", + "icon": "debug-alt", + "type": "command", + "command": "language-julia.debugEditorContents" + }, + { + "key": "i", + "name": "Switch all to interpreted", + "icon": "run-below", + "type": "command", + "command": "language-julia.switchAllToInterpreted" + }, + { + "key": "m", + "name": "Enable compiled mode for the debugger", + "icon": "debug-breakpoint-log", + "type": "command", + "command": "language-julia.enable-compiled-mode" + }, + { + "key": "r", + "name": "Refresh compiled/interpreted pane", + "icon": "refresh", + "type": "command", + "command": "language-julia.refreshCompiled" + }, + { + "key": "x", + "name": "Remove from compiled modules/functions", + "icon": "diff-removed", + "type": "command", + "command": "language-julia.switchToInterpreted" + }, + { + "key": "A", + "name": "Apply default compiled modules/functions", + "icon": "diff-renamed", + "type": "command", + "command": "language-julia.apply-compiled-defaults" + }, + { + "key": "D", + "name": "Clear compiled modules/functions", + "icon": "diff-removed", + "type": "command", + "command": "language-julia.reset-compiled" + }, + { + "key": "F", + "name": "Set current compiled modules/functions as default", + "icon": "symbol-constant", + "type": "command", + "command": "language-julia.set-current-as-default-compiled" + }, + { + "key": "M", + "name": "Disable compiled mode for the debugger", + "icon": "debug-breakpoint-unverified", + "type": "command", + "command": "language-julia.disable-compiled-mode" + }, + { + "key": "R", + "name": "Restart kernel", + "icon": "debug-restart", + "type": "command", + "command": "language-julia.restartKernel" + }, + { + "key": "S", + "name": "Stop kernel", + "icon": "debug-stop", + "type": "command", + "command": "language-julia.stopKernel" + }, + { + "key": "Y", + "name": "Add symbol to compiled modules/functions", + "icon": "symbol-key", + "type": "command", + "command": "language-julia.set-compiled-for-name" + } + ] + }, + { + "key": "c", + "name": "+Clear", + "icon": "trash", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Clear current inline results", + "icon": "chrome-close", + "type": "command", + "command": "language-julia.clearCurrentInlineResult" + }, + { + "key": "C", + "name": "Clear all inline results", + "icon": "clear-all", + "type": "command", + "command": "language-julia.clearAllInlineResults" + }, + { + "key": "K", + "name": "Clear all inline results in editor", + "icon": "clear-all", + "type": "command", + "command": "language-julia.clearAllInlineResultsInEditor" + } + ] + }, + { + "key": "e", + "name": "+Environment/package", + "icon": "library", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Activate this environment", + "icon": "check", + "type": "command", + "command": "language-julia.changeCurrentEnvironment" + }, + { + "key": "c", + "name": "Change current environment", + "icon": "issue-reopened", + "type": "command", + "command": "language-julia.changeCurrentEnvironment" + }, + { + "key": "m", + "name": "Choose module", + "icon": "symbol-variable", + "type": "command", + "command": "language-julia.chooseModule" + }, + { + "key": "p", + "name": "Activate parent environment", + "icon": "root-folder-opened", + "type": "command", + "command": "language-julia.changeCurrentEnvironment" + }, + { + "key": "t", + "name": "Tag new package version", + "icon": "tag", + "type": "command", + "command": "language-julia.tagNewPackageVersion" + }, + { + "key": "P", + "name": "Open package directory", + "icon": "new-folder", + "type": "command", + "command": "language-julia.openPackageDirectory" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "s", + "name": "+Send/REPL", + "icon": "repl", + "type": "bindings", + "bindings": [ + { + "key": "b", + "name": "Execute block or selection in REPL", + "icon": "selection", + "type": "command", + "command": "language-julia.executeCodeBlockOrSelection" + }, + { + "key": "c", + "name": "Execute code cell in REPL and move", + "icon": "export", + "type": "command", + "command": "language-julia.executeCellAndMove" + }, + { + "key": "d", + "name": "Change directory here", + "icon": "folder-opened", + "type": "command", + "command": "language-julia.cdHere" + }, + { + "key": "f", + "name": "Execute file in REPL", + "icon": "file", + "type": "command", + "command": "language-julia.executeFile" + }, + { + "key": "i", + "name": "Start REPL", + "icon": "repl", + "type": "command", + "command": "language-julia.startREPL" + }, + { + "key": "m", + "name": "Execute code in REPL and move", + "icon": "debug-continue", + "type": "command", + "command": "language-julia.executeCodeBlockOrSelectionAndMove" + }, + { + "key": "s", + "name": "Execute code in REPL", + "icon": "play", + "type": "command", + "command": "language-julia.executeJuliaCodeInREPL" + }, + { + "key": "C", + "name": "Connect external REPL", + "icon": "vm-connect", + "type": "command", + "command": "language-julia.connectREPL" + }, + { + "key": "D", + "name": "Stop REPL", + "icon": "stop", + "type": "command", + "command": "language-julia.stopREPL" + }, + { + "key": "F", + "name": "Execute active file in REPL", + "icon": "file", + "type": "command", + "command": "language-julia.executeActiveFile" + } + ] + } + ] + }, + { + "key": "languageId:objectpascal", + "name": "ObjectPascal", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Quick fix", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:php", + "name": "PHP", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Quick fix", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:quarto", + "name": "quarto", + "type": "bindings", + "bindings": [ + { + "key": "'", + "name": "Create R Terminal", + "icon": "terminal", + "type": "command", + "command": "r.createRTerm" + }, + { + "key": "d", + "name": "Debugonce R", + "type": "command", + "icon": "debug", + "command": "r.runCommandWithSelectionOrWord", + "args": "debugonce($$)" + }, + { + "key": "h", + "name": "Help R", + "icon": "question", + "type": "command", + "command": "r.helpPanel.openForSelection" + }, + { + "key": "i", + "name": "Insert cell", + "type": "command", + "icon": "list-flat", + "command": "quarto.insertCodeCell" + }, + { + "key": "m", + "name": "Create R Terminal", + "icon": "terminal", + "type": "command", + "command": "r.createRTerm" + }, + { + "key": "o", + "name": "Objects in workspace R", + "type": "command", + "icon": "symbol-field", + "command": "r.runCommand", + "args": "sort(sapply(ls(), function(x){object.size(get(x))})) " + }, + { + "key": "p", + "name": "Render", + "type": "command", + "icon": "check", + "command": "quarto.renderDocument" + }, + { + "key": "s", + "name": "Run selection", + "icon": "play", + "type": "command", + "command": "quarto.runSelection" + }, + { + "key": "R", + "name": "Restart R", + "type": "command", + "icon": "debug-restart", + "command": "r.runCommand", + "args": "rstudioapi::restartSession()" + }, + { + "key": "S", + "name": "Run current cell", + "icon": "play", + "type": "command", + "command": "quarto.runCurrentCell" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "a", + "name": "+Code actions", + "icon": "zap", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Execute code action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.codeAction" + }, + { + "key": "f", + "name": "Execute fix action", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "r", + "name": "Refactor action", + "icon": "edit", + "type": "command", + "command": "editor.action.refactor" + }, + { + "key": "s", + "name": "Source action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.sourceAction" + } + ] + }, + { + "key": "f", + "name": "+Fold", + "icon": "fold", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Fold cell", + "icon": "fold", + "type": "command", + "command": "editor.fold" + }, + { + "key": "u", + "name": "Unfold cell", + "icon": "unfold", + "type": "command", + "command": "editor.unfold" + }, + { + "key": "F", + "name": "Fold all cells", + "icon": "fold", + "type": "command", + "command": "editor.foldAll" + }, + { + "key": "U", + "name": "Unfold all cells", + "icon": "unfold", + "type": "command", + "command": "editor.unfoldAll" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.revealDeclaration" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.actions.view.problems" + }, + { + "key": "f", + "name": "Go to file in explorer", + "icon": "file", + "type": "command", + "command": "workbench.files.action.showActiveFileInExplorer" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Rename Symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "v", + "name": "+View R", + "icon": "preview", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Column numbers", + "type": "command", + "icon": "list-ordered", + "command": "r.runCommandWithSelectionOrWord", + "args": "ncol($$)" + }, + { + "key": "h", + "name": "head", + "type": "command", + "icon": "list-filter", + "command": "r.head" + }, + { + "key": "l", + "name": "length", + "type": "command", + "icon": "list-ordered", + "command": "r.length" + }, + { + "key": "n", + "name": "Names", + "type": "command", + "icon": "symbol-parameter", + "command": "r.names" + }, + { + "key": "p", + "name": "print", + "icon": "symbol-field", + "type": "command", + "command": "r.runCommandWithSelectionOrWord", + "args": "$$" + }, + { + "key": "r", + "name": "Row numbers", + "type": "command", + "icon": "list-ordered", + "command": "r.nrow" + }, + { + "key": "s", + "name": "str", + "type": "command", + "icon": "list-flat", + "command": "r.runCommandWithSelectionOrWord", + "args": "str($$)" + }, + { + "key": "v", + "name": "View", + "type": "command", + "icon": "preview", + "command": "r.view" + }, + { + "key": "C", + "name": "Column names", + "type": "command", + "icon": "symbol-key", + "command": "r.runCommandWithSelectionOrWord", + "args": "colnames($$)" + }, + { + "key": "R", + "name": "Row names", + "type": "command", + "icon": "preserve-case", + "command": "r.runCommandWithSelectionOrWord", + "args": "rownames($$)" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekDeclaration" + }, + { + "key": "g", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:r", + "name": "R", + "type": "bindings", + "bindings": [ + { + "key": "'", + "name": "Create R Terminal", + "icon": "terminal", + "type": "command", + "command": "r.createRTerm" + }, + { + "key": "d", + "name": "Debugonce", + "type": "command", + "icon": "debug", + "command": "r.runCommandWithSelectionOrWord", + "args": "debugonce($$)" + }, + { + "key": "h", + "name": "Help", + "icon": "question", + "type": "command", + "command": "r.helpPanel.openForSelection" + }, + { + "key": "m", + "name": "Create R Terminal", + "icon": "terminal", + "type": "command", + "command": "r.createRTerm" + }, + { + "key": "o", + "name": "Objects in workspace R", + "type": "command", + "icon": "symbol-field", + "command": "r.runCommand", + "args": "sort(sapply(ls(), function(x){object.size(get(x))})) " + }, + { + "key": "s", + "name": "Run selection", + "icon": "play", + "type": "command", + "command": "r.runSelection" + }, + { + "key": "R", + "name": "Restart R", + "type": "command", + "icon": "debug-restart", + "command": "r.runCommand", + "args": "rstudioapi::restartSession()" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "a", + "name": "+Code actions", + "icon": "zap", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Execute code action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.codeAction" + }, + { + "key": "f", + "name": "Execute fix action", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "r", + "name": "Refactor action", + "icon": "edit", + "type": "command", + "command": "editor.action.refactor" + }, + { + "key": "s", + "name": "Source action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.sourceAction" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.revealDeclaration" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.actions.view.problems" + }, + { + "key": "f", + "name": "Go to file in explorer", + "icon": "file", + "type": "command", + "command": "workbench.files.action.showActiveFileInExplorer" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "p", + "name": "+Package", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Check", + "icon": "list-flat", + "type": "command", + "command": "r.check" + }, + { + "key": "d", + "name": "Document", + "icon": "file", + "type": "command", + "command": "r.document" + }, + { + "key": "l", + "name": "Load All", + "icon": "repl", + "type": "command", + "command": "r.loadAll" + }, + { + "key": "p", + "name": "pgkdown build site", + "icon": "gear", + "type": "command", + "command": "r.runCommand", + "args": "pkgdown::build_site()" + }, + { + "key": "t", + "name": "Test", + "icon": "beaker", + "type": "command", + "command": "r.test" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Rename Symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "v", + "name": "+View", + "icon": "preview", + "type": "bindings", + "bindings": [ + { + "key": "c", + "name": "Column numbers", + "type": "command", + "icon": "list-ordered", + "command": "r.runCommandWithSelectionOrWord", + "args": "ncol($$)" + }, + { + "key": "h", + "name": "head", + "type": "command", + "icon": "list-filter", + "command": "r.head" + }, + { + "key": "l", + "name": "length", + "type": "command", + "icon": "list-ordered", + "command": "r.length" + }, + { + "key": "n", + "name": "Names", + "type": "command", + "icon": "symbol-parameter", + "command": "r.names" + }, + { + "key": "p", + "name": "print", + "icon": "symbol-field", + "type": "command", + "command": "r.runCommandWithSelectionOrWord", + "args": "$$" + }, + { + "key": "r", + "name": "Row numbers", + "type": "command", + "icon": "list-ordered", + "command": "r.nrow" + }, + { + "key": "s", + "name": "str", + "type": "command", + "icon": "list-flat", + "command": "r.runCommandWithSelectionOrWord", + "args": "str($$)" + }, + { + "key": "v", + "name": "View", + "type": "command", + "icon": "preview", + "command": "r.view" + }, + { + "key": "C", + "name": "Column names", + "type": "command", + "icon": "symbol-key", + "command": "r.runCommandWithSelectionOrWord", + "args": "colnames($$)" + }, + { + "key": "R", + "name": "Row names", + "type": "command", + "icon": "preserve-case", + "command": "r.runCommandWithSelectionOrWord", + "args": "rownames($$)" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekDeclaration" + }, + { + "key": "g", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:ruby", + "name": "Ruby", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.action.problems.focus" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:rust", + "name": "Rust", + "type": "bindings", + "bindings": [ + { + "key": "T", + "name": "Toggle inlay hints", + "icon": "book", + "type": "command", + "command": "rust-analyzer.toggleInlayHints" + }, + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.format" + } + ] + }, + { + "key": "a", + "name": "+Actions", + "icon": "zap", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Execute code action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.codeAction" + }, + { + "key": "f", + "name": "Execute fix action", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.quickFix" + }, + { + "key": "s", + "name": "Execute source action", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.sourceAction" + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Execute refactor action", + "icon": "lightbulb-autofix", + "type": "command", + "command": "editor.action.refactor" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + } + ] + }, + { + "key": "b", + "name": "+Backend", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Rust analyzer: describe status", + "icon": "dashboard", + "type": "command", + "command": "rust-analyzer.analyzerStatus" + }, + { + "key": "r", + "name": "Rust analyzer: restart server", + "icon": "server-process", + "type": "command", + "command": "rust-analyzer.reload" + }, + { + "key": "v", + "name": "Rust analyzer: Show version", + "icon": "info", + "type": "command", + "command": "rust-analyzer.serverVersion" + }, + { + "key": "R", + "name": "Rust analyzer: reload workspace", + "icon": "refresh", + "type": "command", + "command": "rust-analyzer.reloadWorkspace" + } + ] + }, + { + "key": "g", + "name": "+Goto", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "h", + "name": "Show call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "references-view.showCallHierarchy" + }, + { + "key": "i", + "name": "Go to implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.goToImplementation" + }, + { + "key": "r", + "name": "Go to references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "t", + "name": "Go to type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.goToTypeDefinition" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": ".", + "name": "Refactor menu", + "icon": "lightbulb", + "type": "command", + "command": "editor.action.refactor" + }, + { + "key": "r", + "name": "Rename symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "h", + "name": "Peek call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "editor.showCallHierarchy" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + }, + { + "key": "languageId:typescript", + "name": "TypeScript", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "+Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "+Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "h", + "name": "Show call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "references-view.showCallHierarchy" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "file", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "t", + "name": "Go to type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.goToTypeDefinition" + }, + { + "key": "I", + "name": "Find implementations", + "icon": "symbol-module", + "type": "command", + "command": "references-view.findImplementations" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "project", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "h", + "name": "Peek call hierarchy", + "icon": "type-hierarchy", + "type": "command", + "command": "editor.showCallHierarchy" + }, + { + "key": "i", + "name": "Peek implementations", + "icon": "symbol-module", + "type": "command", + "command": "editor.action.peekImplementation" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + }, + { + "key": "t", + "name": "Peek type definition", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekTypeDefinition" + } + ] + } + ] + }, + { + "key": "languageId:cuda-cpp", + "name": "CUDA-C++", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "+Format", + "icon": "list-flat", + "type": "bindings", + "bindings": [ + { + "key": "=", + "name": "Format region or buffer", + "icon": "list-flat", + "type": "command", + "command": "editor.action.format" + }, + { + "key": "b", + "name": "Format buffer", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument" + }, + { + "key": "c", + "name": "Format changes", + "icon": "diff", + "type": "command", + "command": "editor.action.formatChanges" + }, + { + "key": "s", + "name": "Format selection", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection" + }, + { + "key": "B", + "name": "Format buffer with formatter", + "icon": "file", + "type": "command", + "command": "editor.action.formatDocument.multiple" + }, + { + "key": "S", + "name": "Format selection with formatter", + "icon": "selection", + "type": "command", + "command": "editor.action.formatSelection.multiple" + } + ] + }, + { + "key": "b", + "name": "+Backend", + "icon": "circuit-board", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Reset Database", + "icon": "database", + "type": "command", + "command": "C_Cpp.ResetDatabase" + }, + { + "key": "w", + "name": "Rescan Workspace", + "icon": "project", + "type": "command", + "command": "C_Cpp.RescanWorkspace" + } + ] + }, + { + "key": "d", + "name": "+Debug", + "icon": "bug", + "type": "bindings", + "bindings": [ + { + "key": "f", + "name": "Change debug focus", + "icon": "eye-watch", + "type": "command", + "command": "cuda.changeDebugFocus" + } + ] + }, + { + "key": "g", + "name": "+Go to", + "icon": "go-to-file", + "type": "bindings", + "bindings": [ + { + "key": "a", + "name": "Switch Header/Source", + "icon": "files", + "type": "command", + "command": "C_Cpp.SwitchHeaderSource" + }, + { + "key": "d", + "name": "Go to declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.revealDeclaration" + }, + { + "key": "e", + "name": "Go to errors/problems", + "icon": "error", + "type": "command", + "command": "workbench.actions.view.problems" + }, + { + "key": "f", + "name": "Go to file in explorer", + "icon": "file", + "type": "command", + "command": "workbench.files.action.showActiveFileInExplorer" + }, + { + "key": "g", + "name": "Go to definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.revealDefinition" + }, + { + "key": "r", + "name": "Go to reference", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.goToReferences" + }, + { + "key": "s", + "name": "Go to symbol in buffer", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.gotoSymbol" + }, + { + "key": "R", + "name": "Find references", + "icon": "symbol-reference", + "type": "command", + "command": "references-view.findReferences" + }, + { + "key": "S", + "name": "Go to symbol in project", + "icon": "symbol-class", + "type": "command", + "command": "workbench.action.showAllSymbols" + } + ] + }, + { + "key": "r", + "name": "+Refactor", + "icon": "edit", + "type": "bindings", + "bindings": [ + { + "key": "r", + "name": "Rename Symbol", + "icon": "symbol-keyword", + "type": "command", + "command": "editor.action.rename" + } + ] + }, + { + "key": "G", + "name": "+Peek", + "icon": "eye", + "type": "bindings", + "bindings": [ + { + "key": "d", + "name": "Peek declaration", + "icon": "symbol-struct", + "type": "command", + "command": "editor.action.peekDeclaration" + }, + { + "key": "g", + "name": "Peek definition", + "icon": "symbol-function", + "type": "command", + "command": "editor.action.peekDefinition" + }, + { + "key": "r", + "name": "Peek references", + "icon": "symbol-reference", + "type": "command", + "command": "editor.action.referenceSearch.trigger" + } + ] + } + ] + } + ] + } + ] +} diff --git a/tools/vscode/vscode.former.vimrc b/tools/vscode/vscode.former.vimrc index 16eb0d2..35a696f 100644 --- a/tools/vscode/vscode.former.vimrc +++ b/tools/vscode/vscode.former.vimrc @@ -52,6 +52,10 @@ noremap gpd editor.action.peekDefinition noremap gt editor.action.goToTypeDefinition noremap gpt editor.action.peekTypeDefinition noremap gh editor.action.showDefinitionPreviewHover +noremap gr editor.action.goToReferences +noremap gpr editor.action.referenceSearch.trigger + +noremap zR editor.foldAll noremap workbench.action.quickOpen noremap / workbench.action.quickTextSearch diff --git a/tools/vscode/vscode.vimrc b/tools/vscode/vscode.vimrc index 2011909..adf8455 100644 --- a/tools/vscode/vscode.vimrc +++ b/tools/vscode/vscode.vimrc @@ -4,6 +4,9 @@ " And go to vscode vim setting: "vim.vimrc.path": "$HOME/.config/vscode/vscode.vimrc", +" For all available options see +" https://github.com/VSCodeVim/Vim/blob/d41e286e9238b004f02b425d082d3b4181d83368/src/configuration/vimrc.ts#L120-L407 + " Use VSpaceCode instead of noremap vspacecode.space @@ -34,18 +37,8 @@ noremap J E " Y to yank to end of line noremap Y y$ -" Define in settings.json, since this will remap under visual mode -" noremap :nohlsearch +nnoremap :nohlsearch -" 分词版本的w和b,支持中文,需要插件 -" 为了保证递归解析,而不是打断,使用 `nmap` 而不是 `nnoremap` -" Comment if you don't use cjk or the plugin -nmap w cjkWordHandler.cursorWordEndRight -nmap b cjkWordHandler.cursorWordStartLeft - -" keep selection after indent (define in settings.json) -" voremap < >gv " lsp noremap gi editor.action.goToImplementation @@ -55,3 +48,17 @@ noremap gpd editor.action.peekDefinition noremap gt editor.action.goToTypeDefinition noremap gpt editor.action.peekTypeDefinition noremap gh editor.action.showDefinitionPreviewHover +noremap gr editor.action.goToReferences +noremap gpr editor.action.referenceSearch.trigger + +noremap zR editor.foldAll + +" keep selection after indent (define in settings.json) +vnoremap < editor.action.outdentLines +vnoremap > editor.action.indentLines + +" 分词版本的w和b,支持中文,需要插件 +" 为了保证递归解析,而不是打断,使用 `nmap` 而不是 `nnoremap` +" Comment if you don't use cjk or the plugin +nmap w cjkWordHandler.cursorWordEndRight +nmap b cjkWordHandler.cursorWordStartLeft diff --git a/tools/wezterm/wezterm.lua b/tools/wezterm/wezterm.lua index 61c6e22..9f60f18 100644 --- a/tools/wezterm/wezterm.lua +++ b/tools/wezterm/wezterm.lua @@ -65,9 +65,9 @@ local os_type = detect_os() config.max_fps = 120 config.font = wezterm.font({ - family = "CaskaydiaCove Nerd Font", + family = "JetBrainsMono Nerd Font", }) -config.color_scheme = "Catppuccin Frappe" +config.color_scheme = "Catppuccin Mocha" config.font_size = 12.0 config.front_end = "WebGpu" config.webgpu_power_preference = "HighPerformance" @@ -209,8 +209,7 @@ config.mouse_bindings = { --#endregion --#region Environment -config.set_environment_variables = { -} +config.set_environment_variables = {} --#endregion --#region Launching @@ -251,7 +250,7 @@ if os_type == "Windows" then }, } elseif os_type == "macOS" then - config.default_prog = { "/opt/homebrew/bin/fish", "-l"} + config.default_prog = { "/opt/homebrew/bin/fish", "-l" } else config.default_prog = { "fish" } config.launch_menu = { diff --git a/tools/yazi/config/theme.toml b/tools/yazi/config/theme.toml new file mode 100644 index 0000000..e437406 --- /dev/null +++ b/tools/yazi/config/theme.toml @@ -0,0 +1,750 @@ +[manager] +cwd = { fg = "#94e2d5" } + +hovered = { fg = "#1e1e2e", bg = "#b4befe" } +preview_hovered = { fg = "#1e1e2e", bg = "#cdd6f4" } + +find_keyword = { fg = "#f9e2af", italic = true } +find_position = { fg = "#f5c2e7", bg = "reset", italic = true } + +marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" } +marker_cut = { fg = "#f38ba8", bg = "#f38ba8" } +marker_marked = { fg = "#94e2d5", bg = "#94e2d5" } +marker_selected = { fg = "#b4befe", bg = "#b4befe" } + +tab_active = { fg = "#1e1e2e", bg = "#cdd6f4" } +tab_inactive = { fg = "#cdd6f4", bg = "#45475a" } +tab_width = 1 + +count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" } +count_cut = { fg = "#1e1e2e", bg = "#f38ba8" } +count_selected = { fg = "#1e1e2e", bg = "#b4befe" } + +border_symbol = "│" +border_style = { fg = "#7f849c" } + +syntect_theme = "~/.config/yazi/Catppuccin-mocha.tmTheme" + +[mode] +normal_main = { fg = "#1e1e2e", bg = "#b4befe", bold = true } +normal_alt = { fg = "#b4befe", bg = "#313244"} + +select_main = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true } +select_alt = { fg = "#a6e3a1", bg = "#313244"} + +unset_main = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true } +unset_alt = { fg = "#f2cdcd", bg = "#313244"} + +[status] +separator_open = "" +separator_close = "" + +progress_label = { fg = "#ffffff", bold = true } +progress_normal = { fg = "#89b4fa", bg = "#45475a" } +progress_error = { fg = "#f38ba8", bg = "#45475a" } + +perm_type = { fg = "#89b4fa" } +perm_read = { fg = "#f9e2af" } +perm_write = { fg = "#f38ba8" } +perm_exec = { fg = "#a6e3a1" } +perm_sep = { fg = "#7f849c" } + +[input] +border = { fg = "#b4befe" } +title = {} +value = {} +selected = { reversed = true } + +[pick] +border = { fg = "#b4befe" } +active = { fg = "#f5c2e7" } +inactive = {} + +[confirm] +border = { fg = "#b4befe" } +title = { fg = "#b4befe" } +content = {} +list = {} +btn_yes = { reversed = true } +btn_no = {} + +[completion] +border = { fg = "#b4befe" } + +[tasks] +border = { fg = "#b4befe" } +title = {} +hovered = { underline = true } + +[which] +mask = { bg = "#313244" } +cand = { fg = "#94e2d5" } +rest = { fg = "#9399b2" } +desc = { fg = "#f5c2e7" } +separator = "  " +separator_style = { fg = "#585b70" } + +[help] +on = { fg = "#94e2d5" } +run = { fg = "#f5c2e7" } +desc = { fg = "#9399b2" } +hovered = { bg = "#585b70", bold = true } +footer = { fg = "#cdd6f4", bg = "#45475a" } + +[notify] +title_info = { fg = "#94e2d5" } +title_warn = { fg = "#f9e2af" } +title_error = { fg = "#f38ba8" } + +[filetype] +rules = [ + # Media + { mime = "image/*", fg = "#94e2d5" }, + { mime = "{audio,video}/*", fg = "#f9e2af" }, + + # Archives + { mime = "application/*zip", fg = "#f5c2e7" }, + { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" }, + + # Documents + { mime = "application/{pdf,doc,rtf}", fg = "#a6e3a1" }, + + # Fallback + { name = "*", fg = "#cdd6f4" }, + { name = "*/", fg = "#b4befe" } +] + +[icon] +files = [ + { name = "kritadisplayrc", text = "", fg = "#cba6f7" }, + { name = ".gtkrc-2.0", text = "", fg = "#f5e0dc" }, + { name = "bspwmrc", text = "", fg = "#313244" }, + { name = "webpack", text = "󰜫", fg = "#74c7ec" }, + { name = "tsconfig.json", text = "", fg = "#74c7ec" }, + { name = ".vimrc", text = "", fg = "#a6e3a1" }, + { name = "gemfile$", text = "", fg = "#313244" }, + { name = "xmobarrc", text = "", fg = "#f38ba8" }, + { name = "avif", text = "", fg = "#7f849c" }, + { name = "fp-info-cache", text = "", fg = "#f5e0dc" }, + { name = ".zshrc", text = "", fg = "#a6e3a1" }, + { name = "robots.txt", text = "󰚩", fg = "#6c7086" }, + { name = "dockerfile", text = "󰡨", fg = "#89b4fa" }, + { name = ".git-blame-ignore-revs", text = "", fg = "#fab387" }, + { name = ".nvmrc", text = "", fg = "#a6e3a1" }, + { name = "hyprpaper.conf", text = "", fg = "#74c7ec" }, + { name = ".prettierignore", text = "", fg = "#89b4fa" }, + { name = "rakefile", text = "", fg = "#313244" }, + { name = "code_of_conduct", text = "", fg = "#f38ba8" }, + { name = "cmakelists.txt", text = "", fg = "#cdd6f4" }, + { name = ".env", text = "", fg = "#f9e2af" }, + { name = "copying.lesser", text = "", fg = "#f9e2af" }, + { name = "readme", text = "󰂺", fg = "#f5e0dc" }, + { name = "settings.gradle", text = "", fg = "#585b70" }, + { name = "gruntfile.coffee", text = "", fg = "#fab387" }, + { name = ".eslintignore", text = "", fg = "#585b70" }, + { name = "kalgebrarc", text = "", fg = "#89b4fa" }, + { name = "kdenliverc", text = "", fg = "#89b4fa" }, + { name = ".prettierrc.cjs", text = "", fg = "#89b4fa" }, + { name = "cantorrc", text = "", fg = "#89b4fa" }, + { name = "rmd", text = "", fg = "#74c7ec" }, + { name = "vagrantfile$", text = "", fg = "#6c7086" }, + { name = ".Xauthority", text = "", fg = "#fab387" }, + { name = "prettier.config.ts", text = "", fg = "#89b4fa" }, + { name = "node_modules", text = "", fg = "#f38ba8" }, + { name = ".prettierrc.toml", text = "", fg = "#89b4fa" }, + { name = "build.zig.zon", text = "", fg = "#fab387" }, + { name = ".ds_store", text = "", fg = "#45475a" }, + { name = "PKGBUILD", text = "", fg = "#89b4fa" }, + { name = ".prettierrc", text = "", fg = "#89b4fa" }, + { name = ".bash_profile", text = "", fg = "#a6e3a1" }, + { name = ".npmignore", text = "", fg = "#f38ba8" }, + { name = ".mailmap", text = "󰊢", fg = "#fab387" }, + { name = ".codespellrc", text = "󰓆", fg = "#a6e3a1" }, + { name = "svelte.config.js", text = "", fg = "#fab387" }, + { name = "eslint.config.ts", text = "", fg = "#585b70" }, + { name = "config", text = "", fg = "#7f849c" }, + { name = ".gitlab-ci.yml", text = "", fg = "#fab387" }, + { name = ".gitconfig", text = "", fg = "#fab387" }, + { name = "_gvimrc", text = "", fg = "#a6e3a1" }, + { name = ".xinitrc", text = "", fg = "#fab387" }, + { name = "checkhealth", text = "󰓙", fg = "#89b4fa" }, + { name = "sxhkdrc", text = "", fg = "#313244" }, + { name = ".bashrc", text = "", fg = "#a6e3a1" }, + { name = "tailwind.config.mjs", text = "󱏿", fg = "#74c7ec" }, + { name = "ext_typoscript_setup.txt", text = "", fg = "#fab387" }, + { name = "commitlint.config.ts", text = "󰜘", fg = "#94e2d5" }, + { name = "py.typed", text = "", fg = "#f9e2af" }, + { name = ".nanorc", text = "", fg = "#313244" }, + { name = "commit_editmsg", text = "", fg = "#fab387" }, + { name = ".luaurc", text = "", fg = "#89b4fa" }, + { name = "fp-lib-table", text = "", fg = "#f5e0dc" }, + { name = ".editorconfig", text = "", fg = "#f5e0dc" }, + { name = "justfile", text = "", fg = "#7f849c" }, + { name = "kdeglobals", text = "", fg = "#89b4fa" }, + { name = "license.md", text = "", fg = "#f9e2af" }, + { name = ".clang-format", text = "", fg = "#7f849c" }, + { name = "docker-compose.yaml", text = "󰡨", fg = "#89b4fa" }, + { name = "copying", text = "", fg = "#f9e2af" }, + { name = "go.mod", text = "", fg = "#74c7ec" }, + { name = "lxqt.conf", text = "", fg = "#89b4fa" }, + { name = "brewfile", text = "", fg = "#313244" }, + { name = "gulpfile.coffee", text = "", fg = "#f38ba8" }, + { name = ".dockerignore", text = "󰡨", fg = "#89b4fa" }, + { name = ".settings.json", text = "", fg = "#6c7086" }, + { name = "tailwind.config.js", text = "󱏿", fg = "#74c7ec" }, + { name = ".clang-tidy", text = "", fg = "#7f849c" }, + { name = ".gvimrc", text = "", fg = "#a6e3a1" }, + { name = "nuxt.config.cjs", text = "󱄆", fg = "#a6e3a1" }, + { name = "xsettingsd.conf", text = "", fg = "#fab387" }, + { name = "nuxt.config.js", text = "󱄆", fg = "#a6e3a1" }, + { name = "eslint.config.cjs", text = "", fg = "#585b70" }, + { name = "sym-lib-table", text = "", fg = "#f5e0dc" }, + { name = ".condarc", text = "", fg = "#a6e3a1" }, + { name = "xmonad.hs", text = "", fg = "#f38ba8" }, + { name = "tmux.conf", text = "", fg = "#a6e3a1" }, + { name = "xmobarrc.hs", text = "", fg = "#f38ba8" }, + { name = ".prettierrc.yaml", text = "", fg = "#89b4fa" }, + { name = ".pre-commit-config.yaml", text = "󰛢", fg = "#fab387" }, + { name = "i3blocks.conf", text = "", fg = "#f5e0dc" }, + { name = "xorg.conf", text = "", fg = "#fab387" }, + { name = ".zshenv", text = "", fg = "#a6e3a1" }, + { name = "vlcrc", text = "󰕼", fg = "#fab387" }, + { name = "license", text = "", fg = "#f9e2af" }, + { name = "unlicense", text = "", fg = "#f9e2af" }, + { name = "tmux.conf.local", text = "", fg = "#a6e3a1" }, + { name = ".SRCINFO", text = "󰣇", fg = "#89b4fa" }, + { name = "tailwind.config.ts", text = "󱏿", fg = "#74c7ec" }, + { name = "security.md", text = "󰒃", fg = "#bac2de" }, + { name = "security", text = "󰒃", fg = "#bac2de" }, + { name = ".eslintrc", text = "", fg = "#585b70" }, + { name = "gradle.properties", text = "", fg = "#585b70" }, + { name = "code_of_conduct.md", text = "", fg = "#f38ba8" }, + { name = "PrusaSlicerGcodeViewer.ini", text = "", fg = "#fab387" }, + { name = "PrusaSlicer.ini", text = "", fg = "#fab387" }, + { name = "procfile", text = "", fg = "#7f849c" }, + { name = "mpv.conf", text = "", fg = "#1e1e2e" }, + { name = ".prettierrc.json5", text = "", fg = "#89b4fa" }, + { name = "i3status.conf", text = "", fg = "#f5e0dc" }, + { name = "prettier.config.mjs", text = "", fg = "#89b4fa" }, + { name = ".pylintrc", text = "", fg = "#7f849c" }, + { name = "prettier.config.cjs", text = "", fg = "#89b4fa" }, + { name = ".luacheckrc", text = "", fg = "#89b4fa" }, + { name = "containerfile", text = "󰡨", fg = "#89b4fa" }, + { name = "eslint.config.mjs", text = "", fg = "#585b70" }, + { name = "gruntfile.js", text = "", fg = "#fab387" }, + { name = "bun.lockb", text = "", fg = "#f5e0dc" }, + { name = ".gitattributes", text = "", fg = "#fab387" }, + { name = "gruntfile.ts", text = "", fg = "#fab387" }, + { name = "pom.xml", text = "", fg = "#313244" }, + { name = "favicon.ico", text = "", fg = "#f9e2af" }, + { name = "package-lock.json", text = "", fg = "#313244" }, + { name = "build", text = "", fg = "#a6e3a1" }, + { name = "package.json", text = "", fg = "#f38ba8" }, + { name = "nuxt.config.ts", text = "󱄆", fg = "#a6e3a1" }, + { name = "nuxt.config.mjs", text = "󱄆", fg = "#a6e3a1" }, + { name = "mix.lock", text = "", fg = "#7f849c" }, + { name = "makefile", text = "", fg = "#7f849c" }, + { name = "gulpfile.js", text = "", fg = "#f38ba8" }, + { name = "lxde-rc.xml", text = "", fg = "#9399b2" }, + { name = "kritarc", text = "", fg = "#cba6f7" }, + { name = "gtkrc", text = "", fg = "#f5e0dc" }, + { name = "ionic.config.json", text = "", fg = "#89b4fa" }, + { name = ".prettierrc.mjs", text = "", fg = "#89b4fa" }, + { name = ".prettierrc.yml", text = "", fg = "#89b4fa" }, + { name = ".npmrc", text = "", fg = "#f38ba8" }, + { name = "weston.ini", text = "", fg = "#f9e2af" }, + { name = "gulpfile.babel.js", text = "", fg = "#f38ba8" }, + { name = "i18n.config.ts", text = "󰗊", fg = "#7f849c" }, + { name = "commitlint.config.js", text = "󰜘", fg = "#94e2d5" }, + { name = ".gitmodules", text = "", fg = "#fab387" }, + { name = "gradle-wrapper.properties", text = "", fg = "#585b70" }, + { name = "hypridle.conf", text = "", fg = "#74c7ec" }, + { name = "vercel.json", text = "▲", fg = "#f5e0dc" }, + { name = "hyprlock.conf", text = "", fg = "#74c7ec" }, + { name = "go.sum", text = "", fg = "#74c7ec" }, + { name = "kdenlive-layoutsrc", text = "", fg = "#89b4fa" }, + { name = "gruntfile.babel.js", text = "", fg = "#fab387" }, + { name = "compose.yml", text = "󰡨", fg = "#89b4fa" }, + { name = "i18n.config.js", text = "󰗊", fg = "#7f849c" }, + { name = "readme.md", text = "󰂺", fg = "#f5e0dc" }, + { name = "gradlew", text = "", fg = "#585b70" }, + { name = "go.work", text = "", fg = "#74c7ec" }, + { name = "gulpfile.ts", text = "", fg = "#f38ba8" }, + { name = "gnumakefile", text = "", fg = "#7f849c" }, + { name = "FreeCAD.conf", text = "", fg = "#f38ba8" }, + { name = "compose.yaml", text = "󰡨", fg = "#89b4fa" }, + { name = "eslint.config.js", text = "", fg = "#585b70" }, + { name = "hyprland.conf", text = "", fg = "#74c7ec" }, + { name = "docker-compose.yml", text = "󰡨", fg = "#89b4fa" }, + { name = "groovy", text = "", fg = "#585b70" }, + { name = "QtProject.conf", text = "", fg = "#a6e3a1" }, + { name = "platformio.ini", text = "", fg = "#fab387" }, + { name = "build.gradle", text = "", fg = "#585b70" }, + { name = ".nuxtrc", text = "󱄆", fg = "#a6e3a1" }, + { name = "_vimrc", text = "", fg = "#a6e3a1" }, + { name = ".zprofile", text = "", fg = "#a6e3a1" }, + { name = ".xsession", text = "", fg = "#fab387" }, + { name = "prettier.config.js", text = "", fg = "#89b4fa" }, + { name = ".babelrc", text = "", fg = "#f9e2af" }, + { name = "workspace", text = "", fg = "#a6e3a1" }, + { name = ".prettierrc.json", text = "", fg = "#89b4fa" }, + { name = ".prettierrc.js", text = "", fg = "#89b4fa" }, + { name = ".Xresources", text = "", fg = "#fab387" }, + { name = ".gitignore", text = "", fg = "#fab387" }, + { name = ".justfile", text = "", fg = "#7f849c" }, +] +exts = [ + { name = "otf", text = "", fg = "#f5e0dc" }, + { name = "import", text = "", fg = "#f5e0dc" }, + { name = "krz", text = "", fg = "#cba6f7" }, + { name = "adb", text = "", fg = "#94e2d5" }, + { name = "ttf", text = "", fg = "#f5e0dc" }, + { name = "webpack", text = "󰜫", fg = "#74c7ec" }, + { name = "dart", text = "", fg = "#585b70" }, + { name = "vsh", text = "", fg = "#7f849c" }, + { name = "doc", text = "󰈬", fg = "#585b70" }, + { name = "zsh", text = "", fg = "#a6e3a1" }, + { name = "ex", text = "", fg = "#7f849c" }, + { name = "hx", text = "", fg = "#fab387" }, + { name = "fodt", text = "", fg = "#74c7ec" }, + { name = "mojo", text = "", fg = "#fab387" }, + { name = "templ", text = "", fg = "#f9e2af" }, + { name = "nix", text = "", fg = "#74c7ec" }, + { name = "cshtml", text = "󱦗", fg = "#585b70" }, + { name = "fish", text = "", fg = "#585b70" }, + { name = "ply", text = "󰆧", fg = "#7f849c" }, + { name = "sldprt", text = "󰻫", fg = "#a6e3a1" }, + { name = "gemspec", text = "", fg = "#313244" }, + { name = "mjs", text = "", fg = "#f9e2af" }, + { name = "csh", text = "", fg = "#585b70" }, + { name = "cmake", text = "", fg = "#cdd6f4" }, + { name = "fodp", text = "", fg = "#fab387" }, + { name = "vi", text = "", fg = "#f9e2af" }, + { name = "msf", text = "", fg = "#89b4fa" }, + { name = "blp", text = "󰺾", fg = "#89b4fa" }, + { name = "less", text = "", fg = "#45475a" }, + { name = "sh", text = "", fg = "#585b70" }, + { name = "odg", text = "", fg = "#f9e2af" }, + { name = "mint", text = "󰌪", fg = "#a6e3a1" }, + { name = "dll", text = "", fg = "#11111b" }, + { name = "odf", text = "", fg = "#f38ba8" }, + { name = "sqlite3", text = "", fg = "#f5e0dc" }, + { name = "Dockerfile", text = "󰡨", fg = "#89b4fa" }, + { name = "ksh", text = "", fg = "#585b70" }, + { name = "rmd", text = "", fg = "#74c7ec" }, + { name = "wv", text = "", fg = "#74c7ec" }, + { name = "xml", text = "󰗀", fg = "#fab387" }, + { name = "markdown", text = "", fg = "#cdd6f4" }, + { name = "qml", text = "", fg = "#a6e3a1" }, + { name = "3gp", text = "", fg = "#fab387" }, + { name = "pxi", text = "", fg = "#89b4fa" }, + { name = "flac", text = "", fg = "#6c7086" }, + { name = "gpr", text = "", fg = "#cba6f7" }, + { name = "huff", text = "󰡘", fg = "#585b70" }, + { name = "json", text = "", fg = "#f9e2af" }, + { name = "gv", text = "󱁉", fg = "#585b70" }, + { name = "bmp", text = "", fg = "#7f849c" }, + { name = "lock", text = "", fg = "#bac2de" }, + { name = "sha384", text = "󰕥", fg = "#7f849c" }, + { name = "cobol", text = "⚙", fg = "#585b70" }, + { name = "cob", text = "⚙", fg = "#585b70" }, + { name = "java", text = "", fg = "#f38ba8" }, + { name = "cjs", text = "", fg = "#f9e2af" }, + { name = "qm", text = "", fg = "#74c7ec" }, + { name = "ebuild", text = "", fg = "#45475a" }, + { name = "mustache", text = "", fg = "#fab387" }, + { name = "terminal", text = "", fg = "#a6e3a1" }, + { name = "ejs", text = "", fg = "#f9e2af" }, + { name = "brep", text = "󰻫", fg = "#a6e3a1" }, + { name = "rar", text = "", fg = "#fab387" }, + { name = "gradle", text = "", fg = "#585b70" }, + { name = "gnumakefile", text = "", fg = "#7f849c" }, + { name = "applescript", text = "", fg = "#7f849c" }, + { name = "elm", text = "", fg = "#74c7ec" }, + { name = "ebook", text = "", fg = "#fab387" }, + { name = "kra", text = "", fg = "#cba6f7" }, + { name = "tf", text = "", fg = "#585b70" }, + { name = "xls", text = "󰈛", fg = "#585b70" }, + { name = "fnl", text = "", fg = "#f9e2af" }, + { name = "kdbx", text = "", fg = "#a6e3a1" }, + { name = "kicad_pcb", text = "", fg = "#f5e0dc" }, + { name = "cfg", text = "", fg = "#7f849c" }, + { name = "ape", text = "", fg = "#74c7ec" }, + { name = "org", text = "", fg = "#94e2d5" }, + { name = "yml", text = "", fg = "#7f849c" }, + { name = "swift", text = "", fg = "#fab387" }, + { name = "eln", text = "", fg = "#7f849c" }, + { name = "sol", text = "", fg = "#74c7ec" }, + { name = "awk", text = "", fg = "#585b70" }, + { name = "7z", text = "", fg = "#fab387" }, + { name = "apl", text = "⍝", fg = "#fab387" }, + { name = "epp", text = "", fg = "#fab387" }, + { name = "app", text = "", fg = "#45475a" }, + { name = "dot", text = "󱁉", fg = "#585b70" }, + { name = "kpp", text = "", fg = "#cba6f7" }, + { name = "eot", text = "", fg = "#f5e0dc" }, + { name = "hpp", text = "", fg = "#7f849c" }, + { name = "spec.tsx", text = "", fg = "#585b70" }, + { name = "hurl", text = "", fg = "#f38ba8" }, + { name = "cxxm", text = "", fg = "#74c7ec" }, + { name = "c", text = "", fg = "#89b4fa" }, + { name = "fcmacro", text = "", fg = "#f38ba8" }, + { name = "sass", text = "", fg = "#f38ba8" }, + { name = "yaml", text = "", fg = "#7f849c" }, + { name = "xz", text = "", fg = "#fab387" }, + { name = "material", text = "󰔉", fg = "#f38ba8" }, + { name = "json5", text = "", fg = "#f9e2af" }, + { name = "signature", text = "λ", fg = "#fab387" }, + { name = "3mf", text = "󰆧", fg = "#7f849c" }, + { name = "jpg", text = "", fg = "#7f849c" }, + { name = "xpi", text = "", fg = "#fab387" }, + { name = "fcmat", text = "", fg = "#f38ba8" }, + { name = "pot", text = "", fg = "#74c7ec" }, + { name = "bin", text = "", fg = "#45475a" }, + { name = "xlsx", text = "󰈛", fg = "#585b70" }, + { name = "aac", text = "", fg = "#74c7ec" }, + { name = "kicad_sym", text = "", fg = "#f5e0dc" }, + { name = "xcstrings", text = "", fg = "#74c7ec" }, + { name = "lff", text = "", fg = "#f5e0dc" }, + { name = "xcf", text = "", fg = "#585b70" }, + { name = "azcli", text = "", fg = "#6c7086" }, + { name = "license", text = "", fg = "#f9e2af" }, + { name = "jsonc", text = "", fg = "#f9e2af" }, + { name = "xaml", text = "󰙳", fg = "#585b70" }, + { name = "md5", text = "󰕥", fg = "#7f849c" }, + { name = "xm", text = "", fg = "#74c7ec" }, + { name = "sln", text = "", fg = "#6c7086" }, + { name = "jl", text = "", fg = "#7f849c" }, + { name = "ml", text = "", fg = "#fab387" }, + { name = "http", text = "", fg = "#89b4fa" }, + { name = "x", text = "", fg = "#89b4fa" }, + { name = "wvc", text = "", fg = "#74c7ec" }, + { name = "wrz", text = "󰆧", fg = "#7f849c" }, + { name = "csproj", text = "󰪮", fg = "#585b70" }, + { name = "wrl", text = "󰆧", fg = "#7f849c" }, + { name = "wma", text = "", fg = "#74c7ec" }, + { name = "woff2", text = "", fg = "#f5e0dc" }, + { name = "woff", text = "", fg = "#f5e0dc" }, + { name = "tscn", text = "", fg = "#7f849c" }, + { name = "webmanifest", text = "", fg = "#f9e2af" }, + { name = "webm", text = "", fg = "#fab387" }, + { name = "fcbak", text = "", fg = "#f38ba8" }, + { name = "log", text = "󰌱", fg = "#cdd6f4" }, + { name = "wav", text = "", fg = "#74c7ec" }, + { name = "wasm", text = "", fg = "#585b70" }, + { name = "styl", text = "", fg = "#a6e3a1" }, + { name = "gif", text = "", fg = "#7f849c" }, + { name = "resi", text = "", fg = "#f38ba8" }, + { name = "aiff", text = "", fg = "#74c7ec" }, + { name = "sha256", text = "󰕥", fg = "#7f849c" }, + { name = "igs", text = "󰻫", fg = "#a6e3a1" }, + { name = "vsix", text = "", fg = "#6c7086" }, + { name = "vim", text = "", fg = "#a6e3a1" }, + { name = "diff", text = "", fg = "#45475a" }, + { name = "drl", text = "", fg = "#eba0ac" }, + { name = "erl", text = "", fg = "#f38ba8" }, + { name = "vhdl", text = "󰍛", fg = "#a6e3a1" }, + { name = "🔥", text = "", fg = "#fab387" }, + { name = "hrl", text = "", fg = "#f38ba8" }, + { name = "fsi", text = "", fg = "#74c7ec" }, + { name = "mm", text = "", fg = "#74c7ec" }, + { name = "bz", text = "", fg = "#fab387" }, + { name = "vh", text = "󰍛", fg = "#a6e3a1" }, + { name = "kdb", text = "", fg = "#a6e3a1" }, + { name = "gz", text = "", fg = "#fab387" }, + { name = "cpp", text = "", fg = "#74c7ec" }, + { name = "ui", text = "", fg = "#6c7086" }, + { name = "txt", text = "󰈙", fg = "#a6e3a1" }, + { name = "spec.ts", text = "", fg = "#74c7ec" }, + { name = "ccm", text = "", fg = "#f38ba8" }, + { name = "typoscript", text = "", fg = "#fab387" }, + { name = "typ", text = "", fg = "#89dceb" }, + { name = "txz", text = "", fg = "#fab387" }, + { name = "test.ts", text = "", fg = "#74c7ec" }, + { name = "tsx", text = "", fg = "#585b70" }, + { name = "mk", text = "", fg = "#7f849c" }, + { name = "webp", text = "", fg = "#7f849c" }, + { name = "opus", text = "", fg = "#6c7086" }, + { name = "bicep", text = "", fg = "#74c7ec" }, + { name = "ts", text = "", fg = "#74c7ec" }, + { name = "tres", text = "", fg = "#7f849c" }, + { name = "torrent", text = "", fg = "#94e2d5" }, + { name = "cxx", text = "", fg = "#74c7ec" }, + { name = "iso", text = "", fg = "#f2cdcd" }, + { name = "ixx", text = "", fg = "#74c7ec" }, + { name = "hxx", text = "", fg = "#7f849c" }, + { name = "gql", text = "", fg = "#f38ba8" }, + { name = "tmux", text = "", fg = "#a6e3a1" }, + { name = "ini", text = "", fg = "#7f849c" }, + { name = "m3u8", text = "󰲹", fg = "#f38ba8" }, + { name = "image", text = "", fg = "#f2cdcd" }, + { name = "tfvars", text = "", fg = "#585b70" }, + { name = "tex", text = "", fg = "#45475a" }, + { name = "cbl", text = "⚙", fg = "#585b70" }, + { name = "flc", text = "", fg = "#f5e0dc" }, + { name = "elc", text = "", fg = "#7f849c" }, + { name = "test.tsx", text = "", fg = "#585b70" }, + { name = "twig", text = "", fg = "#a6e3a1" }, + { name = "sql", text = "", fg = "#f5e0dc" }, + { name = "test.jsx", text = "", fg = "#74c7ec" }, + { name = "htm", text = "", fg = "#fab387" }, + { name = "gcode", text = "󰐫", fg = "#6c7086" }, + { name = "test.js", text = "", fg = "#f9e2af" }, + { name = "ino", text = "", fg = "#74c7ec" }, + { name = "tcl", text = "󰛓", fg = "#585b70" }, + { name = "cljs", text = "", fg = "#74c7ec" }, + { name = "tsconfig", text = "", fg = "#fab387" }, + { name = "img", text = "", fg = "#f2cdcd" }, + { name = "t", text = "", fg = "#74c7ec" }, + { name = "fcstd1", text = "", fg = "#f38ba8" }, + { name = "out", text = "", fg = "#45475a" }, + { name = "jsx", text = "", fg = "#74c7ec" }, + { name = "bash", text = "", fg = "#a6e3a1" }, + { name = "edn", text = "", fg = "#74c7ec" }, + { name = "rss", text = "", fg = "#fab387" }, + { name = "flf", text = "", fg = "#f5e0dc" }, + { name = "cache", text = "", fg = "#f5e0dc" }, + { name = "sbt", text = "", fg = "#f38ba8" }, + { name = "cppm", text = "", fg = "#74c7ec" }, + { name = "svelte", text = "", fg = "#fab387" }, + { name = "mo", text = "∞", fg = "#7f849c" }, + { name = "sv", text = "󰍛", fg = "#a6e3a1" }, + { name = "ko", text = "", fg = "#f5e0dc" }, + { name = "suo", text = "", fg = "#6c7086" }, + { name = "sldasm", text = "󰻫", fg = "#a6e3a1" }, + { name = "icalendar", text = "", fg = "#313244" }, + { name = "go", text = "", fg = "#74c7ec" }, + { name = "sublime", text = "", fg = "#fab387" }, + { name = "stl", text = "󰆧", fg = "#7f849c" }, + { name = "mobi", text = "", fg = "#fab387" }, + { name = "graphql", text = "", fg = "#f38ba8" }, + { name = "m3u", text = "󰲹", fg = "#f38ba8" }, + { name = "cpy", text = "⚙", fg = "#585b70" }, + { name = "kdenlive", text = "", fg = "#89b4fa" }, + { name = "pyo", text = "", fg = "#f9e2af" }, + { name = "po", text = "", fg = "#74c7ec" }, + { name = "scala", text = "", fg = "#f38ba8" }, + { name = "exs", text = "", fg = "#7f849c" }, + { name = "odp", text = "", fg = "#fab387" }, + { name = "dump", text = "", fg = "#f5e0dc" }, + { name = "stp", text = "󰻫", fg = "#a6e3a1" }, + { name = "step", text = "󰻫", fg = "#a6e3a1" }, + { name = "ste", text = "󰻫", fg = "#a6e3a1" }, + { name = "aif", text = "", fg = "#74c7ec" }, + { name = "strings", text = "", fg = "#74c7ec" }, + { name = "cp", text = "", fg = "#74c7ec" }, + { name = "fsscript", text = "", fg = "#74c7ec" }, + { name = "mli", text = "", fg = "#fab387" }, + { name = "bak", text = "󰁯", fg = "#7f849c" }, + { name = "ssa", text = "󰨖", fg = "#f9e2af" }, + { name = "toml", text = "", fg = "#585b70" }, + { name = "makefile", text = "", fg = "#7f849c" }, + { name = "php", text = "", fg = "#7f849c" }, + { name = "zst", text = "", fg = "#fab387" }, + { name = "spec.jsx", text = "", fg = "#74c7ec" }, + { name = "kbx", text = "󰯄", fg = "#6c7086" }, + { name = "fbx", text = "󰆧", fg = "#7f849c" }, + { name = "blend", text = "󰂫", fg = "#fab387" }, + { name = "ifc", text = "󰻫", fg = "#a6e3a1" }, + { name = "spec.js", text = "", fg = "#f9e2af" }, + { name = "so", text = "", fg = "#f5e0dc" }, + { name = "desktop", text = "", fg = "#45475a" }, + { name = "sml", text = "λ", fg = "#fab387" }, + { name = "slvs", text = "󰻫", fg = "#a6e3a1" }, + { name = "pp", text = "", fg = "#fab387" }, + { name = "ps1", text = "󰨊", fg = "#6c7086" }, + { name = "dropbox", text = "", fg = "#6c7086" }, + { name = "kicad_mod", text = "", fg = "#f5e0dc" }, + { name = "bat", text = "", fg = "#a6e3a1" }, + { name = "slim", text = "", fg = "#fab387" }, + { name = "skp", text = "󰻫", fg = "#a6e3a1" }, + { name = "css", text = "", fg = "#89b4fa" }, + { name = "xul", text = "", fg = "#fab387" }, + { name = "ige", text = "󰻫", fg = "#a6e3a1" }, + { name = "glb", text = "", fg = "#fab387" }, + { name = "ppt", text = "󰈧", fg = "#f38ba8" }, + { name = "sha512", text = "󰕥", fg = "#7f849c" }, + { name = "ics", text = "", fg = "#313244" }, + { name = "mdx", text = "", fg = "#74c7ec" }, + { name = "sha1", text = "󰕥", fg = "#7f849c" }, + { name = "f3d", text = "󰻫", fg = "#a6e3a1" }, + { name = "ass", text = "󰨖", fg = "#f9e2af" }, + { name = "godot", text = "", fg = "#7f849c" }, + { name = "ifb", text = "", fg = "#313244" }, + { name = "cson", text = "", fg = "#f9e2af" }, + { name = "lib", text = "", fg = "#11111b" }, + { name = "luac", text = "", fg = "#74c7ec" }, + { name = "heex", text = "", fg = "#7f849c" }, + { name = "scm", text = "󰘧", fg = "#f5e0dc" }, + { name = "psd1", text = "󰨊", fg = "#7f849c" }, + { name = "sc", text = "", fg = "#f38ba8" }, + { name = "scad", text = "", fg = "#f9e2af" }, + { name = "kts", text = "", fg = "#6c7086" }, + { name = "svh", text = "󰍛", fg = "#a6e3a1" }, + { name = "mts", text = "", fg = "#74c7ec" }, + { name = "nfo", text = "", fg = "#f9e2af" }, + { name = "pck", text = "", fg = "#7f849c" }, + { name = "rproj", text = "󰗆", fg = "#a6e3a1" }, + { name = "rlib", text = "", fg = "#fab387" }, + { name = "cljd", text = "", fg = "#74c7ec" }, + { name = "ods", text = "", fg = "#a6e3a1" }, + { name = "res", text = "", fg = "#f38ba8" }, + { name = "apk", text = "", fg = "#a6e3a1" }, + { name = "haml", text = "", fg = "#f5e0dc" }, + { name = "d.ts", text = "", fg = "#fab387" }, + { name = "razor", text = "󱦘", fg = "#585b70" }, + { name = "rake", text = "", fg = "#313244" }, + { name = "patch", text = "", fg = "#45475a" }, + { name = "cuh", text = "", fg = "#7f849c" }, + { name = "d", text = "", fg = "#f38ba8" }, + { name = "query", text = "", fg = "#a6e3a1" }, + { name = "psb", text = "", fg = "#74c7ec" }, + { name = "nu", text = ">", fg = "#a6e3a1" }, + { name = "mov", text = "", fg = "#fab387" }, + { name = "lrc", text = "󰨖", fg = "#f9e2af" }, + { name = "pyx", text = "", fg = "#89b4fa" }, + { name = "pyw", text = "", fg = "#89b4fa" }, + { name = "cu", text = "", fg = "#a6e3a1" }, + { name = "bazel", text = "", fg = "#a6e3a1" }, + { name = "obj", text = "󰆧", fg = "#7f849c" }, + { name = "pyi", text = "", fg = "#f9e2af" }, + { name = "pyd", text = "", fg = "#f9e2af" }, + { name = "exe", text = "", fg = "#45475a" }, + { name = "pyc", text = "", fg = "#f9e2af" }, + { name = "fctb", text = "", fg = "#f38ba8" }, + { name = "part", text = "", fg = "#94e2d5" }, + { name = "blade.php", text = "", fg = "#f38ba8" }, + { name = "git", text = "", fg = "#fab387" }, + { name = "psd", text = "", fg = "#74c7ec" }, + { name = "qss", text = "", fg = "#a6e3a1" }, + { name = "csv", text = "", fg = "#a6e3a1" }, + { name = "psm1", text = "󰨊", fg = "#7f849c" }, + { name = "dconf", text = "", fg = "#f5e0dc" }, + { name = "config.ru", text = "", fg = "#313244" }, + { name = "prisma", text = "", fg = "#6c7086" }, + { name = "conf", text = "", fg = "#7f849c" }, + { name = "clj", text = "", fg = "#a6e3a1" }, + { name = "o", text = "", fg = "#45475a" }, + { name = "mp4", text = "", fg = "#fab387" }, + { name = "cc", text = "", fg = "#f38ba8" }, + { name = "kicad_prl", text = "", fg = "#f5e0dc" }, + { name = "bz3", text = "", fg = "#fab387" }, + { name = "asc", text = "󰦝", fg = "#6c7086" }, + { name = "png", text = "", fg = "#7f849c" }, + { name = "android", text = "", fg = "#a6e3a1" }, + { name = "pm", text = "", fg = "#74c7ec" }, + { name = "h", text = "", fg = "#7f849c" }, + { name = "pls", text = "󰲹", fg = "#f38ba8" }, + { name = "ipynb", text = "", fg = "#fab387" }, + { name = "pl", text = "", fg = "#74c7ec" }, + { name = "ads", text = "", fg = "#f5e0dc" }, + { name = "sqlite", text = "", fg = "#f5e0dc" }, + { name = "pdf", text = "", fg = "#585b70" }, + { name = "pcm", text = "", fg = "#6c7086" }, + { name = "ico", text = "", fg = "#f9e2af" }, + { name = "a", text = "", fg = "#f5e0dc" }, + { name = "R", text = "󰟔", fg = "#6c7086" }, + { name = "ogg", text = "", fg = "#6c7086" }, + { name = "pxd", text = "", fg = "#89b4fa" }, + { name = "kdenlivetitle", text = "", fg = "#89b4fa" }, + { name = "jxl", text = "", fg = "#7f849c" }, + { name = "nswag", text = "", fg = "#a6e3a1" }, + { name = "nim", text = "", fg = "#f9e2af" }, + { name = "bqn", text = "⎉", fg = "#6c7086" }, + { name = "cts", text = "", fg = "#74c7ec" }, + { name = "fcparam", text = "", fg = "#f38ba8" }, + { name = "rs", text = "", fg = "#fab387" }, + { name = "mpp", text = "", fg = "#74c7ec" }, + { name = "fdmdownload", text = "", fg = "#94e2d5" }, + { name = "pptx", text = "󰈧", fg = "#f38ba8" }, + { name = "jpeg", text = "", fg = "#7f849c" }, + { name = "bib", text = "󱉟", fg = "#f9e2af" }, + { name = "vhd", text = "󰍛", fg = "#a6e3a1" }, + { name = "m", text = "", fg = "#89b4fa" }, + { name = "js", text = "", fg = "#f9e2af" }, + { name = "eex", text = "", fg = "#7f849c" }, + { name = "tbc", text = "󰛓", fg = "#585b70" }, + { name = "astro", text = "", fg = "#f38ba8" }, + { name = "sha224", text = "󰕥", fg = "#7f849c" }, + { name = "xcplayground", text = "", fg = "#fab387" }, + { name = "el", text = "", fg = "#7f849c" }, + { name = "m4v", text = "", fg = "#fab387" }, + { name = "m4a", text = "", fg = "#74c7ec" }, + { name = "cs", text = "󰌛", fg = "#585b70" }, + { name = "hs", text = "", fg = "#7f849c" }, + { name = "tgz", text = "", fg = "#fab387" }, + { name = "fs", text = "", fg = "#74c7ec" }, + { name = "luau", text = "", fg = "#89b4fa" }, + { name = "dxf", text = "󰻫", fg = "#a6e3a1" }, + { name = "download", text = "", fg = "#94e2d5" }, + { name = "cast", text = "", fg = "#fab387" }, + { name = "qrc", text = "", fg = "#a6e3a1" }, + { name = "lua", text = "", fg = "#74c7ec" }, + { name = "lhs", text = "", fg = "#7f849c" }, + { name = "md", text = "", fg = "#cdd6f4" }, + { name = "leex", text = "", fg = "#7f849c" }, + { name = "ai", text = "", fg = "#f9e2af" }, + { name = "lck", text = "", fg = "#bac2de" }, + { name = "kt", text = "", fg = "#6c7086" }, + { name = "bicepparam", text = "", fg = "#7f849c" }, + { name = "hex", text = "", fg = "#6c7086" }, + { name = "zig", text = "", fg = "#fab387" }, + { name = "bzl", text = "", fg = "#a6e3a1" }, + { name = "cljc", text = "", fg = "#a6e3a1" }, + { name = "kicad_dru", text = "", fg = "#f5e0dc" }, + { name = "fctl", text = "", fg = "#f38ba8" }, + { name = "f#", text = "", fg = "#74c7ec" }, + { name = "odt", text = "", fg = "#74c7ec" }, + { name = "conda", text = "", fg = "#a6e3a1" }, + { name = "vala", text = "", fg = "#585b70" }, + { name = "erb", text = "", fg = "#313244" }, + { name = "mp3", text = "", fg = "#74c7ec" }, + { name = "bz2", text = "", fg = "#fab387" }, + { name = "coffee", text = "", fg = "#f9e2af" }, + { name = "cr", text = "", fg = "#f5e0dc" }, + { name = "f90", text = "󱈚", fg = "#585b70" }, + { name = "jwmrc", text = "", fg = "#6c7086" }, + { name = "c++", text = "", fg = "#f38ba8" }, + { name = "fcscript", text = "", fg = "#f38ba8" }, + { name = "fods", text = "", fg = "#a6e3a1" }, + { name = "cue", text = "󰲹", fg = "#f38ba8" }, + { name = "srt", text = "󰨖", fg = "#f9e2af" }, + { name = "info", text = "", fg = "#f9e2af" }, + { name = "hh", text = "", fg = "#7f849c" }, + { name = "sig", text = "λ", fg = "#fab387" }, + { name = "html", text = "", fg = "#fab387" }, + { name = "iges", text = "󰻫", fg = "#a6e3a1" }, + { name = "kicad_wks", text = "", fg = "#f5e0dc" }, + { name = "hbs", text = "", fg = "#fab387" }, + { name = "fcstd", text = "", fg = "#f38ba8" }, + { name = "gresource", text = "", fg = "#f5e0dc" }, + { name = "sub", text = "󰨖", fg = "#f9e2af" }, + { name = "ical", text = "", fg = "#313244" }, + { name = "crdownload", text = "", fg = "#94e2d5" }, + { name = "pub", text = "󰷖", fg = "#f9e2af" }, + { name = "vue", text = "", fg = "#a6e3a1" }, + { name = "gd", text = "", fg = "#7f849c" }, + { name = "fsx", text = "", fg = "#74c7ec" }, + { name = "mkv", text = "", fg = "#fab387" }, + { name = "py", text = "", fg = "#f9e2af" }, + { name = "kicad_sch", text = "", fg = "#f5e0dc" }, + { name = "epub", text = "", fg = "#fab387" }, + { name = "env", text = "", fg = "#f9e2af" }, + { name = "magnet", text = "", fg = "#45475a" }, + { name = "elf", text = "", fg = "#45475a" }, + { name = "fodg", text = "", fg = "#f9e2af" }, + { name = "svg", text = "󰜡", fg = "#fab387" }, + { name = "dwg", text = "󰻫", fg = "#a6e3a1" }, + { name = "docx", text = "󰈬", fg = "#585b70" }, + { name = "pro", text = "", fg = "#f9e2af" }, + { name = "db", text = "", fg = "#f5e0dc" }, + { name = "rb", text = "", fg = "#313244" }, + { name = "r", text = "󰟔", fg = "#6c7086" }, + { name = "scss", text = "", fg = "#f38ba8" }, + { name = "cow", text = "󰆚", fg = "#fab387" }, + { name = "gleam", text = "", fg = "#f5c2e7" }, + { name = "v", text = "󰍛", fg = "#a6e3a1" }, + { name = "kicad_pro", text = "", fg = "#f5e0dc" }, + { name = "liquid", text = "", fg = "#a6e3a1" }, + { name = "zip", text = "", fg = "#fab387" }, +] diff --git a/tools/zed/keymap.json b/tools/zed/keymap.json new file mode 100755 index 0000000..d3a9cd5 --- /dev/null +++ b/tools/zed/keymap.json @@ -0,0 +1,62 @@ +// $DOTFILES/tools/zed/keymaps.json +// Date: 2025-01-25 +// Author: js0ny +// Description: Zed keymaps + +// Location: +// GNU/Linux: ~/.config/zed/keymaps.json +// Windows: %APPDATA%\Zed\keymaps.json +// Linking: (link the whole directory) +// ln -sf $DOTFILES/tools/zed ~/.config/zed + +// Zed keymap + +// + +// For information on binding keys, see the Zed + +// documentation: https://zed.dev/docs/key-bindings + +// + +// To see the default key bindings run `zed: open default keymap` + +// from the command palette. + +[ + { + "context": "Workspace", + + "bindings": { + // "shift shift": "file_finder::Toggle" + } + }, + + { + "context": "Editor", + + "bindings": { + // "j k": ["workspace::SendKeystrokes", "escape"] + } + }, + { + "context": "vim_mode == normal || vim_mode == visual", + + "bindings": { + "N": "vim::JoinLines", + "l": "vim::InsertBefore", + "L": "vim::InsertFirstNonWhitespace" + } + }, + { + "context": "vim_mode == normal || vim_mode == visual || vim_mode == operator", + + "bindings": { + "n": "vim::Down", + "e": "vim::Up", + "i": "vim::Right", + "k": "search::SelectNextMatch", + "K": "search::SelectPrevMatch" + } + } +] diff --git a/tools/zed/settings.json b/tools/zed/settings.json new file mode 100644 index 0000000..24fa39f --- /dev/null +++ b/tools/zed/settings.json @@ -0,0 +1,30 @@ +// $DOTFILES/tools/zed/settings.json +// Date: 2025-01-25 +// Author: js0ny +// Description: Zed settings (jsonc) + +// Location: +// GNU/Linux: ~/.config/zed/settings.json +// Windows: %APPDATA%\Zed\settings.json +// Linking: (link the whole directory) +// ln -sf $DOTFILES/tools/zed ~/.config/zed +// +// Zed settings +// +// For information on how to configure Zed, see the Zed +// documentation: https://zed.dev/docs/configuring-zed +// +// To see all of Zed's default settings without changing your +// custom settings, run `zed: open default settings` from the +// command palette (cmd-shift-p / ctrl-shift-p) +{ + "vim_mode": true, + "ui_font_size": 16, + "buffer_font_size": 16, + "theme": { + "mode": "dark", + "light": "Catppuccin Latte", + "dark": "Catppuccin Mocha" + }, + "relative_line_numbers": true +} diff --git a/tools/zed/snippets/c.json b/tools/zed/snippets/c.json new file mode 100755 index 0000000..6291a41 --- /dev/null +++ b/tools/zed/snippets/c.json @@ -0,0 +1,28 @@ +{ + "main": { + "prefix": "main", + "body": [ + "int main() {", + " $1", + " return 0;", + "}" + ], + "description": "Main function with no arguments" + }, + "mainn": { + "prefix": "mainn", + "body": [ + "", + "int main(int argc, char *argv[]) {", + " $1", + " return 0;", + "}" + ], + "description": "Main function with arguments" + }, + "once": { + "prefix": "#once", + "body": ["#ifndef $1", "#define $1", "", "$2", "", "#endif"], + "description": "Include guard" + } +} diff --git a/tools/zsh/mod/prompt.zsh b/tools/zsh/mod/prompt.zsh index 1f4ec4e..b7a178a 100644 --- a/tools/zsh/mod/prompt.zsh +++ b/tools/zsh/mod/prompt.zsh @@ -3,7 +3,6 @@ # Author: js0ny # Sourced by user's zshrc 在用户的 zshrc 中被引用 -export STARSHIP_CONFIG=$DOTFILES/tools/starship/starship_zsh.toml eval "$(starship init zsh)"