{ config, pkgs, ... }: { programs.neovim = { enable = true; defaultEditor = true; plugins = with pkgs.vimPlugins; [ # fzfWrapper # fzf-vim formatter-nvim goyo-vim vim-visual-multi nvim-lspconfig blink-cmp telescope-nvim undotree which-key-nvim guess-indent-nvim ]; extraConfig = '' set number set relativenumber set tabstop=4 set shiftwidth=4 set expandtab set foldmethod=marker set autoindent set smartindent filetype plugin indent on set signcolumn=yes colorscheme habamax nnoremap gj nnoremap gk vnoremap gj vnoremap gk inoremap gj inoremap gk tnoremap map nnoremap :noh nnoremap gr :Telescope lsp_references nnoremap gd :Telescope lsp_definitions nnoremap u :UndotreeToggle :UndotreeFocus nnoremap f :Telescope find_files nnoremap b :Telescope buffers nnoremap e :Telescope diagnostics nnoremap g :Telescope live_grep nnoremap s :Telescope lsp_document_symbols nnoremap r :lua vim.lsp.buf.rename() nnoremap n :bnext nnoremap m :bprevious nnoremap za noremap y "+y noremap p "+p noremap "+ noremap "+ " Format on save " augroup FormatAutogroup " autocmd! " autocmd BufWritePost * FormatWrite " augroup END " enter insert mode when opening terminal autocmd TermOpen * startinsert " Return to last opened position autocmd BufReadPost * \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' \ | exe "normal! g`\"" \ | endif " Use persistent history. if !isdirectory("/tmp/.vim-undo-dir") call mkdir("/tmp/.vim-undo-dir", "", 0700) endif set undodir=/tmp/.vim-undo-dir set undofile ''; extraLuaConfig = '' vim.lsp.enable('zls') vim.lsp.enable('clangd') vim.lsp.config('zuban', {}) vim.lsp.enable('zuban') vim.lsp.enable('jdtls') require('guess-indent').setup {} local tl_actions = require("telescope.actions") local tl_builtin = require("telescope.builtin") require('telescope').setup { defaults = { mappings = { i = { [""] = tl_actions.close }, } } } tl_builtins.buffers { sort_lastused = true, ignore_current_buffer = true } require('formatter').setup { logging = true, log_level = vim.log.levels.WARN, filetype = { c = { require("formatter.filetypes.c").clangformat }, cpp = { require("formatter.filetypes.cpp").clangformat }, zig = { require("formatter.filetypes.zig").zigfmt }, markdown = { require("formatter.filetypes.markdown").denofmt }, java = { require("formatter.filetypes.java").google_java_format }, } } require('blink.cmp').setup { keymap = { preset = 'none', [''] = { 'show', 'show_documentation', 'hide_documentation' }, [''] = { 'hide', 'fallback' }, [''] = { 'accept', 'fallback' }, [''] = { 'select_next', 'fallback_to_mappings' }, [''] = { 'select_prev', 'fallback_to_mappings' }, [''] = { 'scroll_documentation_up', 'fallback' }, [''] = { 'show_signature', 'hide_signature', 'fallback' }, }, completion = { list = { selection = { preselect = false, } }, documentation = { auto_show = true, -- treesitter_highlighting = false, }, }, signature = { enabled = true }, } ''; }; programs.helix = { enable = true; settings = { theme = "base16_terminal"; editor.cursor-shape = { insert = "bar"; normal = "block"; select = "underline"; }; editor.soft-wrap = { enable = true; }; editor.file-picker = { hidden = false; }; keys.normal."space" = { "space" = "goto_word"; }; }; languages = { language = [{ name = "c"; auto-format = true; formatter = { command = "clang-format"; args = ["--style=microsoft"]; }; }]; }; }; }