diff options
-rw-r--r-- | .bash_logout | 3 | ||||
-rw-r--r-- | .bash_profile | 6 | ||||
-rw-r--r-- | .bashrc | 2 | ||||
-rw-r--r-- | .config/environment.d/00-wayland.conf | 5 | ||||
-rw-r--r-- | .config/htop/htoprc | 20 | ||||
-rw-r--r-- | .config/nvim/ftplugin/lua.lua | 4 | ||||
-rw-r--r-- | .config/nvim/init.lua | 336 | ||||
-rw-r--r-- | .config/nvim/stylua.toml | 3 | ||||
-rw-r--r-- | .config/vim/vimrc (renamed from .vimrc) | 0 | ||||
-rw-r--r-- | .lesskey | 4 | ||||
-rw-r--r-- | .profile | 37 | ||||
-rw-r--r-- | .shrc | 77 | ||||
-rw-r--r-- | .zfunc/prompt_marc_setup | 8 | ||||
-rw-r--r-- | .zprofile | 2 | ||||
-rw-r--r-- | .zshenv | 7 | ||||
-rw-r--r-- | .zshrc | 29 |
16 files changed, 345 insertions, 198 deletions
diff --git a/.bash_logout b/.bash_logout deleted file mode 100644 index 0e4e4f1..0000000 --- a/.bash_logout +++ /dev/null @@ -1,3 +0,0 @@ -# -# ~/.bash_logout -# diff --git a/.bash_profile b/.bash_profile deleted file mode 100644 index ad8dc45..0000000 --- a/.bash_profile +++ /dev/null @@ -1,6 +0,0 @@ -# -# ~/.bash_profile -# - -[[ -f ~/.profile ]] && . ~/.profile -[[ -f ~/.bashrc ]] && . ~/.bashrc diff --git a/.bashrc b/.bashrc deleted file mode 100644 index 60e5681..0000000 --- a/.bashrc +++ /dev/null @@ -1,2 +0,0 @@ - -. "$ENV" diff --git a/.config/environment.d/00-wayland.conf b/.config/environment.d/00-wayland.conf new file mode 100644 index 0000000..e16ca2f --- /dev/null +++ b/.config/environment.d/00-wayland.conf @@ -0,0 +1,5 @@ +GTK_IM_MODULE=ibus +QT_IM_MODULE=ibus +XMODIFIERS=@im=ibus +QT_QPA_PLATFORM=wayland;xcb +SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh diff --git a/.config/htop/htoprc b/.config/htop/htoprc index 06fc74b..75d1ae4 100644 --- a/.config/htop/htoprc +++ b/.config/htop/htoprc @@ -1,6 +1,6 @@ # Beware! This file is rewritten by htop when settings are changed in the interface. # The parser is also very primitive, and not human-friendly. -htop_version=3.2.2 +htop_version=3.3.0 config_reader_min_version=3 fields=0 48 17 18 38 39 40 2 46 47 49 1 hide_kernel_threads=1 @@ -38,26 +38,26 @@ column_meters_0=LeftCPUs Memory Swap column_meter_modes_0=1 1 1 column_meters_1=RightCPUs Tasks LoadAverage Uptime column_meter_modes_1=1 2 2 2 -tree_view=0 -sort_key=46 -tree_sort_key=46 +tree_view=1 +sort_key=47 +tree_sort_key=47 sort_direction=-1 -tree_sort_direction=-1 +tree_sort_direction=1 tree_view_always_by_pid=0 all_branches_collapsed=0 screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command -.sort_key=PERCENT_CPU -.tree_sort_key=PERCENT_CPU -.tree_view=0 +.sort_key=PERCENT_MEM +.tree_sort_key=PERCENT_MEM .tree_view_always_by_pid=0 +.tree_view=1 .sort_direction=-1 -.tree_sort_direction=-1 +.tree_sort_direction=1 .all_branches_collapsed=0 screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command .sort_key=IO_RATE .tree_sort_key=PID -.tree_view=0 .tree_view_always_by_pid=0 +.tree_view=0 .sort_direction=-1 .tree_sort_direction=1 .all_branches_collapsed=0 diff --git a/.config/nvim/ftplugin/lua.lua b/.config/nvim/ftplugin/lua.lua index 12890e2..956ba20 100644 --- a/.config/nvim/ftplugin/lua.lua +++ b/.config/nvim/ftplugin/lua.lua @@ -1,3 +1 @@ -vim.opt.omnifunc = 'v:lua.vim.lua_omnifunc' - - +require("lazydev").setup {} diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 5f0fb3d..a017a27 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,53 +1,245 @@ +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + require "paq" { - "savq/paq-nvim", -- Let Paq manage itself - "savq/melange-nvim", - "neovim/nvim-lspconfig", - { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' }, + { "savq/paq-nvim" }, + { "savq/melange-nvim" }, + { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' }, + { 'williamboman/mason.nvim' }, + { 'williamboman/mason-lspconfig.nvim' }, + { 'neovim/nvim-lspconfig' }, + { 'p00f/clangd_extensions.nvim' }, + { 'folke/lazydev.nvim' }, + { 'mrcjkb/rustaceanvim' }, + { 'hrsh7th/nvim-cmp' }, + { 'hrsh7th/cmp-nvim-lsp' }, + { "stevearc/conform.nvim" }, + { "j-hui/fidget.nvim" }, }:sync() vim.opt.number = true vim.opt.relativenumber = true vim.opt.title = true vim.opt.termguicolors = true -vim.opt.signcolumn = 'yes' + +vim.opt.shortmess:append("sI") + +vim.opt.splitright = true +vim.opt.splitbelow = true vim.g.netrw_keepdir = 0 vim.g.netrw_banner = 0 -vim.opt.clipboard=unnamedplus +vim.g.loaded_node_provider = 0 +vim.g.loaded_perl_provider = 0 +vim.g.loaded_python_provider = 0 + +vim.opt.list = true +vim.opt.mouse = 'a' + +vim.opt.foldexpr = 'v:lua.vim.treesitter.foldexpr()' +vim.opt.foldmethod = "expr" +vim.opt.foldcolumn = "auto" + +vim.opt.cursorline = true +vim.opt.laststatus = 2 +vim.opt.statusline = "%!v:lua.Line.status()" +vim.opt.tabline = "%!v:lua.Line.tab()" +vim.opt.signcolumn = 'yes' +vim.opt.statuscolumn = "%!v:lua.Line.column()" +vim.opt.showtabline = 2 + +-- Bug in Wayland + netrw +-- vim.opt.clipboard = 'unnamedplus' vim.cmd.colorscheme 'melange' vim.opt.colorcolumn = '+1' -vim.opt.foldlevel = 2 -vim.opt.foldmethod = "expr" -vim.opt.foldexpr = "nvim_treesitter#foldexpr()" -vim.opt.foldenable = false -vim.opt.omnifunc = "syntaxcomplete#Complete" -vim.opt.completeopt = {'menu', 'noinsert'} +vim.opt.hlsearch = true +vim.keymap.set('n', '<Esc>', vim.cmd.nohlsearch) + +vim.keymap.set('n', '<S-Right>', vim.cmd.bnext) +vim.keymap.set('n', '<S-Left>', vim.cmd.bprev) + +local function get_formated_bufname(buffer) + buffer = buffer or 0 + + local name = vim.api.nvim_buf_get_name(buffer) + local buftype = vim.bo[buffer].buftype + if buftype == "terminal" then + name = vim.b[buffer].term_title + else + if #name == 0 then + name = '[No Name] (' .. (buftype or vim.bo[buffer].filetype) .. ')' + end + local modified = vim.bo[buffer].modified and '[+]' or "" + local readonly = vim.bo[buffer].readonly and '[RO]' or "" + name = name .. modified .. readonly + end + + return name +end + +Line = { + status = function() + local buffer = vim.api.nvim_win_get_buf(vim.g.statusline_winid) + local buftype = vim.bo[buffer].buftype + print(buftype) + if buftype == "terminal" then + return table.concat({ vim.b[buffer].term_title, vim.api.nvim_buf_get_name(buffer) }, '%=') + end + local a = "" + if vim.opt.ruler:get() then + a = "%8l:%c%V %8p%%" + end + + local clients = {} + for _, client in ipairs(vim.lsp.get_clients()) do + if client.attached_buffers[buffer] then + table.insert(clients, client.name) + end + end + + return table.concat({ + vim.api.nvim_get_mode().mode:upper(), + get_formated_bufname(buffer), + "%=", + vim.bo.filetype, + "(" .. table.concat(clients, ", ") .. ")", + vim.bo.spelllang, + vim.bo.fileencoding, + vim.bo.fileformat, + a + }, " ") + end, + + tab = function() + local tabs = vim.api.nvim_list_tabpages() + local format = vim.tbl_map(function(tab) + local str = "" + if tab == vim.api.nvim_get_current_tabpage() then + str = '%#TabLineSel#' + else + str = '%#TabLine#' + end + local buffer = vim.api.nvim_win_get_buf(vim.api.nvim_tabpage_get_win(tab)) + return + table.concat { + str, + "%", tab, 'T', + get_formated_bufname(buffer), + " %", tab, 'XX' + } + end, tabs) + local tabline = table.concat(format, " ") + + return tabline .. '%#TabLineFill#%T' + end, + + column = function() + local col = {} + if vim.opt.foldenable:get() then + local foldchar = " " + local hl = vim.fn.line(".") == vim.v.lnum and "CursorLineFold#" or "FoldColumn#" + if vim.v.virtnum == 0 and vim.fn.foldlevel(vim.v.lnum) + and vim.fn.foldlevel(vim.v.lnum) > vim.fn.foldlevel(vim.v.lnum - 1) then + foldchar = vim.fn.foldclosed(vim.v.lnum) == -1 and "⌵" or "›" + end + + foldchar = "%#" .. hl .. foldchar .. "%*" + table.insert(col, foldchar) + end + + if vim.opt.number:get() or vim.opt.relativenumber:get() then + local linenr = " " + if vim.v.virtnum == 0 then + if vim.opt.number:get() and not vim.opt.relativenumber:get() then + linenr = vim.v.lnum + elseif not vim.opt.number:get() and vim.opt.relativenumber:get() then + linenr = vim.v.relnum + else + linenr = vim.v.relnum ~= 0 and vim.v.relnum or vim.v.lnum + end + end + linenr = "%=" .. linenr + table.insert(col, linenr) + end + + table.insert(col, "%s") + return table.concat(col, "") + end +} -require'nvim-treesitter.configs'.setup { +require 'nvim-treesitter.configs'.setup { highlight = { enable = true, }, indent = { enable = true }, auto_install = true, - ensure_installed = { "vimdoc", "lua" } } -require'lspconfig'.clangd.setup{} -require'lspconfig'.tsserver.setup{} -require'lspconfig'.eslint.setup{} -require'lspconfig'.html.setup{} -require'lspconfig'.cssls.setup{} -require'lspconfig'.jsonls.setup{} -require'lspconfig'.pyright.setup{} +vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist) + +require("conform").setup { + formatters_by_ft = { + python = { "isort", "black" }, + }, +} +vim.opt.formatexpr = "v:lua.require'conform'.formatexpr()" +vim.keymap.set('n', '<leader>f', function() + require('conform').format { async = true, lsp_format = "fallback", } +end) +vim.api.nvim_create_user_command("Format", function(args) + local range = nil + if args.count ~= -1 then + local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] + range = { + start = { args.line1, 0 }, + ["end"] = { args.line2, end_line:len() }, + } + end + require("conform").format({ async = true, lsp_format = "fallback", range = range }) +end, { range = true }) + +vim.api.nvim_create_user_command("Scratch", function(args) + local buf = vim.api.nvim_create_buf(true, true) + print(vim.inspect(args)) + if #args.fargs then + vim.api.nvim_buf_set_name(buf, args.fargs[1]) + end +end, { nargs = '?', bar = true }) + +vim.keymap.set('n', '<leader>b', function() + local bufs = vim.tbl_filter( + function(buffer) + return vim.bo[buffer].buflisted + end, + vim.api.nvim_list_bufs() + ) + vim.ui.select(bufs, { + prompt = 'Buffer: ', + format_item = get_formated_bufname + }, function(result) + if result then + vim.api.nvim_set_current_buf(result) + end + end) +end) -vim.keymap.set('i', '<C-Space>', '<C-x><C-o>') -vim.keymap.set('n', '<space>e', vim.diagnostic.open_float) -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next) -vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist) +vim.keymap.set('n', '<leader>t', function() + local tabs = vim.api.nvim_list_tabpages() + vim.ui.select(tabs, { + prompt = 'Tab: ', + format_item = function(tab) + local buffer = vim.api.nvim_win_get_buf(vim.api.nvim_tabpage_get_win(tab)) + return get_formated_bufname(buffer) + end + }, function(result) + if result then + vim.api.nvim_set_current_tabpage(result) + end + end) +end) vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), @@ -55,20 +247,92 @@ vim.api.nvim_create_autocmd('LspAttach', { local opts = { buffer = ev.buf } vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts) - vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts) - vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts) - vim.keymap.set('n', '<space>wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts) + vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts) + vim.keymap.set('n', '<leader>wl', function() + local dir = vim.lsp.buf.list_workspace_folders() + vim.ui.select(dir, { + prompt = 'Workspace Dir: ', + }, function(result) + if result then + vim.api.nvim_set_current_dir(result) + end + end) end, opts) - vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts) - vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts) + vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, opts) + vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts) vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) - vim.keymap.set('n', '<space>f', function() - vim.lsp.buf.format { async = true } - end, opts) + + vim.lsp.inlay_hint.enable() end, }) + +local capabilities = vim.tbl_deep_extend( + "force", + {}, + vim.lsp.protocol.make_client_capabilities(), + require('cmp_nvim_lsp').default_capabilities() +) + +require('mason').setup {} +require('mason-lspconfig').setup { + ensure_installed = { 'lua_ls' }, + handlers = { + function(server_name) + require("lspconfig")[server_name].setup { + capabilities = capabilities + } + end, + lua_ls = function() + require("lspconfig").lua_ls.setup { + settings = { + Lua = { + completion = { + callSnippet = 'Replace', + }, + diagnostics = { disable = { 'missing-fields' } }, + }, + } + } + end, + rust_analyzer = function() end, + clangd = function() + require("lspconfig").clangd.setup { + capabilities = capabilities, + on_attach = function() + require("clangd_extensions.inlay_hints").setup_autocmd() + require("clangd_extensions.inlay_hints").set_inlay_hints() + end + } + end + } +} + +local cmp = require('cmp') +local cmp_select = { behavior = cmp.SelectBehavior.Select } + +cmp.setup({ + snippet = { + expand = function(args) + vim.snippet.expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + ['<Up>'] = cmp.mapping.select_prev_item(cmp_select), + ['<Down>'] = cmp.mapping.select_next_item(cmp_select), + }), + sources = cmp.config.sources({ + { + name = 'lazydev', + group_index = 0, + }, + { name = 'nvim_lsp' }, + }, { + { name = 'buffer' }, + }) +}) + +require("fidget").setup {} diff --git a/.config/nvim/stylua.toml b/.config/nvim/stylua.toml new file mode 100644 index 0000000..740c191 --- /dev/null +++ b/.config/nvim/stylua.toml @@ -0,0 +1,3 @@ +quote_style = "AutoPreferSingle" +call_parentheses = "None" +line_endings = "Unix" diff --git a/.vimrc b/.config/vim/vimrc index d06b8c8..d06b8c8 100644 --- a/.vimrc +++ b/.config/vim/vimrc diff --git a/.lesskey b/.lesskey deleted file mode 100644 index a06933f..0000000 --- a/.lesskey +++ /dev/null @@ -1,4 +0,0 @@ -#env -LESS=-MRF~ -LESSCHARSET=UTF-8 -LESSHISTFILE=- diff --git a/.profile b/.profile deleted file mode 100644 index c5eaf60..0000000 --- a/.profile +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -l - -if command -v nvim > /dev/null -then - export VISUAL=nvim -elif command -v vim > /dev/null -then - export VISUAL=vim -elif command -v vi > /dev/null -then - export VISUAL=vi -fi - -if command -v ex > /dev/null -then - export EDITOR=ex -elif command -v ed > /dev/null -then - export EDITOR=ed -fi -export FCEDIT="$VISUAL" - -if command -v less > /dev/null -then - export PAGER=less -elif command -v more > /dev/null -then - export PAGER=more -fi - -if test -r "$HOME"/.shrc -then - export ENV="$HOME"/.shrc -fi - -PATH=$HOME/.nodenv/bin:$HOME/.pyenv/bin:$HOME/.local/bin/:$PATH -export MANPATH="$HOME"/.local/share/man: @@ -1,77 +0,0 @@ -#!/bin/sh -i - -case $- in - *i*) ;; - - *) - return - ;; -esac - -set -o vi -set -o nounset -set -o noclobber -set -o ignoreeof - -unalias du 2> /dev/null -du() ( - set -- -k "$@" - exec du "$@" -) - -unalias df 2> /dev/null -df() ( - set -- -k "$@" - exec df "$@" -) - -unalias ls 2> /dev/null -ls() ( - set -- -Fkq "$@" - exec ls "$@" -) - -for cmd in egrep fgrep dir vdir which -do - unalias "$cmd" 2> /dev/null - if command -v "$cmd" > /dev/null - then - eval "$(cat <<-EOF - $cmd(){ - printf "%s: %s: command is disabled.\n" \ - "$0" "$cmd" >&2 - return 1 - } - EOF - )" - fi -done - -sudo() ( - command sudo -nv 2> /dev/null - exec sudo "$@" -) - -sudoedit() ( - sudo -e "$@" -) - -if command -v pyenv > /dev/null -then - eval "$(pyenv init -)" -fi - -if command -v nodenv > /dev/null -then - eval "$(nodenv init -)" -fi - -if test -n "${TTY-}" && test -t 0 -then - TTY=$(tty) - export TTY - export GPG_TTY="$TTY" -fi - -PS1='$(sh-prompt $?)' - diff --git a/.zfunc/prompt_marc_setup b/.zfunc/prompt_marc_setup index 834b233..80e7931 100644 --- a/.zfunc/prompt_marc_setup +++ b/.zfunc/prompt_marc_setup @@ -3,7 +3,6 @@ emulate -L zsh prompt_marc_precmd() { vcs_info - RPS1="%B$vcs_info_msg_0_%b" set-title "$(print -Pn "%n@%m %~")" } @@ -16,13 +15,16 @@ prompt_marc_setup () { add-zsh-hook precmd prompt_marc_precmd add-zsh-hook preexec prompt_marc_preexec + VIRTUAL_ENV_DISABLE_PROMPT=1 + zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' get-revision true zstyle ':vcs_info:*' formats "%s:%R|%S@%b %m%u%c" zstyle ':vcs_info:*' actionformats "%s:%r|%S@%b (%a) %m%u%c" - prompt_opts=( ) - PS1='%B%? %n@%M:%~ %# %b' + prompt_opts=( "subst" "percent" ) + PS1='%B%? %n@%M:%~ (j: %j v: ${VIRUAL_ENV:-none}) %# %b' + RPS1='%B$vcs_info_msg_0_%b' } prompt_marc_setup "$@" @@ -1,7 +1,7 @@ typeset -U PATH path -path=( $HOME/.local/bin $path ) +path=( $HOME/.local/bin $HOME/.local/opt/nvim-linux64/bin $path ) if test -d /usr/lib/flatpak-xdg-utils/ then @@ -27,3 +27,10 @@ fi NULLCMD=${PAGER:-cat} READNULLCMD=${PAGER:-more} +. "$HOME/.cargo/env" + +export XDG_CONFIG_HOME="$HOME/.config/" +export XDG_CACHE_HOME="$HOME/.cache/" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_STATE_HOME="$HOME/.local/state/" + @@ -1,6 +1,6 @@ #!/usr/bin/zsh -i -zmodload zsh/zprof +zmodload zsh/zprof bindkey -v autoload -Uz edit-command-line @@ -14,13 +14,22 @@ setopt hist_ignore_all_dups hist_save_no_dups hist_reduce_blanks share_history e fpath=(~/.zfunc $fpath) +alias diff='diff --color=auto' +alias ls='ls -F --color=auto' +alias grep='grep --color=auto' +alias sudo='sudo ' +alias run0='run0 ' + autoload -Uz compinit promptinit zmodload zsh/complist zstyle ':completion:*' menu select +zstyle ':completion:*' verbose yes +zstyle ':completion:*' completer _expand _complete _ignored _approximate zstyle ':completion:*' group-name '' -zstyle ':completion:*' completer _extensions _expand_alias _complete _approximate -zstyle ':completion:*:*:*:*:descriptions' format '%B%d%b' -zstyle ':completion:*:*:*:*:corrections' format '%B%d (errors: %e)%b' +zstyle ':completion:*:descriptions' format '%B%d%b' +zstyle ':completion:*:messages' format '%d' +zstyle ':completion:*:warnings' format 'No matches for: %d' +zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b' zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' complete-options true zstyle ':completion:*' rehash true @@ -36,7 +45,6 @@ promptinit prompt marc add-zsh-hook -Uz precmd osc7_prompt - setopt no_clobber setopt extendedglob @@ -49,15 +57,4 @@ alias help=run-help autoload -Uz e v p bell -path=( ~/.pyenv/bin ~/.nodenv/bin $path ) - -if command -v pyenv > /dev/null -then - eval "$(pyenv init -)" -fi - -if command -v nodenv > /dev/null -then - eval "$(nodenv init -)" -fi |