diff --git a/X11/xinitrc b/X11/xinitrc index 56ff112..09a7bc7 100644 --- a/X11/xinitrc +++ b/X11/xinitrc @@ -4,6 +4,7 @@ xsetroot -cursor_name left_ptr & xcompmgr & fcitx & xset r rate 200 30 +xset s 0 900 xrdb -merge "$XDG_CONFIG_HOME/X11/xresources" exec runsvdir -P ~/.local/service.x diff --git a/amfora/config.toml b/amfora/config.toml new file mode 100644 index 0000000..bb209b6 --- /dev/null +++ b/amfora/config.toml @@ -0,0 +1,368 @@ +# This is the default config file. +# It also shows all the default values, if you don't create the file. + +# All URL values may omit the scheme and/or port, as well as the beginning double slash +# Valid URL examples: +# gemini://example.com +# //example.com +# example.com +# example.com:123 + + +[a-general] +# Press Ctrl-H to access it +home = "gemini://gemini.circumlunar.space" + +# Follow up to 5 Gemini redirects without prompting. +# A prompt is always shown after the 5th redirect and for redirects to protocols other than Gemini. +# If set to false, a prompt will be shown before following redirects. +auto_redirect = false + +# What command to run to open a HTTP(S) URL. +# Set to "default" to try to guess the browser, or set to "off" to not open HTTP(S) URLs. +# If a command is set, than the URL will be added (in quotes) to the end of the command. +# A space will be prepended to the URL. +# +# The best to define a command is using a string array. +# Examples: +# http = ['firefox'] +# http = ['custom-browser', '--flag', '--option=2'] +# http = ['/path/with spaces/in it/firefox'] +# +# Note the use of single quotes, so that backslashes will not be escaped. +# Using just a string will also work, but it is deprecated, and will degrade if +# you use paths with spaces. + +http = 'default' + +# Any URL that will accept a query string can be put here +search = "gemini://gus.guru/search" + +# Whether colors will be used in the terminal +color = true + +# Whether ANSI color codes from the page content should be rendered +ansi = true + +# Whether to replace list asterisks with unicode bullets +bullets = true + +# Whether to show link after link text +show_link = false + +# A number from 0 to 1, indicating what percentage of the terminal width the left margin should take up. +left_margin = 0.15 + +# The max number of columns to wrap a page's text to. Preformatted blocks are not wrapped. +max_width = 100 + +# 'downloads' is the path to a downloads folder. +# An empty value means the code will find the default downloads folder for your system. +# If the path does not exist it will be created. +# Note the use of single quotes, so that backslashes will not be escaped. +downloads = '' + +# Max size for displayable content in bytes - after that size a download window pops up +page_max_size = 2097152 # 2 MiB +# Max time it takes to load a page in seconds - after that a download window pops up +page_max_time = 10 + +# Whether to replace tab numbers with emoji favicons, which are cached. +emoji_favicons = false + +# When a scrollbar appears. "never", "auto", and "always" are the only valid values. +# "auto" means the scrollbar only appears when the page is longer than the window. +scrollbar = "auto" + + +[auth] +# Authentication settings +# Note the use of single quotes for values, so that backslashes will not be escaped. + +[auth.certs] +# Client certificates +# Set domain name equal to path to client cert +# "example.com" = 'mycert.crt' + +[auth.keys] +# Client certificate keys +# Set domain name equal to path to key for the client cert above +# "example.com" = 'mycert.key' + + +[keybindings] +# If you have a non-US keyboard, use bind_tab1 through bind_tab0 to +# setup the shift-number bindings: Eg, for US keyboards (the default): +bind_tab1 = "!" +bind_tab2 = "\"" +bind_tab3 = "#" +bind_tab4 = "$" +bind_tab5 = "%" +bind_tab6 = "&" +bind_tab7 = "/" +bind_tab8 = "(" +bind_tab9 = ")" +bind_tab0 = "=" + +# Whitespace is not allowed in any of the keybindings! Use 'Space' and 'Tab' to bind to those keys. +# Multiple keys can be bound to one command, just use a TOML array. +# To add the Alt modifier, the binding must start with Alt-, should be reasonably universal +# Ctrl- won't work on all keys, see this for a list: +# https://github.com/gdamore/tcell/blob/cb1e5d6fa606/key.go#L83 + +# An example of a TOML array for multiple keys being bound to one command is the default +# binding for reload: +# bind_reload = ["R","Ctrl-R"] +# One thing to note here is that "R" is capitalization sensitive, so it means shift-r. +# "Ctrl-R" means both ctrl-r and ctrl-shift-R (this is a quirk of what ctrl-r means on +# an ANSI terminal) + +# The default binding for opening the bottom bar for entering a URL or link number is: +# bind_bottom = "Space" +# This is how to get the Spacebar as a keybinding, if you try to use " ", it won't work. +# And, finally, an example of a simple, unmodified character is: +# bind_edit = "e" +# This binds the "e" key to the command to edit the current URL. + +# The bind_link[1-90] options are for the commands to go to the first 10 links on a page, +# typically these are bound to the number keys: +# bind_link1 = "1" +# bind_link2 = "2" +# bind_link3 = "3" +# bind_link4 = "4" +# bind_link5 = "5" +# bind_link6 = "6" +# bind_link7 = "7" +# bind_link8 = "8" +# bind_link9 = "9" +# bind_link0 = "0" + +# All keybindings: +# +# bind_bottom +# bind_edit +# bind_home +# bind_bookmarks +# bind_add_bookmark +# bind_save +# bind_reload +# bind_back +# bind_forward +# bind_pgup +# bind_pgdn +# bind_new_tab +# bind_close_tab +# bind_next_tab +# bind_prev_tab +# bind_quit +# bind_help +# bind_sub: for viewing the subscriptions page +# bind_add_sub + +[url-handlers] +# Allows setting the commands to run for various URL schemes. +# E.g. to open FTP URLs with FileZilla set the following key: +# ftp = 'filezilla' +# You can set any scheme to "off" or "" to disable handling it, or +# just leave the key unset. +# +# DO NOT use this for setting the HTTP command. +# Use the http setting in the "a-general" section above. +# +# NOTE: These settings are overrided by the ones in the proxies section. +# Note the use of single quotes, so that backslashes will not be escaped. + +# This is a special key that defines the handler for all URL schemes for which +# no handler is defined. +other = 'off' + + +# [[mediatype-handlers]] section +# --------------------------------- +# +# Specify what applications will open certain media types. +# By default your default application will be used to open the file when you select "Open". +# You only need to configure this section if you want to override your default application, +# or do special things like streaming. +# +# Note the use of single quotes for commands, so that backslashes will not be escaped. +# +# +# To open jpeg files with the feh command: +# +[[mediatype-handlers]] +cmd = ['sxiv-gif'] +types = ["image/gif"] +# +# Each command that you specify must come under its own [[mediatype-handlers]]. You may +# specify as many [[mediatype-handlers]] as you want to setup multiple commands. +# +# If the subtype is omitted then the specified command will be used for the +# entire type: +# +[[mediatype-handlers]] +command = ['mpd', '-'] +types = ["audio", "video"] +stream = true +# +# A catch-all handler can by specified with "*". +# Note that there are already catch-all handlers in place for all OSes, +# that open the file using your default application. This is only if you +# want to override that. +# +# [[mediatype-handlers]] +# cmd = ['some-command'] +# types = [ +# "application/pdf", +# "*", +# ] +# +# You can also choose to stream the data instead of downloading it all before +# opening it. This is especially useful for large video or audio files, as +# well as radio streams, which will never complete. You can do this like so: +# +# [[mediatype-handlers]] +# cmd = ['vlc', '-'] +# types = ["audio", "video"] +# stream = true +# +# This uses vlc to stream all video and audio content. +# By default stream is set to off for all handlers +# +# +# If you want to always open a type in its viewer without the download or open +# prompt appearing, you can add no_prompt = true +# +[[mediatype-handlers]] +cmd = ['sxiv'] +types = ["image"] +no_prompt = true +# +# Note: Multiple handlers cannot be defined for the same full media type, but +# still there needs to be an order for which handlers are used. The following +# order applies regardless of the order written in the config: +# +# 1. Full media type: "image/jpeg" +# 2. Just type: "image" +# 3. Catch-all: "*" + + +[cache] +# Options for page cache - which is only for text pages +# Increase the cache size to speed up browsing at the expense of memory +# Zero values mean there is no limit + +max_size = 0 # Size in bytes +max_pages = 30 # The maximum number of pages the cache will store + +# How long a page will stay in cache, in seconds. +timeout = 1800 # 30 mins + +[proxies] +# Allows setting a Gemini proxy for different schemes. +# The settings are similar to the url-handlers section above. +# E.g. to open a gopher page by connecting to a Gemini proxy server: +# gopher = "example.com:123" +# +# Port 1965 is assumed if no port is specified. +# +# NOTE: These settings override any external handlers specified in +# the url-handlers section. +# +# Note that HTTP and HTTPS are treated as separate protocols here. + + +[subscriptions] +# For tracking feeds and pages + +# Whether a pop-up appears when viewing a potential feed +popup = true + +# How often to check for updates to subscriptions in the background, in seconds. +# Set it to 0 to disable this feature. You can still update individual feeds +# manually, or restart the browser. +# +# Note Amfora will check for updates on browser start no matter what this setting is. +update_interval = 1800 # 30 mins + +# How many subscriptions can be checked at the same time when updating. +# If you have many subscriptions you may want to increase this for faster +# update times. Any value below 1 will be corrected to 1. +workers = 3 + +# The number of subscription updates displayed per page. +entries_per_page = 20 + + +[theme] +# This section is for changing the COLORS used in Amfora. +# These colors only apply if 'color' is enabled above. +# Colors can be set using a W3C color name, or a hex value such as "#ffffff". + +# Note that not all colors will work on terminals that do not have truecolor support. +# If you want to stick to the standard 16 or 256 colors, you can get +# a list of those here: https://jonasjacek.github.io/colors/ +# DO NOT use the names from that site, just the hex codes. + +# Definitions: +# bg = background +# fg = foreground +# dl = download +# btn = button +# hdg = heading +# bkmk = bookmark +# modal = a popup window/box in the middle of the screen + +# EXAMPLES: +# hdg_1 = "green" +# hdg_2 = "#5f0000" + +# Available keys to set: + +# bg: background for pages, tab row, app in general +# tab_num: The number/highlight of the tabs at the top +# tab_divider: The color of the divider character between tab numbers: | +# bottombar_label: The color of the prompt that appears when you press space +# bottombar_text: The color of the text you type +# bottombar_bg +# scrollbar: The scrollbar that appears on the right for long pages + +# hdg_1 +# hdg_2 +# hdg_3 +# amfora_link: A link that Amfora supports viewing. For now this is only gemini:// +# foreign_link: HTTP(S), Gopher, etc +# link_number: The silver number that appears to the left of a link +# regular_text: Normal gemini text, and plaintext documents +# quote_text +# preformatted_text +# list_text + +# btn_bg: The bg color for all modal buttons +# btn_text: The text color for all modal buttons + +# dl_choice_modal_bg +# dl_choice_modal_text +# dl_modal_bg +# dl_modal_text +# info_modal_bg +# info_modal_text +# error_modal_bg +# error_modal_text +# yesno_modal_bg +# yesno_modal_text +# tofu_modal_bg +# tofu_modal_text +# subscription_modal_bg +# subscription_modal_text + +# input_modal_bg +# input_modal_text +# input_modal_field_bg: The bg of the input field, where you type the text +# input_modal_field_text: The color of the text you type + +# bkmk_modal_bg +# bkmk_modal_text +# bkmk_modal_label +# bkmk_modal_field_bg +# bkmk_modal_field_text diff --git a/dunst/dunstrc b/dunst/dunstrc index ec15615..da55473 100644 --- a/dunst/dunstrc +++ b/dunst/dunstrc @@ -9,56 +9,30 @@ show_age_threshold = -1 word_wrap = no ignore_newline = yes - - # The geometry of the window: - # [{width}]x{height}[+/-{x}+/-{y}] - # The geometry of the message window. - # The height is measured in number of notifications everything else - # in pixels. If the width is omitted but the height is given - # ("-geometry x2"), the message window expands over the whole screen - # (dmenu-like). If width is 0, the window expands to the longest - # message displayed. A positive x is measured from the left, a - # negative from the right side of the screen. Y is measured from - # the top and down respectively. - # The width can be negative. In this case the actual width is the - # screen width minus the width defined in within the geometry option. - geometry = "0x1+0+0" - - title = Dunst # Define window title - class = Dunst # Define window class - shrink = yes # Shrink window, or set to 0 - idle_threshold = 120 # Keep messages for how long - follow = mouse # Where to display notifications - stack_duplicates = true # Merge multiple similar notifications + width = 0 + origin = top-left + offset = 0x0 + notification_limit = 1 + title = Dunst + class = Dunst + shrink = yes + idle_threshold = 120 + follow = mouse + stack_duplicates = true hide_duplicate_count = true sticky_history = no history_length = 1 show_indicators = no - - # The spacing between lines. If smaller than font height, - # it will get raised to the font height. line_height = 0 - - # The height of the entire notification. If smaller than the - # font height and padding combined, it will be raised to the - # font height and padding. notification_height = 0 - separator_height = 0 - padding = 0 # Padding between text and separator. + padding = 0 horizontal_padding = 10 - - # Define a color for the separator. - # * auto: dunst tries to find a color fitting to the background; - # * foreground: use the same color as the foreground; - # * frame: use the same color as the frame; - # * anything else will be interpreted as a X color. separator_color = frame - startup_notification = false dmenu = /usr/bin/dmenu -p dunst: browser = /usr/bin/firefox -new-tab - icon_position = left # Align icons left/right/off + icon_position = left max_icon_size = 24 # Paths to default icons. @@ -69,12 +43,6 @@ frame_width = 1 per_monitor_dpi = false -[shortcuts] - close = mod4+apostrophe - close_all = mod4+mod1+apostrophe - history = mod4+ctrl+apostrophe - context = mod4+ctrl+semicolon - [urgency_low] background = "#080808" foreground = "#e8d0c0" diff --git a/fzf-marks b/fzf-marks index 128d505..1926ad5 100644 --- a/fzf-marks +++ b/fzf-marks @@ -1,21 +1,21 @@ marks : /home/corpse/.config/fzf-marks git : /home/corpse/.config/git/config -gtk3 : /home/corpse/.config/gtk-3.0/settings.ini lfview : /home/corpse/.local/bin/lfview -gtk2 : /home/corpse/.config/gtk-2.0/gtkrc-2.0 -dunst : /home/corpse/.config/dunst/dunstrc xresources : /home/corpse/.config/X11/xresources correo : /home/corpse/.config/neomutt xinit : /home/corpse/.config/X11/xinitrc terminal : /home/corpse/.config/alacritty.yml -tmux : /home/corpse/.config/tmux/tmux.conf -alias : /home/corpse/.config/zsh/conf/03_aliases.zsh mpv : /home/corpse/.config/mpv/mpv.conf lf : /home/corpse/.config/lf/lfrc -zshenv : /home/corpse/.zshenv polybar : /home/corpse/.config/polybar/config keys : /home/corpse/.config/sxhkd/sxhkdrc bspwm : /home/corpse/.config/bspwm/bspwmrc -nvim : /home/corpse/.config/nvim zsh : /home/corpse/.config/zsh +alias : /home/corpse/.config/zsh/conf/03_aliases.zsh +dunst : /home/corpse/.config/dunst/dunstrc +gtk2 : /home/corpse/.config/gtk-2.0/gtkrc-2.0 +gtk3 : /home/corpse/.config/gtk-3.0/settings.ini +tmux : /home/corpse/.config/tmux/tmux.conf +zshenv : /home/corpse/.zshenv +nvim : /home/corpse/.config/nvim diff --git a/gtk-2.0/gtkrc-2.0 b/gtk-2.0/gtkrc-2.0 index 8cbfa72..9baebae 100644 --- a/gtk-2.0/gtkrc-2.0 +++ b/gtk-2.0/gtkrc-2.0 @@ -4,7 +4,7 @@ include "/home/corpse/.gtkrc-2.0.mine" gtk-theme-name="Skeuos-Black-Dark" gtk-icon-theme-name="BluecurveRH" -gtk-font-name="System Charcoal 10" +gtk-font-name="Noto Sans 10" gtk-cursor-theme-name="Grounation" gtk-cursor-theme-size=0 gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ diff --git a/gtk-3.0/settings.ini b/gtk-3.0/settings.ini index ae04df5..d670c90 100644 --- a/gtk-3.0/settings.ini +++ b/gtk-3.0/settings.ini @@ -3,7 +3,7 @@ gtk-application-prefer-dark-theme=1 gtk-cursor-theme-name=Grounation gtk-theme-name=Skeuos-Black-Dark gtk-icon-theme-name=BluecurveRH -gtk-font-name=System Charcoal 10 +gtk-font-name=Noto Sans 10 gtk-cursor-theme-size=0 gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR diff --git a/luarocks/config-5.3.lua b/luarocks/config-5.3.lua new file mode 100644 index 0000000..792b189 --- /dev/null +++ b/luarocks/config-5.3.lua @@ -0,0 +1,12 @@ +-- LuaRocks configuration + +rocks_trees = { + { name = "user", root = home .. "/.local/share/luarocks" }, + { name = "system", root = "/usr" }, +} +lua_interpreter = "lua5.3" +variables = { + LUA_DIR = "/usr", + LUA_INCDIR = "/usr/include/lua5.3", + LUA_BINDIR = "/usr/bin", +} diff --git a/nvim/after/ftplugin/go.vim b/nvim/after/ftplugin/go.vim index 6b6dad3..2ddd6c8 100644 --- a/nvim/after/ftplugin/go.vim +++ b/nvim/after/ftplugin/go.vim @@ -1,5 +1,7 @@ +setlocal iskeyword+=" setlocal noexpandtab setlocal shiftwidth=4 +setlocal softtabstop=4 setlocal tabstop=4 setlocal foldmethod=syntax diff --git a/nvim/after/ftplugin/html.vim b/nvim/after/ftplugin/html.vim index 2470d61..f3d08fd 100644 --- a/nvim/after/ftplugin/html.vim +++ b/nvim/after/ftplugin/html.vim @@ -2,15 +2,4 @@ setlocal expandtab setlocal shiftwidth=2 setlocal softtabstop=2 -" let g:html_indent_script1 = "auto" -" let g:html_indent_style1 = "auto" -" -" if &completeopt =~# '.*noselect.*' -" iabbrev -" imap -" imap > > -" else -" iabbrev -" endif - lua require('cmp').setup.buffer({ sources = {{ name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'buffer' }}}) diff --git a/nvim/after/ftplugin/json.vim b/nvim/after/ftplugin/json.vim new file mode 100644 index 0000000..55893a7 --- /dev/null +++ b/nvim/after/ftplugin/json.vim @@ -0,0 +1,15 @@ +setlocal autoindent +setlocal conceallevel=0 +setlocal expandtab +setlocal foldmethod=indent +setlocal formatoptions=tcq2l +setlocal shiftwidth=4 +setlocal softtabstop=4 +setlocal tabstop=8 + +let s:bufname = expand('%:e') +if s:bufname && s:bufname ==# 'jsonschema' + setlocal shiftwidth=2 + setlocal softtabstop=2 + setlocal tabstop=4 +endif diff --git a/nvim/after/ftplugin/jsonc.vim b/nvim/after/ftplugin/jsonc.vim new file mode 100644 index 0000000..f413562 --- /dev/null +++ b/nvim/after/ftplugin/jsonc.vim @@ -0,0 +1,8 @@ +setlocal autoindent +setlocal conceallevel=0 +setlocal expandtab +setlocal foldmethod=syntax +setlocal formatoptions=tcq2l +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal tabstop=4 diff --git a/nvim/after/ftplugin/lua.vim b/nvim/after/ftplugin/lua.vim index 610f00b..d43165f 100644 --- a/nvim/after/ftplugin/lua.vim +++ b/nvim/after/ftplugin/lua.vim @@ -1,4 +1,4 @@ -lua require('cmp').setup.buffer({ sources = { { name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'buffer' }}}) +lua require('cmp').setup.buffer({ sources = { { name = 'nvim_lsp' }, { name = 'nvim_lua' }, { name = 'luasnip' }, { name = 'buffer' }}}) set shiftwidth=2 set tabstop=2 diff --git a/nvim/after/ftplugin/make.vim b/nvim/after/ftplugin/make.vim index bbd8967..144b402 100644 --- a/nvim/after/ftplugin/make.vim +++ b/nvim/after/ftplugin/make.vim @@ -1 +1,5 @@ setlocal noexpandtab +setlocal isfname-== isfname+=32 isfname-=I isfname-=L +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal tabstop=2 diff --git a/nvim/after/ftplugin/yaml.vim b/nvim/after/ftplugin/yaml.vim new file mode 100644 index 0000000..a08c872 --- /dev/null +++ b/nvim/after/ftplugin/yaml.vim @@ -0,0 +1,7 @@ +setlocal autoindent +setlocal expandtab +setlocal indentkeys-=<:> +setlocal iskeyword+=-,$,# +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal tabstop=2 diff --git a/nvim/after/syntax/jsonc.vim b/nvim/after/syntax/jsonc.vim new file mode 100644 index 0000000..8e48caf --- /dev/null +++ b/nvim/after/syntax/jsonc.vim @@ -0,0 +1,15 @@ +" Based on vim-json syntax +runtime syntax/json.vim + +" Remove syntax group for comments treated as errors +syn clear jsonCommentError + +" Define syntax matching comments and their contents +syn keyword jsonCommentTodo FIXME NOTE TBD TODO XXX +syn match jsonLineComment '\/\/.*' contains=@Spell,jsonCommentTodo +syn match jsonCommentSkip '^[ \t]*\*\($\|[ \t]\+\)' +syn region jsonComment start='/\*' end='\*/' contains=@Spell,jsonCommentTodo + +" Link comment syntax comment to highlighting +hi! def link jsonLineComment Comment +hi! def link jsonComment Comment diff --git a/nvim/after/syntax/log.vim b/nvim/after/syntax/log.vim new file mode 100644 index 0000000..c067269 --- /dev/null +++ b/nvim/after/syntax/log.vim @@ -0,0 +1,138 @@ +" Operators +"--------------------------------------------------------------------------- +syn match logOperator display '[;,\?\:\.\<=\>\~\/\@\&\!$\%\&\+\-\|\^(){}\*#]' +syn match logBrackets display '[\[\]]' +syn match logEmptyLines display '-\{3,}' +syn match logEmptyLines display '\*\{3,}' +syn match logEmptyLines display '=\{3,}' +syn match logEmptyLines display '- - ' + + +" Constants +"--------------------------------------------------------------------------- +syn match logNumber '\<-\?\d\+\>' +syn match logHexNumber '\<0[xX]\x\+\>' +syn match logHexNumber '\<\d\x\+\>' +syn match logBinaryNumber '\<0[bB][01]\+\>' +syn match logFloatNumber '\<\d.\d\+[eE]\?\>' + +syn keyword logBoolean TRUE FALSE True False true false +syn keyword logNull NULL Null null + +syn region logString start=/"/ end=/"/ end=/$/ skip=/\\./ +" Quoted strings, but no match on quotes like "don't", "plurals' elements" +syn region logString start=/'\(s \|t \| \w\)\@!/ end=/'/ end=/$/ end=/s / skip=/\\./ + + +" Dates and Times +"--------------------------------------------------------------------------- +" Matches 2018-03-12T or 12/03/2018 or 12/Mar/2018 +syn match logDate '\d\{2,4}[-\/]\(\d\{2}\|Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)[-\/]\d\{2,4}T\?' +" Matches 8 digit numbers at start of line starting with 20 +syn match logDate '^20\d\{6}' +" Matches Fri Jan 09 or Feb 11 or Apr 3 +syn match logDate '\(\(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\) \)\?\(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\) [0-9 ]\d' + +" Matches 12:09:38 or 00:03:38.129Z or 01:32:12.102938 +0700 +syn match logTime '\d\{2}:\d\{2}:\d\{2}\(\.\d\{2,6}\)\?\(\s\?[-+]\d\{2,4}\|Z\)\?\>' nextgroup=logTimeZone,logSysColumns skipwhite + +" Follows logTime, matches UTC or PDT 2019 or 2019 EDT +syn match logTimeZone '[A-Z]\{2,5}\>\( \d\{4}\)\?' contained +syn match logTimeZone '\d\{4} [A-Z]\{2,5}\>' contained + + +" Entities +"--------------------------------------------------------------------------- +syn match logUrl 'http[s]\?:\/\/[^\n|,; '"]\+' +syn match logDomain /\v(^|\s)(\w|-)+(\.(\w|-)+)+\s/ +syn match logUUID '\w\{8}-\w\{4}-\w\{4}-\w\{4}-\w\{12}' +syn match logMD5 '\<[a-z0-9]\{32}\>' +syn match logIPV4 '\<\d\{1,3}\(\.\d\{1,3}\)\{3}\>' +syn match logIPV6 '\<\x\{1,4}\(:\x\{1,4}\)\{7}\>' +syn match logMacAddress '\<\x\{2}\(:\x\{2}\)\{5}' +syn match logFilePath '\<\w:\\[^\n|,; ()'"\]{}]\+' +syn match logFilePath '[^a-zA-Z0-9"']\@<=\/\w[^\n|,; ()'"\]{}]\+' + + +" Syslog Columns +"--------------------------------------------------------------------------- +" Syslog hostname, program and process number columns +syn match logSysColumns '\w\(\w\|\.\|-\)\+ \(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contains=logOperator,logSysProcess contained +syn match logSysProcess '\(\w\|\.\|-\)\+\(\[\d\+\]\)\?:' contains=logOperator,logNumber,logBrackets contained + + +" XML Tags +"--------------------------------------------------------------------------- +" Simplified matches, not accurate with the spec to avoid false positives +syn match logXmlHeader // contains=logString,logXmlAttribute,logXmlNamespace +syn match logXmlDoctype /]*>/ contains=logString,logXmlAttribute,logXmlNamespace +syn match logXmlTag /<\/\?\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(\(\n\|\s\)\+\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(="[^"]*"\|='[^']*'\)\?\)*\s*\/\?>/ contains=logString,logXmlAttribute,logXmlNamespace +syn match logXmlAttribute contained "\w\+=" contains=logOperator +syn match logXmlAttribute contained "\(\n\|\s\)\(\(\w\|-\)\+:\)\?\(\w\|-\)\+\(=\)\?" contains=logXmlNamespace,logOperator +syn match logXmlNamespace contained "\(\w\|-\)\+:" contains=logOperator +syn region logXmlComment start=// +syn match logXmlCData // +syn match logXmlEntity /\&\w\+;/ + + +" Levels +"--------------------------------------------------------------------------- +syn keyword logLevelEmergency EMERGENCY EMERG +syn keyword logLevelAlert ALERT +syn keyword logLevelCritical CRITICAL CRIT FATAL +syn keyword logLevelError ERROR ERR FAILURE SEVERE +syn keyword logLevelWarning WARNING WARN +syn keyword logLevelNotice NOTICE +syn keyword logLevelInfo INFO +syn keyword logLevelDebug DEBUG FINE +syn keyword logLevelTrace TRACE FINER FINEST + + +" Highlight links +"--------------------------------------------------------------------------- +hi def link logNumber Number +hi def link logHexNumber Number +hi def link logBinaryNumber Number +hi def link logFloatNumber Float +hi def link logBoolean Boolean +hi def link logNull Constant +hi def link logString String + +hi def link logDate Identifier +hi def link logTime Function +hi def link logTimeZone Identifier + +hi def link logUrl Underlined +hi def link logDomain Label +hi def link logUUID Label +hi def link logMD5 Label +hi def link logIPV4 Label +hi def link logIPV6 ErrorMsg +hi def link logMacAddress Label +hi def link logFilePath Conditional + +hi def link logSysColumns Conditional +hi def link logSysProcess Include + +hi def link logXmlHeader Function +hi def link logXmlDoctype Function +hi def link logXmlTag Identifier +hi def link logXmlAttribute Type +hi def link logXmlNamespace Include +hi def link logXmlComment Comment +hi def link logXmlCData String +hi def link logXmlEntity Special + +hi def link logOperator Operator +hi def link logBrackets Comment +hi def link logEmptyLines Comment + +hi def link logLevelEmergency ErrorMsg +hi def link logLevelAlert ErrorMsg +hi def link logLevelCritical ErrorMsg +hi def link logLevelError ErrorMsg +hi def link logLevelWarning WarningMsg +hi def link logLevelNotice Character +hi def link logLevelInfo Repeat +hi def link logLevelDebug Debug +hi def link logLevelTrace Comment diff --git a/nvim/after/syntax/make.vim b/nvim/after/syntax/make.vim new file mode 100644 index 0000000..e2f1d53 --- /dev/null +++ b/nvim/after/syntax/make.vim @@ -0,0 +1,3 @@ +syn match makePreCondit "^\s*\(ifeq\>\|else\>\|endif\>\|ifneq\>\|ifdef\>\|ifndef\>\)" +syn match makeIdent "^\s*[^:#= \t]*\s*[:+?!*]="me=e-2 +syn match makeIdent "^\s*[^:#= \t]*\s*="me=e-1 diff --git a/nvim/after/syntax/sh.vim b/nvim/after/syntax/sh.vim new file mode 100644 index 0000000..2ca17ed --- /dev/null +++ b/nvim/after/syntax/sh.vim @@ -0,0 +1,56 @@ +" Shebang +syn match shShebang "^#!.*$" containedin=shComment + +" Operators +syn match shOperator '||' +syn match shOperator '&&' + +" Match semicolons as Delimiter rather than Operator +syn match shSemicolon ';' containedin=shOperator,zshOperator + +" Highlight braces, brackets and parens as Delimiters in zsh +syn match zshDelim '\v(\(|\))' containedin=zshParentheses +syn match zshDelim '\v(\{|\})' containedin=zshBraces +syn match zshDelim '\v(\[|\])' containedin=zshParentheses + +" Match command flags in zsh +syn match zshFlag "\v<-\w+" containedin=zshBrackets,zshParentheses + +" Special files as Constants +syn match Constant "\v/dev/\w+" + \ containedin=shFunctionOne,shIf,shCmdParenRegion,shCommandSub + +" Common commands +let commands = [ 'arch', 'awk', 'b2sum', 'base32', 'base64', 'basename', 'basenc', 'bash', 'brew', 'cat', 'chcon', 'chgrp', 'chown', 'chroot', 'cksum', 'comm', 'cp', 'csplit', 'curl', 'cut', 'date', 'dd', 'defaults', 'df', 'dir', 'dircolors', 'dirname', 'ed', 'env', 'expand', 'factor', 'fmt', 'fold', 'git', 'grep', 'groups', 'head', 'hexdump', 'hostid', 'hostname', 'hugo', 'id', 'install', 'join', 'killall', 'link', 'ln', 'logname', 'md5sum', 'mkdir', 'mkfifo', 'mknod', 'mktemp', 'nice', 'nl', 'nohup', 'npm', 'nproc', 'numfmt', 'od', 'open', 'paste', 'pathchk', 'pr', 'printenv', 'printf', 'ptx', 'readlink', 'realpath', 'rg', 'runcon', 'scutil', 'sed', 'seq', 'sha1sum', 'sha2', 'shred', 'shuf', 'split', 'stat', 'stdbuf', 'stty', 'sudo', 'sum', 'sync', 'tac', 'tee', 'terminfo', 'timeout', 'tmux', 'top', 'touch', 'tput', 'tr', 'truncate', 'tsort', 'tty', 'uname', 'unexpand', 'uniq', 'unlink', 'uptime', 'users', 'vdir', 'vim', 'wc', 'who', 'whoami', 'yabai', 'yes' ] + +for i in commands + execute 'syn match shStatement "\v(\w|-)@ D :Man - " allow for commands with - in the name set iskeyword+=- diff --git a/nvim/init.lua b/nvim/init.lua index e557639..a4c5a47 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -1,75 +1,125 @@ vim.g.mapleader = " " vim.g.maplocalleader = "," vim.o.termguicolors = true - -local install_path = vim.fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" -if vim.fn.empty(vim.fn.glob(install_path)) > 0 then - vim.fn.execute("!git clone https://github.com/wbthomason/packer.nvim " .. install_path) -end +vim.g.did_load_filetypes = 1 +vim.api.nvim_command([[packadd packer.nvim]]) require("packer").startup({ function(use) - use("wbthomason/packer.nvim") + use({ "wbthomason/packer.nvim", opt = true }) use({ "lewis6991/impatient.nvim", config = function() require("impatient") end, }) - use({ "nathom/filetype.nvim" }) - use({ - "neovim/nvim-lspconfig", - requires = { "ray-x/lsp_signature.nvim" }, - config = [[ require('plugins/lspconfig') ]], - }) - use({ - "hrsh7th/nvim-cmp", - requires = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-nvim-lua", - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-path", - "saadparwaiz1/cmp_luasnip", - }, - config = [[ require('plugins/cmp') ]], - }) - use({ "L3MON4D3/LuaSnip", requires = { "rafamadriz/friendly-snippets" } }) - use({ "windwp/nvim-autopairs", config = [[ require('plugins/autopairs') ]] }) - use({ - "nvim-telescope/telescope.nvim", - requires = { - { "nvim-lua/plenary.nvim", opt = true }, - { "nvim-telescope/telescope-fzf-native.nvim", opt = true, run = "make" }, - }, - config = [[ require('plugins/telescope') ]], - }) - use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate", config = [[ require('plugins/treesitter') ]] }) + use("nathom/filetype.nvim") + use("nvim-lua/plenary.nvim") use({ "ellisonleao/gruvbox.nvim", requires = { "rktjmp/lush.nvim", opt = true } }) use({ "kyazdani42/nvim-web-devicons", after = "gruvbox.nvim", opt = true, - config = [[ require('plugins/webdevicons_nvim') ]], + config = function() + require("plugins.webdevicons_nvim") + end, + }) + use({ + "nvim-treesitter/nvim-treesitter", + event = "CursorHold", + run = ":TSUpdate", + config = function() + require("plugins.treesitter") + end, + }) + use({ + "norcalli/nvim-colorizer.lua", + event = "CursorHold", + config = function() + require("plugins.colorizer") + end, }) - use({ "numToStr/Comment.nvim", require("Comment").setup() }) - use({ "norcalli/nvim-colorizer.lua", config = [[ require('plugins/colorizer') ]] }) use({ "tpope/vim-fugitive", opt = true, cmd = { "Git", "Gdiff", "Gblame", "Glog", "Git mergetool" } }) use({ "lewis6991/gitsigns.nvim", - event = { "BufRead", "BufNewFile" }, - requires = { "nvim-lua/plenary.nvim", opt = true }, - config = [[ require('plugins/gitsigns_nvim') ]], + event = { "BufRead" }, + config = function() + require("plugins.gitsigns_nvim") + end, }) use({ - "folke/lsp-trouble.nvim", - requires = { "kyazdani42/nvim-web-devicons", opt = true }, - config = [[ require('plugins/trouble) ]], - cmd = { "LspTrouble" }, + "nvim-telescope/telescope.nvim", + event = "CursorHold", + config = function() + require("plugins.telescope") + end, + }, { + "nvim-telescope/telescope-fzf-native.nvim", + after = "telescope.nvim", + run = "make", + config = function() + require("telescope").load_extension("fzf") + end, + }) + use({ + "numToStr/Comment.nvim", + event = "BufRead", + config = function() + require("Comment").setup() + end, + }) + use({ + "neovim/nvim-lspconfig", + event = "BufRead", + config = function() + require("plugins.lsp.lsp-config") + end, + requires = { "ray-x/lsp_signature.nvim", "hrsh7th/cmp-nvim-lsp" }, }) use({ "jose-elias-alvarez/null-ls.nvim", - requires = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - config = [[ require('plugins/nulls') ]], + after = "nvim-lspconfig", + config = function() + require("plugins.lsp.null-ls") + end, + }) + use({ + { + "hrsh7th/nvim-cmp", + event = "InsertEnter", + config = function() + require("plugins.lsp.nvim-cmp") + end, + requires = { + { + "L3MON4D3/LuaSnip", + event = "CursorHold", + config = function() + require("plugins.lsp.luasnip") + end, + requires = { "rafamadriz/friendly-snippets" }, + }, + }, + }, + { "saadparwaiz1/cmp_luasnip", after = "nvim-cmp" }, + { "hrsh7th/cmp-path", after = "nvim-cmp" }, + { "hrsh7th/cmp-buffer", after = "nvim-cmp" }, + { "hrsh7th/cmp-nvim-lua", after = "nvim-cmp" }, + }) + use({ + "windwp/nvim-autopairs", + event = "InsertCharPre", + after = "nvim-cmp", + config = function() + require("plugins.autopairs") + end, + }) + use({ + "folke/lsp-trouble.nvim", + cmd = { "LspTrouble" }, + config = function() + require("plugins.trouble") + end, }) end, config = { @@ -82,4 +132,3 @@ require("packer").startup({ }, }) require("packer_compiled") -vim.g.did_load_filetypes = 1 diff --git a/nvim/lua/packer_compiled.lua b/nvim/lua/packer_compiled.lua new file mode 100644 index 0000000..efb60ef --- /dev/null +++ b/nvim/lua/packer_compiled.lua @@ -0,0 +1,304 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + + local time + local profile_info + local should_profile = false + if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end + else + time = function(chunk, start) end + end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + + _G._packer = _G._packer or {} + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/corpse/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/corpse/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/corpse/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/corpse/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/corpse/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s)) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["Comment.nvim"] = { + config = { "\27LJ\2\0025\0\0\2\0\3\0\0066\0\0\0'\1\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\fComment\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/Comment.nvim", + url = "https://github.com/numToStr/Comment.nvim" + }, + LuaSnip = { + config = { "\27LJ\2\0023\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\24plugins.lsp.luasnip\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["cmp-buffer"] = { + after_files = { "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp-buffer/after/plugin/cmp_buffer.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-nvim-lua"] = { + after_files = { "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lua/after/plugin/cmp_nvim_lua.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lua", + url = "https://github.com/hrsh7th/cmp-nvim-lua" + }, + ["cmp-path"] = { + after_files = { "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp-path/after/plugin/cmp_path.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + cmp_luasnip = { + after_files = { "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp_luasnip/after/plugin/cmp_luasnip.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/cmp_luasnip", + url = "https://github.com/saadparwaiz1/cmp_luasnip" + }, + ["filetype.nvim"] = { + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/filetype.nvim", + url = "https://github.com/nathom/filetype.nvim" + }, + ["friendly-snippets"] = { + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/friendly-snippets", + url = "https://github.com/rafamadriz/friendly-snippets" + }, + ["gitsigns.nvim"] = { + config = { "\27LJ\2\0025\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\26plugins.gitsigns_nvim\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + ["gruvbox.nvim"] = { + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/gruvbox.nvim", + url = "https://github.com/ellisonleao/gruvbox.nvim" + }, + ["impatient.nvim"] = { + config = { "\27LJ\2\2)\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\14impatient\frequire\0" }, + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/impatient.nvim", + url = "https://github.com/lewis6991/impatient.nvim" + }, + ["lsp-trouble.nvim"] = { + commands = { "LspTrouble" }, + config = { "\27LJ\2\2/\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\20plugins.trouble\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/lsp-trouble.nvim", + url = "https://github.com/folke/lsp-trouble.nvim" + }, + ["lsp_signature.nvim"] = { + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/lsp_signature.nvim", + url = "https://github.com/ray-x/lsp_signature.nvim" + }, + ["lush.nvim"] = { + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/lush.nvim", + url = "https://github.com/rktjmp/lush.nvim" + }, + ["null-ls.nvim"] = { + config = { "\27LJ\2\0023\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\24plugins.lsp.null-ls\frequire\0" }, + load_after = { + ["nvim-lspconfig"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/null-ls.nvim", + url = "https://github.com/jose-elias-alvarez/null-ls.nvim" + }, + ["nvim-autopairs"] = { + config = { "\27LJ\2\0021\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\22plugins.autopairs\frequire\0" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/nvim-autopairs", + url = "https://github.com/windwp/nvim-autopairs" + }, + ["nvim-cmp"] = { + after = { "nvim-autopairs", "cmp-buffer", "cmp_luasnip", "cmp-nvim-lua", "cmp-path" }, + config = { "\27LJ\2\0024\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\25plugins.lsp.nvim-cmp\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-colorizer.lua"] = { + config = { "\27LJ\2\0021\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\22plugins.colorizer\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/nvim-colorizer.lua", + url = "https://github.com/norcalli/nvim-colorizer.lua" + }, + ["nvim-lspconfig"] = { + after = { "null-ls.nvim" }, + config = { "\27LJ\2\0026\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\27plugins.lsp.lsp-config\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-treesitter"] = { + config = { "\27LJ\2\0022\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\23plugins.treesitter\frequire\0" }, + loaded = false, + needs_bufread = true, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-web-devicons"] = { + config = { "\27LJ\2\0028\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\29plugins.webdevicons_nvim\frequire\0" }, + loaded = false, + needs_bufread = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/nvim-web-devicons", + url = "https://github.com/kyazdani42/nvim-web-devicons" + }, + ["packer.nvim"] = { + loaded = false, + needs_bufread = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/corpse/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["telescope.nvim"] = { + config = { "\27LJ\2\0021\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\22plugins.telescope\frequire\0" }, + loaded = false, + needs_bufread = true, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["vim-fugitive"] = { + commands = { "Git", "Gdiff", "Gblame", "Glog", "Git mergetool" }, + loaded = false, + needs_bufread = true, + only_cond = false, + path = "/home/corpse/.local/share/nvim/site/pack/packer/opt/vim-fugitive", + url = "https://github.com/tpope/vim-fugitive" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: impatient.nvim +time([[Config for impatient.nvim]], true) +try_loadstring("\27LJ\2\2)\0\0\2\0\2\0\0046\0\0\0'\1\1\0B\0\2\1K\0\1\0\14impatient\frequire\0", "config", "impatient.nvim") +time([[Config for impatient.nvim]], false) + +-- Command lazy-loads +time([[Defining lazy-load commands]], true) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file LspTrouble lua require("packer.load")({'lsp-trouble.nvim'}, { cmd = "LspTrouble", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file Gdiff lua require("packer.load")({'vim-fugitive'}, { cmd = "Gdiff", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file Gblame lua require("packer.load")({'vim-fugitive'}, { cmd = "Gblame", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file Git lua require("packer.load")({'vim-fugitive'}, { cmd = "Git", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +pcall(vim.cmd, [[au CmdUndefined Git mergetool ++once lua require"packer.load"({'vim-fugitive'}, {}, _G.packer_plugins)]]) +pcall(vim.cmd, [[command -nargs=* -range -bang -complete=file Glog lua require("packer.load")({'vim-fugitive'}, { cmd = "Glog", l1 = , l2 = , bang = , args = , mods = "" }, _G.packer_plugins)]]) +time([[Defining lazy-load commands]], false) + +vim.cmd [[augroup packer_load_aucmds]] +vim.cmd [[au!]] + -- Event lazy-loads +time([[Defining lazy-load event autocommands]], true) +vim.cmd [[au InsertCharPre * ++once lua require("packer.load")({'nvim-autopairs'}, { event = "InsertCharPre *" }, _G.packer_plugins)]] +vim.cmd [[au CursorHold * ++once lua require("packer.load")({'nvim-treesitter', 'LuaSnip', 'telescope.nvim', 'nvim-colorizer.lua'}, { event = "CursorHold *" }, _G.packer_plugins)]] +vim.cmd [[au InsertEnter * ++once lua require("packer.load")({'nvim-cmp'}, { event = "InsertEnter *" }, _G.packer_plugins)]] +vim.cmd [[au BufRead * ++once lua require("packer.load")({'gitsigns.nvim', 'nvim-lspconfig', 'Comment.nvim'}, { event = "BufRead *" }, _G.packer_plugins)]] +time([[Defining lazy-load event autocommands]], false) +vim.cmd("augroup END") +if should_profile then save_profiles() end + +end) + +if not no_errors then + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/nvim/lua/plugins/autopairs.lua b/nvim/lua/plugins/autopairs.lua index fb4d9d3..0bb1301 100644 --- a/nvim/lua/plugins/autopairs.lua +++ b/nvim/lua/plugins/autopairs.lua @@ -49,3 +49,5 @@ require("nvim-autopairs").add_rules({ end) :use_key("]"), }) + +require("cmp").event:on("confirm_done", require("nvim-autopairs.completion.cmp").on_confirm_done()) diff --git a/nvim/lua/plugins/gitsigns_nvim.lua b/nvim/lua/plugins/gitsigns_nvim.lua index 5fb7747..04fe2fb 100644 --- a/nvim/lua/plugins/gitsigns_nvim.lua +++ b/nvim/lua/plugins/gitsigns_nvim.lua @@ -1,7 +1,3 @@ -if not packer_plugins["plenary.nvim"].loaded then - vim.cmd([[packadd plenary.nvim]]) -end - require("gitsigns").setup({ signcolumn = true, current_line_blame_opts = { delay = 2000, virt_text_pos = "right_align" }, @@ -10,7 +6,12 @@ require("gitsigns").setup({ change = { hl = "GitSignsChange", text = "┃", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, delete = { hl = "GitSignsDelete", text = "╏", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, topdelete = { hl = "GitSignsDelete", text = "┯", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, - changedelete = { hl = "GitSignsChange", text = "╍", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, + changedelete = { + hl = "GitSignsChange", + text = "╍", + numhl = "GitSignsChangeNr", + linehl = "GitSignsChangeLn", + }, }, update_debounce = 200, use_internal_diff = true, @@ -23,13 +24,11 @@ require("gitsigns").setup({ vim.g.fugitive_summary_format = "%an\t%s" -local map = vim.api.nvim_set_keymap local default_opts = { noremap = true, silent = true } - -map("n", "tt", ":Gitsigns toggle_signs", default_opts) -map("n", "tb", ":Gitsigns toggle_current_line_blame", default_opts) -map("n", "ff", ":G", default_opts) -map("n", "fc", ":GCheckout", default_opts) -map("n", "fd", ":Gvdiffsplit!", default_opts) -map("n", "fh", ":diffget //2", default_opts) -map("n", "fl", ":diffget //3", default_opts) +vim.api.nvim_set_keymap("n", "tt", ":Gitsigns toggle_signs", default_opts) +vim.api.nvim_set_keymap("n", "tb", ":Gitsigns toggle_current_line_blame", default_opts) +vim.api.nvim_set_keymap("n", "ff", ":G", default_opts) +vim.api.nvim_set_keymap("n", "fc", ":GCheckout", default_opts) +vim.api.nvim_set_keymap("n", "fd", ":Gvdiffsplit!", default_opts) +vim.api.nvim_set_keymap("n", "fh", ":diffget //2", default_opts) +vim.api.nvim_set_keymap("n", "fl", ":diffget //3", default_opts) diff --git a/nvim/lua/plugins/lsp/lsp-config.lua b/nvim/lua/plugins/lsp/lsp-config.lua new file mode 100644 index 0000000..d3dd7a7 --- /dev/null +++ b/nvim/lua/plugins/lsp/lsp-config.lua @@ -0,0 +1,101 @@ +local lsconf = require("lspconfig") +local lsp_utils = require("plugins.lsp.lsp-utils") +local capabilities = lsp_utils.capabilities() +local flags = { + allow_incremental_sync = true, + debounce_text_changes = 200, +} + +local runtime_path = vim.split(package.path, ";") +table.insert(runtime_path, "lua/?.lua") +table.insert(runtime_path, "lua/?/init.lua") +local sumneko_root_path = "/mnt/wd1tb/catacombs/code/lua-language-server" +local sumneko_binary = sumneko_root_path .. "/bin/Linux/lua-language-server" + +local handlers = { + ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { + update_in_insert = true, + severity_sort = true, + virtual_text = false, + }), + ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "single" }), + ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" }), + ["textDocument/definition"] = lsp_utils.goto_split("split"), +} + +local on_attach = function(client, bufnr) + lsp_utils.disable_formatting(client) + lsp_utils.mappings(bufnr) + require("lsp_signature").on_attach({ + bind = true, + hint_prefix = " ", + fix_pos = true, + padding = " ", + handler_opts = { border = "shadow" }, + }) +end + +lsconf.sumneko_lua.setup({ + cmd = { sumneko_binary, "-E", sumneko_root_path .. "/main.lua" }, + flags = flags, + capabilities = capabilities, + on_attach = on_attach, + handlers = handlers, + settings = { + Lua = { + completion = { + enable = true, + showWord = "Disable", + }, + runtime = { + version = "LuaJIT", + path = runtime_path, + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, +}) + +require("lspconfig/configs").ls_emmet = { + flags = flags, + capabilities = capabilities, + on_attach = on_attach, + handlers = handlers, + default_config = { + cmd = { "ls_emmet", "--stdio" }, + filetypes = { + "html", + "css", + "scss", + "xml", + "xsl", + "sass", + "stylus", + "less", + "sss", + "svelte", + }, + root_dir = function(fname) + return vim.loop.cwd() + end, + settings = {}, + }, +} + +local servers = { "html", "cssls", "gopls", "tailwindcss", "vimls", "jsonls" } +for _, lsp in ipairs(servers) do + lsconf[lsp].setup({ + on_attach = on_attach, + capabilities = capabilities, + handlers = handlers, + flags = flags, + }) +end diff --git a/nvim/lua/plugins/lsp/lsp-utils.lua b/nvim/lua/plugins/lsp/lsp-utils.lua new file mode 100644 index 0000000..a46ab90 --- /dev/null +++ b/nvim/lua/plugins/lsp/lsp-utils.lua @@ -0,0 +1,74 @@ +vim.cmd([[ +highlight LspDiagnosticsLineNrError guibg=#51202A guifg=#FF0000 gui=bold +highlight LspDiagnosticsLineNrWarning guibg=#51412A guifg=#FFA500 gui=bold +highlight LspDiagnosticsLineNrInformation guibg=#1E535D guifg=#00FFFF gui=bold +highlight LspDiagnosticsLineNrHint guibg=#1E205D guifg=#008bbd gui=bold + +sign define LspDiagnosticsSignError text= texthl=LspDiagnosticsSignError linehl= numhl=LspDiagnosticsLineNrError +sign define LspDiagnosticsSignWarning text= texthl=LspDiagnosticsSignWarning linehl= numhl=LspDiagnosticsLineNrWarning +sign define LspDiagnosticsSignInformation text= texthl=LspDiagnosticsSignInformation linehl= numhl=LspDiagnosticsLineNrInformation +sign define LspDiagnosticsSignHint text= texthl=LspDiagnosticsSignHint linehl= numhl=LspDiagnosticsLineNrHint +]]) + +local U = {} + +function U.fmt_on_save(client) + if client.resolved_capabilities.document_formatting then + vim.api.nvim_command("autocmd BufWritePre lua vim.lsp.buf.formatting_sync()") + end +end + +function U.capabilities() + local capabilities = vim.lsp.protocol.make_client_capabilities() + return require("cmp_nvim_lsp").update_capabilities(capabilities) +end + +---Disable formatting for servers. Handles by null-ls +---@source https://github.com/jose-elias-alvarez/null-ls.nvim/wiki/Avoiding-LSP-formatting-conflicts +function U.disable_formatting(client) + client.resolved_capabilities.document_formatting = false + client.resolved_capabilities.document_range_formatting = false +end + +function U.mappings(bufnr) + local opts = { noremap = true, silent = true } + vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gh", "lua vim.lsp.buf.hover()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "lua vim.lsp.buf.implementation()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "i", "", "lua vim.lsp.buf.signature_help()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "rn", "lua vim.lsp.buf.rename()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "ca", "lua vim.lsp.buf.code_action()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "{g", "lua vim.lsp.diagnostic.goto_prev()", opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "}g", "lua vim.lsp.diagnostic.goto_next()", opts) +end + +function U.goto_split(split_cmd) + local handler = function(_, result, ctx) + if result == nil or vim.tbl_isempty(result) then + local _ = require("vim.lsp.log").info() and require("vim.lsp.log").info(ctx.method, "No location found") + return nil + end + + if split_cmd then + vim.cmd(split_cmd) + end + + if vim.tbl_islist(result) then + vim.lsp.util.jump_to_location(result[1]) + + if #result > 1 then + vim.lsp.util.set_qflist(vim.lsp.util.locations_to_items(result)) + vim.api.nvim_command("copen") + vim.api.nvim_command("wincmd p") + end + else + vim.lsp.util.jump_to_location(result) + end + end + + return handler +end + +return U diff --git a/nvim/lua/plugins/lsp/luasnip.lua b/nvim/lua/plugins/lsp/luasnip.lua new file mode 100644 index 0000000..013fcbd --- /dev/null +++ b/nvim/lua/plugins/lsp/luasnip.lua @@ -0,0 +1,19 @@ +local types = require("luasnip.util.types") + +require("luasnip").config.setup({ + ext_opts = { + [types.choiceNode] = { + active = { + virt_text = { { "●", "GruvboxOrange" } }, + }, + }, + [types.insertNode] = { + active = { + virt_text = { { "●", "DiffDelete" } }, + }, + }, + }, +}) + +-- Loading any vscode snippets from plugins +require("luasnip.loaders.from_vscode").lazy_load() diff --git a/nvim/lua/plugins/lsp/null-ls.lua b/nvim/lua/plugins/lsp/null-ls.lua new file mode 100644 index 0000000..01dd42d --- /dev/null +++ b/nvim/lua/plugins/lsp/null-ls.lua @@ -0,0 +1,37 @@ +local lsp_utils = require("plugins.lsp.lsp-utils") + +local fmt = require("null-ls").builtins.formatting +local dgn = require("null-ls").builtins.diagnostics + +require("null-ls").config({ + sources = { + -- # FORMATTING # + fmt.trim_whitespace.with({ + filetypes = { "text", "sh", "zsh", "yaml", "toml", "make", "conf" }, + }), + -- NOTE: + -- 1. both needs to be enabled to so prettier can apply eslint fixes + -- 2. and prettierd should come first + fmt.prettierd, + fmt.eslint_d, + fmt.rustywind, + fmt.stylua, + fmt.gofmt, + fmt.shfmt, + -- # DIAGNOSTICS # + dgn.eslint_d, + dgn.shellcheck, + dgn.luacheck.with({ + extra_args = { "--globals", "vim", "--std", "luajit" }, + }), + require("null-ls").builtins.code_actions.gitsigns, + }, +}) + +-- NOTE: don't move this setup() call elsewhere +require("lspconfig")["null-ls"].setup({ + on_attach = function(client, bufnr) + lsp_utils.fmt_on_save(client) + lsp_utils.mappings(bufnr) + end, +}) diff --git a/nvim/lua/plugins/cmp.lua b/nvim/lua/plugins/lsp/nvim-cmp.lua similarity index 58% rename from nvim/lua/plugins/cmp.lua rename to nvim/lua/plugins/lsp/nvim-cmp.lua index 7b62c7f..48c75f3 100644 --- a/nvim/lua/plugins/cmp.lua +++ b/nvim/lua/plugins/lsp/nvim-cmp.lua @@ -1,14 +1,5 @@ -local has_words_before = function() - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil -end - -if not packer_plugins["plenary.nvim"].loaded then - vim.cmd([[packadd plenary.nvim]]) -end - -local luasnip = require("luasnip") local cmp = require("cmp") +local luasnip = require("luasnip") cmp.setup({ formatting = { @@ -51,11 +42,6 @@ cmp.setup({ return vim_item end, }, - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, mapping = { [""] = cmp.mapping.select_prev_item(), [""] = cmp.mapping.select_next_item(), @@ -65,43 +51,38 @@ cmp.setup({ return vim.fn.pumvisible() == 1 and cmp.close() or cmp.complete() end), [""] = cmp.mapping.close(), - [""] = cmp.mapping.confirm({ select = true }), - [""] = cmp.mapping(function(fallback) + [""] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), + [""] = function(fallback) if cmp.visible() then cmp.select_next_item() - elseif luasnip and luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, true, true), "n", true) + elseif luasnip.expand_or_jumpable() then + vim.fn.feedkeys(vim.api.nvim_replace_termcodes("luasnip-expand-or-jump", true, true, true), "") else fallback() end - end, { - "i", - "s", - }), - [""] = cmp.mapping(function(fallback) + end, + [""] = function(fallback) if cmp.visible() then cmp.select_prev_item() - elseif luasnip and luasnip.jumpable(-1) then - luasnip.jump(-1) - elseif has_words_before() then - vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, true, true), "n", true) + elseif luasnip.jumpable(-1) then + vim.fn.feedkeys(vim.api.nvim_replace_termcodes("luasnip-jump-prev", true, true, true), "") else fallback() end - end, { - "i", - "s", - }), + end, }, - preselect = cmp.PreselectMode.Item, - sources = { - { name = "path" }, - { name = "buffer", Keyword_length = 5 }, + sources = cmp.config.sources({ + { name = "luasnip", max_item_count = 5 }, + { name = "nvim_lsp", max_item_count = 5 }, + { name = "path", max_item_count = 10 }, + { name = "buffer", max_item_count = 10 }, + }), + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, }, - experimental = { native_menu = false }, }) - -local cmp_autopairs = require("nvim-autopairs.completion.cmp") -cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) diff --git a/nvim/lua/plugins/lspconfig.lua b/nvim/lua/plugins/lspconfig.lua deleted file mode 100644 index e198f5e..0000000 --- a/nvim/lua/plugins/lspconfig.lua +++ /dev/null @@ -1,116 +0,0 @@ -vim.cmd([[ -highlight LspDiagnosticsLineNrError guibg=#51202A guifg=#FF0000 gui=bold -highlight LspDiagnosticsLineNrWarning guibg=#51412A guifg=#FFA500 gui=bold -highlight LspDiagnosticsLineNrInformation guibg=#1E535D guifg=#00FFFF gui=bold -highlight LspDiagnosticsLineNrHint guibg=#1E205D guifg=#008bbd gui=bold - -sign define LspDiagnosticsSignError text= texthl=LspDiagnosticsSignError linehl= numhl=LspDiagnosticsLineNrError -sign define LspDiagnosticsSignWarning text= texthl=LspDiagnosticsSignWarning linehl= numhl=LspDiagnosticsLineNrWarning -sign define LspDiagnosticsSignInformation text= texthl=LspDiagnosticsSignInformation linehl= numhl=LspDiagnosticsLineNrInformation -sign define LspDiagnosticsSignHint text= texthl=LspDiagnosticsSignHint linehl= numhl=LspDiagnosticsLineNrHint -]]) - -vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { - update_in_insert = true, - severity_sort = true, - virtual_text = false, -}) - -local nvim_lsp = require("lspconfig") -local on_attach = function(client, bufnr) - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - local opts = { noremap = true, silent = true } - vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "lua vim.lsp.buf.implementation()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "", "lua vim.lsp.buf.signature_help()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "rn", "lua vim.lsp.buf.rename()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "ca", "lua vim.lsp.buf.code_action()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "}d", "lua vim.lsp.diagnostic.goto_next()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "qq", "lua vim.lsp.diagnostic.set_loclist()", opts) - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = "single", - }) - require("lsp_signature").on_attach({ - bind = true, - hint_prefix = " ", - handler_opts = { border = "rounded" }, - }) - if client.resolved_capabilities.document_formatting then - vim.cmd("autocmd BufWritePre lua vim.lsp.buf.formatting_sync()") - end -end - -require("lspconfig/configs").ls_emmet = { - default_config = { - cmd = { "ls_emmet", "--stdio" }, - filetypes = { - "html", - "css", - "scss", - "xml", - "xsl", - "sass", - "stylus", - "less", - "sss", - "svelte", - }, - root_dir = function(fname) - return vim.loop.cwd() - end, - settings = {}, - }, -} - -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities.textDocument.completion.completionItem.documentationFormat = { "markdown", "plaintext" } -capabilities.textDocument.completion.completionItem.snippetSupport = true -capabilities.textDocument.completion.completionItem.preselectSupport = true -capabilities.textDocument.completion.completionItem.insertReplaceSupport = true -capabilities.textDocument.completion.completionItem.labelDetailsSupport = true -capabilities.textDocument.completion.completionItem.deprecatedSupport = true -capabilities.textDocument.completion.completionItem.commitCharactersSupport = true -capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } } -capabilities.textDocument.completion.completionItem.resolveSupport = { - properties = { "documentation", "detail", "additionalTextEdits" }, -} -capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) - -local servers = { "html", "cssls", "gopls", "tailwindcss", "vimls", "ls_emmet", "null-ls" } -for _, lsp in ipairs(servers) do - nvim_lsp[lsp].setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { debounce_text_changes = 150 }, - }) -end - -local sumneko_root_path = "/mnt/wd1tb/catacombs/code/lua-language-server" -local sumneko_binary = sumneko_root_path .. "/bin/Linux/lua-language-server" -local runtime_path = vim.split(package.path, ";") -table.insert(runtime_path, "lua/?.lua") -table.insert(runtime_path, "lua/?/init.lua") -require("lspconfig").sumneko_lua.setup({ - cmd = { sumneko_binary, "-E", sumneko_root_path .. "/main.lua" }, - on_attach = on_attach, - capabilities = capabilities, - settings = { - Lua = { - runtime = { - version = "LuaJIT", - path = runtime_path, - }, - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { - enable = false, - }, - }, - }, -}) diff --git a/nvim/lua/plugins/nulls.lua b/nvim/lua/plugins/nulls.lua deleted file mode 100644 index 1a7c72a..0000000 --- a/nvim/lua/plugins/nulls.lua +++ /dev/null @@ -1,9 +0,0 @@ -require("null-ls").config({ - sources = { - require("null-ls").builtins.formatting.prettierd, - require("null-ls").builtins.formatting.rustywind, - require("null-ls").builtins.formatting.stylua, - require("null-ls").builtins.formatting.shfmt, - require("null-ls").builtins.diagnostics.shellcheck, - }, -}) diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua index 0c9004a..67fc120 100644 --- a/nvim/lua/plugins/telescope.lua +++ b/nvim/lua/plugins/telescope.lua @@ -1,6 +1,3 @@ -vim.cmd([[packadd plenary.nvim]]) -vim.cmd([[packadd telescope-fzf-native.nvim]]) - local actions = require("telescope.actions") local previewers = require("telescope.previewers") local Job = require("plenary.job") @@ -130,14 +127,17 @@ require("telescope").setup({ }, }, }) -require("telescope").load_extension("fzf") -local map = vim.api.nvim_set_keymap local default_opts = { noremap = true, silent = true } -map("n", "", "Telescope help_tags", default_opts) -map("n", "", 'lua require("telescope.builtin").find_files({cwd = "%:h", hidden=true})', default_opts) -map("n", "", "Telescope file_browser hidden=true", default_opts) -map("n", "", "Telescope buffers", default_opts) -map("n", "", "Telescope live_grep", default_opts) -map("n", "", "Telescope git_commits", default_opts) -map("n", "", "Telescope resume", default_opts) +vim.api.nvim_set_keymap("n", "", "Telescope help_tags", default_opts) +vim.api.nvim_set_keymap( + "n", + "", + 'lua require("telescope.builtin").find_files({cwd = "%:h", hidden=true})', + default_opts +) +vim.api.nvim_set_keymap("n", "", "Telescope file_browser hidden=true", default_opts) +vim.api.nvim_set_keymap("n", "", "Telescope buffers", default_opts) +vim.api.nvim_set_keymap("n", "", "Telescope live_grep", default_opts) +vim.api.nvim_set_keymap("n", "", "Telescope git_commits", default_opts) +vim.api.nvim_set_keymap("n", "", "Telescope resume", default_opts) diff --git a/nvim/lua/plugins/trouble.lua b/nvim/lua/plugins/trouble.lua new file mode 100644 index 0000000..7e832fb --- /dev/null +++ b/nvim/lua/plugins/trouble.lua @@ -0,0 +1,11 @@ +require("trouble").setup()({ + use_lsp_diagnostic_signs = true, +}) + +local opts = { noremap = true, silent = true } +vim.api.nvim_set_keymap("n", "xx", "Trouble", opts) +vim.api.nvim_set_keymap("n", "xw", "Trouble lsp_workspace_diagnostics", opts) +vim.api.nvim_set_keymap("n", "xd", "Trouble lsp_document_diagnostics", opts) +vim.api.nvim_set_keymap("n", "xl", "Trouble loclist", opts) +vim.api.nvim_set_keymap("n", "xq", "Trouble quickfix", opts) +vim.api.nvim_set_keymap("n", "gR", "Trouble lsp_references", opts) diff --git a/nvim/lua/plugins/web-devicons.lua b/nvim/lua/plugins/web-devicons.lua index b222568..0c32ada 100644 --- a/nvim/lua/plugins/web-devicons.lua +++ b/nvim/lua/plugins/web-devicons.lua @@ -1,8 +1,6 @@ -local cmd = vim.cmd local M = {} function M.init() - cmd([[packadd nvim-web-devicons]]) require("nvim-web-devicons").setup({ override = { html = { diff --git a/nvim/plugin/autocmds.vim b/nvim/plugin/autocmds.vim index f701dda..3d24dfc 100644 --- a/nvim/plugin/autocmds.vim +++ b/nvim/plugin/autocmds.vim @@ -13,9 +13,8 @@ if !exists('autocommands_loaded') && has('autocmd') aug Miscs au TextYankPost * silent! lua vim.highlight.on_yank{timeout = 80, on_visual=true} - au FileType TelescopePrompt lua require('cmp').setup.buffer { enabled = false } au BufEnter * set fo-=c fo-=r fo-=o - au CursorHold,CursorHoldI * lua vim.lsp.diagnostic.show_line_diagnostics({focusable=false}) + au CursorHold,CursorHoldI * lua vim.lsp.diagnostic.show_line_diagnostics({focusable=false, show_header=false}) aug END aug OnSave diff --git a/nvim/plugin/disabled.lua b/nvim/plugin/disabled.lua index 563b045..e645488 100644 --- a/nvim/plugin/disabled.lua +++ b/nvim/plugin/disabled.lua @@ -1,4 +1,5 @@ local disabled_builtin_plugins = { + "man", "gzip", "zip", "zipPlugin", diff --git a/nvim/templates/go b/nvim/templates/go deleted file mode 100644 index 0d22042..0000000 --- a/nvim/templates/go +++ /dev/null @@ -1,8 +0,0 @@ -package main - -import "fmt" - -func main() { - {{++}} - fmt.Println("vim-go") -} diff --git a/xbpaketes b/xbpaketes index a4c34ec..8ada1c0 100644 --- a/xbpaketes +++ b/xbpaketes @@ -1,7 +1,8 @@ MangoHud-0.6.5_1 SDL-1.2.15_12 SDL_mixer-1.2.12_14 -StyLua-0.11.1_1 +StyLua-0.11.2_1 +Vulkan-Headers-1.2.182_1 alacritty-0.9.0_1 alsa-plugins-1.2.5_1 alsa-plugins-ffmpeg-1.2.5_1 @@ -10,6 +11,7 @@ alsa-plugins-pulseaudio-1.2.5_1 alsa-utils-1.2.5.1_1 amdvlk-2021.Q3.7_1 amdvlk-32bit-2021.Q3.7_1 +amfora-1.8.0_1 android-tools-31.0.3_1 android-udev-rules-20210501_1 audacious-4.1_1 @@ -23,13 +25,13 @@ catgirl-1.9a_2 cgo-0.6.1_1 chrony-4.1_1 cmake-3.21.1_1 -curl-7.79.1_2 +curl-7.80.0_1 delta-0.9.2_1 delve-1.7.1_1 dfc-3.1.1_2 dkms-2.8.4_2 droidcam-1.7.3_1 -dunst-1.6.1_1 +dunst-1.7.1_1 elinks-0.14.3_1 fcitx-4.2.9.8_5 fcitx-configtool-0.4.10_2 @@ -47,7 +49,7 @@ git-2.33.1_1 git-libsecret-2.33.1_1 glu-9.0.2_2 glxinfo-8.4.0_3 -gmic-2.8.0_1 +gmic-2.9.9_1 gnome-ssh-askpass-8.8p1_1 gnupg2-2.2.32_1 go-1.17.2_1 @@ -130,13 +132,14 @@ sxhkd-0.6.2_1 sxiv-26_1 tmux-3.2a_1 toilet-0.3_3 -trackballs-1.3.3_1 transmission-3.00_5 tremc-0.9.2_2 tty-solitaire-1.3.1_1 udevil-0.4.4_5 unclutter-xfixes-1.6_1 unrar-6.0.7_1 +vkBasalt-0.3.2.4_1 +vkBasalt-32bit-0.3.2.4_1 vkd3d-1.2_1 vkd3d-32bit-1.2_1 void-repo-multilib-6_3