From ca1fba1ef518b2f55bc168e9782b500dfec67c16 Mon Sep 17 00:00:00 2001 From: marcellus Date: Sun, 14 May 2023 02:10:52 +0200 Subject: add: nvim config files (totally not stolen from ratakor) --- .gitignore | 1 + nvim/.gitignore | 16 +++++ nvim/appearance.vim | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++++ nvim/basics.vim | 38 ++++++++++ nvim/header.vim | 142 +++++++++++++++++++++++++++++++++++++ nvim/init.vim | 87 +++++++++++++++++++++++ nvim/lsp.vim | 163 ++++++++++++++++++++++++++++++++++++++++++ zsh/.zshrc | 2 + 8 files changed, 647 insertions(+) create mode 100644 nvim/.gitignore create mode 100644 nvim/appearance.vim create mode 100644 nvim/basics.vim create mode 100644 nvim/header.vim create mode 100644 nvim/init.vim create mode 100644 nvim/lsp.vim diff --git a/.gitignore b/.gitignore index 436061f..a9bf51c 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ QtProject.conf ## other stuff scummvm/ +paliasrc diff --git a/nvim/.gitignore b/nvim/.gitignore new file mode 100644 index 0000000..189fa64 --- /dev/null +++ b/nvim/.gitignore @@ -0,0 +1,16 @@ +# . :-. . +# author: marcellus :*==*%%%#%+=---: +# :#%%%*+%#=+%*:. +# created: Sun, 14 May 2023 01:29:10 +0200 :%%%. . -*%- +# updated: Sun, 14 May 2023 01:30:06 +0200 =## . :#%*=:. +# -#*#%:=#%%%#- +# description: *:*%%%%%%%#- +# .-#%%%%%%+ +# %%%--%%%%*- +# ##%= +%%=:.. +# #* #%# +# :# -==* +# :: .: + +plugged/ +autoload/ diff --git a/nvim/appearance.vim b/nvim/appearance.vim new file mode 100644 index 0000000..14afd8d --- /dev/null +++ b/nvim/appearance.vim @@ -0,0 +1,198 @@ +set background=dark + +lua << EOF +local colors = require('dracula.palette') + +require("dracula").setup { + show_end_of_buffer = true, + lualine_bg_color = "#44475a", + transparent_bg = true, +} + +require("gruvbox").setup { + italic = { + strings = false, + comments = false + }, + transparent_mode = true, +} + +--require("catppuccin").setup({ +-- flavour = "macchiato", +-- transparent_background = true, +-- show_end_of_buffer = true, +--}) +-- +--require("everforest").setup({ +-- transparent_background_level = 1, +--}) + +local empty = require('lualine.component'):extend() +function empty:draw(default_highlight) + self.status = '' + self.applied_separator = '' + self:apply_highlights(default_highlight) + self:apply_section_separators() + return self.status +end + +-- Put proper separators and gaps between components in sections +local function process_sections(sections) + for name, section in pairs(sections) do + local left = name:sub(9, 10) < 'x' + for pos = 1, name ~= 'lualine_z' and #section or #section - 1 do + table.insert(section, pos * 2, { empty, color = { fg = colors.white, bg = colors.white } }) + end + for id, comp in ipairs(section) do + if type(comp) ~= 'table' then + comp = { comp } + section[id] = comp + end + comp.separator = left and { right = '' } or { left = '' } + end + end + return sections +end + +local function modified() + if vim.bo.modified then + return '+' + elseif vim.bo.modifiable == false or vim.bo.readonly == true then + return '-' + end + return '' +end + +local transparent = require'lualine.themes.dracula' +transparent.inactive.c.bg = 'nil' +transparent.visual.c.bg = 'nil' +transparent.replace.c.bg = 'nil' +transparent.normal.c.bg = 'nil' +transparent.insert.c.bg = 'nil' +transparent.command.c.bg = 'nil' + +require('lualine').setup { + options = { + theme = transparent, + component_separators = '', + section_separators = { left = '', right = '' }, + }, + sections = process_sections { + lualine_a = { 'mode' }, + lualine_b = { + 'branch', + 'diff', + { 'filename', file_status = false, path = 1 }, + { + 'diagnostics', + source = { 'nvim' }, + sections = { 'error' }, + symbols = {error = 'E '}, + diagnostics_color = { error = { bg = colors.red, fg = colors.black, gui = 'bold' } }, + --on_click = function() + -- vim.diagnostic.goto_prev() + -- end + }, + { + 'diagnostics', + source = { 'nvim' }, + sections = { 'warn' }, + symbols = {warn = 'W '}, + diagnostics_color = { warn = { bg = colors.orange, fg = colors.black, gui = 'bold' } }, + --on_click = function() + -- vim.diagnostic.goto_next() + -- end + }, + { modified, color = { bg = colors.purple } }, + { + '%w', + cond = function() + return vim.wo.previewwindow + end, + }, + { + '%r', + cond = function() + return vim.bo.readonly + end, + }, + { + '%q', + cond = function() + return vim.bo.buftype == 'quickfix' + end, + }, + }, + lualine_c = {}, + lualine_x = { 'fileformat' }, + lualine_y = { 'filetype', 'progress' }, + lualine_z = { 'location' }, + }, +} + +require('hlargs').setup { + color = colors.orange +} + +require("scrollbar").setup({ + marks = { + Search = { color = colors.orange }, + Error = { color = colors.red }, + Warn = { color = colors.yellow }, + Info = { color = colors.pink }, + Hint = { color = colors.cyan }, + Misc = { color = colors.purple }, + }, + handlers = { + cursor = false, + handle = false, + }, +}) + +--vim.cmd [[highlight IndentBlanklineIndent1 guifg=#bd93f9 gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent2 guifg=#50fa7b gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent3 guifg=#8be9fd gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent4 guifg=#f1fa8c gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent5 guifg=#ffb86c gui=nocombine]] +--vim.cmd [[highlight IndentBlanklineIndent6 guifg=#ff5555 gui=nocombine]] +-- +--require("indent_blankline").setup { +-- space_char_blankline = " ", +-- +-- --show_current_context = true, +-- --show_current_context_start = true, +-- +-- char_highlight_list = { +-- "IndentBlanklineIndent1", +-- "IndentBlanklineIndent2", +-- "IndentBlanklineIndent3", +-- "IndentBlanklineIndent4", +-- "IndentBlanklineIndent5", +-- "IndentBlanklineIndent6", +-- }, +--} + +require("nvim-web-devicons").setup {} + +require("nvim-treesitter.configs").setup { + ensure_installed = { + "bash", "c", "c_sharp", "comment", "css", "diff", "git_rebase", + "gitattributes", "gitcommit", "gitignore", "html", "latex", + "lua", "make", "markdown", "python", "rust", "vim", "vimdoc", + "zig" + }, + + highlight = { + enable = true, + }, + + additional_vim_regex_highlighting = false, + + rainbow = { + enable = true, + extended_mode = true, + } +} +EOF + +colorscheme dracula diff --git a/nvim/basics.vim b/nvim/basics.vim new file mode 100644 index 0000000..bf1706e --- /dev/null +++ b/nvim/basics.vim @@ -0,0 +1,38 @@ +" Indent +set autoindent smartindent +set tabstop=8 " n of whitespace in \t +set shiftwidth=8 " n of whitespace for indent +set softtabstop=8 " n of whitespace to delete with backspace +"set expandtab " \t -> whitespaces +"set list +"set lcs=tab:\|\ ,space:⋅,eol:$ "↴ + +" Disable the mouse, btw use shift for highlighting +"set mouse= +map +imap +aunmenu PopUp + +" better and +nnoremap zz +nnoremap zz + +" Autocorrect +abbr hte the + +" Misc +set nu rnu +set cc=80 +set tw=79 +set title +set nohls +set tgc +set clipboard+=unnamedplus +autocmd FileType * setl fo-=ro fo+=tc + +" Language specific +autocmd FileType python setl ts=4 sw=4 sts=4 expandtab +autocmd FileType lisp,html setl ts=2 sw=2 sts=2 expandtab +autocmd FileType html,markdown setl spell +autocmd FileType tex setl spell spl=fr +autocmd BufWritePost *.c silent! !astyle -A3 -t8 -p -xg -H -xB -n %:p diff --git a/nvim/header.vim b/nvim/header.vim new file mode 100644 index 0000000..a96db90 --- /dev/null +++ b/nvim/header.vim @@ -0,0 +1,142 @@ +" . :-. . +" author: ratakor :*==*%%%#%+=---: +" :#%%%*+%#=+%*:. +" created: Sat, 06 May 2023 18:54:06 +0200 :%%%. . -*%- +" updated: Sun, 14 May 2023 01:43:30 +0200 =## . :#%*=:. +" -#*#%:=#%%%#- +" description: *:*%%%%%%%#- +" script to produce an header like this one .-#%%%%%%+ +" use .local/bin/updateheader to change the %%%--%%%%*- +" letter shown ##%= +%%=:.. +" #* #%# +" :# -==* +" :: .: + +let s:ascii = [ + \"", + \"███╗ ███╗", + \"████╗ ████║", + \"██╔████╔██║", + \"██║╚██╔╝██║", + \"██║ ╚═╝ ██║", + \"╚═╝ ╚═╝", + \] + +let s:start = '#' +let s:mid = '#' +let s:end = '' +let s:size = 20 " ascii width +let s:length = len(s:ascii) " header length +let s:width = 80 " header width +let s:margin = 5 + +let s:types = { + \'\.c$\|\.h$\|\.cc$\|\.hh$\|\.cpp$\|\.hpp$\|\.cs$\|\.php$': + \['/*', ' *', ' */'], + \'\.htm$\|\.html$\|\.xml$': + \[''], + \'\.js$': + \['//', '//', ''], + \'\.tex$': + \['%', '%', ''], + \'\.ml$\|\.mli$\|\.mll$\|\.mly$': + \['(*', ' ', '*)'], + \'\.vim$\|\vimrc$': + \['"', '"', ''], + \'\.f90$\|\.f95$\|\.f03$\|\.f$\|\.for$': + \['!', '!', ''], + \} + +function! s:filetype() + let l:f = expand("%:t") + + for type in keys(s:types) + if l:f =~ type + let s:start = s:types[type][0] + let s:mid = s:types[type][1] + let s:end = s:types[type][2] + endif + endfor + +endfunction + +function! s:textline(txt, pos) + let l:txt = strpart(a:txt, 0, s:width - s:margin * 2 - s:size) + + if a:pos == 1 + return s:start . repeat(' ', s:margin - strlen(s:start)) . l:txt . repeat(' ', s:width - s:margin * 2 - strlen(l:txt) - s:size) . s:ascii[a:pos] + elseif a:pos == s:length + return s:end + else + return s:mid . repeat(' ', s:margin - strlen(s:start)) . l:txt . repeat(' ', s:width - s:margin * 2 - strlen(l:txt) - s:size) . s:ascii[a:pos] +endfunction + +function! s:line(n) + if a:n == 2 + return s:textline("author: " . s:user() . " <" . s:mail() . ">", a:n) +" elseif a:n == 3 +" return s:textline("license: " . "ICS license", a:n) + elseif a:n == 4 + return s:textline("created: " . s:date(), a:n) + elseif a:n == 5 + return s:textline("updated: " . s:date(), a:n) + elseif a:n == 7 + return s:textline("description: ", a:n) + else + return s:textline('', a:n) + endif +endfunction + +function! s:user() + let l:user = $USER + if strlen(l:user) == 0 + let l:user = "user" + endif + return l:user +endfunction + +function! s:mail() + let l:mail = $MAIL + if strlen(l:mail) == 0 + let l:mail = "user@mail.org" + endif + return l:mail +endfunction + +function! s:date() + return strftime("%a, %d %b %Y %H:%M:%S %z") +endfunction + +function! s:insert() + let l:line = s:length + + while l:line > 0 + call append(0, s:line(l:line)) + let l:line = l:line - 1 + endwhile +endfunction + +function! s:update() + let line = 0 + call s:filetype() + if getline(5) =~ s:start . repeat(' ', s:margin - strlen(s:start)) . "updated: " + let line = 5 + elseif getline(6) =~ s:start . repeat(' ', s:margin - strlen(s:start)) . "updated: " + let line = 6 + endif + if line > 0 && &mod + call setline(line, s:line(5)) + return 0 + endif + return 1 +endfunction + +function! s:header() + if s:update() + call s:insert() + endif +endfunction + +command! Header call s:header () +autocmd BufNewFile * call s:header () +autocmd BufWritePre * call s:update () diff --git a/nvim/init.vim b/nvim/init.vim new file mode 100644 index 0000000..f5a6781 --- /dev/null +++ b/nvim/init.vim @@ -0,0 +1,87 @@ +" Automatic vim-plug installation +if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"')) + echo "Downloading junegunn/vim-plug to manage plugins..." + silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/ + silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim + autocmd VimEnter * PlugInstall +endif + +call plug#begin(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/plugged"')) +" Appearance +Plug 'Mofiqul/dracula.nvim' " dracula theme +Plug 'ellisonleao/gruvbox.nvim' " gruvbox theme +"Plug 'catppuccin/nvim', { 'as': 'catppuccin' } " catppuccin theme +"Plug 'neanias/everforest-nvim' " everforest theme +Plug 'ratakor/vim-startify' " start screen +Plug 'nvim-lualine/lualine.nvim' " bottom bar +Plug 'kyazdani42/nvim-web-devicons' " fancy icons +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " syntax color +Plug 'p00f/nvim-ts-rainbow' " funny brackets +"Plug 'lukas-reineke/indent-blankline.nvim' " funny indentation +Plug 'm-demare/hlargs.nvim' " highlight arguments + +" LSP Support and Autocompletion Engine +Plug 'neovim/nvim-lspconfig' +Plug 'hrsh7th/nvim-cmp' +Plug 'hrsh7th/cmp-nvim-lsp' +Plug 'hrsh7th/cmp-nvim-lsp-signature-help' +"Plug 'hrsh7th/cmp-nvim-lsp-document-symbol' +Plug 'hrsh7th/cmp-buffer' +Plug 'hrsh7th/cmp-path' +Plug 'hrsh7th/cmp-calc' +Plug 'ray-x/cmp-treesitter' +Plug 'saadparwaiz1/cmp_luasnip' +Plug 'L3MON4D3/LuaSnip', {'do': 'make install_jsregexp'} +Plug 'ratakor/vim-snippets' + +" Misc +Plug 'bronson/vim-trailing-whitespace' " FixWhitespace +Plug 'airblade/vim-gitgutter' " hud for git in vim +Plug 'nvim-lua/plenary.nvim' " dependency for telescope +Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.0' } " fuzzy finder +Plug 'preservim/nerdtree' " vs code be like +Plug 'mbbill/undotree' " history visualizer +Plug 'tpope/vim-commentary' " gc/gcc magic comment +Plug 'ziglang/zig.vim' +Plug 'kovetskiy/sxhkd-vim' +Plug 'petertriho/nvim-scrollbar' +Plug 'andrewferrier/debugprint.nvim' +"Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' } +call plug#end() + +source $XDG_CONFIG_HOME/nvim/basics.vim +source $XDG_CONFIG_HOME/nvim/header.vim +source $XDG_CONFIG_HOME/nvim/appearance.vim +source $XDG_CONFIG_HOME/nvim/lsp.vim + +" Telescope config +nnoremap :Telescope find_files +nnoremap :Telescope git_files + +" NerdTree config +nnoremap :NERDTreeToggle + +" Undotree config +nnoremap :UndotreeToggle + +" custom vim-commentary +autocmd FileType zig setl commentstring=//\ %s +autocmd FileType cs setl commentstring=/*\ %s\ */ + +lua << EOF +require("debugprint").setup() +EOF + +"let g:startify_custom_header = [ +let g:cow = [ +\" /\\_\\/\\_\\ _ / /\\ /\\ \\ /\\ \\ /\\ \\ _\\ \\ _\\ \\ /\\_\\ / /\\", +\" / / / / //\\_\\ / / \\ / \\ \\ / \\ \\ / \\ \\ /\\__ \\ /\\__ \\ / / / _ / / \\ ", +\" /\\ \\/ \\ \\/ / // / /\\ \\ / /\\ \\ \\ / /\\ \\ \\ / /\\ \\ \\ / /_ \\_\\ / /_ \\_\\ \\ \\ \\__ /\\_\\ / / /\\ \\__ ", +\" / \\____\\__/ // / /\\ \\ \\ / / /\\ \\_\\ / / /\\ \\ \\ / / /\\ \\_\\ / / /\\/_/ / / /\\/_/ \\ \\___\\ / / // / /\\ \\___\\ ", +\" / /\\/________// / / \\ \\ \\ / / /_/ / / / / / \\ \\_\\ / /_/_ \\/_/ / / / / / / \\__ / / / / \\ \\ \\ \\/___/ ", +\" / / /\\/_// / // / /___/ /\\ \\ / / /__\\/ / / / / \\/_/ / /____/\\ / / / / / / / / / / / / \\ \\ \\ ", +\" / / / / / // / /_____/ /\\ \\ / / /_____/ / / / / /\\____\\/ / / / ____ / / / ____ / / / / / /_ \\ \\ \\ ", +\"/ / / / / // /_________/\\ \\ \\ / / /\\ \\ \\ / / /________ / / /______ / /_/_/ ___/\\ / /_/_/ ___/\\ / / /___/ / //_/\\__/ / / ", +\"\\/_/ / / // / /_ __\\ \\_\\/ / / \\ \\ \\/ / /_________\\/ / /_______\\/_______/\\__\\//_______/\\__\\// / /____\\/ / \\ \\/___/ / ", +\" \\/_/ \\_\\___\\ /____/_/\\/_/ \\_\\/\\/____________/\\/__________/\\_______\\/ \\_______\\/ \\/_________/ \\_____\\/ ", +\] diff --git a/nvim/lsp.vim b/nvim/lsp.vim new file mode 100644 index 0000000..80ac5c2 --- /dev/null +++ b/nvim/lsp.vim @@ -0,0 +1,163 @@ +" . :-. . +" author: marcellus :*==*%%%#%+=---: +" :#%%%*+%#=+%*:. +" created: Sun, 14 May 2023 01:07:47 +0200 :%%%. . -*%- +" updated: Sun, 14 May 2023 01:08:07 +0200 =## . :#%*=:. +" -#*#%:=#%%%#- +" description: *:*%%%%%%%#- +" .-#%%%%%%+ +" %%%--%%%%*- +" ##%= +%%=:.. +" #* #%# +" :# -==* +" :: .: + +" . :-. . +" author: ratakor :*==*%%%#%+=---: +" :#%%%*+%#=+%*:. +" created: Sat, 06 May 2023 18:54:06 +0200 :%%%. . -*%- +" updated: Sat, 13 May 2023 13:16:03 +0200 =## . :#%*=:. +" -#*#%:=#%%%#- +" description: *:*%%%%%%%#- +" script to produce an header like this one .-#%%%%%%+ +" use .local/bin/updateheader to change the %%%--%%%%*- +" letter shown ##%= +%%=:.. +" #* #%# +" :# -==* +" :: .: + +let s:ascii = [ + \"", + \". :-. .", + \":*==*%%%#%+=---:", + \" :#%%%*+%#=+%*:.", + \" :%%%. . -*%-", + \" =## . :#%*=:.", + \" -#*#%:=#%%%#-", + \" *:*%%%%%%%#-", + \" .-#%%%%%%+", + \" %%%--%%%%*-", + \" ##%= +%%=:..", + \" #* #%#", + \" :# -==*", + \" :: .:", + \] + +let s:start = '#' +let s:mid = '#' +let s:end = '' +let s:size = 20 " ascii width +let s:length = len(s:ascii) " header length +let s:width = 80 " header width +let s:margin = 5 + +let s:types = { + \'\.c$\|\.h$\|\.cc$\|\.hh$\|\.cpp$\|\.hpp$\|\.cs$\|\.php$': + \['/*', ' *', ' */'], + \'\.htm$\|\.html$\|\.xml$': + \[''], + \'\.js$': + \['//', '//', ''], + \'\.tex$': + \['%', '%', ''], + \'\.ml$\|\.mli$\|\.mll$\|\.mly$': + \['(*', ' ', '*)'], + \'\.vim$\|\vimrc$': + \['"', '"', ''], + \'\.f90$\|\.f95$\|\.f03$\|\.f$\|\.for$': + \['!', '!', ''], + \} + +function! s:filetype() + let l:f = expand("%:t") + + for type in keys(s:types) + if l:f =~ type + let s:start = s:types[type][0] + let s:mid = s:types[type][1] + let s:end = s:types[type][2] + endif + endfor + +endfunction + +function! s:textline(txt, pos) + let l:txt = strpart(a:txt, 0, s:width - s:margin * 2 - s:size) + + if a:pos == 1 + return s:start . repeat(' ', s:margin - strlen(s:start)) . l:txt . repeat(' ', s:width - s:margin * 2 - strlen(l:txt) - s:size) . s:ascii[a:pos] + elseif a:pos == s:length + return s:end + else + return s:mid . repeat(' ', s:margin - strlen(s:start)) . l:txt . repeat(' ', s:width - s:margin * 2 - strlen(l:txt) - s:size) . s:ascii[a:pos] +endfunction + +function! s:line(n) + if a:n == 2 + return s:textline("author: " . s:user() . " <" . s:mail() . ">", a:n) +" elseif a:n == 3 +" return s:textline("license: " . "ICS license", a:n) + elseif a:n == 4 + return s:textline("created: " . s:date(), a:n) + elseif a:n == 5 + return s:textline("updated: " . s:date(), a:n) + elseif a:n == 7 + return s:textline("description: ", a:n) + else + return s:textline('', a:n) + endif +endfunction + +function! s:user() + let l:user = $USER + if strlen(l:user) == 0 + let l:user = "user" + endif + return l:user +endfunction + +function! s:mail() + let l:mail = $MAIL + if strlen(l:mail) == 0 + let l:mail = "user@mail.org" + endif + return l:mail +endfunction + +function! s:date() + return strftime("%a, %d %b %Y %H:%M:%S %z") +endfunction + +function! s:insert() + let l:line = s:length + + while l:line > 0 + call append(0, s:line(l:line)) + let l:line = l:line - 1 + endwhile +endfunction + +function! s:update() + let line = 0 + call s:filetype() + if getline(5) =~ s:start . repeat(' ', s:margin - strlen(s:start)) . "updated: " + let line = 5 + elseif getline(6) =~ s:start . repeat(' ', s:margin - strlen(s:start)) . "updated: " + let line = 6 + endif + if line > 0 && &mod + call setline(line, s:line(5)) + return 0 + endif + return 1 +endfunction + +function! s:header() + if s:update() + call s:insert() + endif +endfunction + +command! Header call s:header () +autocmd BufNewFile * call s:header () +autocmd BufWritePre * call s:update () diff --git a/zsh/.zshrc b/zsh/.zshrc index 6f2b0b5..2edb3c6 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -5,6 +5,7 @@ flashfetch quand +[ -f "$ZDOTDIR/paliasrc" ] && source "$ZDOTDIR/paliasrc" # Private aliases autoload -U colors && colors # Load colors PS1="%B%(?.0.%F{red}%?) %F{blue}%n %F{green}%~ %f$%b " @@ -22,6 +23,7 @@ alias ascii="ascii -d" alias cf="$HOME/.config/" alias cspt="$HOME/.config/scripts" alias cz="$HOME/.config/zsh" +alias cn="$XDG_CONFIG_HOME/nvim" alias gs="git status" alias rps="echo help | nc ratakor.com 9998" alias nv="nvim" -- cgit v1.2.3