From 9773ec9330ea80c7ae42e647423e810b20043dba Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Thu, 28 Nov 2024 14:18:15 +0200 Subject: [PATCH] Added syntax highlighting to zsh and some other minor tweaks --- .config/nvim/after/ftplugin/zsh.lua | 5 ++++ .../nvim/after/queries/bash/highlights.scm | 7 +++++ .../lua/custom/plugins/nvim-treesitter.lua | 12 +++++++- .zshrc | 30 +++++++++---------- 4 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 .config/nvim/after/ftplugin/zsh.lua create mode 100644 .config/nvim/after/queries/bash/highlights.scm diff --git a/.config/nvim/after/ftplugin/zsh.lua b/.config/nvim/after/ftplugin/zsh.lua new file mode 100644 index 0000000..e20fbe1 --- /dev/null +++ b/.config/nvim/after/ftplugin/zsh.lua @@ -0,0 +1,5 @@ +Event = 'VeryLazy' + +vim.opt_local.tabstop = 2 -- number of visual spaces per TAB +vim.opt_local.softtabstop = 2 -- number of idfk tab when editing +vim.opt_local.shiftwidth = 2 -- number of spaces to insert on tab diff --git a/.config/nvim/after/queries/bash/highlights.scm b/.config/nvim/after/queries/bash/highlights.scm new file mode 100644 index 0000000..b7e6b17 --- /dev/null +++ b/.config/nvim/after/queries/bash/highlights.scm @@ -0,0 +1,7 @@ +;extends + +; highlight `return` and `exit` like return statements in other languages with +; `@keyword.return` + +((word) @keyword.return + (#any-of? @keyword.return "return" "exit")) diff --git a/.config/nvim/lua/custom/plugins/nvim-treesitter.lua b/.config/nvim/lua/custom/plugins/nvim-treesitter.lua index 61590b0..96ac728 100644 --- a/.config/nvim/lua/custom/plugins/nvim-treesitter.lua +++ b/.config/nvim/lua/custom/plugins/nvim-treesitter.lua @@ -6,7 +6,6 @@ return { ---@type userdata ---@diagnostic disable-next-line: missing-fields require('nvim-treesitter.configs').setup({ - -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally auto_install = true, highlight = { enable = true }, indent = { enable = true }, @@ -16,6 +15,17 @@ return { max_file_lines = nil, }, }) + + -- HACK: Workaround to have syntax highlighting in zsh until a zsh parser is added + -- https://github.com/nvim-treesitter/nvim-treesitter/issues/655 + local ft_to_lang = require('nvim-treesitter.parsers').ft_to_lang + ---@diagnostic disable-next-line: duplicate-set-field + require('nvim-treesitter.parsers').ft_to_lang = function(ft) + if ft == 'zsh' then + return 'bash' + end + return ft_to_lang(ft) + end end, }, { diff --git a/.zshrc b/.zshrc index 9e31d03..af7fb03 100644 --- a/.zshrc +++ b/.zshrc @@ -2,11 +2,11 @@ START_TIME=$(date +%s.%3N) # Install zinit if missing if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then - print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f" - command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit" - command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \ - print -P "%F{33} %F{34}Installation successful.%f%b" || \ - print -P "%F{160} The clone has failed.%f%b" + print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f" + command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit" + command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \ + print -P "%F{33} %F{34}Installation successful.%f%b" || \ + print -P "%F{160} The clone has failed.%f%b" fi # Load Zinit @@ -73,9 +73,9 @@ export EDITOR=nvim export PAGER=nvimpager export MANPAGER='nvim +Man!' export FZF_DEFAULT_OPTS=" \ - --color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \ - --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \ - --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8" + --color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \ + --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \ + --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8" export GOPATH="$HOME/go" export PATH="$GOPATH/bin:$PATH" @@ -92,17 +92,17 @@ esac # Start ssh-agent if not running eval $(keychain --quiet --eval --timeout 300 ~/.ssh/id_ed25519) +# HACK: Send a notification so systemd notification will work +MARKER_FILE="/run/user/$(id -u)/zshrc_once_marker" +if [ ! -f "$MARKER_FILE" ]; then + notify-send --urgency=normal --expire-time=1 " " + touch "$MARKER_FILE" +fi + # Open tmux if it's not open # if [ -z "$TMUX" ]; then # tmux a || tmux # fi -# HACK: Send a notification so systemd notification will work -MARKER_FILE="/run/user/$(id -u)/zshrc_once_marker" -if [ ! -f "$MARKER_FILE" ]; then - notify-send --urgency=normal --expire-time=1 " " - touch "$MARKER_FILE" -fi - END_TIME=$(date +%s.%4N) echo "Zsh startup time: $(echo "${END_TIME} - ${START_TIME}" | bc) seconds"