vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" vim.cmd([[ let g:astro_typescript = 'enable' ]]) require("render-markdown").setup { latex_converter = '${pkgs.python312Packages.pylatexenc}/bin/latex2text', } local otter = require'otter' otter.setup{} vim.api.nvim_create_autocmd({"BufEnter", "BufWinEnter"}, { pattern = {"*.md"}, callback = function() otter.activate({'python', 'rust', 'c', 'lua', 'bash' }, true, true, nil) end, }) require("onedark").setup { style = "deep", highlights = { ["@comment"] = {fg = '#77B767'} } } require("onedark").load() local cmp = require("cmp") cmp.setup { snippet = { expand = function(args) vim.fn["vsnip#anonymous"](args.body) end, }, window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. [''] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = 'cmp_tabnine' }, { name = 'nvim_lsp' }, { name = "otter" }, { name = 'path' }, { name = 'vsnip' }, { name = 'spell' }, }, { { name = 'buffer' }, }), comparators = { -- compare.score_offset, -- not good at all cmp.config.compare.locality, cmp.config.compare.recently_used, cmp.config.compare.score, cmp.config.compare.offset, cmp.config.compare.order, }, } -- key mapping local keymap = vim.api.nvim_set_keymap local opts = { noremap = true, silent = true } local builtin = require('telescope.builtin') -- comment vim.keymap.set("n", "", ":lua require('Comment.api').toggle.linewise.current() j", opts) vim.keymap.set("v", "", ":lua require('Comment.api').toggle.linewise.current() j", opts) -- indent and dedent using tab/shift-tab vim.keymap.set("n", "", ">>_") vim.keymap.set("n", "", "<<_") vim.keymap.set("i", "", "") vim.keymap.set("v", "", ">gv") vim.keymap.set("v", "", " wq]] vim.cmd [[cabbrev x execute "Format sync" x]] vim.cmd [[cnoreabbrev W w]] vim.cmd [[cnoreabbrev X execute "Format sync" x]] vim.cmd [[cnoreabbrev Q q]] vim.cmd [[nnoremap ; :]] local builtin = require('telescope.builtin') vim.keymap.set('n', 'ff', builtin.find_files, {}) vim.keymap.set('n', '', builtin.live_grep, {}) vim.keymap.set('n', 'fh', builtin.search_history, {}) vim.keymap.set('n', 'd', "Telescope diagnostics bufnr=0", {}) vim.keymap.set('n', 'ad', builtin.diagnostics, {}) vim.keymap.set("n", "]d", vim.diagnostic.goto_next) vim.keymap.set("n", "[d", vim.diagnostic.goto_prev) local gitsigns = require('gitsigns') vim.keymap.set('n', 'gr', gitsigns.reset_hunk) vim.keymap.set('n', 'gd', gitsigns.diffthis) vim.keymap.set({'o', 'x'}, 'ig', ':Gitsigns select_hunk') vim.keymap.set('n', 't', ':Neotree toggle') -- ============ files and directories ============== -- don't change the directory when a file is opened -- to work more like an IDE vim.opt.autochdir = false -- ============ tabs and indentation ============== -- automatically indent the next line to the same depth as the current line vim.opt.autoindent = true vim.opt.smartindent = true vim.opt.smarttab = true -- backspace across lines vim.opt.backspace = { "indent", "eol", "start" } vim.opt.tabstop = 4 vim.opt.softtabstop = 4 vim.opt.shiftwidth = 4 vim.opt.expandtab = true -- ============ line numbers ============== -- set number,relativenumber vim.opt.number = true vim.opt.relativenumber = true -- ============ history ============== vim.cmd([[ set undodir=~/.vimdid set undofile ]]) vim.opt.undofile = true -- ============ miscelaneous ============== vim.opt.belloff = "all" -- show (usually) hidden characters vim.opt.list = true vim.opt.listchars = { nbsp = "¬", extends = "»", precedes = "«", trail = "·", tab = ">-", } -- paste and yank use global system clipboard vim.opt.clipboard = "unnamedplus" -- show partial commands entered in the status line -- (like show "da" when typing "daw") vim.opt.showcmd = true vim.opt.mouse = "a" vim.opt.modeline = true -- highlight the line with the cursor on it vim.opt.cursorline = true -- enable spell checking (todo: plugin?) vim.opt.spell = false vim.opt.wrap = false -- better search vim.cmd([[ " Better search set incsearch set ignorecase set smartcase set gdefault nnoremap n n:call BlinkNextMatch() nnoremap N N:call BlinkNextMatch() function! BlinkNextMatch() abort highlight JustMatched ctermfg=white ctermbg=magenta cterm=bold let pat = '\c\%#' . @/ let id = matchadd('JustMatched', pat) redraw exec 'sleep 150m' call matchdelete(id) redraw endfunction nnoremap :silent nohecho nnoremap :silent nohecho nnoremap n nzz nnoremap N Nzz nnoremap * *zz nnoremap # #zz nnoremap g* g*zz " very magic by default nnoremap ? ?\v nnoremap / /\v cnoremap %s/ %sm/ ]]) keymap('n', "t", ":FloatermToggle myfloat", opts) keymap('t', "", ":q", opts) vim.cmd([[ let g:suda_smart_edit = 1 filetype plugin indent on ]])