diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2022-08-13 16:18:31 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2022-08-13 16:18:31 +0200 |
| commit | 4bfc180939d86c181da6e258c813344cf0a21f6d (patch) | |
| tree | 4053192f84d1c4b322bfe398d7dfa3b5ce0a51fd | |
| parent | a9199ba1d8ea09aa92e7dbbc1b08c3d06018ad53 (diff) | |
| parent | 414a32702300e073d221d462599dd92f11ed9411 (diff) | |
| download | dotfiles-4bfc180939d86c181da6e258c813344cf0a21f6d.tar.gz dotfiles-4bfc180939d86c181da6e258c813344cf0a21f6d.tar.bz2 dotfiles-4bfc180939d86c181da6e258c813344cf0a21f6d.zip | |
Merge branch 'master' of github.com:cacharle/dotfiles
| -rw-r--r-- | config/alacritty/alacritty.darwin.yml | 66 | ||||
| -rw-r--r-- | config/git/config.darwin | 2 | ||||
| -rw-r--r-- | config/nvim/init.lua | 96 | ||||
| -rw-r--r-- | config/nvim/lua/mappings.lua | 19 | ||||
| -rw-r--r-- | config/nvim/lua/plugins.lua | 435 | ||||
| -rw-r--r-- | config/tmux/tmux.conf | 32 | ||||
| -rw-r--r-- | config/zsh/.zshrc | 44 | ||||
| -rw-r--r-- | config/zsh/aliases.zsh | 8 | ||||
| -rwxr-xr-x | config/zsh/zprofile | 2 |
9 files changed, 500 insertions, 204 deletions
diff --git a/config/alacritty/alacritty.darwin.yml b/config/alacritty/alacritty.darwin.yml index beb10ac..bedd44d 100644 --- a/config/alacritty/alacritty.darwin.yml +++ b/config/alacritty/alacritty.darwin.yml @@ -28,31 +28,55 @@ key_bindings: - { key: Return, mods: Command, action: ToggleSimpleFullScreen } - { key: Q, mods: Command, chars: "" } -# gruvbox_dark: https://github.com/eendroroy/alacritty-theme/blob/master/schemes.yaml +# Colors (Nord) colors: primary: - # hard contrast: background = '0x1d2021' - background: '0x282828' - # soft contrast: background = '0x32302f' - foreground: '0xebdbb2' + background: '0x2E3440' + foreground: '0xD8DEE9' normal: - black: '0x282828' - red: '0xcc241d' - green: '0x98971a' - yellow: '0xd79921' - blue: '0x458588' - magenta: '0xb16286' - cyan: '0x689d6a' - white: '0xa89984' + black: '0x3B4252' + red: '0xBF616A' + green: '0xA3BE8C' + yellow: '0xEBCB8B' + blue: '0x81A1C1' + magenta: '0xB48EAD' + cyan: '0x88C0D0' + white: '0xE5E9F0' bright: - black: '0x928374' - red: '0xfb4934' - green: '0xb8bb26' - yellow: '0xfabd2f' - blue: '0x83a598' - magenta: '0xd3869b' - cyan: '0x8ec07c' - white: '0xebdbb2' + black: '0x4C566A' + red: '0xBF616A' + green: '0xA3BE8C' + yellow: '0xEBCB8B' + blue: '0x81A1C1' + magenta: '0xB48EAD' + cyan: '0x8FBCBB' + white: '0xECEFF4' + +# gruvbox_dark: https://github.com/eendroroy/alacritty-theme/blob/master/schemes.yaml +# colors: +# primary: +# # hard contrast: background = '0x1d2021' +# background: '0x282828' +# # soft contrast: background = '0x32302f' +# foreground: '0xebdbb2' +# normal: +# black: '0x282828' +# red: '0xcc241d' +# green: '0x98971a' +# yellow: '0xd79921' +# blue: '0x458588' +# magenta: '0xb16286' +# cyan: '0x689d6a' +# white: '0xa89984' +# bright: +# black: '0x928374' +# red: '0xfb4934' +# green: '0xb8bb26' +# yellow: '0xfabd2f' +# blue: '0x83a598' +# magenta: '0xd3869b' +# cyan: '0x8ec07c' +# white: '0xebdbb2' # # colorscheme (Dracula) diff --git a/config/git/config.darwin b/config/git/config.darwin index 87edb8b..9cb547f 100644 --- a/config/git/config.darwin +++ b/config/git/config.darwin @@ -11,3 +11,5 @@ gpgsign = false [init] defaultBranch = master +[core] + editor = nvim diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 7665221..faa3cf4 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -1,8 +1,8 @@ -require('plugins') +require("plugins") -- common -vim.g.mapleader = ' ' -- set leader key to space -vim.g.maplocalleader = '-' -- set file local leader key to backslash +vim.g.mapleader = " " -- set leader key to space +vim.g.maplocalleader = "-" -- set file local leader key to backslash vim.opt.compatible = false -- not compatible with vi vim.opt.number = true -- line number vim.opt.numberwidth = 1 -- line numbers gutter autowidth @@ -15,10 +15,10 @@ vim.opt.swapfile = false -- disable swap files vim.opt.scrolloff = 2 -- line padding when scrolling vim.opt.textwidth = 0 -- when line wrap occurs vim.opt.wrapmargin = 0 -- disable auto line wrapping -vim.opt.clipboard = 'unnamedplus' -- use system clipboard +vim.opt.clipboard = "unnamedplus" -- use system clipboard vim.g.c_syntax_for_h = 1 -- .h file use C filetype instead of C++ vim.opt.encoding = "utf-8" -- utf-8 encoding -vim.opt.shellredir = ">" -- don't inclue stderr when reading a command +vim.opt.shellredir = ">" -- don"t inclue stderr when reading a command -- intuitif split opening vim.opt.splitbelow = true @@ -39,34 +39,74 @@ vim.opt.hlsearch = true -- match highlight vim.opt.incsearch = true -- status -vim.opt.laststatus=2 -- always a statusline (all window) +vim.opt.laststatus = 2 -- always a statusline (all window) vim.opt.showcmd = true -- show current partial command in the bottom right vim.opt.showmode = false -- dont show current mode (i.e --INSERT--) --- colorscheme -vim.opt.termguicolors = true -vim.opt.background = "dark" -vim.cmd [[ colorscheme gruvbox ]] -vim.g.gruvbox_italic = 1 -vim.g.gruvbox_bold = 1 -vim.g.gruvbox_termcolors = 256 -vim.g.gruvbox_contrast_dark = 'medium' -vim.g.gruvbox_contrast_light = 'hard' -vim.g.gruvbox_invert_selection = 0 - -- remove ugly treesitter error highlight -require 'nvim-treesitter.highlight' -local hlmap = vim.treesitter.highlighter.hl_map -hlmap.error = nil +-- require "nvim-treesitter.highlight" +-- local hlmap = vim.treesitter.highlighter.hl_map +-- hlmap.error = nil + +local augroup = vim.api.nvim_create_augroup("cacharle_init_group", {}) -vim.cmd [[ -augroup packer_user_config - autocmd! - autocmd BufWritePost plugins.lua source <afile> | PackerCompile -augroup end -]] +-- run PackerCompile when we modify plugins.lua +vim.api.nvim_create_autocmd( + "BufWritePost", + { + pattern = "plugins.lua", + command = "source <afile> | PackerCompile", + group = augroup + } +) -- remove trailing white space on save -vim.cmd [[ autocmd BufWritePre * %s/\s\+$//e ]] +vim.api.nvim_create_autocmd( + "BufWritePre", + { pattern = "*", command = [[ %s/\s\+$//e ]], group = augroup } +) + +-- set filttype for *.sql.j2 files +vim.api.nvim_create_autocmd( + "BufReadPre", + { + pattern = "*.sql.j2", + callback = function() vim.opt.filetype = "sql" end, + group = augroup, + } +) + +-- -- Format go files on save +-- vim.api.nvim_create_autocmd( +-- "BufWritePre", +-- { command = [[ !go fmt % ]], pattern = "*.go", group = augroup } +-- ) + +vim.api.nvim_create_autocmd( + "FileType", + { + pattern = "haskell", + callback = function() vim.opt_local.formatprg = "stylish-haskell" end, + group = augroup, + } +) + +vim.api.nvim_create_autocmd( + "FileType", + { + pattern = "lisp,html,css,htmldjango", + callback = function() vim.opt_local.shiftwidth = 2 end, + group = augroup, + } +) + +vim.api.nvim_create_autocmd( + "FileType", + { + pattern = "go", + callback = function() vim.opt_local.expandtab = false end, + group = augroup, + } +) -require('mappings') +require("mappings") diff --git a/config/nvim/lua/mappings.lua b/config/nvim/lua/mappings.lua index 50c57e2..5373a4e 100644 --- a/config/nvim/lua/mappings.lua +++ b/config/nvim/lua/mappings.lua @@ -26,25 +26,6 @@ map('n', ' ?', '?\v', {}) map('c', '<C-j>', '<down>', {}) map('c', '<C-k>', '<up>', {}) --- -- hook --- -- remove trailing white space on save --- autocmd vimrc BufWritePre * %s/\s\+$//e --- -- dirty hack to disable this feature on markdown (autocmd! wouldn't work) --- autocmd vimrc BufReadPre *.md autocmd! BufWritePre - - --- augroup vimrc_files --- autocmd! --- -- school c --- autocmd Filetype c setlocal noexpandtab --- autocmd Filetype c setlocal comments=s:/**,m:**,e:*/,s:/*,m:**,e:*/ --- -- std::cout << ... << std::endl; shortcut --- autocmd Filetype cpp nnoremap <leader>cout istd::cout << << std::endl;<ESC>2F<hi --- autocmd Filetype vim setlocal foldmethod=marker -- vim fold method to marker --- autocmd FileType haskell set formatprg=stylish-haskell --- autocmd FileType lisp,html,css,htmldjango setlocal shiftwidth=2 --- augroup END - -- python breakpoints vim.cmd [[ autocmd FileType python nmap <leader>bd mq:g/^\s*breakpoint()$/d<cr>`q ]] vim.cmd [[ autocmd FileType python nmap <leader>ba mqobreakpoint()<esc>`q ]] diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua index b373b6a..ddfd50f 100644 --- a/config/nvim/lua/plugins.lua +++ b/config/nvim/lua/plugins.lua @@ -1,61 +1,149 @@ vim.cmd [[ packadd packer.nvim ]] -return require('packer').startup(function() - use 'wbthomason/packer.nvim' -- plugin manager (can manage itself) - use 'junegunn/vim-easy-align' -- align - use 'AndrewRadev/sideways.vim' -- Move arguments sideways - use 'FooSoft/vim-argwrap' -- Put arguments on multiple lines - use 'tpope/vim-eunuch' -- basic commands on current file (Rename/Remove) - use 'romainl/vim-cool' -- only highlight search matches when searching +return require("packer").startup(function() + use "wbthomason/packer.nvim" -- plugin manager (can manage itself) + use "junegunn/vim-easy-align" -- align + use "AndrewRadev/sideways.vim" -- Move arguments sideways + use "tpope/vim-eunuch" -- basic commands on current file (Rename/Remove) + use "romainl/vim-cool" -- only highlight search matches when searching + use "lukas-reineke/indent-blankline.nvim" + + -- Put arguments on multiple lines + use { + "FooSoft/vim-argwrap", + config = function() + vim.g.argwrap_tail_comma = 1 + vim.api.nvim_create_autocmd( + "Filetype", + { + pattern = "go,lua", + callback = function() vim.g.argwrap_padded_braces = "{" end, + group = augroup, + } + ) + end + } + + use { + "jpalardy/vim-slime", + config = function() + vim.g.slime_target = "tmux" + end + } + + use { + "cacharle/vim-jinja-languages", + requires = {"mitsuhiko/vim-jinja"} + } + + -- python formatter + use { + "psf/black", + tag = "stable", + ft = "python", + config = function() + local augroup = vim.api.nvim_create_augroup("cacharle_black_group", {}) + vim.api.nvim_create_autocmd( + "BufWritePre", + { command = "Black", pattern = "*.py", group = augroup } + ) + end + } -- nvim lsp configuration use { - 'neovim/nvim-lspconfig', - ft = {'rust', 'python', 'c', 'cpp', 'lua'}, + "neovim/nvim-lspconfig", + ft = {"rust", "python", "c", "cpp", "lua", "go", "haskell", "ocaml"}, config = function() local on_attach = function(_, bufnr) local opts = { noremap = true, silent = true } local map = function(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - map('n', '<leader>[', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) - map('n', '<leader>]', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) - map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) - map('n', 'gk', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) - map('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) - map('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts) - map('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts) - map('n', '<leader>q', '<cmd>Telescope diagnostics<CR>', opts) - map('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) + map("n", "<leader>[", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts) + map("n", "<leader>]", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) + map("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts) + map("n", "gk", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts) + map("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) + map("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts) + map("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts) + map("n", "<leader>q", "<cmd>Telescope diagnostics<CR>", opts) + map("n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts) end - local lspconfig = require('lspconfig') - lspconfig.clangd.setup { on_attach = on_attach } - lspconfig.rust_analyzer.setup { on_attach = on_attach } - -- need python-lsp-server and pyls-flake8 - lspconfig.pylsp.setup { on_attach = on_attach } - -- package lua-language-server on ArchLinux - lspconfig.sumneko_lua.setup { - on_attach = on_attach , + local lspconfig = require("lspconfig") + local capabilities = require("cmp_nvim_lsp").update_capabilities( + vim.lsp.protocol.make_client_capabilities() + ) + + -- $ go install golang.org/x/tools/gopls + lspconfig.gopls.setup { + on_attach = on_attach, + capabilities = capabilities, settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - -- Setup your lua path - path = vim.split(package.path, ';'), - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'}, - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = { - [vim.fn.expand('$VIMRUNTIME/lua')] = true, - [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, - }, + gopls = { + analyses = { + unusedparams = true }, + staticcheck = true } - }, + } } + -- from: https://github.com/golang/tools/blob/master/gopls/doc/vim.md#neovim-imports + function go_import_callback() + local wait_ms = 1000 + local params = vim.lsp.util.make_range_params() + params.context = {only = {"source.organizeImports"}} + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, wait_ms) + for _, res in pairs(result or {}) do + for _, r in pairs(res.result or {}) do + if r.edit then + vim.lsp.util.apply_workspace_edit(r.edit, "UTF-8") + else + vim.lsp.buf.execute_command(r.command) + end + end + end + end + local augroup = vim.api.nvim_create_augroup("cacharle_gopls_group", {}) + vim.api.nvim_create_autocmd( + "BufWritePre", + { callback = go_import_callback, pattern = "*.go", group = augroup } + ) + + -- lspconfig.clangd.setup { on_attach = on_attach } + -- lspconfig.rust_analyzer.setup { on_attach = on_attach } + -- need python-lsp-server and pyls-flake8 + lspconfig.pylsp.setup { on_attach = on_attach, capabilities = capabilities } + + -- brew install haskell-language-server + lspconfig.hls.setup {} + + -- opam install ocaml-lsp-server + lspconfig.ocamllsp.setup {} + + -- package lua-language-server on ArchLinux + -- lspconfig.sumneko_lua.setup { + -- on_attach = on_attach , + -- settings = { + -- Lua = { + -- runtime = { + -- -- Tell the language server which version of Lua you"re using (most likely LuaJIT in the case of Neovim) + -- version = "LuaJIT", + -- -- Setup your lua path + -- path = vim.split(package.path, ";"), + -- }, + -- diagnostics = { + -- -- Get the language server to recognize the `vim` global + -- globals = {"vim"}, + -- }, + -- workspace = { + -- -- Make the server aware of Neovim runtime files + -- library = { + -- [vim.fn.expand("$VIMRUNTIME/lua")] = true, + -- [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true, + -- }, + -- }, + -- } + -- }, + -- } vim.diagnostic.config { signs = false, update_in_insert = false, @@ -63,82 +151,170 @@ return require('packer').startup(function() end, } - -- rust lsp (needs rust-analyser) + -- -- rust lsp (needs rust-analyser) + -- use { + -- "simrat39/rust-tools.nvim", + -- requires = {"neovim/nvim-lspconfig"}, + -- ft = {"rust"}, + -- config = function() + -- local on_attach = function(_, bufnr) + -- local opts = { noremap = true, silent = true } + -- local map = function(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + -- map("n", "<leader>[", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts) + -- map("n", "<leader>]", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) + -- map("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts) + -- map("n", "gk", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts) + -- map("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) + -- map("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts) + -- map("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts) + -- map("n", "<leader>q", "<cmd>Telescope diagnostics<CR>", opts) + -- map("n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts) + -- end + -- require("rust-tools").setup { + -- server = { + -- on_attach = on_attach, + -- } + -- } + -- vim.diagnostic.config { + -- signs = false, + -- update_in_insert = false, + -- } + -- end + -- } + use { - 'simrat39/rust-tools.nvim', - requires = {'neovim/nvim-lspconfig'}, - ft = {'rust'}, + "hrsh7th/nvim-cmp", + requires = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-nvim-lsp-signature-help", + "onsails/lspkind.nvim", + "L3MON4D3/LuaSnip", + }, config = function() - local on_attach = function(_, bufnr) - local opts = { noremap = true, silent = true } - local map = function(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - map('n', '<leader>[', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) - map('n', '<leader>]', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) - map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) - map('n', 'gk', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) - map('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) - map('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts) - map('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts) - map('n', '<leader>q', '<cmd>Telescope diagnostics<CR>', opts) - map('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) - end - require('rust-tools').setup { - server = { - on_attach = on_attach, + local lspkind = require("lspkind") + local cmp = require("cmp") + local luasnip = require("luasnip") + cmp.setup { + mapping = cmp.mapping.preset.insert({ + -- ["<C-n>"] = cmp.mapping.select_next_item(), + -- ["<C-p>"] = cmp.mapping.select_prev_item(), + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<Tab>"] = cmp.mapping.confirm({ select = true }), + ["<C-n>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + ["<C-p>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + -- order of the sources matter (first are higher priority) + sources = { + { name = "luasnip" }, + { name = "nvim_lsp" }, + { name = "nvim_lsp_signature_help" }, + { name = "path" }, + { name = "buffer", keyword_length = 2 }, + }, + formatting = { + format = lspkind.cmp_format({ + with_text = true, + menu = { + nvim_lsp = "[LSP]", + path = "[path]", + buffer = "[buf]", + } + }) + }, + window = { + documentation = cmp.config.window.bordered(), + }, + experimental = { + ghost_text = true, + }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end } } - vim.diagnostic.config { - signs = false, - update_in_insert = false, - } end } + -- comment text objects use { - 'numToStr/Comment.nvim', + "numToStr/Comment.nvim", config = function() - require('Comment').setup() + require("Comment").setup() end } - -- color scheme + -- gruvbox color scheme + -- use { + -- "ellisonleao/gruvbox.nvim", + -- requires = {"rktjmp/lush.nvim"}, + -- config = function() + -- vim.opt.termguicolors = true + -- vim.opt.background = "dark" + -- -- vim.cmd [[ colorscheme gruvbox ]] + -- vim.g.gruvbox_italic = 1 + -- vim.g.gruvbox_bold = 1 + -- vim.g.gruvbox_termcolors = 256 + -- vim.g.gruvbox_contrast_dark = "medium" + -- vim.g.gruvbox_contrast_light = "hard" + -- vim.g.gruvbox_invert_selection = 0 + -- end + -- } + -- nord color scheme use { - 'ellisonleao/gruvbox.nvim', - requires = {'rktjmp/lush.nvim'}, + "shaunsingh/nord.nvim", config = function() vim.opt.termguicolors = true vim.opt.background = "dark" - vim.cmd [[ colorscheme gruvbox ]] - vim.g.gruvbox_italic = 1 - vim.g.gruvbox_bold = 1 - vim.g.gruvbox_termcolors = 256 - vim.g.gruvbox_contrast_dark = 'medium' - vim.g.gruvbox_contrast_light = 'hard' - vim.g.gruvbox_invert_selection = 0 + vim.cmd [[ colorscheme nord ]] + vim.g.nord_contrast = true + vim.g.nord_borders = true + vim.g.nord_italic = true end } -- status line use { - 'nvim-lualine/lualine.nvim', - requires = {'kyazdani42/nvim-web-devicons', opt = true}, + "nvim-lualine/lualine.nvim", + requires = {"kyazdani42/nvim-web-devicons", opt = true}, config = function() - require('lualine').setup { + require("lualine").setup { options = { - theme = 'gruvbox', + -- theme = "gruvbox", + theme = "nord", icons_enabled = true, section_separators = '', component_separators = '', - globalstatus = true, } } end } -- better syntax highlight for everything use { - 'nvim-treesitter/nvim-treesitter', - run = ':TSUpdate', + "nvim-treesitter/nvim-treesitter", + run = ":TSUpdate", config = function() - require('nvim-treesitter.configs').setup { + require("nvim-treesitter.configs").setup { highlight = { enable = true }, @@ -159,39 +335,46 @@ return require('packer').startup(function() } -- fuzzy finder (replace fzf.vim or ctrlp.vim) use { - 'nvim-telescope/telescope.nvim', + "nvim-telescope/telescope.nvim", requires = { - {'nvim-lua/plenary.nvim'}, - {'kyazdani42/nvim-web-devicons', opt = true}, + {"nvim-lua/plenary.nvim"}, + {"kyazdani42/nvim-web-devicons", opt = true}, + { + "nvim-telescope/telescope-fzf-native.nvim", + run = "make", + config = function() require("telescope").load_extension("fzf") end + }, }, config = function() - local actions = require('telescope.actions') - require('telescope').setup { + local actions = require("telescope.actions") + require("telescope").setup { defaults = { mappings = { i = { - ['<C-j>'] = actions.move_selection_next, - ['<C-k>'] = actions.move_selection_previous, - ['<esc>'] = actions.close, - ['kj'] = actions.close, + ["<C-j>"] = actions.move_selection_next, + ["<C-k>"] = actions.move_selection_previous, + ["<esc>"] = actions.close, + ["kj"] = actions.close, } }, - } + }, } local map = vim.api.nvim_set_keymap map('n', '<C-p>', '<CMD>lua require"telescope-config".project_files()<CR>', { noremap = true, silent = true }) - map('n', '<leader>H', '<cmd>Telescope help_tags<cr>', {}) - map('n', '<leader>;', '<cmd>Telescope commands<cr>', {}) - map('n', '<leader>g', '<cmd>Telescope live_grep<cr>', {}) + map("n", "<leader>H", "<cmd>Telescope help_tags<cr>", {}) + map("n", "<leader>;", "<cmd>Telescope commands<cr>", {}) + map("n", "<leader>p", "<cmd>Telescope tags<cr>", {}) + map("n", "<leader>g", "<cmd>Telescope live_grep<cr>", {}) + map("n", "<leader>G", "<cmd>Telescope grep_string<cr>", {}) end } -- todos,fix,etc.. highlight and list use { - 'folke/todo-comments.nvim', - requires = 'nvim-lua/plenary.nvim', + "folke/todo-comments.nvim", + requires = "nvim-lua/plenary.nvim", config = function() - require('todo-comments').setup { + require("todo-comments").setup { signs = false } end @@ -199,43 +382,43 @@ return require('packer').startup(function() -- remote files and lsp use { - 'chipsenkbeil/distant.nvim', + "chipsenkbeil/distant.nvim", config = function() -- local on_attach = function(client, bufnr) -- local opts = { noremap = true, silent = true } -- local map = function(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - -- map('n', '<leader>[', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) - -- map('n', '<leader>]', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) - -- map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) - -- map('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts) - -- map('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts) - -- map('n', '<leader>q', '<cmd>Telescope lsp_workspace_diagnostics<CR>', opts) - -- map('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) + -- map("n", "<leader>[", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts) + -- map("n", "<leader>]", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) + -- map("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts) + -- map("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<CR>", opts) + -- map("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<CR>", opts) + -- map("n", "<leader>q", "<cmd>Telescope lsp_workspace_diagnostics<CR>", opts) + -- map("n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts) -- end - require('distant').setup { - ['*'] = require('distant.settings').chip_default() + require("distant").setup { + ["*"] = require("distant.settings").chip_default() } -- TODO: extend with job_distant_config.lua end, - run = ':DistantInstall' + run = ":DistantInstall" } -- jupyter kernel in nvim (with images, needs ueberzug) use { - 'dccsillag/magma-nvim', - -- ft = { 'python' }, -- doesn't work - run = ':UpdateRemotePlugins', + "dccsillag/magma-nvim", + -- ft = { "python" }, -- doesn"t work + run = ":UpdateRemotePlugins", config = function() local map = vim.api.nvim_set_keymap - map('n', '<leader>m', "nvim_exec('MagmaEvaluateOperator', v:true)", { expr = true}) - map('n', '<leader>mm', '<cmd>MagmaEvaluateLine<CR>', {}) - map('x', '<leader>m', '<cmd><C-u>MagmaEvaluateVisual<CR>', {}) - map('n', '<leader>mc', '<cmd>MagmaReevaluateCell<CR>', {}) - map('n', '<leader>md', '<cmd>MagmaDelete<CR>', {}) - map('n', '<leader>mo', '<cmd>MagmaShowOutput<CR>', {}) + map("n", "<leader>m", "nvim_exec('MagmaEvaluateOperator', v:true)", { expr = true}) + map("n", "<leader>mm", "<cmd>MagmaEvaluateLine<CR>", {}) + map("x", "<leader>m", "<cmd><C-u>MagmaEvaluateVisual<CR>", {}) + map("n", "<leader>mc", "<cmd>MagmaReevaluateCell<CR>", {}) + map("n", "<leader>md", "<cmd>MagmaDelete<CR>", {}) + map("n", "<leader>mo", "<cmd>MagmaShowOutput<CR>", {}) end } - use { 'nvim-treesitter/playground', opt = true, cmd = { 'TSPlaygroundToggle' } } - -- use { '~/git/argwrap.nvim', opt = true } + use { "nvim-treesitter/playground", opt = true, cmd = { "TSPlaygroundToggle" } } + -- use { "~/git/argwrap.nvim", opt = true } end) diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index c514718..777810f 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -2,22 +2,44 @@ unbind C-b set -g prefix C-a bind C-a send-prefix -set -g default-terminal "xterm-256color" +# set -g default-terminal "xterm-256color" + +# NOTE: recommended by neovim but disliked by ssh +set -g default-terminal "screen-256color" +set -sa terminal-overrides ',xterm-256color:RGB' + +set -g focus-events on +set -g history-limit 5000 +set -s history-file '~/.local/share/tmux/history' + set -g mouse on setw -g mode-keys vi set -sg escape-time 0 # otherwise <ESC> in vim has a small delay -set-option -g history-limit 5000 +set -sg bell-action none +set -sg status-keys vi bind '"' split-window -c "#{pane_current_path}" bind '%' split-window -c "#{pane_current_path}" -h bind 'c' new-window -c "#{pane_current_path}" +bind R source-file ~/.config/tmux/tmux.conf + + +set -g status-right-length 100 set -g @plugin 'tmux-plugins/tpm' +# set -g @plugin 'egel/tmux-gruvbox' +# set -g @tmux-gruvbox 'dark' +set -g @plugin 'arcticicestudio/nord-tmux' +set -g @plugin 'tmux-plugins/tmux-prefix-highlight' +set -g @plugin 'wfxr/tmux-fzf-url' + +# show copy/sync mode with tmux-prefix-highlight +set -g @prefix_highlight_show_copy_mode 'on' +set -g @prefix_highlight_copy_mode_attr 'fg=black,bg=yellow,bold' # default is 'fg=default,bg=yellow' +set -g @prefix_highlight_show_sync_mode 'on' +set -g @prefix_highlight_sync_mode_attr 'fg=black,bg=green' # default is 'fg=default,bg=yellow' -set -g @plugin 'egel/tmux-gruvbox' -set -g @tmux-gruvbox 'dark' -# set -g @plugin 'tomhey/tmux-remote-sessions' run "$XDG_CONFIG_HOME/tmux/plugins/tpm/tpm" diff --git a/config/zsh/.zshrc b/config/zsh/.zshrc index 8ee4622..57b49c5 100644 --- a/config/zsh/.zshrc +++ b/config/zsh/.zshrc @@ -59,10 +59,22 @@ export SAVEHIST=5000 # executed when changing directory chpwd() { + # ls on cd if not too much files content="$(find . -maxdepth 1 | wc -l)" ([ "$content" -lt 20 ] && ls -l) || echo "$(pwd) contains $content entries" [ "$(uname)" = 'Linux' ] && [ "$(stat -c "%U" .)" = "$USER" ] && touch . # to sort by last cd + + # change conda env if name of the directory is the name of an env + # [ ! -d "$PWD/.git" ] && return + # name="$(basename "$PWD")" + # [ "$name" = $CONDA_DEFAULT_ENV ] && return + # [ ! -e "$HOME/conda_envs" ] && conda env list > "$HOME/conda_envs" + # < "$HOME/conda_envs" \ + # cut -d ' ' -f 1 | + # sed -e '/^#/d' -e '/^$/d' -e '/^base$/d' | + # grep -q "$name" && + # conda activate "$name" } # https://wiki.archlinux.org/title/Zsh#Shortcut_to_exit_shell_on_partial_command_line @@ -73,7 +85,7 @@ zle -N exit_zsh bindkey '^D' exit_zsh # shellcheck disable=SC2034,SC2039,SC3030 -fignore=(o hi) # ignore extensions in autocomplete +fignore=(.o .hi) # ignore extensions in autocomplete # set tab to 4 spaces tabs 4 @@ -96,3 +108,33 @@ if [ "$(uname)" = 'Linux' ] then . /usr/share/doc/pkgfile/command-not-found.zsh fi + +# upload-config() { +# scp -qr "$HOME/.vim" cce424r@ds-train: +# scp -q "$HOME/.config/vim/vimrc" cce424r@ds-train:.vimrc +# +# scp -qr "$HOME/.vim" cce424r@ds-attic: +# scp -q "$HOME/.config/vim/vimrc" cce424r@ds-attic:.vimrc +# } + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$('/usr/local/anaconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" +# shellcheck disable=SC2181 +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "/usr/local/anaconda3/etc/profile.d/conda.sh" ]; then + . "/usr/local/anaconda3/etc/profile.d/conda.sh" + else + export PATH="/usr/local/anaconda3/bin:$PATH" + fi +fi +unset __conda_setup + +if [ -f "/usr/local/anaconda3/etc/profile.d/mamba.sh" ]; then + . "/usr/local/anaconda3/etc/profile.d/mamba.sh" +fi +# <<< conda initialize <<< + +eval "$(opam env)" diff --git a/config/zsh/aliases.zsh b/config/zsh/aliases.zsh index 7488ac1..d478fe3 100644 --- a/config/zsh/aliases.zsh +++ b/config/zsh/aliases.zsh @@ -83,6 +83,10 @@ gpaf() { git remote | xargs -I{} git push -f {} "$branch" } +alias ytdl='youtube-dl --output "%(title)s.%(ext)s"' +alias ytdlp='youtube-dl --audio-format mp3 -i --output "%(playlist_index)s-%(title)s.%(ext)s"' +alias ytdla='youtube-dl --audio-format mp3 -i -x -f bestaudio/best --output "%(playlist_index)s-%(title)s.%(ext)s"' + # Linux specific aliases [ ! "$(uname)" = 'Linux' ] && return @@ -116,10 +120,6 @@ alias cagor='RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo run' # wifi wificonnect() { nmcli device wifi connect "$1" password "$2" ; } -alias ytdl='youtube-dl --output "%(title)s.%(ext)s"' -alias ytdlp='youtube-dl --audio-format mp3 -i --output "%(playlist_index)s-%(title)s.%(ext)s"' -alias ytdla='youtube-dl --audio-format mp3 -i -x -f bestaudio/best --output "%(playlist_index)s-%(title)s.%(ext)s"' - alias qmvdest='qmv --format=do' alias xclip='xclip -selection clipboard' diff --git a/config/zsh/zprofile b/config/zsh/zprofile index fef4546..f05d43e 100755 --- a/config/zsh/zprofile +++ b/config/zsh/zprofile @@ -9,6 +9,8 @@ elif [ "$(uname)" = 'Darwin' ] then export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" export PATH="$PATH:$HOME/.brew/bin:$HOME/git/dotfiles/bin:$HOME/bin:/usr/local/anaconda3/bin" + export PATH="$PATH:$HOME/.local/share/go/bin" + export PATH="$PATH:$HOME/.local/bin" export MAIL='charles.cabergs@colruytgroup.com' export SUDO='sudo' export LC_CTYPE='en_US.UTF-8' |
