diff --git a/files/tmux.sh b/files/tmux.sh deleted file mode 100755 index 5bcc267..0000000 --- a/files/tmux.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -session_name=${PWD##*/} -project_directory="$HOME/development/$session_name" -enable_formatting="" - -tmux has-session -t $session_name - -if [ $? != 0 ]; -then - tmux new-session \ - -c $project_directory \ - -ds $session_name \ - -e "project_dir=$project_directory" - - # FIRST WINDOW - tmux send-keys -t $session_name:0 'source ./env/bin/activate' C-m - tmux send-keys -t $session_name:0 'nvim' C-m - - # SECOND WINDOW - tmux new-window -t $session_name - - # THIRD WINDOW - tmux new-window -t $session_name - - # FOURTH WINDOW - tmux new-window -t $session_name - - # SELECT DEFAULT PANE AFTER OPENING - tmux select-window -t $session_name:0 -fi - -tmux attach -t $session_name diff --git a/group_vars/arch/neovim.yml b/group_vars/arch/neovim.yml index de53353..6963cd8 100644 --- a/group_vars/arch/neovim.yml +++ b/group_vars/arch/neovim.yml @@ -29,7 +29,7 @@ language_servers: - package: lua-language-server server_name: 'lua_ls' - auto_setup: false + auto_setup: true - package: yaml-language-server server_name: 'yamlls' diff --git a/tasks/neovim.yml b/tasks/neovim.yml index f6e0696..b647b8d 100644 --- a/tasks/neovim.yml +++ b/tasks/neovim.yml @@ -120,6 +120,3 @@ - src: 'templates/nvim/lua/filetype.lua.j2' dest: '{{ xdg_config_dir }}/nvim/lua/_filetype.lua' - - - src: 'templates/nvim/lua/formatting.lua.j2' - dest: '{{ xdg_config_dir }}/nvim/lua/formatting.lua' diff --git a/templates/gitconfig.j2 b/templates/gitconfig.j2 index 84f97da..0696fb1 100644 --- a/templates/gitconfig.j2 +++ b/templates/gitconfig.j2 @@ -50,5 +50,4 @@ autocorrect = prompt navigate = true hyperlinks = true line-numbers = true -map-styles = bold purple => syntax magenta, bold cyan => syntax blue, bold yellow => syntax yellow {% endif %} diff --git a/templates/nvim/init.lua.j2 b/templates/nvim/init.lua.j2 index 309c912..84788ee 100644 --- a/templates/nvim/init.lua.j2 +++ b/templates/nvim/init.lua.j2 @@ -1,5 +1,6 @@ -- {{ ansible_managed }} +-- TODO: load environment vars from .env files require('options') require('_filetype') require('colorscheme') @@ -11,4 +12,3 @@ require('indent-blankline') require('_nvim-tree') require('lua-line') require('_source-link') -require('formatting') diff --git a/templates/nvim/lua/formatting.lua.j2 b/templates/nvim/lua/formatting.lua.j2 deleted file mode 100644 index a6a4ff0..0000000 --- a/templates/nvim/lua/formatting.lua.j2 +++ /dev/null @@ -1,22 +0,0 @@ -local enable_formatting = os.getenv("enable_formatting") == 'true'; - -if (enable_formatting) then - vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('lsp', { clear = true }), - callback = function(args) - local client = vim.lsp.get_client_by_id(args.data.client_id) - - if client.server_capabilities.documentFormattingProvider then - vim.api.nvim_create_autocmd('BufWritePre', { - buffer = args.buf, - callback = function() - vim.lsp.buf.format { - async = false, - id = args.data.client_id - } - end, - }) - end - end - }) -end diff --git a/templates/nvim/lua/lsp.lua.j2 b/templates/nvim/lua/lsp.lua.j2 index 78fd62f..b76afc8 100644 --- a/templates/nvim/lua/lsp.lua.j2 +++ b/templates/nvim/lua/lsp.lua.j2 @@ -95,18 +95,6 @@ nvim_lsp.jsonls.setup { capabilities = snippet_capabilities, } -nvim_lsp.lua_ls.setup { - on_attach = on_attach, - capabilities = snippet_capabilities, - settings = { - Lua = { - diagnostics = { - globals = { 'vim' } - } - } - } -} - {% endif %} nvim_lsp.yamlls.setup { on_attach = on_attach, @@ -187,3 +175,48 @@ vim.diagnostic.config { end }, } + +local enable_formatting = os.getenv("ENABLE_FORMATTING") + +-- format buffers before saving for specific LSPs +if (enable_formatting) then + local excluded_clients = { 'pyright' } + + vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('lsp', { clear = true }), + callback = function(args) + vim.api.nvim_create_autocmd('BufWritePre', { + buffer = args.buf, + callback = function() + local formatting_clients = vim.lsp.get_clients { + bufnr = args.buf, + method = 'textDocument/formatting' + } + + local filtered_clients = {} + + for _, client in pairs(formatting_clients) do + if vim.list_contains(excluded_clients, client.name) then + goto skip + end + + table.insert(filtered_clients, client.name) + ::skip:: + end + + if #filtered_clients == 0 then + return + end + + vim.lsp.buf.format { + filter = function(client) + return vim.list_contains(filtered_clients, client.name) + end, + async = false, + id = args.data.client_id + } + end, + }) + end + }) +end