diff --git a/files/tmux.sh b/files/tmux.sh new file mode 100755 index 0000000..5bcc267 --- /dev/null +++ b/files/tmux.sh @@ -0,0 +1,33 @@ +#!/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 6963cd8..de53353 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: true + auto_setup: false - package: yaml-language-server server_name: 'yamlls' diff --git a/tasks/neovim.yml b/tasks/neovim.yml index b647b8d..f6e0696 100644 --- a/tasks/neovim.yml +++ b/tasks/neovim.yml @@ -120,3 +120,6 @@ - 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 0696fb1..84f97da 100644 --- a/templates/gitconfig.j2 +++ b/templates/gitconfig.j2 @@ -50,4 +50,5 @@ 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 84788ee..309c912 100644 --- a/templates/nvim/init.lua.j2 +++ b/templates/nvim/init.lua.j2 @@ -1,6 +1,5 @@ -- {{ ansible_managed }} --- TODO: load environment vars from .env files require('options') require('_filetype') require('colorscheme') @@ -12,3 +11,4 @@ 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 new file mode 100644 index 0000000..a6a4ff0 --- /dev/null +++ b/templates/nvim/lua/formatting.lua.j2 @@ -0,0 +1,22 @@ +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 b76afc8..78fd62f 100644 --- a/templates/nvim/lua/lsp.lua.j2 +++ b/templates/nvim/lua/lsp.lua.j2 @@ -95,6 +95,18 @@ 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, @@ -175,48 +187,3 @@ 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