From be6f2e6bdf5b02c45afcf7e730cbeb18d9dc0fc0 Mon Sep 17 00:00:00 2001 From: Alex Selimov Date: Wed, 28 Feb 2024 15:09:30 -0500 Subject: [PATCH] Convert all settings to an init.lua --- coc-settings.json | 26 --- init.lua | 553 ++++++++++++++++++++++++++++++++++++++++++++++ init.vim | 212 ------------------ 3 files changed, 553 insertions(+), 238 deletions(-) delete mode 100644 coc-settings.json create mode 100644 init.lua delete mode 100644 init.vim diff --git a/coc-settings.json b/coc-settings.json deleted file mode 100644 index 9660883..0000000 --- a/coc-settings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "suggest.autoTrigger": "none", - "suggest.timeout": 500, - "pyright.disableDocumentation":false, - "pyright.inlayHints.variableTypes":false, - "pyright.inlayHints.parameterTypes":false, - "pyright.inlayHints.functionReturnTypes":false, - "python.analysis.diagnosticSeverityOverrides":{ - "reportUnboundVariable":"none" - }, - "hover.target": "preview", - "clangd.path": "/usr/bin/clangd", - "python.formatting.provider": "black", - "python.formatting.blackArgs": ["-l","100"], - "coc.preferences.formatOnSaveFiletypes": ["python","java", "rust"], - "java.inlayHints.parameterNames.enabled": "none", - "java.format.settings.url": "/home/alex.selimov/RedTop.xml", - "workspace.ignoredFolders": [ - "$HOME", - "$HOME/.cargo/**", - "$HOME/.rustup/**" - ], - "rust-analyzer.inlayHints.typeHints.enable": false, - "rust-analyzer.inlayHints.parameterHints.enable": false -} - diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..b8f90fe --- /dev/null +++ b/init.lua @@ -0,0 +1,553 @@ +-- Specify the leader +-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) +vim.g.mapleader = ";" +vim.g.maplocalleader = ";" + +-- [[ Setting options ]] +-- Make line numbers default +vim.opt.number = true +vim.opt.relativenumber = true + +-- Disable mouse mode +vim.opt.mouse = "" + +-- Don't show the mode, since it's already in status line +vim.opt.showmode = false + +-- Enable break indent +vim.opt.breakindent = true + +-- Case-insensitive searching UNLESS \C or capital in search +vim.opt.ignorecase = true +vim.opt.smartcase = true + +-- Keep signcolumn on by default +vim.opt.signcolumn = "yes" + +-- Configure how new splits should be opened +vim.opt.splitright = true +vim.opt.splitbelow = true + +-- Sets how neovim will display certain whitespace in the editor. +-- See :help 'list' +-- and :help 'listchars' +vim.opt.list = true +vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" } + +-- Preview substitutions live, as you type! +vim.opt.inccommand = "split" + +-- Show which line your cursor is on +vim.opt.cursorline = true + +-- Minimal number of screen lines to keep above and below the cursor. +-- vim.opt.scrolloff = 10 + +-- General universal settings +vim.opt.sw = 4 +vim.opt.ts = 4 +vim.opt.expandtab = true +vim.opt.tw = 100 +vim.opt.colorcolumn = "+1" + +-- [[ Basic Keymaps ]] +-- See `:help vim.keymap.set()` + +-- Set highlight on search, but clear on pressing in normal mode +vim.opt.hlsearch = true +vim.keymap.set("n", "", "nohlsearch") + +-- Diagnostic keymaps +vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous [D]iagnostic message" }) +vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next [D]iagnostic message" }) +vim.keymap.set("n", "e", vim.diagnostic.open_float, { desc = "Show diagnostic [E]rror messages" }) +vim.keymap.set("n", "q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" }) + +-- Keybinds to make split navigation easier. +-- Use CTRL+ to switch between windows +-- +-- See `:help wincmd` for a list of all window commands +vim.keymap.set("n", "", "", { desc = "Move focus to the left window" }) +vim.keymap.set("n", "", "", { desc = "Move focus to the right window" }) +vim.keymap.set("n", "", "", { desc = "Move focus to the lower window" }) +vim.keymap.set("n", "", "", { desc = "Move focus to the upper window" }) + +-- [[ Basic Autocommands ]] +-- See :help lua-guide-autocommands + +-- [[ Install `lazy.nvim` plugin manager ]] +-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) +end ---@diagnostic disable-next-line: undefined-field +vim.opt.rtp:prepend(lazypath) + +-- [[ Configure and install plugins ]] +-- +-- To check the current status of your plugins, run +-- :Lazy +-- +-- You can press `?` in this menu for help. Use `:q` to close the window +-- +-- To update plugins, you can run +-- :Lazy update +-- +-- NOTE: Here is where you install your plugins. +require("lazy").setup({ + + -- [[ Plugin Specs list ]] + -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). + { + "windwp/nvim-autopairs", + config = function() + local remap = vim.api.nvim_set_keymap + local npairs = require("nvim-autopairs") + + npairs.setup({ map_bs = false, map_cr = false }) + + _G.MUtils = {} + + MUtils.CR = function() + if vim.fn.pumvisible() ~= 0 then + if vim.fn.complete_info({ "selected" }).selected ~= -1 then + return npairs.esc("") + else + return npairs.esc("") .. npairs.autopairs_cr() + end + else + return npairs.autopairs_cr() + end + end + remap("i", "", "v:lua.MUtils.CR()", { expr = true, noremap = true }) + + MUtils.BS = function() + if vim.fn.pumvisible() ~= 0 and vim.fn.complete_info({ "mode" }).mode == "eval" then + return npairs.esc("") .. npairs.autopairs_bs() + else + return npairs.autopairs_bs() + end + end + remap("i", "", "v:lua.MUtils.BS()", { expr = true, noremap = true }) + + -- put this to setup function and press to use fast_wrap + npairs.setup({ + fast_wrap = {}, + }) + + -- change default fast_wrap + npairs.setup({ + fast_wrap = { + map = "", + chars = { "{", "[", "(", '"', "'" }, + pattern = [=[[%'%"%>%]%)%}%,]]=], + end_key = "$", + before_key = "h", + after_key = "l", + cursor_pos_before = true, + keys = "qwertyuiopzxcvbnmasdfghjkl", + manual_position = true, + highlight = "Search", + highlight_grey = "Comment", + }, + }) + + npairs.remove_rule("`") + end, + }, + "kana/vim-textobj-user", + "godlygeek/tabular", + { + "Vigemus/iron.nvim", + config = function() + local iron = require("iron.core") + local view = require("iron.view") + + iron.setup({ + config = { + -- Whether a repl should be discarded or not + scratch_repl = true, + -- Your repl definitions come here + repl_definition = { + python = { + -- Can be a table or a function that + -- returns a table (see below) + command = "ipython --no-autoindent", + }, + }, + -- How the repl window will be displayed + -- See below for more information + repl_open_cmd = require("iron.view").bottom(20), + }, + -- Iron doesn't set keymaps by default anymore. + -- You can set them here or manually add keymaps to the functions in iron.core + keymaps = { + visual_send = ";sc", + send_file = ";sf", + send_line = ";sl", + cr = ";s", + interrupt = ";s", + exit = ";sq", + clear = ";cl", + }, + -- If the highlight is on, you can change how it looks + -- For the available options, check nvim_set_hl + highlight = { + italic = true, + }, + ignore_blank_lines = true, -- ignore blank lines when sending visual select lines + }) + + -- iron also has a list of commands, see :h iron-commands for all available commands + vim.keymap.set("n", ";rs", "IronRepl") + vim.keymap.set("n", ";rr", "IronRestart") + vim.keymap.set("n", ";rf", "IronFocus") + vim.keymap.set("n", ";rh", "IronHide") + + repl_open_cmd = "horizontal bot 20 split" + end, + }, + "tpope/vim-markdown", + + -- NOTE: Plugins can specify dependencies. + -- + -- The dependencies are proper plugin specifications as well - anything + -- you do for a plugin at the top level, you can do for a dependency. + -- + -- Use the `dependencies` key to specify the dependencies of a particular plugin + + { -- Fuzzy Finder (files, lsp, etc) + "nvim-telescope/telescope.nvim", + event = "VeryLazy", + branch = "0.1.x", + dependencies = { + "nvim-lua/plenary.nvim", + -- Useful for getting pretty icons, but requires special font. + -- If you already have a Nerd Font, or terminal set up with fallback fonts + -- you can enable this + { "nvim-tree/nvim-web-devicons" }, + { "nvim-telescope/telescope-live-grep-args.nvim" }, + }, + config = function() + -- Telescope is a fuzzy finder that comes with a lot of different things that + -- it can fuzzy find! It's more than just a "file finder", it can search + -- many different aspects of Neovim, your workspace, LSP, and more! + -- + -- The easiest way to use telescope, is to start by doing something like: + -- :Telescope help_tags + -- + -- After running this command, a window will open up and you're able to + -- type in the prompt window. You'll see a list of help_tags options and + -- a corresponding preview of the help. + -- + -- Two important keymaps to use while in telescope are: + -- - Insert mode: + -- - Normal mode: ? + -- + -- This opens a window that shows you all of the keymaps for the current + -- telescope picker. This is really useful to discover what Telescope can + -- do as well as how to actually do it! + + -- [[ Configure Telescope ]] + -- See `:help telescope` and `:help telescope.setup()` + require("telescope").setup({ + -- You can put your default mappings / updates / etc. in here + -- All the info you're looking for is in `:help telescope.setup()` + -- + defaults = { + path_display = { "smart" }, + }, + }) + + pcall(require("telescope").load_extension("live_grep_args")) + local builtin = require("telescope.builtin") + vim.keymap.set("n", "", require("telescope").extensions.live_grep_args.live_grep_args) + vim.keymap.set("n", "", require("telescope").extensions.live_grep_args.live_grep_args) + vim.keymap.set("n", "", builtin.find_files) + end, + }, + { -- LSP Configuration & Plugins + "neovim/nvim-lspconfig", + dependencies = { + -- Automatically install LSPs and related tools to stdpath for neovim + "williamboman/mason.nvim", + "williamboman/mason-lspconfig.nvim", + "WhoIsSethDaniel/mason-tool-installer.nvim", + + -- Useful status updates for LSP. + -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` + { "j-hui/fidget.nvim", opts = {} }, + }, + config = function() + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }), + callback = function(event) + -- NOTE: Remember that lua is a real programming language, and as such it is possible + -- to define small helper and utility functions so you don't have to repeat yourself + -- many times. + -- + -- In this case, we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + local map = function(keys, func, desc) + vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) + end + + -- Jump to the definition of the word under your cursor. + -- This is where a variable was first declared, or where a function is defined, etc. + -- To jump back, press . + map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition") + + -- Find references for the word under your cursor. + map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") + + -- Jump to the implementation of the word under your cursor. + -- Useful when your language has ways of declaring types without an actual implementation. + map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation") + + -- Jump to the type of the word under your cursor. + -- Useful when you're not sure what type a variable is and you want to see + -- the definition of its *type*, not where it was *defined*. + map("D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition") + + -- Fuzzy find all the symbols in your current document. + -- Symbols are things like variables, functions, types, etc. + map("ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") + + -- Fuzzy find all the symbols in your current workspace + -- Similar to document symbols, except searches over your whole project. + map( + "ws", + require("telescope.builtin").lsp_dynamic_workspace_symbols, + "[W]orkspace [S]ymbols" + ) + + -- Rename the variable under your cursor + -- Most Language Servers support renaming across files, etc. + map("rn", vim.lsp.buf.rename, "[R]e[n]ame") + + -- Execute a code action, usually your cursor needs to be on top of an error + -- or a suggestion from your LSP for this to activate. + map("ca", vim.lsp.buf.code_action, "[C]ode [A]ction") + + -- Opens a popup that displays documentation about the word under your cursor + -- See `:help K` for why this keymap + map("K", vim.lsp.buf.hover, "Hover Documentation") + + -- WARN: This is not Goto Definition, this is Goto Declaration. + -- For example, in C this would take you to the header + map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") + + -- The following two autocommands are used to highlight references of the + -- word under your cursor when your cursor rests there for a little while. + -- See `:help CursorHold` for information about when this is executed + -- + -- When you move your cursor, the highlights will be cleared (the second autocommand). + local client = vim.lsp.get_client_by_id(event.data.client_id) + if client and client.server_capabilities.documentHighlightProvider then + vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { + buffer = event.buf, + callback = vim.lsp.buf.document_highlight, + }) + + vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { + buffer = event.buf, + callback = vim.lsp.buf.clear_references, + }) + end + end, + }) + + -- LSP servers and clients are able to communicate to each other what features they support. + -- By default, Neovim doesn't support everything that is in the LSP Specification. + -- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. + -- So, we create new capabilities with nvim cmp, and then broadcast that to the servers. + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) + + -- Enable the following language servers + -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. + -- + -- Add any additional override configuration in the following tables. Available keys are: + -- - cmd (table): Override the default command used to start the server + -- - filetypes (table): Override the default list of associated filetypes for the server + -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. + -- - settings (table): Override the default settings passed when initializing the server. + -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ + local servers = { + clangd = {}, + -- gopls = {}, + pyright = {}, + rust_analyzer = { + settings = { + files = { + excludeDirs = { "$HOME", "$HOME/.cargo/**", "$HOME/.rustup/**" }, + }, + }, + }, + + lua_ls = { + -- cmd = {...}, + -- filetypes { ...}, + -- capabilities = {}, + settings = { + Lua = { + runtime = { version = "LuaJIT" }, + workspace = { + checkThirdParty = false, + -- Tells lua_ls where to find all the Lua files that you have loaded + -- for your neovim configuration. + library = { + "${3rd}/luv/library", + unpack(vim.api.nvim_get_runtime_file("", true)), + }, + -- If lua_ls is really slow on your computer, you can try this instead: + -- library = { vim.env.VIMRUNTIME }, + }, + -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings + -- diagnostics = { disable = { 'missing-fields' } }, + }, + }, + }, + } + + -- Ensure the servers and tools above are installed + -- To check the current status of installed tools and/or manually install + -- other tools, you can run + -- :Mason + -- + -- You can press `g?` for help in this menu + require("mason").setup() + + -- You can add other tools here that you want Mason to install + -- for you, so that they are available from within Neovim. + local ensure_installed = vim.tbl_keys(servers or {}) + vim.list_extend(ensure_installed, { + "stylua", -- Used to format lua code + }) + require("mason-tool-installer").setup({ ensure_installed = ensure_installed }) + + require("mason-lspconfig").setup({ + handlers = { + function(server_name) + local server = servers[server_name] or {} + require("lspconfig")[server_name].setup({ + cmd = server.cmd, + settings = server.settings, + filetypes = server.filetypes, + -- This handles overriding only values explicitly passed + -- by the server configuration above. Useful when disabling + -- certain features of an LSP (for example, turning off formatting for tsserver) + capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {}), + }) + end, + }, + }) + end, + }, + + { -- Autoformat + "stevearc/conform.nvim", + opts = { + notify_on_error = false, + format_on_save = { + timeout_ms = 500, + lsp_fallback = true, + }, + formatters_by_ft = { + lua = { "stylua" }, + -- Conform can also run multiple formatters sequentially + python = { "black" }, + rust = { "rustfmt" }, + }, + }, + }, + + { -- Autocompletion + "hrsh7th/nvim-cmp", + event = "InsertEnter", + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", + }, + config = function() + -- See `:help cmp` + local cmp = require("cmp") + cmp.setup({ + completion = { completeopt = "menu,menuone,noinsert" }, + + -- For an understanding of why these mappings were + -- chosen, you will need to read `:help ins-completion` + -- + -- No, but seriously. Please read `:help ins-completion`, it is really good! + mapping = cmp.mapping.preset.insert({ + -- Select the [n]ext item + [""] = cmp.mapping.select_next_item(), + -- Select the [p]revious item + [""] = cmp.mapping.select_prev_item(), + + -- Accept ([y]es) the completion. + -- This will auto-import if your LSP supports it. + -- This will expand snippets if the LSP sent a snippet. + [""] = cmp.mapping.confirm({ select = true }), + + -- Manually trigger a completion from nvim-cmp. + -- Generally you don't need this, because nvim-cmp will display + -- completions whenever it has completion options available. + [""] = cmp.mapping.complete({}), + }), + }) + end, + }, + + { -- You can easily change to a different colorscheme. + -- Change the name of the colorscheme plugin below, and then + -- change the command in the config to whatever the name of that colorscheme is + -- + -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme` + "morhetz/gruvbox", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- Load the colorscheme here + vim.cmd.colorscheme("gruvbox") + end, + }, + + -- Highlight todo, notes, etc in comments + { "folke/todo-comments.nvim", dependencies = { "nvim-lua/plenary.nvim" }, opts = { signs = false } }, + + { -- Collection of various small independent plugins/modules + -- Simple and easy statusline. + -- You could remove this setup call if you don't like it, + -- and try some other statusline plugin + "echasnovski/mini.nvim", + config = function() + require("mini.statusline").setup() + end, + }, + + { -- Highlight, edit, and navigate code + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function() + -- [[ Configure Treesitter ]] See `:help nvim-treesitter` + + ---@diagnostic disable-next-line: missing-fields + require("nvim-treesitter.configs").setup({ + ensure_installed = { "bash", "c", "html", "lua", "markdown", "vim", "vimdoc" }, + -- Autoinstall languages that are not installed + auto_install = true, + highlight = { enable = true }, + indent = { enable = true }, + }) + + -- There are additional nvim-treesitter modules that you can use to interact + -- with nvim-treesitter. You should go explore a few and see what interests you: + -- + -- - Incremental selection: Included, see :help nvim-treesitter-incremental-selection-mod + -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context + -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects + end, + }, +}) diff --git a/init.vim b/init.vim deleted file mode 100644 index aa2c009..0000000 --- a/init.vim +++ /dev/null @@ -1,212 +0,0 @@ -" Plugins will be downloaded under the specified directory. -call plug#begin('~/.vim/plugged') - -" Declare the list of plugins. -Plug 'kana/vim-textobj-user' -Plug 'godlygeek/tabular' -Plug 'Vigemus/iron.nvim' -Plug 'tpope/vim-markdown' -Plug 'vim-airline/vim-airline' -Plug 'vim-airline/vim-airline-themes' -"Plug 'kien/ctrlp.vim' -Plug 'morhetz/gruvbox' -Plug 'skywind3000/asyncrun.vim' -Plug 'norcalli/nvim-colorizer.lua' -Plug 'nvim-lua/popup.nvim' -Plug 'nvim-lua/plenary.nvim' -Plug 'nvim-telescope/telescope.nvim' -Plug 'neoclide/coc.nvim', {'branch': 'release'} -Plug 'christoomey/vim-tmux-navigator' -Plug 'GCBallesteros/vim-textobj-hydrogen' -Plug 'nvim-telescope/telescope-live-grep-args.nvim' -Plug 'folke/todo-comments.nvim' -Plug 'windwp/nvim-autopairs' -Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} - -" List ends here. Plugins become visible to Vim after this call. -call plug#end() - -" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by -" the call to :runtime you can find below. If you wish to change any of those -" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim -" will be overwritten everytime an upgrade of the vim packages is performed. -" It is recommended to make changes after sourcing debian.vim since it alters -" the value of the 'compatible' option. - -" This line should not be removed as it ensures that various options are -" properly set to work with the Vim-related packages available in Debian. -runtime! debian.vim - -" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc. -" This happens after /etc/vim/vimrc(.local) are loaded, so it will override -" any settings in these files. -" If you don't want that to happen, uncomment the below line to prevent -" defaults.vim from being loaded. -" let g:skip_defaults_vim = 1 - -" Uncomment the next line to make Vim more Vi-compatible -" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous -" options, so any other options should be set AFTER setting 'compatible'. -"set compatible - -" Vim5 and later versions support syntax highlighting. Uncommenting the next -" line enables syntax highlighting by default. -"if has("syntax") -" syntax on -"endif - -" If using a dark background within the editing area and syntax highlighting -" turn on this option as well -set background=dark - -" Uncomment the following to have Vim jump to the last position when -" reopening a file -"if has("autocmd") -" au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif -"endif - -" Uncomment the following to have Vim load indentation rules and plugins -" according to the detected filetype. -"if has("autocmd") -" filetype plugin indent on -"endif - -" The following are commented out as they cause vim to behave a lot -" differently from regular Vi. They are highly recommended though. -"set showcmd " Show (partial) command in status line. -"set showmatch " Show matching brackets. -"set ignorecase " Do case insensitive matching -"set smartcase " Do smart case matching -"set incsearch " Incremental search -"set autowrite " Automatically save before commands like :next and :make -"set hidden " Hide buffers when they are abandoned -"set mouse=a " Enable mouse usage (all modes) - -" Source a global configuration file if available -if filereadable("/etc/vim/vimrc.local") - source /etc/vim/vimrc.local -endif - -"Set the shell, required to make xclip work -set shell=/bin/sh - -syntax enable -set tabstop=4 -set softtabstop=4 -set shiftwidth=4 -set expandtab -set shiftwidth=0 -set number -set relativenumber -set cursorline -let g:airline_theme='gruvbox' -let g:airline_powerline_fonts = 1 -colorscheme gruvbox - -"Filetype support -filetype on -filetype plugin on -"Disable markdown cold folding -let g:vim_markdown_folding_disabled = 1 - -"Keybindings -map :set spell spellfile=~/.config/nvim/spell/wordlist.utf-8.spl - -"Set up some Asyncrun commands -let g:asyncrun_open=6 -"Set terminal for ipython setup -let g:slime_target = "neovim" -set splitbelow -set splitright -command! -nargs=* T split| resize 20 | terminal - -"Use netrw instead of NerdTree -let g:netrw_banner = 0 -let g:netrw_liststyle = 3 -let g:netrw_browse_split = 2 -let g:netrw_altv = 1 -let g:netrw_winsize = 25 -let g:NetrwIsOpen=0 -function! ToggleNetrw() - if g:NetrwIsOpen - let i = bufnr("$") - while (i >= 1) - if (getbufvar(i, "&filetype") == "netrw") - silent exe "bwipeout " . i - endif - let i-=1 - endwhile - let g:NetrwIsOpen=0 - else - let g:NetrwIsOpen=1 - silent Lexplore - endif -endfunction -noremap :call ToggleNetrw() - -"Disable cold folding in markdown plugin, and other options -let g:vim_markdown_folding_disabled=1 - -"Set default fortran type -let fortran_free_source=1 - -"Add open command -nnoremap gX :silent :execute - \ "!xdg-open" expand('%:p:h') . "/" . expand("") " &" - - -map -inoremap - -"calcurse commands -autocmd BufRead,BufNewFile /tmp/calcurse* set filetype=markdown -autocmd BufRead,BufNewFile ~/.calcurse/notes/* set filetype=markdown -"hi Normal guibg=NONE ctermbg=NONE -"Some autocommands -"Clean up when Latex exits -autocmd VimLeave *.tex ! cleanLatex %:r - -"Setup lua colorizer -set termguicolors -lua require'colorizer'.setup() - -"Set up telescope -lua require('telescope_settings') -nnoremap lua require('telescope').extensions.live_grep_args.live_grep_args(require('telescope.themes').get_ivy({})) -xnoremap "zy:lua require('telescope').extensions.live_grep_args.live_grep_args(require('telescope.themes').get_ivy({}))z -nnoremap Telescope find_files shorten_path=true theme=ivy -nnoremap Telescope live_grep grep_open_files=true theme=ivy -vnoremap "zy:Telescope live_grep grep_open_files=true theme=ivy z -" Change an option theme=ivy -" -"Some coc.nvim bindings -nnoremap gd call CocActionAsync('jumpDefinition') - -"Neomutt settings -autocmd BufNewFile,BufRead /tmp/neomutt* set noautoindent filetype=mail wm=0 tw=0 nonumber nolist -autocmd BufNewFile,BufRead ~/tmp/neomutt* set noautoindent filetype=mail wm=0 tw=0 nonumber nolist - -set mouse= - -"Change from ctrl-w+key to ctrl-key -nnoremap -nnoremap -nnoremap -nnoremap - - -"iron.nvim -lua require('iron') -set formatoptions-=o - -"autopair settings -lua require('autopair') - -"todo-comments -lua require("todo-comments").setup() -"Default width for everything nonw -set colorcolumn=100 -set tw=100 - -"Some jumping -inoremap ; /<++>"_c4l