Compare commits

...
This repository has been archived on 2024-10-06. You can view files and clone it, but cannot push or open issues or pull requests.

102 commits
master ... main

Author SHA1 Message Date
Vladan Popovic
f173413eff Highlight: disable lsp, fix rust and whitespace 2024-09-24 19:08:44 +02:00
Vladan Popovic
324505f245 Create outline config from it's default 2024-09-23 23:42:17 +02:00
Vladan Popovic
8227bf14b0 Remove forgotten flutter config 2024-09-23 23:05:33 +02:00
Vladan Popovic
c64bdbbf7f Remove theme module because of catpuccin 2024-09-23 23:02:34 +02:00
Vladan Popovic
b0d6dffe81 Make right order in main imports 2024-09-23 23:02:34 +02:00
Vladan Popovic
772a9b908f Add fzf, telescope and diffview to neogit 2024-09-23 23:02:34 +02:00
Vladan Popovic
4c5afbe2b2 Add catpuccin theme with huge config 2024-09-23 23:02:34 +02:00
Vladan Popovic
dfa4d93847 Don't use treesitter in telescope preview 2024-09-23 11:45:46 +02:00
Vladan Popovic
422ecf0308 Remove unused plugins and add Outline 2024-09-17 17:08:00 +02:00
Vladan Popovic
eccbfcbea2 remove extra actions-preview config 2024-09-17 16:46:56 +02:00
Vladan Popovic
7d6b3e53c4 redo telescope one more time :) 2024-09-17 16:46:38 +02:00
Vladan Popovic
a1a4dc927e move code_action_menu_window_border to theme 2024-09-17 16:46:01 +02:00
Vladan Popovic
637fed3f6b show hidden files in oil (filebrowser) 2024-09-17 16:39:21 +02:00
Vladan Popovic
044ed9117f use ctrl+shift+g for neogit 2024-09-17 16:38:54 +02:00
Vladan Popovic
c99606d4ee add keymapping for code actions and buffer delete (:bd) 2024-09-17 16:38:19 +02:00
Vladan Popovic
c0e15e1141 cleanup lsp module 2024-09-17 16:36:40 +02:00
Vladan Popovic
d7f591fd26 Switch to newest nvim and fallback to classic vim colorscheme 2024-08-14 14:58:46 +02:00
Vladan Popovic
3e6923583f remove lsp diagnostics also defined in keymappings.lua 2024-08-14 14:58:46 +02:00
Vladan Popovic
022660396e re-add clipboard, middle click and ctrl+c 2024-08-14 14:58:46 +02:00
Vladan Popovic
5c8e114e44 remove utils module 2024-08-14 14:58:46 +02:00
Vladan Popovic
b3b051355a add neogit config and fix ebvious errors with keymaps 2024-07-22 09:09:41 +02:00
9a29f15556 oil: don't show git ignored files and folders 2024-07-20 02:55:51 +02:00
2efe116082 remove flutter plugins 2024-06-10 15:49:37 +02:00
e42d6245a5 fix typo (vim.keymap) 2024-06-10 15:49:21 +02:00
fd32c079c9 reformat cmp sources 2024-06-10 15:36:36 +02:00
0e55059a63 replace utils.map with vim.keymap.set 2024-06-10 13:12:26 +02:00
fa255704a1 fix trailing whitespace highlight 2024-06-10 12:39:21 +02:00
7ca16fc0bf lighter line numbers 2024-06-10 12:38:11 +02:00
713c83768b show comments in vim's default color (blue) 2024-06-10 12:37:48 +02:00
f7e73a3eb3 fix comment for whitespace highlighting 2024-06-10 12:35:24 +02:00
d79cbd6989 Revert to vim's default term colorscheme 2024-06-10 12:34:45 +02:00
eaaf6db7ad decrease space between cmp symbols 2024-04-18 14:49:55 +02:00
7a61c5ef16 make cmp popups with grey bckg and no borders 2024-04-18 14:47:34 +02:00
64d04c8618 make folding and pmenu bckg grey 2024-04-18 14:46:39 +02:00
c2c40dbe03 fix whitespace in settings 2024-04-18 14:45:57 +02:00
73d0d7c14d fix nospell binding 2024-04-18 01:35:30 +02:00
727a6bcfbc add flutter plugin and config 2024-04-18 01:35:30 +02:00
a35b743b62 remove obsolete config and autoformat 2024-04-18 01:35:30 +02:00
8a348282a4 remove obsolete config 2024-03-20 12:51:37 +01:00
0fabc551bd fix lsp autoformatting on save
tested python and rust
2024-03-20 12:51:25 +01:00
b521d84e7f fix wording 2024-03-20 03:14:06 +01:00
ccbf466c55 replace nvim-code-action-menu with actions-preview 2024-03-20 03:12:22 +01:00
dd18c0a9bc replace nlua with neodev 2024-03-20 03:11:27 +01:00
df3dc407a7 remove neotree, oil has everything i need 2024-03-20 02:42:07 +01:00
6d04ade3e5 remove experimental telescope layout 2024-03-20 02:19:53 +01:00
351d1690aa remove luasnip config file, setup in plugins.init 2024-03-20 02:19:17 +01:00
07d13e67ae use luasnip in cmp and telescope 2024-03-20 01:12:42 +01:00
97128cf6e7 add terraform plugin and lsp config 2024-02-26 14:03:08 +01:00
e70253835c try different telescope layout 2024-02-25 22:45:46 +01:00
1b268b2e77 remove treesitter and filetype plugins 2024-02-25 22:45:08 +01:00
65a01e8caa remove document highlight from server capabilities 2024-02-25 22:44:02 +01:00
027c0c81f3 remove omnifunc config, sort lsp servers by name 2024-02-25 22:42:32 +01:00
3e2dd9c332 most usable config 2024-01-04 01:00:43 +01:00
d89d00af71 test gitsigns ... 2024-01-03 02:10:43 +01:00
1ecaa1dcf8 remap code action menu to <leader>ca 2024-01-03 01:28:54 +01:00
062d618a21 add neogit and venn diagram config 2024-01-03 01:24:21 +01:00
8437ec67c1 a bit of a refactor, new telescope mappings 2024-01-03 00:15:20 +01:00
4496f44c49 styles and treesitter config update 2024-01-02 01:43:10 +01:00
Vladan Popovic
253d536ba4 remap code actions to either <leader>c or <leader>a 2023-12-18 14:29:25 +01:00
Vladan Popovic
15bc48a6c5 explicitly configure ripgrep for telescope 2023-12-18 14:27:58 +01:00
Vladan Popovic
ca0b58aeb4 switch from fugitive to neogit 2023-12-18 14:27:07 +01:00
Vladan Popovic
e6e2555274 switch python lsp to ruff 2023-12-18 14:26:35 +01:00
Vladan Popovic
994e42f688 remap code actions to <leader>ca 2023-12-18 14:25:52 +01:00
3ad2648482 add rnix, a nix lsp server 2023-09-26 20:36:56 +02:00
2bc591369a re-enable smartindent and autoindent 2023-09-26 02:25:19 +02:00
79b517a247 map code action popup to <leader>ca 2023-09-26 02:15:59 +02:00
88e3cb4ead move packer_setup to plugins 2023-09-26 02:15:22 +02:00
bb552b1482 remove old completion config 2023-09-26 02:01:07 +02:00
d6c1fa669a remap Oil to <leader>fe 2023-09-26 01:58:40 +02:00
3d6f14f2ff remove lingering [empty] _init.vim 2023-09-26 01:56:25 +02:00
c41f6a096c move all plugin related code to plugins module 2023-09-26 01:52:17 +02:00
8ab3473583 try out filetype.nvim 2023-09-24 15:56:01 +02:00
af32327977 move CodeActionMenu to lsp section 2023-09-24 15:56:01 +02:00
f0b2401c51 replace nvim-tree with oil 2023-09-24 15:56:01 +02:00
70ee28574e replace compe with cmp 2023-09-24 15:56:01 +02:00
e46e48405e clangd (for esp-idf) 2023-08-21 00:14:23 +02:00
9b8c24ca69 move telescope config to a new module 2023-08-03 02:49:45 +02:00
f90c49b9e2 remove lsp-signature
it bothers when signature doc overlaps actual code
2023-07-30 04:31:11 +02:00
721bc03588 huge refactor
- tidy up
- shuffle code around
- use same abstractions for all usecases
2023-07-30 04:26:44 +02:00
9570523e75 add code action menu and remap to Alt+Enter 2023-07-27 17:40:14 +02:00
c16858ffc7 add spellcheck allowed words 2023-07-25 18:26:39 +02:00
f4fa48ed39 add treesitter with color customization 2023-07-25 18:25:24 +02:00
4f4e77d2e8 remove nvim-tree-config 2023-07-03 06:21:37 +02:00
97dfc2aa6a improve key mappings a bit and add spellcheck 2023-07-03 06:21:05 +02:00
b36cad9c7b turn off lsp coloring/highlight 2023-05-16 02:25:48 +02:00
bee54bc4c5 fix pyright (again) 2023-05-16 01:22:43 +02:00
2c65a5f0d6 don't use deprecated nerdtree config params 2023-05-16 01:22:20 +02:00
7b9ca1d26c python lsp is now all rust 2023-05-14 00:26:04 +02:00
319356d0a0 add settings to rust-analyzer
procMacro specifically
2023-02-25 02:06:29 +01:00
ceddfe4e8f remove toggle mouse since i never use it 2023-02-24 22:46:07 +01:00
896451558b sort out nvim-tree 2023-02-24 22:45:49 +01:00
2b9088acbf add ocamllsp 2022-12-01 23:31:12 +01:00
c8d6c028e8 finish nvim-tree config migration 2022-11-16 01:11:34 +01:00
178d46f664 fixes for neovim v0.8.0 2022-10-23 01:48:10 +02:00
e541136af7 fix deprecated vim call 2022-06-11 16:39:33 +02:00
39ad5f0381 add gleam 2022-06-11 16:39:13 +02:00
d80dd17b48 move nvim_tree config to setup() 2021-12-26 12:08:52 +01:00
dbc39e9daa
(typo fix) format the comment properly 2021-12-12 20:08:58 +01:00
ad462255b2
add poor mans filetype autocmd 2021-12-12 20:08:06 +01:00
446b6ea0bd
disable autocomplete and documentation while typing 2021-12-12 20:06:54 +01:00
a6b46bb2c0
modern nerdtree with icons and fancy 2021-11-26 01:27:00 +01:00
f551318edc
move to lua and make a poor man's ide 2021-11-25 22:10:40 +01:00
17 changed files with 1470 additions and 143 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
plugin/packer_compiled.lua
*.spl

7
init.lua Normal file
View file

@ -0,0 +1,7 @@
-- remap leader to <space>
vim.g.mapleader = ' '
require('settings')
require('lsp')
require('keymappings')
require('plugins')

143
init.vim
View file

@ -1,143 +0,0 @@
call plug#begin('~/.local/share/nvim/plugged')
Plug 'davidhalter/jedi-vim'
Plug 'ncm2/float-preview.nvim'
Plug 'dense-analysis/ale'
Plug 'jacoborus/tender.vim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'airblade/vim-gitgutter'
Plug 'scrooloose/nerdtree'
Plug 'gleam-lang/gleam.vim'
Plug 'cespare/vim-toml'
Plug 'rust-lang/rust.vim'
Plug 'vim-scripts/DrawIt'
call plug#end()
let g:airline_theme='papercolor'
let g:airline#extensions#ale#enabled=1
inoremap <expr><tab> pumvisible() ? "\<C-n>" : "\<tab>"
inoremap <expr><S-Tab> pumvisible() ? "\<C-p>" : "\<S-TAB>"
let g:jedi#completions_enabled=0
let g:jedi#use_splits_not_buffers="right"
" Preview window is floating
let g:float_preview#docked=0
let g:float_preview#max_width=100
let g:float_preview#max_height=150
let g:float_preview#auto_close=0
set tabstop=4
set softtabstop=4
set shiftwidth=4
set textwidth=79
set expandtab
set autoindent
set fileformat=unix
set number
" Hide top preview window, use float_preview instead
set completeopt-=preview
" Enable folding on indent
set foldmethod=indent
set foldlevel=79
set omnifunc=ale#completion#OmniFunc
" Lint and check types
let b:ale_linters={
\ 'python': ['mypy', 'pyls', 'pylint'],
\ 'ocaml': ['merlin'],
\ 'rust': ['analyzer', 'cargo']
\ }
let b:ale_fixers = {
\ 'rust': ['rustfmt'],
\ 'python': ['autopep8'],
\ 'ocaml': ['ocamlformat']
\}
let g:ale_rust_rustfmt_options='--edition 2018'
let g:ale_fix_on_save=1
let g:ale_lint_on_save=1
let g:ale_lint_on_enter=0
let g:ale_list_window_size=20
" Use .venv as a global default
let g:ale_virtualenv_dir_names=['.venv']
let g:ale_completion_enabled=1
let g:ale_sign_error="✗"
let g:ale_sign_warning="⚠"
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
" Enable warnings about trailing whitespace for all files.
let b:ale_warn_about_trailing_whitespace=1
nmap <leader>e :ALEDetail<CR>
noremap <leader>d :ALEGoToDefinition<CR>
noremap g] :ALEGoToDefinition<CR>
noremap <leader>h :ALEHover<CR>
" ALE colors
highlight ALEError ctermbg=DarkRed ctermfg=Black
highlight ALEWarning ctermbg=Yellow ctermfg=White
" Use TAB to switch between buffers
noremap <tab> :bn<CR>
noremap <S-tab> :bp<CR>
" Highlight trailing whitespace (darker red) and remove all with Ctrl+k
highlight WhitespaceEOL ctermbg=red guibg=#ab0d0d
match WhitespaceEOL /\s\+\%#\@<!$/
nnoremap <C-k> :let _s=@/<Bar>:%s/\s\+$//e<Bar>:let @/=_s<Bar><CR>
" Much better with Tomorrow Night Bright color theme set in alacritty
" set background=dark
highlight Search ctermfg=Black
highlight Comment ctermfg=Grey
highlight SignColumn ctermbg=0
highlight LineNr ctermbg=0 ctermfg=248
highlight Folded ctermbg=Green ctermfg=Black
highlight Pmenu ctermbg=gray guibg=gray
highlight GitGutterAdd ctermfg=Green
highlight GitGutterChange ctermfg=Red
highlight GitGutterDelete ctermfg=DarkRed
highlight GitGutterAddLine ctermbg=LightGreen
highlight GitGutterChangeLine ctermbg=Yellow
highlight GitGutterDeleteLine ctermbg=LightRed
highlight GitGutterChangeDeleteLine ctermbg=LightRed
nmap ]h <Plug>(GitGutterNextHunk)
nmap [h <Plug>(GitGutterPrevHunk)
let g:gitgutter_sign_added='+'
let g:gitgutter_sign_modified='±'
let g:gitgutter_sign_removed='-'
let g:gitgutter_sign_removed_first_line='^'
let g:gitgutter_sign_modified_removed='-'
let g:gitgutter_map_keys=0
let g:gitgutter_set_sign_backgrounds=1
" Toggles on different plugins/modes
nmap <F1> :ToggleMouse<CR>
set pastetoggle=<F2>
nmap <F3> :set nonumber!<CR>
nmap <F4> :GitGutterBufferToggle<CR>
nmap <F5> :NERDTreeToggle<CR>
nmap <F6> :GitGutterLineHighlightsToggle<CR>
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
" Maintain undo history between sessions
if !isdirectory("/tmp/.vim-undo-dir-vladan")
call mkdir("/tmp/.vim-undo-dir-vladan", "", 0700)
endif
set undodir=/tmp/.vim-undo-dir-vladan
set undofile
" Enable vimrc files per project
set exrc
" Disable unsafe commands in project vimrc
set secure

24
lua/keymappings.lua Normal file
View file

@ -0,0 +1,24 @@
-- Clear trailing whitespace
vim.keymap.set("n", "<C-w>", "<cmd>let _s=@/<Bar>:%s/\\s\\+$//e<Bar>:let @/=_s<Bar><CR>")
-- Use tab and shift+tab to cycle buffers
vim.keymap.set("n", "<tab>", "<cmd>bn<cr>")
vim.keymap.set("n", "<S-tab>", "<cmd>bp<cr>")
-- Turn spellchecker on and off
vim.keymap.set("n", "<leader>se", "<cmd>setlocal spell spelllang=en_us<cr>")
vim.keymap.set("n", "<leader>sq", "<cmd>setlocal nospell<cr>")
vim.keymap.set("n", "<F3>", "<cmd>set nonumber!<CR>")
vim.keymap.set("n", "<leader>fe", "<cmd>Oil<CR>")
vim.keymap.set("n", ']d', "<cmd>lua vim.diagnostic.goto_next()<CR>")
vim.keymap.set("n", '[d', "<cmd>lua vim.diagnostic.goto_prev()<CR>")
vim.keymap.set("n", "<leader>aa", require("actions-preview").code_actions)
-- Outline!!
vim.keymap.set("n", "<leader>o", "<cmd>Outline<CR>")
-- Close all buffers
vim.keymap.set("n", '<C-S-x>', "<cmd>bufdo bd<CR>")

95
lua/lsp.lua Normal file
View file

@ -0,0 +1,95 @@
local common_on_attach = function(client, bufnr)
-- Mappings.
vim.keymap.set("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>")
vim.keymap.set("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>")
vim.keymap.set("n", "<M-k>", "<cmd>lua vim.lsp.buf.type_definition()<CR>")
vim.keymap.set("n", "<M-r>", "<cmd>lua vim.lsp.buf.rename()()<CR>")
vim.keymap.set("n", "<leader>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>")
vim.keymap.set("n", "<leader>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
vim.keymap.set("n", "<leader>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>")
vim.keymap.set("n", "<leader>r", "<cmd>lua vim.lsp.buf.rename()<CR>")
-- Autoformat on save.
if client.supports_method("textDocument/formatting") then
vim.api.nvim_create_autocmd("BufWritePre", {
buffer = bufnr,
callback = function()
vim.lsp.buf.format()
end,
})
end
-- Use vim's default coloring.
client.server_capabilities.semanticTokensProvider = nil
for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do
vim.api.nvim_set_hl(0, group, {})
end
end
local nvim_lsp = require('lspconfig')
local capabilities = vim.lsp.protocol.make_client_capabilities()
-- LSPs
local servers = {
"clangd",
"dartls",
"gleam",
"lua_ls",
"ocamllsp",
"pyright",
"rnix",
"terraformls",
"vimls",
}
for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup { capabilities = capabilities, on_attach = common_on_attach }
end
nvim_lsp.rust_analyzer.setup({
on_attach = common_on_attach,
capabilities = capabilities,
settings = {
["rust-analyzer"] = {
imports = {
granularity = {
group = "module",
},
prefix = "self",
},
cargo = {
buildScripts = {
enable = true,
},
},
procMacro = {
enable = true
},
checkOnSave = {
command = "clippy",
},
}
}
})
nvim_lsp.ruff.setup({
on_attach = function (client)
common_on_attach(client)
client.server_capabilities.renameProvider = false
client.server_capabilities.hoverProvider = false
end,
init_options = {
settings = {
-- Any extra CLI arguments for `ruff` go here.
args = {}
}
},
})
-- LSP diagnostics.
vim.lsp.handlers["textDocument/publishDiagnostics"] =
vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
virtual_text = false,
underline = true,
signs = true,
update_in_insert = false
})

250
lua/plugins/catppuccin.lua Normal file
View file

@ -0,0 +1,250 @@
require("catppuccin").setup({
-- transparent_background = vim
flavour = "latte",
highlight_overrides = {
all = function(colors)
return {
FloatBorder = { link = "SagaBorder", fg="#4f4f4f" },
LineNr = { fg = colors.subtext0 },
Folded = { fg = colors.green },
MatchWord = { bold = true },
Visual = { sp = colors.text, underline = true },
IndentBlankLineContextChar = { fg = colors.sapphire },
WinSeparator = { fg = colors.text },
TelescopeSelection = { fg = colors.subtext1, bg = colors.surface0 },
TelescopeBorder = { fg = colors.surface1, bg = colors.surface1 },
TelescopeNormal = { bg = "#fafafa" },
TelescopePromptNormal = { bg = colors.surface1 },
TelescopePromptBorder = { bg = colors.surface1, fg = colors.surface1 },
CursorLine = { bg = colors.text },
NvimTreeWinSeparator = { fg = colors.text },
NvimTreeGitNew = { fg = colors.green },
NvimTreeGitDirty = { fg = colors.yellow },
NvimTreeGitDeleted = { fg = colors.red },
-- ColorColumn = { bg = colors. },
SpecialKey = { fg = colors.yellow },
SagaBorder = { fg = colors.blue },
HoverNormal = { fg = colors.text },
-- Gitsigns
GitSignsAddInline = { link = "DiffAdd" },
GitSignsDeleteInline = { link = "DiffDelete" },
GitSignsChangedInline = { link = "DiffChange" } ,
Diffview = { link = "DiffChange" } ,
StNormalMode = { fg = colors.surface0, bg = colors.blue, bold = true },
StVisualMode = { fg = colors.surface0, bg = colors.sky, bold = true },
StInsertMode = { fg = colors.surface0, bg = colors.lavender, bold = true },
StTerminalMode = { fg = colors.surface0, bg = colors.green, bold = true },
StNTerminalMode = { fg = colors.surface0, bg = colors.yellow, bold = true },
StReplaceMode = { fg = colors.surface0, bg = colors.peach, bold = true },
StConfirmMode = { fg = colors.surface0, bg = colors.sapphire, bold = true },
StCommandMode = { fg = colors.surface0, bg = colors.green, bold = true },
StSelectMode = { fg = colors.surface0, bg = colors.blue, bold = true },
StInviSep = { bg = colors.surface1, fg = colors.surface1 },
StNormalModeSep = { bg = colors.surface1, fg = colors.blue },
StVisualModeSep = { bg = colors.surface1, fg = colors.sky },
StInsertModeSep = { bg = colors.surface1, fg = colors.lavender },
StTerminalModeSep = { bg = colors.surface1, fg = colors.green },
StNTerminalModeSep = { bg = colors.surface1, fg = colors.yellow },
StReplaceModeSep = { bg = colors.surface1, fg = colors.peach },
StConfirmModeSep = { bg = colors.surface1, fg = colors.sapphire },
StCommandModeSep = { bg = colors.surface1, fg = colors.green },
StSelectModeSep = { bg = colors.surface1, fg = colors.blue },
--CurFile
StCwd = { bg = colors.yellow, fg = colors.text },
StFile = { bg = colors.peach, fg = colors.text, bold = true },
StCwdSep = { fg = colors.yellow, bg = colors.surface1 },
StFileSep = { fg = colors.peach, bg = colors.surface1 },
StDirFileSep = { fg = colors.yellow, bg = colors.peach },
-- Git stuffs
StGitBranch = { bg = colors.overlay0, fg = colors.mauve },
StGitAdded = { bg = colors.overlay0, fg = colors.green },
StGitChanged = { bg = colors.overlay0, fg = colors.yellow },
StGitRemoved = { bg = colors.overlay0, fg = colors.red },
StGitSep = { bg = colors.surface1, fg = colors.overlay0 },
-- LSP
StLSPClient = { bg = colors.surface1, fg = colors.blue, bold = true },
StLSPDiagSep = { bg = colors.surface1, fg = colors.overlay0 },
StLSPErrors = { bg = colors.overlay0, fg = colors.red },
StLSPWarnings = { bg = colors.overlay0, fg = colors.yellow },
StLSPHints = { bg = colors.overlay0, fg = colors.mauve },
StLspInfo = { bg = colors.overlay0, fg = colors.sky },
--
-- Lsp Diagnostics
DiagnosticHint = { fg = colors.mauve },
DiagnosticError = { fg = colors.red },
DiagnosticWarn = { fg = colors.yellow },
DiagnosticInformation = { fg = colors.green },
-- File Info
StPosition = { bg = colors.sapphire, fg = colors.surface1 },
StPositionSep = { bg = colors.surface1, fg = colors.sapphire },
TabLineFill = { fg = colors.text, bg = colors.crust, sp = colors.text },
TabLineBufHidden = { fg = colors.mantle, bg = colors.subtext1, sp = colors.text },
TabLineBufActive = { fg = colors.text, bg = colors.sapphire, bold = true, sp = colors.text },
TabLineCurrentBuf = { fg = colors.mantle, bg = colors.red, bold = true, sp = colors.text },
TabLineBufHiddenModified = { fg = colors.green, bg = colors.subtext1, sp = colors.text },
TabLineBufActiveModified = { fg = colors.green, bg = colors.sapphire, bold = true, sp = colors.text },
TabLineCurrentBufModified = { fg = colors.green, bg = colors.red, bold = true, sp = colors.text },
TabLineModified = { fg = colors.green },
TabLineCurrentTab = { fg = colors.mantle, bg = colors.red, bold = true, sp = colors.text },
TabLineOtherTab = { fg = colors.mantle, bg = colors.subtext1, sp = colors.text },
TabLineBufActiveSep = { fg = colors.sapphire, bg = colors.crust, sp = colors.text },
TabLineCurrentBufSep = { fg = colors.red, bg = colors.crust, sp = colors.text },
TabLineBufHiddenSep = { fg = colors.subtext1, bg = colors.crust, sp = colors.text },
DiagnosticUnnecessary = { link = "" },
--["@conceal.checked"] = { fg = colors.teal },
--["@none"] = { link = "Normal" },
--["@field"] = { fg = colors.blue },
--["@comment.todo"] = { fg = colors.lavender },
--["@property"] = { fg = colors.blue },
--["@variable.member"] = { fg = colors.blue },
--["@variable.parameter"] = { fg = colors.sky },
--["@parameter"] = { fg = colors.sky },
--["@comment.note"] = { link = "@comment.hint" },
--["@lsp.type.annotation"] = { fg = colors.darkyellow },
--["@lsp.type.modifier.java"] = { link = "@type.qualifier" },
--["@lsp.mod.builtin"] = { fg = colors.maroon },
--["@lsp.mod.readonly.python"] = { link = "Constant" },
--["@lsp.mod.documentation"] = { bold = true, fg = colors.mauve },
--["@lsp.type.keyword"] = { fg = colors.mauve },
}
end,
latte = function(colors)
return {
-- ["@lsp.type.keyword"] = { fg = colors.darkyellow },
Comment = { fg = colors.blue },
Conditional = { fg = colors.darkyellow },
Error = { fg = colors.base, bg = colors.red },
Exception = { fg = colors.peach },
Function = { fg = colors.cyan },
Identifier = { fg = colors.green },
Include = { fg = colors.pink },
Keyword = { fg = colors.darkyellow },
Operator = { fg = colors.darkyellow },
Parameter = { fg = colors.sky },
Special = { fg = colors.flamingo },
Statement = { fg = colors.darkyellow },
String = { fg = colors.red },
Structure = { fg = colors.green },
WhitespaceError = { fg = colors.base, bg = colors.red },
Type = { fg = colors.cyan },
StorageClass = { fg = colors.green },
--Macro = { fg = colors.magenta },
--Define = { fg = colors.magenta },
}
end,
},
color_overrides = {
latte = {
base = "#ffffff",
flamingo = "#bb5d60",
pink = "#d54597",
mauve = "#a65fd5",
red = "#D90E18",
maroon = "#db3e68",
peach = "#e46f2a",
yellow = "#bc8705",
darkyellow = "#B2640B",
green = "#1a8e32",
teal = "#00a390",
sky = "#089ec0",
sapphire = "#0ea0a0",
blue = "#017bca",
lavender = "#8584f7",
text = "#222222",
subtext1 = "#444444",
subtext0 = "#666666",
overlay2 = "#777777",
overlay1 = "#888888",
overlay0 = "#999999",
surface2 = "#aaaaaa",
surface1 = "#cccccc",
surface0 = "#e5e5e5",
mantle = "#eeeeee",
crust = "#dddddd",
cyan = "#0EB1A2",
magenta = "#FF00FF",
},
},
background = {
light = "latte",
dark = "mocha",
},
term_colors = true,
-- dim_inactive = {
-- enabled = true,
-- shade = "light",
-- percentage = 0.20,
-- },
styles = {
comments = {},
},
integrations = {
alpha = false,
cmp = true,
dap = true,
dap_ui = true,
dashboard = false,
flash = false,
gitsigns = true,
leap = true,
mini = {
enabled = false,
},
mason = true,
markdown = true,
neogit = true,
nvimtree = true,
ufo = false,
rainbow_delimiters = false,
semantic_tokens = true,
telescope = { enabled = true, style = "nvchad" },
treesitter = false,
barbecue = false,
illuminate = false,
indent_blankline = {
enabled = true,
colored_indent_levels = false,
},
native_lsp = {
enabled = true,
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
},
inlay_hints = {
background = true,
},
},
lsp_saga = true,
lsp_trouble = true,
navic = {
enabled = false,
custom_bg = "NONE",
},
dropbar = {
enabled = false,
color_mode = false,
},
},
})
vim.cmd.colorscheme("catppuccin")

115
lua/plugins/cmp.lua Normal file
View file

@ -0,0 +1,115 @@
-- Completion plugin config
vim.opt.completeopt = 'menuone,noselect'
local cmp = require('cmp')
local cmp_kinds = {
Text = '',
Method = '󰊕 ',
Function = '󰊕 ',
Constructor = '',
Field = '',
Variable = '',
Class = '',
Interface = '',
Module = '',
Property = '',
Unit = '',
Value = '',
Enum = '',
Keyword = '',
Snippet = '',
Color = '',
File = '',
Reference = '',
Folder = '',
EnumMember = '',
Constant = '',
Struct = '',
Event = '',
Operator = '',
TypeParameter = '',
}
cmp.setup({
formatting = {
format = function(entry, vim_item)
-- Kind icons
vim_item.kind = string.format('%s %s', cmp_kinds[vim_item.kind], vim_item.kind)
vim_item.menu = ({
buffer = "[Buffer]",
nvim_lsp = "[LSP]",
luasnip = "[LuaSnip]",
nvim_lua = "[Lua]",
latex_symbols = "[LaTeX]",
})[entry.source.name]
return vim_item
end
},
snippet = {
expand = function(args)
local luasnip = require("luasnip")
if not luasnip then
return
end
luasnip.lsp_expand(args.body)
end,
},
window = {
completion = {
border = nil,
},
documentation = {
border = nil,
max_height = 2000,
}
},
completion = {
autocomplete = false,
},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-x><C-o>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
-- Accept currently selected item.
-- Set `select` to `false` to only confirm explicitly selected items.
['<CR>'] = cmp.mapping.confirm({ select = false }),
}),
sources = cmp.config.sources(
{
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
{
{ name = 'buffer' },
}
)
})
-- Set configuration for specific filetype.
cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources({
{ name = 'git' },
}, {
{ name = 'buffer' },
})
})
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline({ '/', '?' }, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' }
}
})
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'path' }
}, {
{ name = 'cmdline' }
})
})

42
lua/plugins/gitsigns.lua Normal file
View file

@ -0,0 +1,42 @@
require('gitsigns').setup {
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then return ']c' end
vim.schedule(function() gs.next_hunk() end)
return '<Ignore>'
end, { expr = true })
map('n', '[c', function()
if vim.wo.diff then return '[c' end
vim.schedule(function() gs.prev_hunk() end)
return '<Ignore>'
end, { expr = true })
-- Actions
map('n', '<leader>hs', gs.stage_hunk)
map('n', '<leader>hr', gs.reset_hunk)
map('v', '<leader>hs', function() gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end)
map('v', '<leader>hr', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end)
map('n', '<leader>hS', gs.stage_buffer)
map('n', '<leader>hu', gs.undo_stage_hunk)
map('n', '<leader>hR', gs.reset_buffer)
map('n', '<leader>hp', gs.preview_hunk)
map('n', '<leader>hb', function() gs.blame_line { full = true } end)
map('n', '<leader>tb', gs.toggle_current_line_blame)
map('n', '<leader>hd', gs.diffthis)
map('n', '<leader>hD', function() gs.diffthis('~') end)
map('n', '<leader>td', gs.toggle_deleted)
-- Text object
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
end
}

94
lua/plugins/init.lua Normal file
View file

@ -0,0 +1,94 @@
require('plugins.packer_setup')
require('packer').startup(function()
-- Packer can manage itself as an optional plugin
use { 'wbthomason/packer.nvim', opt = true }
-- Fuzzy finder
use {
'nvim-telescope/telescope.nvim',
requires = {
{ 'nvim-lua/popup.nvim' },
{ 'nvim-lua/plenary.nvim' },
}
}
-- Autocomplete and snippets
use {
'hrsh7th/nvim-cmp',
requires = {
{ 'hrsh7th/cmp-nvim-lsp' },
{ 'hrsh7th/cmp-buffer' },
{ 'hrsh7th/cmp-path' },
{ 'hrsh7th/cmp-cmdline' },
}
}
use { 'L3MON4D3/LuaSnip',
config = function()
local snippet_path = os.getenv("HOME") .. "/.config/nvim/snippets/"
if not vim.tbl_contains(vim.opt.rtp:get(), snippet_path) then
vim.opt.rtp:append(snippet_path)
end
require("luasnip").config.set_config({
history = true,
updateevents = "TextChanged,TextChangedI",
delete_check_events = "TextChanged,InsertLeave",
})
require("luasnip.loaders.from_lua").lazy_load()
require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_snipmate").lazy_load()
end,
requires = {
{ "rafamadriz/friendly-snippets" },
{ 'saadparwaiz1/cmp_luasnip' },
{ "benfowler/telescope-luasnip.nvim" },
},
}
-- Statusbar, colors and syntax
use { 'vim-airline/vim-airline' }
use { 'vim-airline/vim-airline-themes' }
-- LSP and related
use { 'neovim/nvim-lspconfig' }
use { 'aznhe21/actions-preview.nvim' }
use { 'folke/trouble.nvim' } -- lsp diagnostics
-- Plugins to extend builtin language support
use { 'cespare/vim-toml' }
use { 'gleam-lang/gleam.vim' }
use { 'rust-lang/rust.vim' }
use { 'folke/neodev.nvim' }
use { 'hashivim/vim-terraform' }
-- Git
use {
'NeogitOrg/neogit',
requires = {
{ "nvim-lua/plenary.nvim" },
{ "sindrets/diffview.nvim" },
},
}
use { "lewis6991/gitsigns.nvim" }
-- Filesystem browser
use { 'stevearc/oil.nvim' }
-- Misc
use { 'jbyuki/venn.nvim' } -- ascii diagrams
use { 'hedyhli/outline.nvim' }
use { "catppuccin/nvim", as = "catppuccin" }
end)
require('plugins.catppuccin')
require('plugins.cmp')
require('plugins.gitsigns')
require('plugins.neogit')
require('plugins.oil')
require('plugins.outline')
require('plugins.telescope')
require('plugins.venn')

301
lua/plugins/neogit.lua Normal file
View file

@ -0,0 +1,301 @@
local neogit = require('neogit')
vim.keymap.set('n', '<C-S-g>', neogit.open, {})
neogit.setup {
-- Hides the hints at the top of the status buffer
disable_hint = false,
-- Disables changing the buffer highlights based on where the cursor is.
disable_context_highlighting = false,
-- Disables signs for sections/items/hunks
disable_signs = false,
-- Changes what mode the Commit Editor starts in. `true` will leave nvim in normal mode, `false` will change nvim to
-- insert mode, and `"auto"` will change nvim to insert mode IF the commit message is empty, otherwise leaving it in
-- normal mode.
disable_insert_on_commit = "auto",
-- When enabled, will watch the `.git/` directory for changes and refresh the status buffer in response to filesystem
-- events.
filewatcher = {
interval = 1000,
enabled = true,
},
-- "ascii" is the graph the git CLI generates
-- "unicode" is the graph like https://github.com/rbong/vim-flog
graph_style = "ascii",
-- Used to generate URL's for branch popup action "pull request".
git_services = {
["github.com"] = "https://github.com/${owner}/${repository}/compare/${branch_name}?expand=1",
["bitbucket.org"] = "https://bitbucket.org/${owner}/${repository}/pull-requests/new?source=${branch_name}&t=1",
["gitlab.com"] = "https://gitlab.com/${owner}/${repository}/merge_requests/new?merge_request[source_branch]=${branch_name}",
},
-- Allows a different telescope sorter. Defaults to 'fuzzy_with_index_bias'. The example below will use the native fzf
-- sorter instead. By default, this function returns `nil`.
telescope_sorter = function()
return require("telescope").extensions.fzf.native_fzf_sorter()
end,
-- Persist the values of switches/options within and across sessions
remember_settings = true,
-- Scope persisted settings on a per-project basis
use_per_project_settings = true,
-- Table of settings to never persist. Uses format "Filetype--cli-value"
ignored_settings = {
"NeogitPushPopup--force-with-lease",
"NeogitPushPopup--force",
"NeogitPullPopup--rebase",
"NeogitCommitPopup--allow-empty",
"NeogitRevertPopup--no-edit",
},
-- Configure highlight group features
highlight = {
italic = true,
bold = true,
underline = true
},
-- Set to false if you want to be responsible for creating _ALL_ keymappings
use_default_keymaps = true,
-- Neogit refreshes its internal state after specific events, which can be expensive depending on the repository size.
-- Disabling `auto_refresh` will make it so you have to manually refresh the status after you open it.
auto_refresh = true,
-- Value used for `--sort` option for `git branch` command
-- By default, branches will be sorted by commit date descending
-- Flag description: https://git-scm.com/docs/git-branch#Documentation/git-branch.txt---sortltkeygt
-- Sorting keys: https://git-scm.com/docs/git-for-each-ref#_options
sort_branches = "-committerdate",
-- Change the default way of opening neogit
kind = "tab",
-- Disable line numbers and relative line numbers
disable_line_numbers = true,
-- The time after which an output console is shown for slow running commands
console_timeout = 2000,
-- Automatically show console if a command takes more than console_timeout milliseconds
auto_show_console = true,
-- Automatically close the console if the process exits with a 0 (success) status
auto_close_console = true,
status = {
show_head_commit_hash = true,
recent_commit_count = 10,
HEAD_padding = 10,
HEAD_folded = false,
mode_padding = 3,
mode_text = {
M = "modified",
N = "new file",
A = "added",
D = "deleted",
C = "copied",
U = "updated",
R = "renamed",
DD = "unmerged",
AU = "unmerged",
UD = "unmerged",
UA = "unmerged",
DU = "unmerged",
AA = "unmerged",
UU = "unmerged",
["?"] = "",
},
},
commit_editor = {
kind = "tab",
show_staged_diff = true,
-- Accepted values:
-- "split" to show the staged diff below the commit editor
-- "vsplit" to show it to the right
-- "split_above" Like :top split
-- "vsplit_left" like :vsplit, but open to the left
-- "auto" "vsplit" if window would have 80 cols, otherwise "split"
staged_diff_split_kind = "split"
},
commit_select_view = {
kind = "tab",
},
commit_view = {
kind = "vsplit",
verify_commit = vim.fn.executable("gpg") == 1, -- Can be set to true or false, otherwise we try to find the binary
},
log_view = {
kind = "tab",
},
rebase_editor = {
kind = "auto",
},
reflog_view = {
kind = "tab",
},
merge_editor = {
kind = "auto",
},
tag_editor = {
kind = "auto",
},
preview_buffer = {
kind = "split",
},
popup = {
kind = "split",
},
signs = {
-- { CLOSED, OPENED }
hunk = { "", "" },
item = { ">", "v" },
section = { ">", "v" },
},
-- Each Integration is auto-detected through plugin presence, however, it can be disabled by setting to `false`
integrations = {
-- If enabled, use telescope for menu selection rather than vim.ui.select.
-- Allows multi-select and some things that vim.ui.select doesn't.
telescope = true,
-- Neogit only provides inline diffs. If you want a more traditional way to look at diffs, you can use `diffview`.
-- The diffview integration enables the diff popup.
--
-- Requires you to have `sindrets/diffview.nvim` installed.
diffview = true,
-- If enabled, uses fzf-lua for menu selection. If the telescope integration
-- is also selected then telescope is used instead
-- Requires you to have `ibhagwan/fzf-lua` installed.
fzf_lua = true,
},
sections = {
-- Reverting/Cherry Picking
sequencer = {
folded = false,
hidden = false,
},
untracked = {
folded = false,
hidden = false,
},
unstaged = {
folded = false,
hidden = false,
},
staged = {
folded = false,
hidden = false,
},
stashes = {
folded = true,
hidden = false,
},
unpulled_upstream = {
folded = true,
hidden = false,
},
unmerged_upstream = {
folded = false,
hidden = false,
},
unpulled_pushRemote = {
folded = true,
hidden = false,
},
unmerged_pushRemote = {
folded = false,
hidden = false,
},
recent = {
folded = true,
hidden = false,
},
rebase = {
folded = true,
hidden = false,
},
},
mappings = {
commit_editor = {
["q"] = "Close",
["<c-c><c-c>"] = "Submit",
["<c-c><c-k>"] = "Abort",
},
commit_editor_I = {
["<c-c><c-c>"] = "Submit",
["<c-c><c-k>"] = "Abort",
},
rebase_editor = {
["p"] = "Pick",
["r"] = "Reword",
["e"] = "Edit",
["s"] = "Squash",
["f"] = "Fixup",
["x"] = "Execute",
["d"] = "Drop",
["b"] = "Break",
["q"] = "Close",
["<cr>"] = "OpenCommit",
["gk"] = "MoveUp",
["gj"] = "MoveDown",
["<c-c><c-c>"] = "Submit",
["<c-c><c-k>"] = "Abort",
["[c"] = "OpenOrScrollUp",
["]c"] = "OpenOrScrollDown",
},
rebase_editor_I = {
["<c-c><c-c>"] = "Submit",
["<c-c><c-k>"] = "Abort",
},
finder = {
["<cr>"] = "Select",
["<c-c>"] = "Close",
["<esc>"] = "Close",
["<c-n>"] = "Next",
["<c-p>"] = "Previous",
["<down>"] = "Next",
["<up>"] = "Previous",
["<tab>"] = "MultiselectToggleNext",
["<s-tab>"] = "MultiselectTogglePrevious",
["<c-j>"] = "NOP",
},
-- Setting any of these to `false` will disable the mapping.
popup = {
["?"] = "HelpPopup",
["A"] = "CherryPickPopup",
["D"] = "DiffPopup",
["M"] = "RemotePopup",
["P"] = "PushPopup",
["X"] = "ResetPopup",
["Z"] = "StashPopup",
["b"] = "BranchPopup",
["B"] = "BisectPopup",
["c"] = "CommitPopup",
["f"] = "FetchPopup",
["l"] = "LogPopup",
["m"] = "MergePopup",
["p"] = "PullPopup",
["r"] = "RebasePopup",
["v"] = "RevertPopup",
["w"] = "WorktreePopup",
},
status = {
["k"] = "MoveUp",
["j"] = "MoveDown",
["q"] = "Close",
["o"] = "OpenTree",
["I"] = "InitRepo",
["1"] = "Depth1",
["2"] = "Depth2",
["3"] = "Depth3",
["4"] = "Depth4",
["<tab>"] = "Toggle",
["x"] = "Discard",
["s"] = "Stage",
["S"] = "StageUnstaged",
["<c-s>"] = "StageAll",
["K"] = "Untrack",
["u"] = "Unstage",
["U"] = "UnstageStaged",
["$"] = "CommandHistory",
["Y"] = "YankSelected",
["<c-r>"] = "RefreshBuffer",
["<enter>"] = "GoToFile",
["<c-v>"] = "VSplitOpen",
["<c-x>"] = "SplitOpen",
["<c-t>"] = "TabOpen",
["{"] = "GoToPreviousHunkHeader",
["}"] = "GoToNextHunkHeader",
["[c"] = "OpenOrScrollUp",
["]c"] = "OpenOrScrollDown",
},
},
}

164
lua/plugins/oil.lua Normal file
View file

@ -0,0 +1,164 @@
local git_ignored = setmetatable({}, {
__index = function(self, key)
local proc = vim.system(
{ "git", "ls-files", "--ignored", "--exclude-standard", "--others", "--directory" },
{
cwd = key,
text = true,
}
)
local result = proc:wait()
local ret = {}
if result.code == 0 then
for line in vim.gsplit(result.stdout, "\n", { plain = true, trimempty = true }) do
-- Remove trailing slash
line = line:gsub("/$", "")
table.insert(ret, line)
end
end
rawset(self, key, ret)
return ret
end,
})
require('oil').setup({
default_file_explorer = true,
-- Id is automatically added at the beginning, and name at the end
-- See :help oil-columns
columns = {
"icon",
-- "permissions",
-- "size",
-- "mtime",
},
-- Buffer-local options to use for oil buffers
buf_options = {
buflisted = false,
bufhidden = "hide",
},
-- Window-local options to use for oil buffers
win_options = {
wrap = false,
signcolumn = "no",
cursorcolumn = false,
foldcolumn = "0",
spell = false,
list = false,
conceallevel = 3,
concealcursor = "nvic",
},
-- Send deleted files to the trash instead of permanently deleting them (:help oil-trash)
delete_to_trash = false,
-- Skip the confirmation popup for simple operations
skip_confirm_for_simple_edits = false,
-- Change this to customize the command used when deleting to trash
trash_command = "trash-put",
-- Selecting a new/moved/renamed file or directory will prompt you to save changes first
prompt_save_on_select_new_entry = true,
-- Keymaps in oil buffer. Can be any value that `vim.keymap.set` accepts OR a table of keymap
-- options with a `callback` (e.g. { callback = function() ... end, desc = "", nowait = true })
-- Additionally, if it is a string that matches "actions.<name>",
-- it will use the mapping at require("oil.actions").<name>
-- Set to `false` to remove a keymap
-- See :help oil-actions for a list of all available actions
keymaps = {
["g?"] = "actions.show_help",
["<CR>"] = "actions.select",
["<C-s>"] = "actions.select_vsplit",
["<C-h>"] = "actions.select_split",
["<C-t>"] = "actions.select_tab",
["<C-p>"] = "actions.preview",
["<C-c>"] = "actions.close",
["<C-l>"] = "actions.refresh",
["-"] = "actions.parent",
["_"] = "actions.open_cwd",
["`"] = "actions.cd",
["~"] = "actions.tcd",
["gs"] = "actions.change_sort",
["gx"] = "actions.open_external",
["g."] = "actions.toggle_hidden",
},
-- Set to false to disable all of the above keymaps
use_default_keymaps = true,
view_options = {
-- Show files and directories that start with "."
show_hidden = true,
-- This function defines what is considered a "hidden" file
is_hidden_file = function(name, _)
if vim.startswith(name, ".") then
return true
end
local dir = require("oil").get_current_dir()
-- if no local directory (e.g. for ssh connections), always show
if not dir then
return false
end
-- return vim.list_contains(git_ignored[dir], name)
end,
-- This function defines what will never be shown, even when `show_hidden` is set
is_always_hidden = function(name, bufnr)
return false
end,
sort = {
-- sort order can be "asc" or "desc"
-- see :help oil-columns to see which columns are sortable
{ "type", "asc" },
{ "name", "asc" },
},
},
-- Configuration for the floating window in oil.open_float
float = {
-- Padding around the floating window
padding = 2,
max_width = 0,
max_height = 0,
border = "rounded",
win_options = {
winblend = 0,
},
-- This is the config that will be passed to nvim_open_win.
-- Change values here to customize the layout
override = function(conf)
return conf
end,
},
-- Configuration for the actions floating preview window
preview = {
-- Width dimensions can be integers or a float between 0 and 1 (e.g. 0.4 for 40%)
-- min_width and max_width can be a single value or a list of mixed integer/float types.
-- max_width = {100, 0.8} means "the lesser of 100 columns or 80% of total"
max_width = 0.9,
-- min_width = {40, 0.4} means "the greater of 40 columns or 40% of total"
min_width = { 40, 0.4 },
-- optionally define an integer/float for the exact width of the preview window
width = nil,
-- Height dimensions can be integers or a float between 0 and 1 (e.g. 0.4 for 40%)
-- min_height and max_height can be a single value or a list of mixed integer/float types.
-- max_height = {80, 0.9} means "the lesser of 80 columns or 90% of total"
max_height = 0.9,
-- min_height = {5, 0.1} means "the greater of 5 columns or 10% of total"
min_height = { 5, 0.1 },
-- optionally define an integer/float for the exact height of the preview window
height = nil,
border = "rounded",
win_options = {
winblend = 0,
},
},
-- Configuration for the floating progress window
progress = {
max_width = 0.9,
min_width = { 40, 0.4 },
width = nil,
max_height = { 10, 0.9 },
min_height = { 5, 0.1 },
height = nil,
border = "rounded",
minimized_border = "none",
win_options = {
winblend = 0,
},
},
})

137
lua/plugins/outline.lua Normal file
View file

@ -0,0 +1,137 @@
require("outline").setup({
guides = {
enabled = true,
markers = {
bottom = '',
middle = '',
vertical = '',
horizontal = '',
},
},
outline_items = {
show_symbol_details = true,
show_symbol_lineno = false,
-- The two below are both for auto_update_events.follow
highlight_hovered_item = true,
-- On open, always followed. This is for auto_update_events.follow, whether
-- to auto update cursor position to reflect code location. If false, can
-- manually trigger with follow_cursor (API, command, keymap action).
auto_set_cursor = true,
auto_update_events = {
follow = { 'CursorMoved' },
items = { 'InsertLeave', 'WinEnter', 'BufEnter', 'BufWinEnter', 'BufWritePost' },
},
},
outline_window = {
position = 'right',
split_command = nil,
width = 25,
relative_width = true,
wrap = false,
focus_on_open = true,
auto_close = false,
auto_jump = false,
show_numbers = false,
show_relative_numbers = false,
---@type boolean|string?
show_cursorline = true,
hide_cursor = false,
winhl = '',
jump_highlight_duration = 400,
center_on_jump = true,
},
preview_window = {
live = false,
auto_preview = false,
width = 50,
min_width = 50,
relative_width = true,
height = 50,
min_height = 10,
relative_height = true,
border = 'single',
open_hover_on_preview = false,
winhl = 'NormalFloat:',
winblend = 0,
},
symbol_folding = {
autofold_depth = 1,
auto_unfold = {
hovered = true,
---@type boolean|integer
only = true,
},
markers = { '', '' },
},
keymaps = {
show_help = '?',
close = { '<Esc>', 'q' },
goto_location = '<Cr>',
peek_location = 'o',
goto_and_close = '<S-Cr>',
restore_location = '<C-g>',
hover_symbol = '<C-space>',
toggle_preview = 'K',
rename_symbol = 'r',
code_actions = 'a',
fold = 'h',
fold_toggle = '<tab>',
fold_toggle_all = '<S-tab>',
unfold = 'l',
fold_all = 'W',
unfold_all = 'E',
fold_reset = 'R',
down_and_jump = '<C-j>',
up_and_jump = '<C-k>',
},
providers = {
priority = { 'lsp', 'coc', 'markdown', 'norg' },
lsp = {
blacklist_clients = {},
},
markdown = {
filetypes = { 'markdown' },
},
},
symbols = {
---@type outline.FilterConfig?
filter = nil,
icon_source = nil,
icon_fetcher = nil,
icons = {
File = { icon = '', hl = 'Identifier' },
Module = { icon = '', hl = 'Include' },
Namespace = { icon = '{}', hl = 'Include' },
Package = { icon = '', hl = 'Include' },
Class = { icon = '𝓒', hl = 'Type' },
Method = { icon = '', hl = 'Function' },
Property = { icon = '', hl = 'Identifier' },
Field = { icon = '-', hl = 'Identifier' },
Constructor = { icon = '()', hl = 'Special' },
Enum = { icon = '', hl = 'Type' },
Interface = { icon = 'i', hl = 'Type' },
Function = { icon = 'ƒ', hl = 'Function' },
Variable = { icon = '(x)', hl = 'Constant' },
Constant = { icon = 'c', hl = 'Constant' },
String = { icon = '𝓐', hl = 'String' },
Number = { icon = '#', hl = 'Number' },
Boolean = { icon = '', hl = 'Boolean' },
Array = { icon = '[]', hl = 'Constant' },
Object = { icon = '⦿', hl = 'Type' },
Key = { icon = '🔐', hl = 'Type' },
Null = { icon = 'NULL', hl = 'Type' },
EnumMember = { icon = '', hl = 'Identifier' },
Struct = { icon = '𝓢', hl = 'Structure' },
Event = { icon = '🗲', hl = 'Type' },
Operator = { icon = '+', hl = 'Identifier' },
TypeParameter = { icon = '𝙏', hl = 'Identifier' },
Component = { icon = '', hl = 'Function' },
Fragment = { icon = '-', hl = 'Constant' },
-- ccls
TypeAlias = { icon = 't ', hl = 'Type' },
Parameter = { icon = 'p ', hl = 'Identifier' },
StaticMethod = { icon = '. ', hl = 'Function' },
Macro = { icon = '', hl = 'Function' },
},
},
})

View file

@ -0,0 +1,9 @@
-- Auto install packer.nvim if not exists
local install_path = vim.fn.stdpath('data') .. '/site/pack/packer/opt/packer.nvim'
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
vim.api.nvim_command('!git clone https://github.com/wbthomason/packer.nvim ' .. install_path)
end
vim.cmd [[packadd packer.nvim]]
-- Auto compile when there are changes in plugins.lua
vim.cmd 'autocmd BufWritePost plugins.lua PackerCompile'

62
lua/plugins/telescope.lua Normal file
View file

@ -0,0 +1,62 @@
local telescope = require('telescope')
local actions = require('telescope.actions')
local builtin = require('telescope.builtin')
local telescope_last = 0
function telescope_resume()
if telescope_last == 0 then
telescope_last = 1
builtin.live_grep()
else
builtin.resume()
end
end
telescope.setup {
defaults = {
sorting_strategy = "ascending",
live_grep_arguments = { 'rg',
'--hidden', '--no-ignore', '--color=never',
'--with-filename', '--line-number',
'--column', '--smart-case', '--no-heading',
},
preview = {
treesitter = false
},
},
pickers = {
live_grep = {
mappings = {
i = { ["<c-f>"] = actions.to_fuzzy_refine },
n = { ["<c-f>"] = telescope_resume },
},
},
find_files = {
cache_picker = false,
},
git_files = {
cache_picker = false,
},
},
}
-- Snippets can be useful.
vim.keymap.set('n', '<leader>ss', telescope.extensions.luasnip.luasnip, {})
-- Fuzzy * files, symbols, buffers, help, etc.
vim.keymap.set('n', '<leader>fa', builtin.find_files) -- f[ind]a[ll]
vim.keymap.set('n', '<leader>fb', builtin.buffers)
vim.keymap.set('n', '<leader>fd', builtin.diagnostics)
vim.keymap.set('n', '<leader>ff', builtin.git_files)
vim.keymap.set('n', '<leader>fh', builtin.help_tags)
vim.keymap.set('n', '<leader>fs', builtin.lsp_dynamic_workspace_symbols)
-- Grep (the only one).
vim.keymap.set('n', '<leader>gg', builtin.live_grep)
-- LSP navigation.
vim.keymap.set('n', '<leader>gd', builtin.lsp_definitions)
vim.keymap.set('n', '<leader>gr', builtin.lsp_references)
vim.keymap.set('n', '<leader>gi', builtin.lsp_implementations)
vim.keymap.set('n', '<leader>ci', builtin.lsp_incoming_calls)
vim.keymap.set('n', '<leader>co', builtin.lsp_outgoing_calls)

22
lua/plugins/venn.lua Normal file
View file

@ -0,0 +1,22 @@
-- venn.nvim: enable or disable keymappings
function _G.Toggle_venn()
local venn_enabled = vim.inspect(vim.b.venn_enabled)
if venn_enabled == "nil" then
vim.b.venn_enabled = true
vim.cmd [[setlocal ve=all]]
-- draw a line on HJKL keystokes
vim.api.nvim_buf_set_keymap(0, "n", "J", "<C-v>j:VBox<CR>", { noremap = true })
vim.api.nvim_buf_set_keymap(0, "n", "K", "<C-v>k:VBox<CR>", { noremap = true })
vim.api.nvim_buf_set_keymap(0, "n", "L", "<C-v>l:VBox<CR>", { noremap = true })
vim.api.nvim_buf_set_keymap(0, "n", "H", "<C-v>h:VBox<CR>", { noremap = true })
-- draw a box by pressing "f" with visual selection
vim.api.nvim_buf_set_keymap(0, "v", "f", ":VBox<CR>", { noremap = true })
else
vim.cmd [[setlocal ve=]]
vim.cmd [[mapclear <buffer>]]
vim.b.venn_enabled = nil
end
end
-- toggle keymappings for venn using <leader>v
vim.api.nvim_set_keymap('n', '<leader>v', ":lua Toggle_venn()<CR>", { noremap = true })

52
lua/settings.lua Normal file
View file

@ -0,0 +1,52 @@
local indent = 4
vim.opt.shiftwidth = indent
vim.opt.tabstop = indent
vim.opt.softtabstop = indent
vim.opt.scrolloff = indent
vim.opt.wildmode = 'list:longest,list:full'
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.hidden = true
vim.opt.ignorecase = true
vim.opt.shiftround = true
vim.opt.smartcase = true
vim.opt.splitbelow = true
vim.opt.splitright = true
vim.opt.number = true
vim.opt.clipboard = 'unnamed,unnamedplus'
vim.opt.autoindent = false
vim.opt.smartindent = false
vim.opt.errorformat:prepend('%f|%l col %c|%m')
vim.opt.fileformat = 'unix'
vim.opt.undofile = true
vim.opt.background = 'light'
-- Enable vimrc files per project and disable unsafe commands in project vimrc
vim.opt.exrc = true
vim.opt.secure = true
vim.api.nvim_create_autocmd('InsertEnter', {
callback = function()
vim.cmd.hi('clear RedundantSpaces')
end,
pattern = '*',
})
vim.api.nvim_create_autocmd({'InsertLeave', 'BufEnter'}, {
callback = function()
vim.cmd.hi('RedundantSpaces ctermbg=red guibg=red')
end,
pattern = '*',
})
vim.cmd([[
set noautoread
autocmd CursorHold * checktime
autocmd TextYankPost * lua vim.highlight.on_yank {on_visual = false}
autocmd BufRead,BufNewFile *.bu,*.yml.example,*.yaml.example set filetype=yaml
autocmd BufRead,BufNewFile *.ign set filetype=json
match RedundantSpaces /\s\+$/
let g:airline_theme='papercolor'
]])

94
spell/en.utf-8.add Normal file
View file

@ -0,0 +1,94 @@
Ansible
AWS
GCP
OpenStack
CouchDB
gRPC
Proto
Cap'n
Protobuf
RabbitMQ
MQTT
ZMQ
NoSQL
PostgreSQL
hackerspace
FOSS
NGO
OSTree
CoreOS
distro
selfhosted
Gitea
toolset
Django
AsyncIO
async
FastAPI
gevent
uWSGI
SqlAlchemy
uWSGI's
Podman
Kubernetes
WebAssembly
esp32
SRE
Postgres
Clickhouse
Mysql
Opensearch
Ericssons
Linköping
LabOps
Ericsson
Gerrit
Seavus
Hortonworks
Ambari
Telecommution
HDFS
TradeCore
frontend
GitLab
ElasticSearch
Celerry
Itekako
scalable
JSON
RPC
TinyRPC
FFMpeg
Live555
dockerizing
RedHat
Asseko
MSSQL
Aiven
C2
Vladan
Popovic
pagenumbering
Bulevar
Oslobodjenja
gmail
vladanovic/!
vladanovic
microservice
transcoding
Tox
Jinja2
Artifactory
ESP32
Microcontroller
SIM800L
blox
NEO
A7670E
TCP
adminstrator
devops
COVID
microcontrollers
codebases
OCaml