diff --git a/README.md b/README.md index d2cee99..9ca2d94 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ My vim config written in lua designed for *smol boi minimal vibes* Most of the code is in separate modules. Each will later be its own true plugin. -### Installation +### Install Install the package manager `paq` to start: @@ -14,29 +14,6 @@ git clone --depth=1 https://github.com/savq/paq-nvim.git \ "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/pack/paqs/start/paq-nvim ``` -#### LSP servers - -Scripts are supplied in `scripts/` for each server I use. Run these for the -corresponding server that you would like to be installed. - -The process in no way is automated or "purely in lua or vimscript", but it more -just holds your hand a bit. There may be plans in the future to automate this -with our own package manager. But I might start writing my own editor by that -point. So we'll see. - -If you'd like to add a new LSP server, feel free. Just make sure to ask the -user if all dependencies are installed. Currently, this is achieved using -`query_dep` in `query_dependency.sh`. All it does is ask the user if the -dependency is installed and quits the install script if any dependency is not -installed. *(don't even remind me how hacky that is)* - -However, a proper package management system would be more prefered. So never -feel like this pattern is in any way enforced. I can't be biased toward which -packages for which package managers will get maintained. And I can't be -bothered to write a package for every package manager that ever exists. If it -bothers you enough, change it to specifically work with your system. And maybe -contribute so others maybe follow suit. - ### Configure diff --git a/init.lua b/init.lua index 562a6b1..a968659 100755 --- a/init.lua +++ b/init.lua @@ -20,14 +20,10 @@ v = vim.v -- variables env = vim.env -- environment variables local modules = { - 'ui', 'general', 'keymap', - 'plugins', - 'native-lsp', - 'indent-blankline', - 'gitsigns-nvim', - 'lightbulb' + 'ui', + 'native-lsp' } local async diff --git a/lua/gitsigns-nvim.lua b/lua/gitsigns-nvim.lua deleted file mode 100644 index 4c294f4..0000000 --- a/lua/gitsigns-nvim.lua +++ /dev/null @@ -1,65 +0,0 @@ -require('gitsigns').setup { - signs = { - add = {hl = 'GitSignsAdd' , text = '│', numhl='GitSignsAddNr' , linehl='GitSignsAddLn'}, - change = {hl = 'GitSignsChange', text = '│', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'}, - delete = {hl = 'GitSignsDelete', text = '_', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'}, - topdelete = {hl = 'GitSignsDelete', text = '‾', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'}, - changedelete = {hl = 'GitSignsChange', text = '~', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'}, - }, - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = false, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - keymaps = { - -- Default keymap options - noremap = true, - - ['n ]c'] = { expr = true, "&diff ? ']c' : 'Gitsigns next_hunk'"}, - ['n [c'] = { expr = true, "&diff ? '[c' : 'Gitsigns prev_hunk'"}, - - ['n hs'] = 'Gitsigns stage_hunk', - ['v hs'] = ':Gitsigns stage_hunk', - ['n hu'] = 'Gitsigns undo_stage_hunk', - ['n hr'] = 'Gitsigns reset_hunk', - ['v hr'] = ':Gitsigns reset_hunk', - ['n hR'] = 'Gitsigns reset_buffer', - ['n hp'] = 'Gitsigns preview_hunk', - ['n hb'] = 'lua require"gitsigns".blame_line{full=true}', - ['n hS'] = 'Gitsigns stage_buffer', - ['n hU'] = 'Gitsigns reset_buffer_index', - - -- Text objects - ['o ih'] = ':Gitsigns select_hunk', - ['x ih'] = ':Gitsigns select_hunk' - }, - watch_gitdir = { - interval = 1000, - follow_files = true - }, - attach_to_untracked = true, - current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` - current_line_blame_opts = { - virt_text = true, - virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' - delay = 1000, - ignore_whitespace = false, - }, - current_line_blame_formatter_opts = { - relative_time = false - }, - sign_priority = 6, - update_debounce = 100, - status_formatter = nil, -- Use default - max_file_length = 40000, - preview_config = { - -- Options passed to nvim_open_win - border = 'single', - style = 'minimal', - relative = 'cursor', - row = 0, - col = 1 - }, - yadm = { - enable = false - }, -} diff --git a/lua/indent-blankline.lua b/lua/indent-blankline.lua deleted file mode 100644 index 6c3b3a5..0000000 --- a/lua/indent-blankline.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("indent_blankline").setup { - -- for example, context is off by default, use this to turn it on - show_current_context = true, - show_current_context_start = true, -} diff --git a/lua/lightbulb.lua b/lua/lightbulb.lua deleted file mode 100644 index ef03877..0000000 --- a/lua/lightbulb.lua +++ /dev/null @@ -1 +0,0 @@ -require('nvim-lightbulb').update_lightbulb() diff --git a/lua/native-lsp/init.lua b/lua/native-lsp/init.lua index 3666541..71912b3 100644 --- a/lua/native-lsp/init.lua +++ b/lua/native-lsp/init.lua @@ -19,23 +19,163 @@ -- v = vim.v -- variables -- env = vim.env -- environment variables -require("native-lsp/nvim-lsp-installer") +-- dependent on https://github.com/neovim/nvim-lspconfig +local lspconfig = require 'lspconfig' -local lspconfig = require('lspconfig') - -local on_attach = function(_, bufnr) - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - require('completion').on_attach() -end - -local servers = {'zls'} -for _, lsp in ipairs(servers) do - lspconfig[lsp].setup { - on_attach = on_attach, +function lsp_init() + -- https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md + local lsp_filetype = { + ['ada'] = {'als'}, + ['aspnetcorerazor'] = {'tailwindcss'}, + ['astro'] = {'tailwindcss'}, + ['astro-markdown'] = {'tailwindcss'}, + ['beancount'] = {'beancount'}, + ['bib'] = {'texlab'}, + ['bicep'] = {'bicep'}, + ['blade'] = {'tailwindcss'}, + ['c'] = {'ccls','clangd','sourcekit'}, + ['clojure'] = {'clojure_lsp'}, + ['cmake'] = {'cmake'}, + -- = {'config'}, + ['cpp'] = {'ccls','clangd','sourcekit'}, + ['crystal'] = {'crystalline','scry'}, + ['css'] = {'cssls','stylelint_lsp','tailwindcss'}, + ['d'] = {'serve_d'}, + ['dart'] = {'dartls'}, + ['dhall'] = {'dhall_lsp_server'}, + ['django-html'] = {'tailwindcss'}, + ['Dockerfile'] = {'dockerls'}, + ['dockerfile'] = {'dockerls'}, + ['dot'] = {'dotls'}, + -- = {'diagnostics'}, + ['edge'] = {'tailwindcss'}, + ['edn'] = {'clojure_lsp'}, + ['eelixir'] = {'elixirls','tailwindcss'}, + -- = {'efm'}, + ['elixir'] = {'elixirls'}, + ['elm'] = {'elmls'}, + ['ejs'] = {'tailwindcss'}, + ['erb'] = {'tailwindcss'}, + ['erlang'] = {'erlangls'}, + ['eruby'] = {'tailwindcss'}, + ['fortran'] = {'fortls'}, + ['fsharp'] = {'fsautocomplete'}, + ['gd'] = {'gdscript'}, + ['gdscript'] = {'gdscript'}, + ['gdscript3'] = {'gdscript'}, + ['genie'] = {'vala_ls'}, + ['go'] = {'gopls'}, + ['gohtml'] = {'tailwindcss'}, + ['gomod'] = {'gopls'}, + ['graphql'] = {'graphql'}, + ['groovy'] = {'groovyls'}, + ['haml'] = {'tailwindcss'}, + ['handlebars'] = {'ember','tailwindcss'}, + ['haskell'] = {'ghcide','hie','hls'}, + ['haxe'] = {'haxe_language_server'}, + ['hbs'] = {'tailwindcss'}, + -- = {'health'}, + ['help'] = {}, + ['html'] = {'angular','html','tailwindcss'}, + ['html-eex'] = {'tailwindcss'}, + ['jade'] = {'tailwindcss'}, + ['java'] = {'java_language_server','jdtls'}, + ['javascript'] = {'denols','ember','flow','rome','stylelint_lsp','tsserver','tailwindcss'}, + ['javascriptreact'] = {'denols','flow','rome','stylelint_lsp','tsserver','tailwindcss'}, + ['javascript.jsx'] = {'denols','flow','tsserver'}, + ['json'] = {'jsonls','rome'}, + ['julia'] = {'julials'}, + ['kotlin'] = {'kotlin_language_server'}, + ['leaf'] = {'tailwindcss'}, + ['lean'] = {'leanls'}, + ['lean3'] = {'lean3ls'}, + ['less'] = {'cssls','stylelint_lsp','tailwindcss'}, + ['lhaskell'] = {'ghcide','hls'}, + -- = {'lspinfo'}, + ['liquid'] = {'tailwindcss'}, + ['lua'] = {'sumneko_lua'}, + ['markdown'] = {'zeta_note','tailwindcss'}, + ['mdx'] = {'tailwindcss'}, + ['mint'] = {'mint'}, + ['mustache'] = {'tailwindcss'}, + ['mysql'] = {'sqlls','sqls'}, + ['nim'] = {'nimls'}, + ['nix'] = {'rnix'}, + ['njk'] = {'tailwindcss'}, + ['nunjucks'] = {'tailwindcss'}, + ['objc'] = {'ccls','clangd'}, + ['objcpp'] = {'ccls','clangd'}, + ['objective-c'] = {'sourcekit'}, + ['objective-cpp'] = {'sourcekit'}, + ['ocaml'] = {'ocamlls','ocamllsp'}, + ['ocaml.menhir'] = {'ocamllsp'}, + ['ocaml.interface'] = {'ocamllsp'}, + ['ocaml.ocamllex'] = {'ocamllsp'}, + ['perl'] = {'perlls','perlpls'}, + ['php'] = {'intelephense','phpactor','tailwindcss'}, + ['prisma'] = {'prismals'}, + ['ps1'] = {'powershell_es'}, + ['puppet'] = {'puppet'}, + ['purescript'] = {'purescriptls'}, + ['python'] = {'jedi_language_server','pylsp','pyright'}, + ['ql'] = {'codeqlls'}, + ['r'] = {'r_language_server'}, + ['racket'] = {'racket_langserver'}, + ['razor'] = {'tailwindcss'}, + ['reason'] = {'ocamlls','ocamllsp','tailwindcss'}, + ['rescript'] = {'rescript','tailwindcss'}, + ['rmd'] = {'r_language_server'}, + ['ruby'] = {'solargraph','sorbet'}, + ['rust'] = {'rls','rust_analyzer'}, + ['sass'] = {'tailwindcss'}, + ['scala'] = {'metals'}, + ['scheme'] = {'racket_langserver'}, + ['scss'] = {'cssls','stylelint_lsp','tailwindcss'}, + ['sh'] = {'bashls'}, + ['slim'] = {'tailwindcss'}, + ['stylus'] = {'tailwindcss'}, + ['sql'] = {'sqlls','sqls'}, + ['sugarss'] = {'stylelint_lsp','tailwindcss'}, + ['svelte'] = {'svelte','tailwindcss'}, + ['swift'] = {'source'}, + ['systemverilog'] = {'svls'}, + ['tex'] = {'texlab'}, + ['terraform'] = {'tflint','teraformls'}, + ['twig'] = {'tailwindcss'}, + ['typescript'] = {'angular', 'denols','ember','rome','stylelint_lsp','tsserver','tailwindcss'}, + ['typescriptreact'] = {'angular', 'denols','rome','stylelint_lsp','tsserver','tailwindcss'}, + ['typescript.tsx'] = {'angular', 'denols','rome','tsserver'}, + -- = {'util'}, + ['vala'] = {'vala_ls'}, + ['verilog'] = {'svls'}, + ['vim'] = {'vimls'}, + ['vlang'] = {'vls'}, + ['vue'] = {'stylelint_lsp','vuels','tailwindcss'}, + ['wxss'] = {'stylelint_lsp'}, + ['yaml'] = {'ansiblels','yamlls'}, + ['zig'] = {'zls'}, + ['zir'] = {'zls'} } + + for _,server in pairs(lsp_filetype[bo.filetype]) do + lspconfig[server].setup {} + end end -opt.completeopt = "menu,menuone,noselect" -g.completion_enable_auto_popup = 1 +function lsp_format() + local function format_file() + if bo.filetype == x then + vim.lsp.formatting_sync(nil, 100) + end + end -require("native-lsp/nvim-cmp") + for _,file in pairs({'javascript', 'python'}) do + format_file(file) + end +end + +cmd('autocmd BufRead * lua lsp_init()') +cmd('autocmd BufWritePre * lua lsp_format()') + + +require 'nvim-compe.lua' diff --git a/lua/native-lsp/nvim-cmp.lua b/lua/native-lsp/nvim-cmp.lua deleted file mode 100644 index 62ad48c..0000000 --- a/lua/native-lsp/nvim-cmp.lua +++ /dev/null @@ -1,154 +0,0 @@ -local cmp = require("cmp") -local luasnip = require("luasnip") - -if not luasnip then - return -end - -local lsp_symbols = { - Text = "  (Text) ", - Method = "  (Method)", - Function = "  (Function)", - Constructor = "  (Constructor)", - Field = " ﴲ (Field)", - Variable = "  (Variable)", - Class = "  (Class)", - Interface = "  (Interface)", - Module = "  (Module)", - Property = " 襁 (Property)", - Unit = "  (Unit)", - Value = "  (Value)", - Enum = " 練 (Enum)", - Keyword = "  (Keyword)", - Snippet = "  (Snippet)", - Color = "  (Color)", - File = "  (File)", - Reference = "  (Reference)", - Folder = "  (Folder)", - EnumMember = "  (EnumMember)", - Constant = "  (Constant)", - Struct = "  (Struct)", - Event = "  (Event)", - Operator = "  (Operator)", - TypeParameter = "  (TypeParameter)" -} - -local has_words_before = function() - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil -end - -cmp.setup({ - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - - mapping = { - [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }, - }, - - formatting = { - format = function(entry, item) - item.kind = lsp_symbols[item.kind] .. " " .. item.kind - -- set a name for each source - item.menu = ({ - spell = "[Spell]", - buffer = "[Buffer]", - calc = "[Calc]", - emoji = "[Emoji]", - nvim_lsp = "[LSP]", - path = "[Path]", - look = "[Look]", - treesitter = "[treesitter]", - luasnip = "[LuaSnip]", - nvim_lua = "[Lua]", - latex_symbols = "[Latex]", - cmp_tabnine = "[Tab9]" - })[entry.source.name] - return item - end - }, - - sources = { - { name = 'nvim_lsp' }, - { name = 'cmp_tabnine' }, - { name = 'luasnip' }, - { name = 'path' }, - { name = 'latex_symbols'}, - { name = 'treesitter' }, - { name = 'buffer' }, - { - name = 'look', - keyword_length = 2, - option = { - convert_case = true, - loud = true - } - }, - { name = 'emoji' }, - { name = 'calc' } - }, - - cmp.setup.cmdline('-', { - sources = { - { name = 'path' }, - { name = 'cmdline' }, - { name = 'nvim_lua' }, - { name = 'buffer' } - } - }), - - cmp.setup.cmdline('/', { - sources = { - { name = 'buffer' } - } - }), - - cmp.setup.cmdline(':', { - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) - }), -}) - -local tabnine = require('cmp_tabnine.config') - -tabnine:setup({ - max_lines = 1000; - max_num_results = 20; - sort = true; - run_on_every_keystroke = true; - snippet_placeholder = '..'; - ignored_file_types = { -- default is not to ignore - -- uncomment to ignore in lua: - -- lua = true - }; -}) diff --git a/lua/native-lsp/nvim-lsp-installer.lua b/lua/native-lsp/nvim-lsp-installer.lua deleted file mode 100644 index 3e74c80..0000000 --- a/lua/native-lsp/nvim-lsp-installer.lua +++ /dev/null @@ -1,75 +0,0 @@ -local lsp_installer = require("nvim-lsp-installer") - - -local lang_servers = { - "bashls", - "ccls", - "clangd", - "cmake", - "cssls", - "cssmodules_ls", - "diagnosticls", - "dockerls", - "dotls", - "efm", - --"eslint", - "emmet_ls", - --"grammarly", - "graphql", - "html", - --"hls", - "jsonls", - --"jdtls", - --"quick_lint_js", - "tsserver", - --"ltex", - "texlab", - "sumneko_lua", - "remark_ls", - --"zk", - "puppet", - --"jedi_language_server", - "pyright", - --"pylsp", - "sqlls", - --"sqls", - --"svelte", - "taplo", - --"tailwindcss", - --"tflint", -- going to use tsserver first - "lemminx", - "yamlls", - "zls", -} - -for _, name in pairs(lang_servers) do - local server_is_found, server = lsp_installer.get_server(name) - if server_is_found then - if not server:is_installed() then - print("Installing " .. name) - server:install() - end - end -end - - - -lsp_installer.on_server_ready(function(server) - local opts = {} - opts.on_attach = on_attach - opts.capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) - - server:setup(opts) - vim.cmd [[ do User LspAttachBuffers ]] -end) - - -lsp_installer.settings({ - ui = { - icons = { - server_installed = "✓", - server_pending = "➜", - server_uninstalled = "✗" - } - } -}) diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 1816eb1..af44810 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -1,58 +1,8 @@ require "paq" { - -- let paq manage itself - "savq/paq-nvim"; + "savq/paq-nvim"; -- Let Paq manage itself - -- lsp "neovim/nvim-lspconfig"; - {"williamboman/nvim-lsp-installer", branch="dont-prepare-root-dir"}; + "hrsh7th/nvim-compe"; - -- cmp - "hrsh7th/nvim-cmp"; - "hrsh7th/cmp-nvim-lsp"; - "hrsh7th/cmp-buffer"; - "hrsh7th/cmp-path"; - "hrsh7th/cmp-cmdline"; - "hrsh7th/cmp-nvim-lua"; - "hrsh7th/cmp-calc"; - "hrsh7th/cmp-emoji"; - "hrsh7th/cmp-latex-symbols"; - "octaltree/cmp-look"; - {"tzachar/cmp-tabnine", run="./install.sh"}; - - -- lua snips - "L3MON4D3/LuaSnip"; - "saadparwaiz1/cmp_luasnip"; - - -- diagnostics - "folke/trouble.nvim"; - "kyazdani42/nvim-web-devicons"; - - -- pandoc - "vim-pandoc/vim-pandoc"; - - -- zig ls - "zigtools/zls"; - - -- theme - "rakr/vim-one"; - - "mattn/emmet-vim"; --{"lervag/vimtex", opt=true}; - - -- tree sitter - "nvim-treesitter/nvim-treesitter"; - "nvim-treesitter/nvim-treesitter-textobjects"; - "ray-x/cmp-treesitter"; - - "lukas-reineke/indent-blankline.nvim"; - - "kosayoda/nvim-lightbulb"; - - "turbio/bracey.vim"; - - -- git symbols - "lewis6991/gitsigns.nvim"; - "nvim-lua/plenary.nvim"; } - -cmd 'PaqSync' diff --git a/lua/tree-sitter.lua b/lua/tree-sitter.lua deleted file mode 100644 index 6866e67..0000000 --- a/lua/tree-sitter.lua +++ /dev/null @@ -1,26 +0,0 @@ -cmd [[ -TSInstall bash -TSInstall bibtex -TSInstall c -TSInstall cmake -TSInstall cpp -TSInstall css -TSInstall dockerfile -TSInstall dot -TSInstall graphql -TSInstall html -TSInstall http -TSInstall javascript -TSInstall latex -TSInstall llvm -TSInstall lua -TSInstall make -TSInstall python -TSInstall regex -TSInstall verilog -TSInstall vim -TSInstall yaml -TSInstall zig -TSUpdate -]] - diff --git a/lua/ui/init.lua b/lua/ui/init.lua index 92a0402..78c0222 100755 --- a/lua/ui/init.lua +++ b/lua/ui/init.lua @@ -30,8 +30,8 @@ o.showmatch = true -- matching bracket -- Completion Menu ---o.wildmenu = true ---o.wildmode = 'list:longest,full' +o.wildmenu = true +o.wildmode = 'list:longest,full' -- Character Representation @@ -104,9 +104,6 @@ autocmd BufEnter * highlight OverLength ctermbg=darkgrey guibg=#592929 autocmd BufEnter * match OverLength /\%71v.*/ ]]) --rewrite in lua --- Theme -o.background = "light" -cmd('colorscheme one') --WIP -- Filetype: txt, md, tex diff --git a/lua/ui/statusbar.lua b/lua/ui/statusbar.lua index 5613408..01362e0 100755 --- a/lua/ui/statusbar.lua +++ b/lua/ui/statusbar.lua @@ -31,30 +31,27 @@ local function file_state() return "" end ---local function diagnostics() --- --local buffer_number = vim.fn.bufnr('%') --- local severity_levels = { --- -- level,prefix --- errors = {'Error', 'E:'}, --- warnings = {'Warning', 'W:'}, --- info = {'Information', 'I:'}, --- hints = {'Hint', 'H:'} --- } --- local out = '' --- for _,v in pairs(severity_levels) do --- local d = vim.diagnostic.get( --- 0, --- ) --- --local d = vim.lsp.diagnostic.get_count( --- -- buffer_number, --- -- v[1] -- level --- --) --- if d > 0 then --- out = out .. v[2] .. d .. ' ' --- end --- end --- return out ---end +local function diagnostics() + local buffer_number = vim.fn.bufnr('%') + local severity_levels = { + -- level,prefix + errors = {'Error', 'E:'}, + warnings = {'Warning', 'W:'}, + info = {'Information', 'I:'}, + hints = {'Hint', 'H:'} + } + local out = '' + for _,v in pairs(severity_levels) do + local d = vim.lsp.diagnostic.get_count( + buffer_number, + v[1] -- level + ) + if d > 0 then + out = out .. v[2] .. d .. ' ' + end + end + return out +end local function highlight(group, color) cmd('highlight ' .. group .. ' cterm='..color .. ' gui='..color) @@ -103,7 +100,7 @@ function status_bar() return table.concat(sections({ -- Stage Left {'%f', file_state()}, - --{diagnostics()}, + {diagnostics()}, '%=', -- Stage Right { diff --git a/scripts/install_bashls_server.sh b/scripts/install_bashls_server.sh new file mode 100644 index 0000000..fab818a --- /dev/null +++ b/scripts/install_bashls_server.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +source scripts/query_dependencies.sh +query_dep 'npm' + +if response == 'y' then + npm -i -g bash-language-server +fi diff --git a/scripts/install_ccls_server.sh b/scripts/install_ccls_server.sh new file mode 100644 index 0000000..5f0056b --- /dev/null +++ b/scripts/install_ccls_server.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +source scripts/query_dependencies.sh +query_dep 'CMake' +query_dep 'C++17' +query_dep ' + +if response == 'y' then + cd builds + git clone --depth=1 --recursive https://github.com/MaskRay/ccls + cd ccls + cmake -H. -BRelease -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/clang+llvm-xxx + cmake --build Release +fi diff --git a/scripts/install_clangd_server.sh b/scripts/install_clangd_server.sh new file mode 100644 index 0000000..0e5e707 --- /dev/null +++ b/scripts/install_clangd_server.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +printf 'Install from clang-tools or similar ' +printf 'with your OS or from releases on LLVM site\n' diff --git a/scripts/install_pylsp_server.sh b/scripts/install_pylsp_server.sh new file mode 100644 index 0000000..9f2ada2 --- /dev/null +++ b/scripts/install_pylsp_server.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +source scripts/query_dependencies.sh +query_dep 'pip' + +if response == 'y' then + pip install python-lsp-server +fi diff --git a/scripts/install_pyright_server.sh b/scripts/install_pyright_server.sh new file mode 100644 index 0000000..383039b --- /dev/null +++ b/scripts/install_pyright_server.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +source scripts/query_dependencies.sh +query_dep 'npm' + +if response == 'y' then + npm -i -g pyright +fi diff --git a/scripts/install_sumneko_lua.sh b/scripts/install_sumneko_lua.sh new file mode 100644 index 0000000..cd5b854 --- /dev/null +++ b/scripts/install_sumneko_lua.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +source scripts/query_dependencies.sh +query_dep 'ninja' +query_dep 'C++17' + +if $response == 'y' then + mkdir -p builds + cd builds + git clone https://github.com/sumneko/lua-language-server + cd lua-language-server + git submodule update --init --recursive + cd 3rd/luamake + compile/install.sh + cd ../.. + ./3rd/luamake/luamake rebuild +fi diff --git a/scripts/install_zls_server.sh b/scripts/install_zls_server.sh new file mode 100644 index 0000000..f8fbd3d --- /dev/null +++ b/scripts/install_zls_server.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +source scripts/query_dependencies.sh +query_dep "xz or xz-utils" + +if response == 'y' then + mkdir -p builds/zls + cd builds/zls + curl -L https://github.com/zigtools/zls/releases/download/0.1.0/x86_64-linux.tar.xz | tar -xJ --strip-components=1 -C . +fi diff --git a/scripts/query_dependency.sh b/scripts/query_dependency.sh new file mode 100644 index 0000000..1cef7d5 --- /dev/null +++ b/scripts/query_dependency.sh @@ -0,0 +1,7 @@ +function query_dep(){ + printf 'Did you install ' + printf $1 + printf '?\n (y/N)' + response='n' + read response +}