Ver código fonte

Merge branch 'master' of github.com:ChristianChiarulli/LunarVim into stable

christianchiarulli 4 anos atrás
pai
commit
8f37e7f278

+ 60 - 0
.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

+ 4 - 0
ftdetect/zig.lua

@@ -0,0 +1,4 @@
+vim.cmd([[
+  au BufRead,BufNewFile *.zig set filetype=zig
+  au BufRead,BufNewFile *.zir set filetype=zir
+]])

+ 1 - 0
ftplugin/cpp.lua

@@ -0,0 +1 @@
+c.lua

+ 5 - 5
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
-]])
+-- 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
+-- ]])

+ 11 - 0
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
+-- ]])

+ 1 - 1
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 = {

+ 15 - 0
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")

+ 6 - 3
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 = {

+ 0 - 1
lua/lsp/init.lua

@@ -20,7 +20,6 @@ vim.cmd("nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR>")
 vim.cmd("nnoremap <silent> gD <cmd>lua vim.lsp.buf.declaration()<CR>")
 vim.cmd("nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>")
 vim.cmd("nnoremap <silent> gi <cmd>lua vim.lsp.buf.implementation()<CR>")
-vim.cmd("nnoremap <silent> ca :Lspsaga code_action<CR>")
 vim.cmd("nnoremap <silent> K :Lspsaga hover_doc<CR>")
 -- vim.cmd('nnoremap <silent> <C-k> <cmd>lua vim.lsp.buf.signature_help()<CR>')
 vim.cmd("nnoremap <silent> <C-p> :Lspsaga diagnostic_jump_prev<CR>")

+ 31 - 2
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

+ 1 - 0
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<cr>", {silent = true})
     vim.api.nvim_set_keymap('n', 'S', ":HopWord<cr>", {silent = true})
 end

+ 29 - 33
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)

+ 60 - 50
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"
-
--- vim.o.guifont = "JetBrains\\ Mono\\ Regular\\ Nerd\\ Font\\ Complete"
-vim.o.ignorecase = O.ignore_case
-vim.o.smartcase = O.smart_case
+---  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
+

+ 1 - 0
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