From d131e4f49dd9148f443c2d3b36c347aaee6690fe Mon Sep 17 00:00:00 2001 From: John Mertz Date: Wed, 20 Jul 2022 17:54:48 -0400 Subject: [PATCH] Begin migration to neovim (flatpak) Errors exist, but it works. --- bash/bash_aliases | 1 + bash/bashrc | 1 + nvim/colors | 1 + nvim/init.vim | 182 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 185 insertions(+) create mode 120000 nvim/colors create mode 100644 nvim/init.vim diff --git a/bash/bash_aliases b/bash/bash_aliases index 96ba8e76f..8472db840 100644 --- a/bash/bash_aliases +++ b/bash/bash_aliases @@ -1,6 +1,7 @@ # vim: ft=sh # Vim stuff +alias vim="flatpak run io.neovim.nvim" alias :q="exit" alias :wq="exit" alias q="exit" diff --git a/bash/bashrc b/bash/bashrc index 79675b138..11c9dd5a8 100644 --- a/bash/bashrc +++ b/bash/bashrc @@ -101,3 +101,4 @@ export XDG_CONFIG_HOME="${HOME}/.config" export XDG_DATA_DIRS="$XDG_DATA_DIRS:${HOME}/.config/flatpak/exports/share" export SWAYSOCK=`sway --get-socketpath` export CHROME_EXECUTABLE="/usr/bin/chromium" +export FLATPAK_IDE_LOG_LEVEL="0" diff --git a/nvim/colors b/nvim/colors new file mode 120000 index 000000000..468167e47 --- /dev/null +++ b/nvim/colors @@ -0,0 +1 @@ +/home/jpm/.dotfiles/vim/colors \ No newline at end of file diff --git a/nvim/init.vim b/nvim/init.vim new file mode 100644 index 000000000..8c5455193 --- /dev/null +++ b/nvim/init.vim @@ -0,0 +1,182 @@ +let plug_install = 0 +let autoload_plug_path = stdpath('config') . '/autoload/plug.vim' +if !filereadable(autoload_plug_path) + silent exe '!curl -fL --create-dirs -o ' . autoload_plug_path . + \ ' https://raw.github.com/junegunn/vim-plug/master/plug.vim' + execute 'source ' . fnameescape(autoload_plug_path) + let plug_install = 1 +endif +unlet autoload_plug_path + +call plug#begin('~/.dotfiles/nvim/plugins') +" Plugins here + +" TreeSitter - Syntax highlighting +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} +" Fold-Cycle - Better management of foldable blocks +Plug 'jghauser/fold-cycle.nvim' +" LSP - Language Server Protocol +Plug 'neovim/nvim-lspconfig' +" Git Gutter - Git diff markers +Plug 'airblade/vim-gitgutter' +" Lightline - lightweight status/tabline beautification +Plug 'itchyny/lightline.vim' +" Nerdtree - Tree explorer +Plug 'preservim/nerdtree' + +call plug#end() + +if plug_install + PlugInstall --sync +endif +unlet plug_install + +source $HOME/.dotfiles/vim/generic + +lua <lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'tab split | lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', 't', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.diagnostic.open_float(0, {{opts2}, scope="line", border="rounded"})', opts) + buf_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev({ float = { border = "rounded" }})', opts) + buf_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next({ float = { border = "rounded" }})', opts) + buf_set_keymap("n", "q", "lua vim.diagnostic.setloclist({open = true})", opts) + -- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting then + buf_set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) + end + if client.resolved_capabilities.document_range_formatting then + buf_set_keymap("n", "lf", "lua vim.lsp.buf.formatting()", opts) + end +end +-- NOTE: Don't use more than 1 servers otherwise nvim is unstable +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities) +capabilities.textDocument.completion.completionItem.snippetSupport = true +-- Use pylsp +nvim_lsp.pylsp.setup({ + on_attach = on_attach, + settings = { + pylsp = { + plugins = { + pylint = { enabled = true, executable = "pylint" }, + pyflakes = { enabled = true }, + pycodestyle = { enabled = false }, + jedi_completion = { fuzzy = true }, + pyls_isort = { enabled = true }, + pylsp_mypy = { enabled = true }, + }, + }, }, + flags = { + debounce_text_changes = 200, + }, + capabilities = capabilities, +}) +-- Use pyright or jedi_language_server +--local servers = {'jedi_language_server'} +--local servers = {'pyright'} +--for _, lsp in ipairs(servers) do +--nvim_lsp[lsp].setup({ +-- on_attach = on_attach, +-- capabilities = capabilities +--}) +--end +-- Change diagnostic signs. +vim.fn.sign_define("DiagnosticSignError", { text = "✗", texthl = "DiagnosticSignError" }) +vim.fn.sign_define("DiagnosticSignWarn", { text = "!", texthl = "DiagnosticSignWarn" }) +vim.fn.sign_define("DiagnosticSignInformation", { text = "", texthl = "DiagnosticSignInfo" }) +vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" }) +-- global config for diagnostic +vim.diagnostic.config({ + underline = false, + virtual_text = true, + signs = true, + severity_sort = true, +}) +-- Change border of documentation hover window, See https://github.com/neovim/neovim/pull/13998. +vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { + border = "rounded", +}) + +require'lspconfig'.perlpls.setup() + +require('fold-cycle').setup({ + open_if_closed = true, + close_if_opened = true, + softwrap_movement_fix = true, +}) +vim.keymap.set('n', '', + function() return require('fold-cycle').open() end, + {silent = true, desc = 'Fold-cycle: open folds'}) +vim.keymap.set('n', '', + function() return require('fold-cycle').close() end, + {silent = true, desc = 'Fold-cycle: close folds'}) +vim.keymap.set('n', 'zC', + function() return require('fold-cycle').close_all() end, + {remap = true, silent = true, desc = 'Fold-cycle: close all folds'}) +EOF + +set foldmethod=expr +set foldexpr=nvim_treesitter#foldexpr()