Extract neovim from prebuilt archives for debian hosts
This commit is contained in:
parent
b53e644f7e
commit
deec1581c5
4 changed files with 126 additions and 22 deletions
|
|
@ -27,14 +27,21 @@
|
|||
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
|
||||
package:
|
||||
name: '{{ item }}'
|
||||
state: present
|
||||
loop: '{{ language_servers }}'
|
||||
loop: '{{ language_servers | map(attribute="package") | list }}'
|
||||
when: ansible_facts['os_family'] == 'Archlinux'
|
||||
|
||||
- name: install language servers on debian hosts
|
||||
become: true
|
||||
npm:
|
||||
name: '{{ item }}'
|
||||
global: true
|
||||
loop: '{{ language_servers | map(attribute="package") | list }}'
|
||||
when: ansible_facts['os_family'] == 'Debian'
|
||||
|
||||
- name: remove old neovim configuration file
|
||||
file:
|
||||
|
|
@ -141,3 +148,45 @@
|
|||
src: 'templates/nvim/lua/indent-blankline.lua.j2',
|
||||
dest: '{{ xdg_config_dir }}/nvim/lua/indent-blankline.lua',
|
||||
}
|
||||
|
||||
- block:
|
||||
- name: register the current version
|
||||
command:
|
||||
argv:
|
||||
- '{{ neovim.install_path }}/bin/nvim'
|
||||
- '--version'
|
||||
register: neovim_stats
|
||||
|
||||
- name: parse the current version
|
||||
set_fact:
|
||||
neovim_installed_version: neovim_stats.stdout_lines[0] | regex_search('(v\d+\.\d+\.\d+)')
|
||||
when: neovim_stats.rc == 0
|
||||
|
||||
- name: download neovim {{ neovim.version }}
|
||||
get_url:
|
||||
url: 'https://github.com/neovim/neovim/releases/download/{{ neovim.version }}/nvim-linux64.tar.gz'
|
||||
dest: /tmp/nvim-linux64.tar.gz
|
||||
when: neovim_stats.rc > 0 or neovim_installed_version != neovim.version
|
||||
register: neovim_download
|
||||
|
||||
- name: extract downloaded neovim version
|
||||
unarchive:
|
||||
src: /tmp/nvim-linux64.tar.gz
|
||||
dest: '{{ neovim.install_path }}'
|
||||
extra_opts:
|
||||
- '--strip-components=1'
|
||||
- '--show-stored-names'
|
||||
when: neovim_download.rc == 0
|
||||
|
||||
- name: set updated PATH variable
|
||||
set_fact:
|
||||
neovim_new_path: '{{ neovim.install_path }}/bin'
|
||||
|
||||
- name: Update PATH to include {{ neovim_new_path }}
|
||||
ansible.builtin.replace:
|
||||
path: '~/.profile'
|
||||
regexp: '^PATH="{{ ansible_env.PATH }}"'
|
||||
replace: 'PATH="{{ ansible_env.PATH }}:{{ neovim_new_path }}"'
|
||||
when: neovim_new_path not in ansible_env.PATH
|
||||
|
||||
when: ansible_facts['os_family'] == 'Debian'
|
||||
|
|
|
|||
|
|
@ -23,8 +23,15 @@ end
|
|||
|
||||
--enable some language servers with the additional completion capabilities
|
||||
--offered by nvim-cmp
|
||||
-- TODO: use `.join`?
|
||||
local servers = {
|
||||
'ansiblels', 'yamlls', 'cssls', 'jsonls', 'tsserver', 'bashls', 'lua_ls'
|
||||
{% for item in language_servers %}
|
||||
{% if item.auto_setup and not loop.last %}
|
||||
'{{ item.server_name }}',
|
||||
{% elif item.auto_setup %}
|
||||
'{{ item.server_name }}'
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
--add additional capabilities supported by nvim-cmp
|
||||
|
|
@ -42,6 +49,7 @@ end
|
|||
|
||||
local util = require('lspconfig/util')
|
||||
|
||||
{% if ansible_facts.os_family == 'Archlinux' %}
|
||||
local python_root_dir = function(fname)
|
||||
return util.root_pattern('.git', 'setup.cfg', 'requirements')(fname) or
|
||||
util.path.dirname(fname)
|
||||
|
|
@ -72,12 +80,14 @@ nvim_lsp.pyright.setup({
|
|||
root_dir = python_root_dir
|
||||
})
|
||||
|
||||
|
||||
nvim_lsp.html.setup({
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
filetypes = { 'html', 'htmldjango' },
|
||||
})
|
||||
|
||||
{% endif %}
|
||||
local cmp = require('cmp')
|
||||
local luasnip = require('luasnip')
|
||||
|
||||
|
|
|
|||
|
|
@ -32,15 +32,49 @@ aur_build_dir: '/usr/local/src'
|
|||
python_build_dir: '/usr/local/src'
|
||||
python_install_dir: '/opt'
|
||||
|
||||
# Note that the "python-lsp-server", "python-lsp-ruff" and "neovim" python
|
||||
# packages should be installed to the corresponding virtualenv as well.
|
||||
language_servers:
|
||||
- ansible-language-server
|
||||
- yaml-language-server
|
||||
- typescript-language-server
|
||||
- vscode-html-languageserver
|
||||
- vscode-json-languageserver
|
||||
- vscode-css-languageserver
|
||||
- bash-language-server
|
||||
- lua-language-server
|
||||
- {
|
||||
package: ansible-language-server,
|
||||
server_name: 'ansiblels',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: yaml-language-server,
|
||||
server_name: 'yamlls',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: typescript-language-server,
|
||||
server_name: 'tsserver',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: vscode-html-languageserver,
|
||||
server_name: 'html',
|
||||
auto_setup: false
|
||||
}
|
||||
- {
|
||||
package: vscode-json-languageserver,
|
||||
server_name: 'jsonls',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: vscode-css-languageserver,
|
||||
server_name: 'cssls',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: bash-language-server,
|
||||
server_name: 'bashls',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: lua-language-server,
|
||||
server_name: 'lua_ls',
|
||||
auto_setup: true
|
||||
}
|
||||
|
||||
python_download_url: 'https://www.python.org/ftp/python'
|
||||
python_versions:
|
||||
|
|
|
|||
|
|
@ -5,18 +5,29 @@ packages:
|
|||
- python3
|
||||
- git
|
||||
- vim
|
||||
- neovim
|
||||
- npm
|
||||
- tree-sitter
|
||||
- ripgrep
|
||||
|
||||
# TODO: investigate available lsps
|
||||
neovim:
|
||||
version: 'v0.10.1'
|
||||
install_path: '/opt/nvim'
|
||||
download_checksum: 4867de01a17f6083f902f8aa5215b40b0ed3a36e83cc0293de3f11708f1f9793
|
||||
|
||||
# TODO: add lua language server, see https://github.com/LuaLS/lua-language-server?
|
||||
language_servers:
|
||||
- ansible-language-server
|
||||
- yaml-language-server
|
||||
- typescript-language-server
|
||||
- vscode-html-languageserver
|
||||
- vscode-json-languageserver
|
||||
- vscode-css-languageserver
|
||||
- bash-language-server
|
||||
- lua-language-server
|
||||
- {
|
||||
package: '@ansible/ansible-language-server',
|
||||
server_name: 'ansiblels',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: yaml-language-server,
|
||||
server_name: 'yamlls',
|
||||
auto_setup: true
|
||||
}
|
||||
- {
|
||||
package: bash-language-server,
|
||||
server_name: 'bashls',
|
||||
auto_setup: true
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue