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
|
name: neovim
|
||||||
global: true
|
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
|
- name: install language servers
|
||||||
become: true
|
become: true
|
||||||
package:
|
package:
|
||||||
name: '{{ item }}'
|
name: '{{ item }}'
|
||||||
state: present
|
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
|
- name: remove old neovim configuration file
|
||||||
file:
|
file:
|
||||||
|
|
@ -141,3 +148,45 @@
|
||||||
src: 'templates/nvim/lua/indent-blankline.lua.j2',
|
src: 'templates/nvim/lua/indent-blankline.lua.j2',
|
||||||
dest: '{{ xdg_config_dir }}/nvim/lua/indent-blankline.lua',
|
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
|
--enable some language servers with the additional completion capabilities
|
||||||
--offered by nvim-cmp
|
--offered by nvim-cmp
|
||||||
|
-- TODO: use `.join`?
|
||||||
local servers = {
|
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
|
--add additional capabilities supported by nvim-cmp
|
||||||
|
|
@ -42,6 +49,7 @@ end
|
||||||
|
|
||||||
local util = require('lspconfig/util')
|
local util = require('lspconfig/util')
|
||||||
|
|
||||||
|
{% if ansible_facts.os_family == 'Archlinux' %}
|
||||||
local python_root_dir = function(fname)
|
local python_root_dir = function(fname)
|
||||||
return util.root_pattern('.git', 'setup.cfg', 'requirements')(fname) or
|
return util.root_pattern('.git', 'setup.cfg', 'requirements')(fname) or
|
||||||
util.path.dirname(fname)
|
util.path.dirname(fname)
|
||||||
|
|
@ -72,12 +80,14 @@ nvim_lsp.pyright.setup({
|
||||||
root_dir = python_root_dir
|
root_dir = python_root_dir
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
nvim_lsp.html.setup({
|
nvim_lsp.html.setup({
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
filetypes = { 'html', 'htmldjango' },
|
filetypes = { 'html', 'htmldjango' },
|
||||||
})
|
})
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
local cmp = require('cmp')
|
local cmp = require('cmp')
|
||||||
local luasnip = require('luasnip')
|
local luasnip = require('luasnip')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,15 +32,49 @@ aur_build_dir: '/usr/local/src'
|
||||||
python_build_dir: '/usr/local/src'
|
python_build_dir: '/usr/local/src'
|
||||||
python_install_dir: '/opt'
|
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:
|
language_servers:
|
||||||
- ansible-language-server
|
- {
|
||||||
- yaml-language-server
|
package: ansible-language-server,
|
||||||
- typescript-language-server
|
server_name: 'ansiblels',
|
||||||
- vscode-html-languageserver
|
auto_setup: true
|
||||||
- vscode-json-languageserver
|
}
|
||||||
- vscode-css-languageserver
|
- {
|
||||||
- bash-language-server
|
package: yaml-language-server,
|
||||||
- lua-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_download_url: 'https://www.python.org/ftp/python'
|
||||||
python_versions:
|
python_versions:
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,29 @@ packages:
|
||||||
- python3
|
- python3
|
||||||
- git
|
- git
|
||||||
- vim
|
- vim
|
||||||
- neovim
|
|
||||||
- npm
|
- npm
|
||||||
- tree-sitter
|
- tree-sitter
|
||||||
- ripgrep
|
- 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:
|
language_servers:
|
||||||
- ansible-language-server
|
- {
|
||||||
- yaml-language-server
|
package: '@ansible/ansible-language-server',
|
||||||
- typescript-language-server
|
server_name: 'ansiblels',
|
||||||
- vscode-html-languageserver
|
auto_setup: true
|
||||||
- vscode-json-languageserver
|
}
|
||||||
- vscode-css-languageserver
|
- {
|
||||||
- bash-language-server
|
package: yaml-language-server,
|
||||||
- lua-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