diff --git a/home/.local/Apps/neovim-distros/lunarvim/config.lua b/home/.local/Apps/neovim-distros/lunarvim/config.lua new file mode 100644 index 0000000..b8cba54 --- /dev/null +++ b/home/.local/Apps/neovim-distros/lunarvim/config.lua @@ -0,0 +1,218 @@ +--[[ + THESE ARE EXAMPLE CONFIGS FEEL FREE TO CHANGE TO WHATEVER YOU WANT + `lvim` is the global options object +]] +-- vim options +vim.opt.shiftwidth = 2 +vim.opt.tabstop = 2 +vim.opt.relativenumber = true + +-- general +lvim.log.level = "info" +lvim.format_on_save = { + enabled = true, + pattern = "*.lua", + timeout = 1000, +} +-- to disable icons and use a minimalist setup, uncomment the following +-- lvim.use_icons = false + +-- keymappings +lvim.leader = "space" +-- add your own keymapping +lvim.keys.normal_mode[""] = ":w" + +-- lvim.keys.normal_mode[""] = ":BufferLineCycleNext" +-- lvim.keys.normal_mode[""] = ":BufferLineCyclePrev" + +-- -- Use which-key to add extra bindings with the leader-key prefix +-- lvim.builtin.which_key.mappings["W"] = { "noautocmd w", "Save without formatting" } +-- lvim.builtin.which_key.mappings["P"] = { "Telescope projects", "Projects" } + +-- -- Change theme settings +-- lvim.colorscheme = "lunar" + +lvim.builtin.alpha.active = true +lvim.builtin.alpha.mode = "dashboard" +lvim.builtin.terminal.active = true +lvim.builtin.nvimtree.setup.view.side = "left" +lvim.builtin.nvimtree.setup.renderer.icons.show.git = false + +-- Automatically install missing parsers when entering buffer +lvim.builtin.treesitter.auto_install = true + +-- lvim.builtin.treesitter.ignore_install = { "haskell" } + +-- -- always installed on startup, useful for parsers without a strict filetype +-- lvim.builtin.treesitter.ensure_installed = { "comment", "markdown_inline", "regex" } + +-- -- generic LSP settings + +-- --- disable automatic installation of servers +-- lvim.lsp.installer.setup.automatic_installation = false + +-- ---configure a server manually. IMPORTANT: Requires `:LvimCacheReset` to take effect +-- ---see the full default list `:lua =lvim.lsp.automatic_configuration.skipped_servers` +-- vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "pyright" }) +-- local opts = {} -- check the lspconfig documentation for a list of all possible options +-- require("lvim.lsp.manager").setup("pyright", opts) + +-- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. IMPORTANT: Requires `:LvimCacheReset` to take effect +-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype +-- lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server) +-- return server ~= "emmet_ls" +-- end, lvim.lsp.automatic_configuration.skipped_servers) + +-- -- you can set a custom on_attach function that will be used for all the language servers +-- -- See +-- lvim.lsp.on_attach_callback = function(client, bufnr) +-- local function buf_set_option(...) +-- vim.api.nvim_buf_set_option(bufnr, ...) +-- end +-- --Enable completion triggered by +-- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") +-- end + +-- -- linters and formatters +-- local formatters = require "lvim.lsp.null-ls.formatters" +-- formatters.setup { +-- { command = "stylua" }, +-- { +-- command = "prettier", +-- extra_args = { "--print-width", "100" }, +-- filetypes = { "typescript", "typescriptreact" }, +-- }, +-- } +-- local linters = require "lvim.lsp.null-ls.linters" +-- linters.setup { +-- { command = "flake8", filetypes = { "python" } }, +-- { +-- command = "shellcheck", +-- args = { "--severity", "warning" }, +-- }, +-- } + +-- -- Additional Plugins +-- lvim.plugins = { +-- { +-- "folke/trouble.nvim", +-- cmd = "TroubleToggle", +-- }, +-- } + +-- -- Autocommands (`:help autocmd`) +-- vim.api.nvim_create_autocmd("FileType", { +-- pattern = "zsh", +-- callback = function() +-- -- let treesitter use bash highlight for zsh files as well +-- require("nvim-treesitter.highlight").attach(0, "bash") +-- end, +-- }) + + +vim.cmd([[ +command! -nargs=+ Gr :silent execute 'grep! -nr "" | copen' +" Raw version of Gr command. +command! -nargs=* Grc grep -nr + +" Add file header to current buffer. Depends on https://github.com/harish2704/file-header +command! Header :execute '0r!file-header %' + +" Open Terminal in split window +command! Termw :execute '!konsole -e bash-session &' +command! Term :execute 'sp | term' + +" Cd to current file's directory +command! Cwd :execute 'cd %:p:h' + +" Cd to current file's directory, but limit to current tab +command! Tcd :execute ':tcd %:p:h' + +" Reload current buffer +command! Reload :execute "bufdo execute 'checktime . bufnr('%')'" + +" Delete current file and close buffer +command! Rm :execute '!rm %' | bd + +" Copy current file path to unnamedplus register +command! CopyFilename :let @+=@% + +" Open vscode in on current line +command! Code :execute "!code ./ -g %:". ( line('.')+1 ) + +" For Open a terminal in current directory +nmap t :!xdg-terminal& +" Open git-gui in current pwd +nmap g :!git gui & + +" -> Reload current file +nmap :e! + +" Alt-q Delete current buffer ( Close file ) +nmap :bd + +" force Close buffer +nmap :bd! + +" Select a word and press Ctrl-h to replace all its occurance, even if the word is having special chars +vmap "fy:%s#f# +" Copy current word to 'f' register, search for that word +vmap "fy/f + +" Ctrl-Enter in insert mode will append ';' to the line and insert a new line +imap A; + +" Alt + Arrows to Moving cursor to different windows {{{ +nmap k +nmap j +nmap l +nmap h +" }}} + +" For terminal mod {{{ +tmap +tmap +tmap k +tmap j +tmap l +tmap h +" }}} + +set grepprg=ag\ --nogroup\ --nocolor + +nmap :Gr + +" Ctrl-Shift-T -> Open new tab +nmap :tabedit + +" Ctrl-S to save file {{{ +nmap :w +vmap gv +imap +nmap :BufferLineCyclePrev +nmap :BufferLineCycleNext +]]) +lvim.builtin.dap.active = true + +local dap = require('dap') +dap.adapters.php = { + type = 'executable', + command = 'node', + args = { + '/home/harish/tmp/nvim-configs/lunarvim/share/nvim/mason/packages/php-debug-adapter/extension/out/phpDebug.js' } +} + +dap.configurations.php = { + { + type = 'php', + request = 'launch', + name = 'Listen for Xdebug', + port = 9003 + } +} + +lvim.plugins = { + { + "gpanders/editorconfig.nvim", + }, +} diff --git a/home/.local/Apps/neovim-distros/lvim.sh b/home/.local/Apps/neovim-distros/lvim.sh new file mode 100755 index 0000000..0660362 --- /dev/null +++ b/home/.local/Apps/neovim-distros/lvim.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +THIS_DIR=$(dirname $(readlink -f $0)) + +env PKG=lunarvim alacritty -e "$THIS_DIR/nvim.sh" "$@" & diff --git a/home/.local/Apps/neovim-distros/nvim.sh b/home/.local/Apps/neovim-distros/nvim.sh new file mode 100755 index 0000000..014eb44 --- /dev/null +++ b/home/.local/Apps/neovim-distros/nvim.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +THIS_DIR=$(dirname $(readlink -f $0)) + +nvconf="$THIS_DIR/$PKG" + +if [[ -d $nvconf ]]; then + mkdir -p $nvconf/cache + env XDG_CACHE_DIR=$nvconf/cache XDG_CACHE_HOME=$nvconf/cache XDG_DATA_HOME=$nvconf/share XDG_CONFIG_HOME=$nvconf nvim $@ +else + echo "invalid \$PKG. Available values:" + ls `dirname $nvconf` +fi