diff --git a/.gitmodules b/.gitmodules index 338ee2b..e3949bf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -20,3 +20,6 @@ [submodule "dot_config/nvim/pack/plugins/start/chadtree"] path = dot_config/nvim/pack/plugins/start/chadtree url = https://github.com/ms-jpq/chadtree +[submodule "dot_config/nvim/pack/plugins/start/nvim-treesitter"] + path = dot_config/nvim/pack/plugins/start/nvim-treesitter + url = https://github.com/nvim-treesitter/nvim-treesitter diff --git a/dot_config/nvim/conf.d/config.lua b/dot_config/nvim/conf.d/config.lua new file mode 100644 index 0000000..1477eb7 --- /dev/null +++ b/dot_config/nvim/conf.d/config.lua @@ -0,0 +1,15 @@ +-- general settings +vim.cmd.colorscheme "catppuccin-frappe" +vim.g.mapleader = " " +vim.wo.relativenumber = true + +-- CHADTree +vim.api.nvim_set_keymap('n', 'v', 'CHADopen', { noremap = true, silent = true }) + +-- Telescope +local builtin = require('telescope.builtin') +vim.keymap.set('n', 'ff', builtin.find_files, {}) +vim.keymap.set('n', 'fg', builtin.live_grep, {}) +vim.keymap.set('n', 'fb', builtin.buffers, {}) +vim.keymap.set('n', 'fh', builtin.help_tags, {}) + diff --git a/dot_config/nvim/conf.d/lsp.lua b/dot_config/nvim/conf.d/lsp.lua new file mode 100644 index 0000000..7c8656c --- /dev/null +++ b/dot_config/nvim/conf.d/lsp.lua @@ -0,0 +1,79 @@ +-- LSP settings +vim.g.coq_settings = { auto_start = 'shut-up' } +local coq = require "coq" + +-- Function to get root directory +local function get_root_dir(fname, patterns) + local dir = vim.fs.dirname(fname) + for _, pattern in ipairs(patterns) do + local match = vim.fn.globpath(dir, pattern) + if match ~= "" then + return dir + end + end + return nil +end + +-- Function to start LSP +local function start_lsp(server_name, cmd, patterns) + return function(args) + local root_dir = get_root_dir(vim.api.nvim_buf_get_name(args.buf), patterns) + if root_dir then + vim.lsp.start(coq.lsp_ensure_capabilities({ + name = server_name, + cmd = cmd, + root_dir = root_dir, + })) + end + end +end + +-- Create autocommands for different file types +vim.api.nvim_create_autocmd('FileType', { + pattern = 'python', + callback = start_lsp('pyright', {'pyright-langserver', '--stdio'}, {'setup.py', 'pyproject.toml'}) +}) + +vim.api.nvim_create_autocmd('FileType', { + pattern = {'javascript', 'typescript'}, + callback = start_lsp('tsserver', {'typescript-language-server', '--stdio'}, {'package.json', 'tsconfig.json'}) +}) + +vim.api.nvim_create_autocmd('FileType', { + pattern = 'go', + callback = start_lsp('gopls', {'gopls'}, {'go.mod'}) +}) + +-- Enable signature completion +vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local bufnr = args.buf + local client = vim.lsp.get_client_by_id(args.data.client_id) + if vim.tbl_contains({ 'null-ls' }, client.name) then -- blacklist lsp + return + end + require("lsp_signature").on_attach({ + -- ... setup options here ... + }, bufnr) + end, +}) + +-- Function to format the current buffer on save +local function lsp_format_on_save(bufnr) + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ async = false }) + end, + }) +end + +-- Create an autocmd for LspAttach event +vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local bufnr = args.buf + -- Set up the buffer-local autocmd for formatting on save + lsp_format_on_save(bufnr) + end, +}) + diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua index 29d9428..4de5767 100644 --- a/dot_config/nvim/init.lua +++ b/dot_config/nvim/init.lua @@ -1,94 +1 @@ --- general settings -vim.cmd.colorscheme "catppuccin-frappe" -vim.g.mapleader = " " -vim.wo.relativenumber = true - --- CHADTree -vim.api.nvim_set_keymap('n', 'v', 'CHADopen', { noremap = true, silent = true }) - --- Telescope -local builtin = require('telescope.builtin') -vim.keymap.set('n', 'ff', builtin.find_files, {}) -vim.keymap.set('n', 'fg', builtin.live_grep, {}) -vim.keymap.set('n', 'fb', builtin.buffers, {}) -vim.keymap.set('n', 'fh', builtin.help_tags, {}) - --- LSP settings -vim.g.coq_settings = { auto_start = 'shut-up' } -local coq = require "coq" - --- Function to get root directory -local function get_root_dir(fname, patterns) - local dir = vim.fs.dirname(fname) - for _, pattern in ipairs(patterns) do - local match = vim.fn.globpath(dir, pattern) - if match ~= "" then - return dir - end - end - return nil -end - --- Function to start LSP -local function start_lsp(server_name, cmd, patterns) - return function(args) - local root_dir = get_root_dir(vim.api.nvim_buf_get_name(args.buf), patterns) - if root_dir then - vim.lsp.start(coq.lsp_ensure_capabilities({ - name = server_name, - cmd = cmd, - root_dir = root_dir, - })) - end - end -end - --- Create autocommands for different file types -vim.api.nvim_create_autocmd('FileType', { - pattern = 'python', - callback = start_lsp('pyright', {'pyright-langserver', '--stdio'}, {'setup.py', 'pyproject.toml'}) -}) - -vim.api.nvim_create_autocmd('FileType', { - pattern = {'javascript', 'typescript'}, - callback = start_lsp('tsserver', {'typescript-language-server', '--stdio'}, {'package.json', 'tsconfig.json'}) -}) - -vim.api.nvim_create_autocmd('FileType', { - pattern = 'go', - callback = start_lsp('gopls', {'gopls'}, {'go.mod'}) -}) - --- Enable signature completion -vim.api.nvim_create_autocmd("LspAttach", { - callback = function(args) - local bufnr = args.buf - local client = vim.lsp.get_client_by_id(args.data.client_id) - if vim.tbl_contains({ 'null-ls' }, client.name) then -- blacklist lsp - return - end - require("lsp_signature").on_attach({ - -- ... setup options here ... - }, bufnr) - end, -}) - --- Function to format the current buffer on save -local function lsp_format_on_save(bufnr) - vim.api.nvim_create_autocmd("BufWritePre", { - buffer = bufnr, - callback = function() - vim.lsp.buf.format({ async = false }) - end, - }) -end - --- Create an autocmd for LspAttach event -vim.api.nvim_create_autocmd("LspAttach", { - callback = function(args) - local bufnr = args.buf - -- Set up the buffer-local autocmd for formatting on save - lsp_format_on_save(bufnr) - end, -}) - +vim.cmd('runtime! conf.d/*.lua')