diff --git a/.github/ISSUE_TEMPLATE/general-issue-form.yaml b/.github/ISSUE_TEMPLATE/general-issue-form.yaml new file mode 100644 index 00000000..4571fa12 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/general-issue-form.yaml @@ -0,0 +1,60 @@ +name: General Issue +description: File a bug report +title: "[Bug]: " +labels: [bug] +# assignees: +# - ChristianChiarulli +body: + - type: markdown + attributes: + value: | + Thank you for helping us improve ! + - type: textarea + id: problem-description + attributes: + label: Problem description + description: Also tell us, what did you expect to happen? + placeholder: | + Steps to reproduce the behavior: + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true + - type: input + id: lunar-vim-version + attributes: + label: LunarVim version + validations: + required: true + - type: input + id: nvim-version + attributes: + label: Neovim version (>= 0.5) + placeholder: nvim --version + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant log output + placeholder: | + nvim -v + :checkhealth + :messages + render: shell + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: If applicable, add screenshots to help explain your problem + - type: checkboxes + id: checks + attributes: + label: I have read + options: + - label: The readme + required: true + - label: The wiki + required: true diff --git a/ftdetect/zig.lua b/ftdetect/zig.lua new file mode 100644 index 00000000..81e901ca --- /dev/null +++ b/ftdetect/zig.lua @@ -0,0 +1,4 @@ +vim.cmd([[ + au BufRead,BufNewFile *.zig set filetype=zig + au BufRead,BufNewFile *.zir set filetype=zir +]]) diff --git a/ftplugin/cpp.lua b/ftplugin/cpp.lua new file mode 120000 index 00000000..d2be5311 --- /dev/null +++ b/ftplugin/cpp.lua @@ -0,0 +1 @@ +c.lua \ No newline at end of file diff --git a/ftplugin/elixir.lua b/ftplugin/elixir.lua index 418b4c4d..362ee010 100644 --- a/ftplugin/elixir.lua +++ b/ftplugin/elixir.lua @@ -3,8 +3,8 @@ require'lspconfig'.elixirls.setup{ } -- needed for the LSP to recognize elixir files (alternativly just use elixir-editors/vim-elixir) -vim.cmd([[ - au BufRead,BufNewFile *.ex,*.exs set filetype=elixir - au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir - au BufRead,BufNewFile mix.lock set filetype=elixir -]]) \ No newline at end of file +-- vim.cmd([[ +-- au BufRead,BufNewFile *.ex,*.exs set filetype=elixir +-- au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir +-- au BufRead,BufNewFile mix.lock set filetype=elixir +-- ]]) diff --git a/ftplugin/euphoria3.lua b/ftplugin/euphoria3.lua new file mode 100644 index 00000000..adc0ac7d --- /dev/null +++ b/ftplugin/euphoria3.lua @@ -0,0 +1,11 @@ +-- TODO Remove this at some point +require'lspconfig'.elixirls.setup{ + cmd = { DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh"}; +} + +-- needed for the LSP to recognize elixir files (alternativly just use elixir-editors/vim-elixir) +-- vim.cmd([[ +-- au BufRead,BufNewFile *.ex,*.exs set filetype=elixir +-- au BufRead,BufNewFile *.eex,*.leex,*.sface set filetype=eelixir +-- au BufRead,BufNewFile mix.lock set filetype=elixir +-- ]]) diff --git a/ftplugin/python.lua b/ftplugin/python.lua index 7ae0d6fd..23e54880 100644 --- a/ftplugin/python.lua +++ b/ftplugin/python.lua @@ -26,7 +26,7 @@ require"lspconfig".efm.setup { -- init_options = {initializationOptions}, cmd = {DATA_PATH .. "/lspinstall/efm/efm-langserver"}, init_options = {documentFormatting = true, codeAction = false}, - filetypes = {"lua", "python", "javascriptreact", "javascript", "typescript","typescriptreact","sh", "html", "css", "yaml", "markdown", "vue"}, + filetypes = {"python"}, settings = { rootMarkers = {".git/", "requirements.txt"}, languages = { diff --git a/ftplugin/zig.lua b/ftplugin/zig.lua new file mode 100644 index 00000000..06217ddd --- /dev/null +++ b/ftplugin/zig.lua @@ -0,0 +1,15 @@ +-- Because lspinstall don't support zig yet, +-- So we need zls preset in global lib +-- Further custom install zls in +-- https://github.com/zigtools/zls/wiki/Downloading-and-Building-ZLS +require'lspconfig'.zls.setup{ + root_dir = require'lspconfig'.util.root_pattern(".git", "build.zig", "zls.json"), + on_attach = require'lsp'.common_on_attach, +} +require('lv-utils').define_augroups({ + _zig_autoformat = { + {'BufWritePre', '*.zig', 'lua vim.lsp.buf.formatting_sync(nil, 1000)'}, + {'BufEnter', '*.zig', ':lua vim.api.nvim_buf_set_option(0, "commentstring", "// %s")'} + } +}) +vim.cmd("setl expandtab tabstop=8 softtabstop=4 shiftwidth=4") diff --git a/lua/default-config.lua b/lua/default-config.lua index 0553226f..83ff1cc2 100644 --- a/lua/default-config.lua +++ b/lua/default-config.lua @@ -1,6 +1,7 @@ CONFIG_PATH = vim.fn.stdpath('config') DATA_PATH = vim.fn.stdpath('data') CACHE_PATH = vim.fn.stdpath('cache') +TERMINAL = vim.fn.expand('$TERMINAL') O = { auto_close_tree = 0, @@ -18,6 +19,8 @@ O = { ignore_case = true, smart_case = true, lushmode = false, + hl_search = false, + transparent_window = false; leader_key = "space"; -- @usage pass a table with your desired languages @@ -145,9 +148,9 @@ O = { virtual_text = {spacing = 0, prefix = ""}, signs = true, underline = true, - cross_file_rename = true, - header_insertion = 'never' - } + }, + cross_file_rename = true, + header_insertion = 'never' }, ruby = { diagnostics = { diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index 367aefba..8bc8984f 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -20,7 +20,6 @@ vim.cmd("nnoremap gd lua vim.lsp.buf.definition()") vim.cmd("nnoremap gD lua vim.lsp.buf.declaration()") vim.cmd("nnoremap gr lua vim.lsp.buf.references()") vim.cmd("nnoremap gi lua vim.lsp.buf.implementation()") -vim.cmd("nnoremap ca :Lspsaga code_action") vim.cmd("nnoremap K :Lspsaga hover_doc") -- vim.cmd('nnoremap lua vim.lsp.buf.signature_help()') vim.cmd("nnoremap :Lspsaga diagnostic_jump_prev") diff --git a/lua/lv-galaxyline/init.lua b/lua/lv-galaxyline/init.lua index a7821932..51b9072c 100644 --- a/lua/lv-galaxyline/init.lua +++ b/lua/lv-galaxyline/init.lua @@ -103,7 +103,7 @@ table.insert(gls.left, { highlight = {colors.red, colors.bg} } }) -print(vim.fn.getbufvar(0, 'ts')) +-- print(vim.fn.getbufvar(0, 'ts')) vim.fn.getbufvar(0, 'ts') table.insert(gls.left, { @@ -178,9 +178,38 @@ table.insert(gls.right, { } }) +local get_lsp_client = function (msg) + msg = msg or "No Active LSP Client" + local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') + local clients = vim.lsp.get_active_clients() + if next(clients) == nil then + return msg + end + local lsps = "" + for _,client in ipairs(clients) do + local filetypes = client.config.filetypes + if filetypes and vim.fn.index(filetypes, buf_ft) ~=1 then + -- print(client.name) + if lsps == "" then + -- print("first", lsps) + lsps = client.name + else + lsps = lsps .. ", " .. client.name + -- print("more", lsps) + end + end + end + if lsps == "" then + return msg + else + return lsps + end +end + + table.insert(gls.right, { ShowLspClient = { - provider = 'GetLspClient', + provider = get_lsp_client, condition = function() local tbl = {['dashboard'] = true, [' '] = true} if tbl[vim.bo.filetype] then return false end diff --git a/lua/lv-hop/init.lua b/lua/lv-hop/init.lua index 21003374..8e30a1c8 100644 --- a/lua/lv-hop/init.lua +++ b/lua/lv-hop/init.lua @@ -1,6 +1,7 @@ local M = {} M.config = function() + require('hop').setup() vim.api.nvim_set_keymap('n', 's', ":HopChar2", {silent = true}) vim.api.nvim_set_keymap('n', 'S', ":HopWord", {silent = true}) end diff --git a/lua/plugins.lua b/lua/plugins.lua index bc78ebab..0a59ae8d 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -10,21 +10,19 @@ if fn.empty(fn.glob(install_path)) > 0 then end local packer_ok, packer = pcall(require, "packer") -if not packer_ok then - return -end +if not packer_ok then return end packer.init { - -- compile_path = vim.fn.stdpath('data')..'/site/pack/loader/start/packer.nvim/plugin/packer_compiled.vim', - compile_path = require("packer.util").join_paths(vim.fn.stdpath('config'), 'plugin', 'packer_compiled.vim'), - git = { - clone_timeout = 300 - }, - display = { - open_fn = function() - return require("packer.util").float { border = "single" } - end, - }, + -- compile_path = vim.fn.stdpath('data')..'/site/pack/loader/start/packer.nvim/plugin/packer_compiled.vim', + compile_path = require("packer.util").join_paths(vim.fn.stdpath('config'), + 'plugin', + 'packer_compiled.vim'), + git = {clone_timeout = 300}, + display = { + open_fn = function() + return require("packer.util").float {border = "single"} + end + } } vim.cmd "autocmd BufWritePost plugins.lua PackerCompile" -- Auto compile when there are changes in plugins.lua @@ -46,15 +44,15 @@ return require("packer").startup(function(use) config = [[require('lv-telescope')]], cmd = "Telescope" } - -- Snap - use { - "camspiers/snap", - rocks = "fzy", - config = function() - require("lv-snap").config() - end, - disable = not O.plugin.snap.active, - } + -- Snap TODO disable for now, need to only install fzy when user specifies they want to use snap + -- use { + -- "camspiers/snap", + -- rocks = "fzy", + -- config = function() + -- require("lv-snap").config() + -- end, + -- disable = not O.plugin.snap.active + -- } -- Autocomplete use { "hrsh7th/nvim-compe", @@ -90,8 +88,11 @@ return require("packer").startup(function(use) use {"folke/which-key.nvim"} -- Autopairs - use {"windwp/nvim-autopairs", - config = function() require'lv-autopairs' end + use { + "windwp/nvim-autopairs", + config = function() + require 'lv-autopairs' + end } -- Comments @@ -221,7 +222,6 @@ return require("packer").startup(function(use) use { "lukas-reineke/indent-blankline.nvim", - branch = "lua", event = "BufRead", setup = function() @@ -400,9 +400,8 @@ return require("packer").startup(function(use) -- Lush Create Color Schemes use { "rktjmp/lush.nvim", - event = "VimEnter", -- cmd = {"LushRunQuickstart", "LushRunTutorial", "Lushify"}, - -- disable = not O.plugin.lush.active, + disable = not O.plugin.lush.active, } -- HTML preview use { @@ -421,15 +420,12 @@ return require("packer").startup(function(use) -- LANGUAGE SPECIFIC GOES HERE -- Latex TODO what filetypes should this be active for? - use {"lervag/vimtex", ft = "latex", disable = not O.lang.latex.active} + use {"lervag/vimtex", ft = "latex"} -- Rust tools -- TODO: use lazy loading maybe? - use {"simrat39/rust-tools.nvim", disable = not O.lang.rust.active} + use {"simrat39/rust-tools.nvim", ft = "rust"} -- Elixir - use {"elixir-editors/vim-elixir", - ft = {"elixir", "eelixir"}, - disable = not O.lang.elixir.active - } + use {"elixir-editors/vim-elixir", ft = {"elixir", "eelixir", "euphoria3"}} end) diff --git a/lua/settings.lua b/lua/settings.lua index 4aaad357..6c7f7ddf 100644 --- a/lua/settings.lua +++ b/lua/settings.lua @@ -1,50 +1,60 @@ -vim.cmd('set iskeyword+=-') -- treat dash separated words as a word text object" -vim.opt.shortmess:append("c") -- Don't pass messages to |ins-completion-menu|. -vim.cmd('set inccommand=split') -- Make substitution work in realtime -vim.o.hidden = O.hidden_files -- Required to keep multiple buffers open multiple buffers -vim.o.title = true -TERMINAL = vim.fn.expand('$TERMINAL') -vim.cmd('let &titleold="'..TERMINAL..'"') -vim.o.titlestring="%<%F%=%l/%L - nvim" -vim.wo.wrap = O.wrap_lines -- Display long lines as just one line -vim.cmd('set whichwrap+=<,>,[,],h,l') -- move to next line with theses keys -vim.o.pumheight = 10 -- Makes popup menu smaller -vim.o.fileencoding = "utf-8" -- The encoding written to file -vim.o.cmdheight = 2 -- More space for displaying messages -vim.cmd('set colorcolumn=99999') -- fix indentline for now -vim.o.mouse = "a" -- Enable your mouse -vim.o.splitbelow = true -- Horizontal splits will automatically be below -vim.o.termguicolors = true -- set term gui colors most terminals support this -vim.o.splitright = true -- Vertical splits will automatically be to the right --- vim.o.t_Co = "256" -- Support 256 colors -vim.o.conceallevel = 0 -- So that I can see `` in markdown files -vim.opt.tabstop = 4 -- Insert 2 spaces for a tab -vim.opt.shiftwidth = 4 -- Change the number of space characters inserted for indentation ---vim.opt.softtabstop = 4 -vim.opt.expandtab = true -- Converts tabs to spaces -vim.o.completeopt = "menuone,noselect" -vim.bo.smartindent = true -- Makes indenting smart -vim.wo.number = O.number -- set numbered lines -vim.wo.relativenumber = O.relative_number -- set relative number -vim.wo.cursorline = O.cursorline -- set highlighting of the current line -vim.o.showtabline = 2 -- Always show tabs -vim.o.showmode = false -- We don't need to see things like -- INSERT -- anymore -vim.o.backup = false -- This is recommended by coc -vim.o.writebackup = false -- This is recommended by coc -vim.o.swapfile = false -- Do not write any swp files -vim.o.undodir = CACHE_PATH .. '/undo' -- Set undo directory -vim.o.undofile = true -- Enable persistent undo -vim.wo.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -vim.o.updatetime = 300 -- Faster completion -vim.o.timeoutlen = O.timeoutlen -- By default timeoutlen is 1000 ms -vim.o.clipboard = "unnamedplus" -- Copy paste between vim and everything else --- vim.g.nvim_tree_disable_netrw = O.nvim_tree_disable_netrw -- enable netrw for remote gx gf support (must be set before plugin's packadd) -vim.cmd('filetype plugin on') -- filetype detection --- vim.o.guifont = "JetBrainsMono\\ Nerd\\ Font\\ Mono:h18" --- vim.o.guifont = "Hack\\ Nerd\\ Font\\ Mono" --- vim.o.guifont = "SauceCodePro Nerd Font:h17" -vim.o.guifont = "FiraCode Nerd Font:h17" +--- HELPERS --- + + +local cmd = vim.cmd +local opt = vim.opt + + +--- VIM ONLY COMMANDS --- + + +cmd('filetype plugin on') -- filetype detection +cmd('let &titleold="'..TERMINAL..'"') +cmd('set inccommand=split') -- show what you are substituting in real time +cmd('set iskeyword+=-') -- treat dash as a separate word +cmd('set whichwrap+=<,>,[,],h,l') -- move to next line with theses keys +if O.transparent_window then + cmd('au ColorScheme * hi Normal ctermbg=none guibg=none') + end + +--- SETTINGS --- + + +opt.backup = false -- creates a backup file +opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard +opt.cmdheight = 2 -- more space in the neovim command line for displaying messages +opt.colorcolumn = "99999" -- fix indentline for now +opt.completeopt = {'menuone', 'noselect'} +opt.conceallevel = 0 -- so that `` is visible in markdown files +opt.fileencoding = "utf-8" -- the encoding written to a file +opt.guifont = "monospace:h17" -- the font used in graphical neovim applications +opt.hidden = O.hidden_files -- required to keep multiple buffers and open multiple buffers +opt.hlsearch = O.hl_search -- highlight all matches on previous search pattern +opt.ignorecase = O.ignore_case -- ignore case in search patterns +opt.mouse = "a" -- allow the mouse to be used in neovim +opt.pumheight = 10 -- pop up menu height +opt.showmode = false -- we don't need to see things like -- INSERT -- anymore +opt.showtabline = 2 -- always show tabs +opt.smartcase = O.smart_case -- smart case +opt.smartindent = true -- make indenting smarter again +opt.splitbelow = true -- force all horizontal splits to go below current window +opt.splitright = true -- force all vertical splits to go to the right of current window +opt.swapfile = false -- creates a swapfile +opt.termguicolors = true -- set term gui colors (most terminals support this) +opt.timeoutlen = O.timeoutlen -- time to wait for a mapped sequence to complete (in milliseconds) +opt.title = true -- set the title of window to the value of the titlestring +opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to +opt.undodir = CACHE_PATH .. '/undo' -- set an undo directory +opt.undofile = true -- enable persisten undo +opt.updatetime = 300 -- faster completion +opt.writebackup = false -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited +opt.expandtab = true -- convert tabs to spaces +opt.shiftwidth = 4 -- the number of spaces inserted for each indentation +opt.shortmess:append("c") -- don't pass messages to |ins-completion-menu| +opt.tabstop = 4 -- insert 4 spaces for a tab +opt.cursorline = O.cursorline -- highlight the current line +opt.number = O.number -- set numbered lines +opt.relativenumber = O.relative_number -- set relative numbered lines +opt.signcolumn = "yes" -- always show the sign column, otherwise it would shift the text each time +opt.wrap = O.wrap_lines -- display lines as one long line --- vim.o.guifont = "JetBrains\\ Mono\\ Regular\\ Nerd\\ Font\\ Complete" -vim.o.ignorecase = O.ignore_case -vim.o.smartcase = O.smart_case diff --git a/utils/installer/lv-config.example.lua b/utils/installer/lv-config.example.lua index 543f8a72..c90d4876 100644 --- a/utils/installer/lv-config.example.lua +++ b/utils/installer/lv-config.example.lua @@ -18,6 +18,7 @@ O.leader_key = ' ' O.ignore_case = true O.smart_case = true O.lushmode = false +O.transparent_window = false -- After changing plugin config it is recommended to run :PackerCompile O.plugin.hop.active = false