diff --git a/playbook.yml b/playbook.yml index 1101a5b..129c61c 100644 --- a/playbook.yml +++ b/playbook.yml @@ -16,7 +16,6 @@ - { domain: '{{ gitlab_domain }}', key: '{{ gitlab_host_key }}' } roles: - common - - npm tasks: - import_tasks: 'tasks/main.yml' - import_tasks: 'tasks/dotfiles.yml' diff --git a/tasks/neovim.yml b/tasks/neovim.yml index 5dc9a99..07fda39 100644 --- a/tasks/neovim.yml +++ b/tasks/neovim.yml @@ -20,25 +20,20 @@ version: '{{ item.version|default("HEAD") }}' loop: '{{ neovim_plugins }}' -- name: install neovim python packages - pip: - name: - - neovim - - pynvim - extra_args: --user - - name: install neovim node package become: true npm: name: neovim global: true +# Note that the "python-lsp-server", "python-lsp-ruff" and "neovim" python +# packages should be installed to the corresponding virtualenv as well. - name: install language servers become: true - npm: + package: name: '{{ item }}' - global: true - loop: '{{ language_servers + neovim_node_packages }}' + state: present + loop: '{{ language_servers }}' - name: remove old neovim configuration file file: diff --git a/templates/nvim/lua/lsp.lua.j2 b/templates/nvim/lua/lsp.lua.j2 index db9e1f3..bd8835b 100644 --- a/templates/nvim/lua/lsp.lua.j2 +++ b/templates/nvim/lua/lsp.lua.j2 @@ -23,7 +23,9 @@ end --enable some language servers with the additional completion capabilities --offered by nvim-cmp -local servers = { 'ansiblels', 'yamlls', 'cssls', 'jsonls', 'tsserver', } +local servers = { + 'ansiblels', 'yamlls', 'cssls', 'jsonls', 'tsserver', 'bashls', 'lua_ls' +} --add additional capabilities supported by nvim-cmp local capabilities = vim.lsp.protocol.make_client_capabilities() @@ -40,9 +42,19 @@ end local util = require('lspconfig/util') -nvim_lsp.pyright.setup({ +nvim_lsp.pylsp.setup({ on_attach = on_attach, capabilities = capabilities, + cmd = { 'pylsp', '--verbose' }, + settings = { + pylsp = { + plugins = { + ruff = { + enabled = true + } + } + } + }, root_dir = function(fname) return util.root_pattern('.git', 'setup.cfg', 'requirements')(fname) or util.path.dirname(fname) diff --git a/templates/nvim/lua/options.lua.j2 b/templates/nvim/lua/options.lua.j2 index 0953733..963a30e 100644 --- a/templates/nvim/lua/options.lua.j2 +++ b/templates/nvim/lua/options.lua.j2 @@ -1,58 +1,62 @@ -- {{ ansible_managed }} {{ ansible_date_time.time }} {{ ansible_date_time.date }} ---fix different locale settings when ssh'ing +-- fix different locale settings when ssh'ing vim.o.encoding = 'utf-8' vim.o.syntax = 'on' ---display all matching files when we tab complete +-- display all matching files when we tab complete vim.o.wildmenu = true ---replace vertical split pipe character with space +-- replace vertical split pipe character with space vim.o.fillchars = 'vert:|,fold: ' ---Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable ---delays and poor user experience. +-- Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable +-- delays and poor user experience. vim.o.updatetime = 300 vim.o.splitright = true vim.o.splitbelow = true ---switch buffers without writing to file -vim.o.hidden = true +-- switch buffers without writing to file +vim.o.hidden = true ---fold indents -vim.o.foldmethod = 'indent' +-- folding +vim.o.foldmethod = 'expr' +vim.o.foldexpr = 'nvim_treesitter#foldexpr()' ---don't open folds when jumping over one with (, {, [[ or [{ +-- don't open folds when jumping over one with (, {, [[ or [{ vim.opt.foldopen = vim.opt.foldopen - { 'block' } ---search down into subfolders ---provides tab-completion for all file-related tasks +-- search down into subfolders +-- provides tab-completion for all file-related tasks vim.opt.path = vim.opt.path + { '**' } ---line numbers +-- line numbers vim.o.number = true ---higlhight search +-- higlhight search vim.o.hls = true ---search as characters are entered +-- search as characters are entered vim.o.incsearch = true ---line for linewrapping +-- line for linewrapping vim.o.colorcolumn = '80' ---wrap text instead of being on one line +-- wrap text instead of being on one line vim.o.lbr = true ---default Colors for CursorLine +-- default Colors for CursorLine vim.o.cursorline = true -- theme related vim.o.termguicolors = true vim.o.background = 'light' ---enable statusbar +-- enable statusbar vim.o.laststatus = 2 vim.o.statusline = ' %F %m%r%w %= %{hostname()} %{strlen(&ft)?&ft:"none"} %{(&bomb?",BOM":"")} %{&ff} %l/%L %c %P' + +-- python interpreter +vim.g.python3_host_prog = './env/bin/python' diff --git a/templates/nvim/lua/tree-sitter.lua.j2 b/templates/nvim/lua/tree-sitter.lua.j2 index dafb181..ec0f9eb 100644 --- a/templates/nvim/lua/tree-sitter.lua.j2 +++ b/templates/nvim/lua/tree-sitter.lua.j2 @@ -8,7 +8,7 @@ local tree_sitter_config = require('nvim-treesitter.configs') tree_sitter_config.setup { ensure_installed = { 'lua', 'yaml', 'bash', 'python', 'javascript', 'css', 'scss', 'html', - 'json', 'dockerfile', 'markdown', + 'htmldjango', 'json', 'dockerfile', 'markdown', }, auto_install = true, highlight = { diff --git a/vars.yml b/vars.yml index 3b0bd5f..a95e64f 100644 --- a/vars.yml +++ b/vars.yml @@ -57,16 +57,15 @@ neovim_plugins: version: '0.1.x', } - { url: 'https://github.com/L3MON4D3/LuaSnip', name: 'luasnip', version: 'v1.0.0' } - -neovim_node_packages: - - typescript + - { url: 'https://github.com/lewis6991/gitsigns.nvim', name: 'gitsigns.nvim' } language_servers: - - pyright - ansible-language-server - yaml-language-server - - vscode-langservers-extracted - typescript-language-server + - vscode-html-languageserver + - bash-language-server + - lua-language-server python_download_url: 'https://www.python.org/ftp/python' python_versions: