From 7ec1fa7385c1b88a2efdad72c805b254c52084bd Mon Sep 17 00:00:00 2001 From: A Farzat Date: Wed, 6 Nov 2024 09:09:37 +0900 Subject: Remove nvim submodule Nvim config will be included as bare files instead of a submodule. The nvim config repo will still exist, but the content will be used by yadm without the repo itself. --- .config/nvim | 1 - .config/nvim/.luarc.jsonc | 15 ++++ .config/nvim/.stylua.toml | 3 + .config/nvim/LICENSE | 21 +++++ .config/nvim/README.md | 3 + .config/nvim/after/queries/css/folds.scm | 6 ++ .config/nvim/early-settings/nvim-tree.lua | 2 + .config/nvim/ftplugin/c.lua | 10 +++ .config/nvim/ftplugin/c.vim | 4 + .config/nvim/ftplugin/css.vim | 1 + .config/nvim/ftplugin/html.vim | 1 + .config/nvim/ftplugin/info.vim | 5 ++ .config/nvim/ftplugin/javascript.vim | 3 + .config/nvim/ftplugin/json.vim | 1 + .config/nvim/ftplugin/lua.vim | 3 + .config/nvim/ftplugin/markdown.vim | 3 + .config/nvim/ftplugin/netrw.vim | 1 + .config/nvim/ftplugin/processing.vim | 1 + .config/nvim/ftplugin/python.vim | 3 + .config/nvim/ftplugin/sh.vim | 2 + .config/nvim/ftplugin/tex.vim | 4 + .config/nvim/global-mappings.vim | 23 ++++++ .config/nvim/init.vim | 21 +++++ .config/nvim/plugin-settings/Comment.lua | 3 + .config/nvim/plugin-settings/fzf.vim | 1 + .config/nvim/plugin-settings/indent-blankline.lua | 35 ++++++++ .config/nvim/plugin-settings/lspconfig.lua | 94 ++++++++++++++++++++++ .config/nvim/plugin-settings/luasnip.lua | 32 ++++++++ .config/nvim/plugin-settings/netrw.nvim.lua | 1 + .config/nvim/plugin-settings/nnn.nvim.lua | 18 +++++ .config/nvim/plugin-settings/null-ls.lua | 8 ++ .config/nvim/plugin-settings/nvim-cmp.lua | 56 +++++++++++++ .config/nvim/plugin-settings/nvim-miniyank.vim | 10 +++ .config/nvim/plugin-settings/nvim-tree.lua | 19 +++++ .config/nvim/plugin-settings/nvim-treesitter.lua | 13 +++ .config/nvim/plugin-settings/nvim-ts-autotag.lua | 8 ++ .config/nvim/plugin-settings/orgmode.lua | 7 ++ .config/nvim/plugin-settings/vim-airline.vim | 1 + .../nvim/plugin-settings/vim-better-whitespace.vim | 4 + .config/nvim/plugin-settings/vimtex.vim | 7 ++ .config/nvim/plugins.vim | 80 ++++++++++++++++++ .config/nvim/regular.vim | 49 +++++++++++ 42 files changed, 582 insertions(+), 1 deletion(-) delete mode 160000 .config/nvim create mode 100644 .config/nvim/.luarc.jsonc create mode 100644 .config/nvim/.stylua.toml create mode 100644 .config/nvim/LICENSE create mode 100644 .config/nvim/README.md create mode 100644 .config/nvim/after/queries/css/folds.scm create mode 100644 .config/nvim/early-settings/nvim-tree.lua create mode 100644 .config/nvim/ftplugin/c.lua create mode 100644 .config/nvim/ftplugin/c.vim create mode 100644 .config/nvim/ftplugin/css.vim create mode 100644 .config/nvim/ftplugin/html.vim create mode 100644 .config/nvim/ftplugin/info.vim create mode 100644 .config/nvim/ftplugin/javascript.vim create mode 100644 .config/nvim/ftplugin/json.vim create mode 100644 .config/nvim/ftplugin/lua.vim create mode 100644 .config/nvim/ftplugin/markdown.vim create mode 100644 .config/nvim/ftplugin/netrw.vim create mode 100644 .config/nvim/ftplugin/processing.vim create mode 100644 .config/nvim/ftplugin/python.vim create mode 100644 .config/nvim/ftplugin/sh.vim create mode 100644 .config/nvim/ftplugin/tex.vim create mode 100644 .config/nvim/global-mappings.vim create mode 100644 .config/nvim/init.vim create mode 100644 .config/nvim/plugin-settings/Comment.lua create mode 100644 .config/nvim/plugin-settings/fzf.vim create mode 100644 .config/nvim/plugin-settings/indent-blankline.lua create mode 100644 .config/nvim/plugin-settings/lspconfig.lua create mode 100644 .config/nvim/plugin-settings/luasnip.lua create mode 100644 .config/nvim/plugin-settings/netrw.nvim.lua create mode 100644 .config/nvim/plugin-settings/nnn.nvim.lua create mode 100644 .config/nvim/plugin-settings/null-ls.lua create mode 100644 .config/nvim/plugin-settings/nvim-cmp.lua create mode 100644 .config/nvim/plugin-settings/nvim-miniyank.vim create mode 100644 .config/nvim/plugin-settings/nvim-tree.lua create mode 100644 .config/nvim/plugin-settings/nvim-treesitter.lua create mode 100644 .config/nvim/plugin-settings/nvim-ts-autotag.lua create mode 100644 .config/nvim/plugin-settings/orgmode.lua create mode 100644 .config/nvim/plugin-settings/vim-airline.vim create mode 100644 .config/nvim/plugin-settings/vim-better-whitespace.vim create mode 100644 .config/nvim/plugin-settings/vimtex.vim create mode 100644 .config/nvim/plugins.vim create mode 100644 .config/nvim/regular.vim (limited to '.config') diff --git a/.config/nvim b/.config/nvim deleted file mode 160000 index 8e5b57c..0000000 --- a/.config/nvim +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8e5b57c2cb69e5a6929ad5b12645b0a900eeb074 diff --git a/.config/nvim/.luarc.jsonc b/.config/nvim/.luarc.jsonc new file mode 100644 index 0000000..e976381 --- /dev/null +++ b/.config/nvim/.luarc.jsonc @@ -0,0 +1,15 @@ +// Copied from https://github.com/nvim-tree/nvim-tree.lua/blob/master/.luarc.json +{ + "$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json", + "runtime.version": "LuaJIT", + "workspace": { + "library": [ + "$VIMRUNTIME/lua/vim", + "${3rd}/luv/library" + ] + }, + "diagnostics": { + "libraryFiles": "Disable", + "globals": [] + } +} diff --git a/.config/nvim/.stylua.toml b/.config/nvim/.stylua.toml new file mode 100644 index 0000000..e4a60f0 --- /dev/null +++ b/.config/nvim/.stylua.toml @@ -0,0 +1,3 @@ +column_width = 80 +indent_type = "Spaces" +indent_width = 2 diff --git a/.config/nvim/LICENSE b/.config/nvim/LICENSE new file mode 100644 index 0000000..b7a83ba --- /dev/null +++ b/.config/nvim/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 A Farzat + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.config/nvim/README.md b/.config/nvim/README.md new file mode 100644 index 0000000..cbbefed --- /dev/null +++ b/.config/nvim/README.md @@ -0,0 +1,3 @@ +# Vim config + +My vim configuration files diff --git a/.config/nvim/after/queries/css/folds.scm b/.config/nvim/after/queries/css/folds.scm new file mode 100644 index 0000000..94c23e7 --- /dev/null +++ b/.config/nvim/after/queries/css/folds.scm @@ -0,0 +1,6 @@ +; extends +[ + ;; Use :InspectTree to find the relevant nodes. + (block) + (keyframe_block_list)+ +] @fold diff --git a/.config/nvim/early-settings/nvim-tree.lua b/.config/nvim/early-settings/nvim-tree.lua new file mode 100644 index 0000000..5db19d7 --- /dev/null +++ b/.config/nvim/early-settings/nvim-tree.lua @@ -0,0 +1,2 @@ +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 diff --git a/.config/nvim/ftplugin/c.lua b/.config/nvim/ftplugin/c.lua new file mode 100644 index 0000000..d6e872d --- /dev/null +++ b/.config/nvim/ftplugin/c.lua @@ -0,0 +1,10 @@ +vim.api.nvim_buf_create_user_command(0, "ToggleComment", function() + if + require("Comment.ft").get("c", require("Comment.utils").ctype.linewise) + == "//%s" + then + require("Comment.ft").set("c", "/*%s*/") + else + require("Comment.ft").set("c", "//%s") + end +end, {}) diff --git a/.config/nvim/ftplugin/c.vim b/.config/nvim/ftplugin/c.vim new file mode 100644 index 0000000..1550367 --- /dev/null +++ b/.config/nvim/ftplugin/c.vim @@ -0,0 +1,4 @@ +command-buffer Compile w | make %:r:S +command-buffer CompileM w | !gcc -o %:r:S %:S -lm +command-buffer Make w | !make %:r:S +command-buffer -nargs=* Run split | terminal chmod +x %:p:S; %:p:S diff --git a/.config/nvim/ftplugin/css.vim b/.config/nvim/ftplugin/css.vim new file mode 100644 index 0000000..46cf568 --- /dev/null +++ b/.config/nvim/ftplugin/css.vim @@ -0,0 +1 @@ +setlocal tabstop=2 diff --git a/.config/nvim/ftplugin/html.vim b/.config/nvim/ftplugin/html.vim new file mode 100644 index 0000000..46cf568 --- /dev/null +++ b/.config/nvim/ftplugin/html.vim @@ -0,0 +1 @@ +setlocal tabstop=2 diff --git a/.config/nvim/ftplugin/info.vim b/.config/nvim/ftplugin/info.vim new file mode 100644 index 0000000..f725e8d --- /dev/null +++ b/.config/nvim/ftplugin/info.vim @@ -0,0 +1,5 @@ +if &buftype =~? 'nofile' + nmap gu (InfoUp) + nmap gn (InfoNext) + nmap gp (InfoPrev) +endif diff --git a/.config/nvim/ftplugin/javascript.vim b/.config/nvim/ftplugin/javascript.vim new file mode 100644 index 0000000..0269951 --- /dev/null +++ b/.config/nvim/ftplugin/javascript.vim @@ -0,0 +1,3 @@ +command-buffer -nargs=* Run split | terminal chmod +x %:p:S; %:p:S +command-buffer -nargs=* WRun w | Run +setlocal tabstop=2 diff --git a/.config/nvim/ftplugin/json.vim b/.config/nvim/ftplugin/json.vim new file mode 100644 index 0000000..46cf568 --- /dev/null +++ b/.config/nvim/ftplugin/json.vim @@ -0,0 +1 @@ +setlocal tabstop=2 diff --git a/.config/nvim/ftplugin/lua.vim b/.config/nvim/ftplugin/lua.vim new file mode 100644 index 0000000..0269951 --- /dev/null +++ b/.config/nvim/ftplugin/lua.vim @@ -0,0 +1,3 @@ +command-buffer -nargs=* Run split | terminal chmod +x %:p:S; %:p:S +command-buffer -nargs=* WRun w | Run +setlocal tabstop=2 diff --git a/.config/nvim/ftplugin/markdown.vim b/.config/nvim/ftplugin/markdown.vim new file mode 100644 index 0000000..9994a22 --- /dev/null +++ b/.config/nvim/ftplugin/markdown.vim @@ -0,0 +1,3 @@ +setlocal tabstop=4 +command-buffer Run !linkhandler %:S +command-buffer WRun w | Run diff --git a/.config/nvim/ftplugin/netrw.vim b/.config/nvim/ftplugin/netrw.vim new file mode 100644 index 0000000..2313255 --- /dev/null +++ b/.config/nvim/ftplugin/netrw.vim @@ -0,0 +1 @@ +setlocal textwidth=0 diff --git a/.config/nvim/ftplugin/processing.vim b/.config/nvim/ftplugin/processing.vim new file mode 100644 index 0000000..2550b8e --- /dev/null +++ b/.config/nvim/ftplugin/processing.vim @@ -0,0 +1 @@ +command-buffer WRun w | make diff --git a/.config/nvim/ftplugin/python.vim b/.config/nvim/ftplugin/python.vim new file mode 100644 index 0000000..6dd1221 --- /dev/null +++ b/.config/nvim/ftplugin/python.vim @@ -0,0 +1,3 @@ +command-buffer -nargs=* Run split | terminal chmod +x %:p:S; %:p:S +command-buffer -nargs=* WRun w | Run +setlocal textwidth=79 diff --git a/.config/nvim/ftplugin/sh.vim b/.config/nvim/ftplugin/sh.vim new file mode 100644 index 0000000..9d9e5a4 --- /dev/null +++ b/.config/nvim/ftplugin/sh.vim @@ -0,0 +1,2 @@ +command-buffer -nargs=* Run split | terminal chmod +x %:p:S; %:p:S +command-buffer -nargs=* WRun w | Run diff --git a/.config/nvim/ftplugin/tex.vim b/.config/nvim/ftplugin/tex.vim new file mode 100644 index 0000000..783fab6 --- /dev/null +++ b/.config/nvim/ftplugin/tex.vim @@ -0,0 +1,4 @@ +" Settings for tex files. +setlocal keywordprg=texdoc +setlocal spell spelllang=en +setlocal tabstop=2 diff --git a/.config/nvim/global-mappings.vim b/.config/nvim/global-mappings.vim new file mode 100644 index 0000000..6fddc08 --- /dev/null +++ b/.config/nvim/global-mappings.vim @@ -0,0 +1,23 @@ +" Windows navigation. +nnoremap +nnoremap +nnoremap +nnoremap + +" Mkdir for the current file. +command MkCurDir :!mkdir %:h:S -p + +" Copy the last used register to the clipboard. +command Clipboard :call system('cclip', @") + +" Reload settings. +command Source :source $MYVIMRC + +" Automatically starts terminal emulator in insert mode. +autocmd TermOpen * startinsert +tnoremap h +" Workaround since isn't working in neovim right now +" tnoremap h h +tnoremap j +tnoremap k +tnoremap l diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim new file mode 100644 index 0000000..29132c3 --- /dev/null +++ b/.config/nvim/init.vim @@ -0,0 +1,21 @@ +" Some settings need to be made before loading the plugins. +for fileName in globpath(stdpath("config") .. '/early-settings', '*', 0, 1) + execute 'source ' . fnameescape(fileName) +endfor + +" Install and manage the plugins. +source :p:h/plugins.vim + +" Regular settings. +source :p:h/regular.vim + +" Global mappings. +source :p:h/global-mappings.vim + +" Plugin config. +for fileName in globpath(stdpath("config") .. '/plugin-settings', '*', 0, 1) + execute 'source ' . fnameescape(fileName) +endfor + +" Emmit.vim settings. +let g:user_emmet_expandabbr_key = 'y' diff --git a/.config/nvim/plugin-settings/Comment.lua b/.config/nvim/plugin-settings/Comment.lua new file mode 100644 index 0000000..d063eac --- /dev/null +++ b/.config/nvim/plugin-settings/Comment.lua @@ -0,0 +1,3 @@ +require('Comment').setup({ + ignore = '^$' +}) diff --git a/.config/nvim/plugin-settings/fzf.vim b/.config/nvim/plugin-settings/fzf.vim new file mode 100644 index 0000000..c8eb64e --- /dev/null +++ b/.config/nvim/plugin-settings/fzf.vim @@ -0,0 +1 @@ +let g:fzf_command_prefix = 'Fzf' diff --git a/.config/nvim/plugin-settings/indent-blankline.lua b/.config/nvim/plugin-settings/indent-blankline.lua new file mode 100644 index 0000000..a0f1096 --- /dev/null +++ b/.config/nvim/plugin-settings/indent-blankline.lua @@ -0,0 +1,35 @@ +vim.api.nvim_set_hl(0, "IblScope", { ctermfg = "Gray" }) +vim.api.nvim_set_hl(0, "IblWhitespace", { ctermfg = "DarkGray" }) +vim.api.nvim_set_hl(0, "RainbowRed", { ctermfg = "Red" }) +vim.api.nvim_set_hl(0, "RainbowYellow", { ctermfg = "Yellow" }) +vim.api.nvim_set_hl(0, "RainbowBlue", { ctermfg = "Blue" }) +vim.api.nvim_set_hl(0, "RainbowGreen", { ctermfg = "Green" }) +vim.api.nvim_set_hl(0, "RainbowMagenta", { ctermfg = "Magenta" }) +vim.api.nvim_set_hl(0, "RainbowCyan", { ctermfg = "Cyan" }) + +local highlight = { + "RainbowRed", + "RainbowYellow", + "RainbowBlue", + "RainbowGreen", + "RainbowMagenta", + "RainbowCyan", +} + +require("ibl").setup { + indent = { + char = "›", + highlight = highlight, + }, +} + +vim.opt.list = true +vim.opt.listchars = { + tab = "» ⇥", + lead = "·", + trail = "␣", + nbsp = "⍽", + extends = "❯", + precedes = "❮", + eol = "↴", +} diff --git a/.config/nvim/plugin-settings/lspconfig.lua b/.config/nvim/plugin-settings/lspconfig.lua new file mode 100644 index 0000000..150db34 --- /dev/null +++ b/.config/nvim/plugin-settings/lspconfig.lua @@ -0,0 +1,94 @@ +local lspconfig = require("lspconfig") + +-- Mappings. +-- See `:help vim.diagnostic.*` for documentation on any of the below functions +local opts = { noremap = true, silent = true } +vim.keymap.set("n", "e", vim.diagnostic.open_float, opts) +vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) +vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts) +vim.keymap.set("n", "q", vim.diagnostic.setloclist, opts) +-- See `:help vim.lsp.*` for documentation on any of the below functions +vim.keymap.set("n", "D", vim.lsp.buf.declaration, opts) +vim.keymap.set("n", "d", vim.lsp.buf.definition, opts) +vim.keymap.set("n", "k", vim.lsp.buf.hover, opts) +vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) +vim.keymap.set("n", "sh", vim.lsp.buf.signature_help, opts) +vim.keymap.set("n", "wa", vim.lsp.buf.add_workspace_folder, opts) +vim.keymap.set("n", "wr", vim.lsp.buf.remove_workspace_folder, opts) +vim.keymap.set("n", "wl", function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) +end, opts) +vim.keymap.set("n", "D", vim.lsp.buf.type_definition, opts) +vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) +vim.keymap.set("n", "ca", vim.lsp.buf.code_action, opts) +vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) +vim.keymap.set("n", "f", function() + vim.lsp.buf.format({ async = true }) +end, opts) + +-- Use an on_attach function to only map the following keys +-- after the language server attaches to the current buffer +local on_attach = function(_, bufnr) + vim.api.nvim_set_option_value( -- Enable completion triggered by + "omnifunc", + "v:lua.vim.lsp.omnifunc", + { buf = bufnr } + ) +end + +-- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +local simple_servers = { + "bashls", + "clangd", + "cssls", + "emmet_language_server", + "jedi_language_server", + "jsonls", + "remark_ls", + "texlab", + "vimls", + "yamlls", +} +for _, lsp in ipairs(simple_servers) do + lspconfig[lsp].setup({ capabilities = capabilities, on_attach = on_attach }) +end + +require("lspconfig").lua_ls.setup({ + on_init = function(client) + if client.workspace_folders then + local path = client.workspace_folders[1].name + if + vim.uv.fs_stat(path .. "/.luarc.json") + or vim.uv.fs_stat(path .. "/.luarc.jsonc") + then + return + end + end + + client.config.settings.Lua = + vim.tbl_deep_extend("force", client.config.settings.Lua, { + runtime = { + -- Tell the language server which version of Lua you're using + -- (most likely LuaJIT in the case of Neovim) + version = "LuaJIT", + }, + -- Make the server aware of Neovim runtime files + workspace = { + checkThirdParty = false, + library = { + vim.env.VIMRUNTIME, + -- Depending on the usage, you might want to add additional paths here. + -- "${3rd}/luv/library" + -- "${3rd}/busted/library", + }, + -- or pull in all of 'runtimepath'. NOTE: this is a lot slower + -- library = vim.api.nvim_get_runtime_file("", true) + }, + }) + end, + settings = { + Lua = {}, + }, +}) diff --git a/.config/nvim/plugin-settings/luasnip.lua b/.config/nvim/plugin-settings/luasnip.lua new file mode 100644 index 0000000..c8cd578 --- /dev/null +++ b/.config/nvim/plugin-settings/luasnip.lua @@ -0,0 +1,32 @@ +local luasnip = require("luasnip") + +require("luasnip.loaders.from_vscode").lazy_load() + +local opts = { noremap = true, silent = true } + +vim.keymap.set("i", "", function() + luasnip.expand() +end, opts) +vim.keymap.set("s", "", function() + luasnip.expand() +end, opts) +vim.keymap.set("i", "", function() + if luasnip.jumpable(1) then + luasnip.jump(1) + end +end, opts) +vim.keymap.set("s", "", function() + if luasnip.jumpable(1) then + luasnip.jump(1) + end +end, opts) +vim.keymap.set("i", "", function() + if luasnip.jumpable(-1) then + luasnip.jump(-1) + end +end, opts) +vim.keymap.set("s", "", function() + if luasnip.jumpable(-1) then + luasnip.jump(-1) + end +end, opts) diff --git a/.config/nvim/plugin-settings/netrw.nvim.lua b/.config/nvim/plugin-settings/netrw.nvim.lua new file mode 100644 index 0000000..ff07d03 --- /dev/null +++ b/.config/nvim/plugin-settings/netrw.nvim.lua @@ -0,0 +1 @@ +require("netrw").setup({}) diff --git a/.config/nvim/plugin-settings/nnn.nvim.lua b/.config/nvim/plugin-settings/nnn.nvim.lua new file mode 100644 index 0000000..dbdf7b2 --- /dev/null +++ b/.config/nvim/plugin-settings/nnn.nvim.lua @@ -0,0 +1,18 @@ +local builtin = require("nnn").builtin +require("nnn").setup({ + explorer = { + cmd = "n3", -- command overrride (-F1 flag is implied, -a flag is invalid!) + }, + picker = { + cmd = "n3 -a -Pp", -- command override (-p flag is implied) + }, + mappings = { + { "", builtin.open_in_tab }, -- open file(s) in tab + { "", builtin.open_in_split }, -- open file(s) in split + { "", builtin.open_in_vsplit }, -- open file(s) in vertical split + { "", builtin.open_in_preview }, -- open file in preview split keeping nnn focused + { "", builtin.copy_to_clipboard }, -- copy file(s) to clipboard + { "", builtin.cd_to_path }, -- cd to file directory + { "", builtin.populate_cmdline }, -- populate cmdline (:) with file(s) + }, +}) diff --git a/.config/nvim/plugin-settings/null-ls.lua b/.config/nvim/plugin-settings/null-ls.lua new file mode 100644 index 0000000..4895ee3 --- /dev/null +++ b/.config/nvim/plugin-settings/null-ls.lua @@ -0,0 +1,8 @@ +local null_ls = require("null-ls") + +null_ls.setup({ + sources = { + null_ls.builtins.formatting.stylua, + null_ls.builtins.diagnostics.markdownlint, + }, +}) diff --git a/.config/nvim/plugin-settings/nvim-cmp.lua b/.config/nvim/plugin-settings/nvim-cmp.lua new file mode 100644 index 0000000..defc39e --- /dev/null +++ b/.config/nvim/plugin-settings/nvim-cmp.lua @@ -0,0 +1,56 @@ +local cmp = require("cmp") +local luasnip = require("luasnip") + +cmp.setup({ + enabled = true, + snippet = { + expand = function(args) -- REQUIRED - you must specify a snippet engine + require("luasnip").lsp_expand(args.body) -- For `luasnip` users. + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [""] = cmp.mapping(function() + if luasnip.jumpable(1) then + luasnip.jump(1) + end + end, { "i", "s" }), + [""] = cmp.mapping(function() + if luasnip.jumpable(-1) then + luasnip.jump(-1) + end + end, { "i", "s" }), + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "nvim_lua" }, + }, { + { name = "buffer" }, + { name = "path" }, + }), +}) + +-- 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" }, + }), +}) diff --git a/.config/nvim/plugin-settings/nvim-miniyank.vim b/.config/nvim/plugin-settings/nvim-miniyank.vim new file mode 100644 index 0000000..a6469f9 --- /dev/null +++ b/.config/nvim/plugin-settings/nvim-miniyank.vim @@ -0,0 +1,10 @@ +nmap (miniyank-cycle) +nmap (miniyank-cycleback) +map p (miniyank-autoput) +map P (miniyank-autoPut) +map p (miniyank-startput) +map P (miniyank-startPut) +map yc (miniyank-tochar) +map yl (miniyank-toline) +map yb (miniyank-toblock) +let g:miniyank_filename = stdpath("cache")."/.miniyank.mpack" diff --git a/.config/nvim/plugin-settings/nvim-tree.lua b/.config/nvim/plugin-settings/nvim-tree.lua new file mode 100644 index 0000000..a8dcd46 --- /dev/null +++ b/.config/nvim/plugin-settings/nvim-tree.lua @@ -0,0 +1,19 @@ +local function my_on_attach(bufnr) + local api = require "nvim-tree.api" + + local function opts(desc) + return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } + end + + -- default mappings + api.config.mappings.default_on_attach(bufnr) + + -- custom mappings + vim.keymap.set('n', '', api.tree.change_root_to_parent, opts('Up')) + vim.keymap.set('n', '?', api.tree.toggle_help, opts('Help')) +end + +-- pass to setup along with your other options +require("nvim-tree").setup { + on_attach = my_on_attach, +} diff --git a/.config/nvim/plugin-settings/nvim-treesitter.lua b/.config/nvim/plugin-settings/nvim-treesitter.lua new file mode 100644 index 0000000..4afe91e --- /dev/null +++ b/.config/nvim/plugin-settings/nvim-treesitter.lua @@ -0,0 +1,13 @@ +require("nvim-treesitter.configs").setup({ + -- A list of parser names, or "all" (the four listed parsers should always be installed) + ensure_installed = { "c", "lua", "vim" }, + ignore_install = { "org" }, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + + highlight = { + enable = true, + }, +}) diff --git a/.config/nvim/plugin-settings/nvim-ts-autotag.lua b/.config/nvim/plugin-settings/nvim-ts-autotag.lua new file mode 100644 index 0000000..92c7ea3 --- /dev/null +++ b/.config/nvim/plugin-settings/nvim-ts-autotag.lua @@ -0,0 +1,8 @@ +require('nvim-ts-autotag').setup({ + opts = { + -- Defaults + enable_close = true, -- Auto close tags + enable_rename = true, -- Auto rename pairs of tags + enable_close_on_slash = false -- Auto close on trailing firenvim#install(0) } } " Embed Neovim in your browser. +endif + +" Depending on whether vim or nvim is running. +if has('nvim') + "Plug 'https://github.com/Shougo/denite.nvim', { 'do': ':UpdateRemotePlugins' } " Dark powered asynchronous unite all interfaces for Neovim/Vim8. +else + Plug 'https://github.com/Shougo/denite.nvim' " Dark powered asynchronous unite all interfaces for Neovim/Vim8. + Plug 'https://github.com/roxma/nvim-yarp' " Yet Another Remote Plugin Framework for Neovim. + Plug 'https://github.com/roxma/vim-hug-neovim-rpc' +endif + +" Initialize plugin system. +call plug#end() diff --git a/.config/nvim/regular.vim b/.config/nvim/regular.vim new file mode 100644 index 0000000..9f907df --- /dev/null +++ b/.config/nvim/regular.vim @@ -0,0 +1,49 @@ +" Highlight search results, turned off for a search by :noh. +set hlsearch + +" Leave 5 lines above/below when scrolling. +set scrolloff=5 + +" Turn on line numbering. +set number +set relativenumber + +" Use the wal colorscheme from the plugin if available. +colorscheme wal + +" Add a red column after textwidth limit. +set colorcolumn=+1 + +" Set the indentation +set tabstop=4 +set shiftwidth=0 + +" Format files linux style. +if &modifiable==1 + set fileformat=unix +endif + +" Save swap files in the same directory as the edited file. +"let &directory=".," .. &directory + +" Enable plugins to be loaded based on file type. +filetype plugin on + +" Do not change the shape of the letter based on its position in the word. +" When viewing right-to-left shape change can be very confusing. +set noarabicshape + +" Set keymap to Arabic in case typing in Arabic was desired. +" But set iminsert=0 to have English mapping at first. Switch using i_CTRL-^. +set keymap=arabic +set iminsert=0 + +" Folding based on treesitter +set foldmethod=expr +set foldexpr=nvim_treesitter#foldexpr() + +" Disable mouse. +set mouse= + +" Specify the python3 host program. +let g:python3_host_prog = '/usr/bin/python3' -- cgit v1.2.3-70-g09d2