From d33e4039157e22fe58bb2b5d6b58db4aa3d3e366 Mon Sep 17 00:00:00 2001 From: Martin Pander Date: Thu, 10 Jul 2025 07:55:44 +0200 Subject: [PATCH] Merge main; Move ft --- nix/common.nix | 2 +- nix/user/nvim.nix | 3 ++ nix/user/tmux.nix | 1 + nvim/filetype.lua | 103 ++++++++++++++++++++++++++++++++++++++++++++++ nvim/plugins.lua | 55 +++++++++++++++++++------ 5 files changed, 151 insertions(+), 13 deletions(-) create mode 100644 nvim/filetype.lua diff --git a/nix/common.nix b/nix/common.nix index 9e3ea19..2c349fd 100644 --- a/nix/common.nix +++ b/nix/common.nix @@ -50,7 +50,7 @@ #}; #home.shellAliases = { - # "ll" = "ls -la"; + # "ll" = "ls -la"; # "t" = "tmuxp"; # "tl" = "tmuxp load"; # }; diff --git a/nix/user/nvim.nix b/nix/user/nvim.nix index d54a704..d6225a5 100644 --- a/nix/user/nvim.nix +++ b/nix/user/nvim.nix @@ -31,6 +31,8 @@ nvim-lint todo-comments-nvim # vim-startify + promise-async + nvim-ufo vim-windowswap vim-nix plenary-nvim @@ -77,6 +79,7 @@ (lib.strings.fileContents ../../nvim/base.lua) (lib.strings.fileContents ../../nvim/keymaps.lua) (lib.strings.fileContents ../../nvim/plugins.lua) + (lib.strings.fileContents ../../nvim/filetype.lua) ]; }; diff --git a/nix/user/tmux.nix b/nix/user/tmux.nix index 5680f6f..303b712 100644 --- a/nix/user/tmux.nix +++ b/nix/user/tmux.nix @@ -26,6 +26,7 @@ bind c new-window -a -c "#{pane_current_path}" bind C-s display-popup -E "zsh ~/bin/tmuxp_selector.sh" + bind C-g display-popup -E -d "#{pane_current_path}" -xC -yC -w 80% -h 75% "lazygit" ####################################### # status line diff --git a/nvim/filetype.lua b/nvim/filetype.lua new file mode 100644 index 0000000..779c8e4 --- /dev/null +++ b/nvim/filetype.lua @@ -0,0 +1,103 @@ +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local lspconfig = require("lspconfig") + +vim.api.nvim_create_augroup('FileTypeConfigs', { clear = true }) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'python', + callback = function() + require('dap-python').setup() + lspconfig.pyright.setup({ capabilities = capabilities }) + require("conform").setup({ + python = {"black"}, + }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'go', + callback = function() + require('dap-python').setup() + + lspconfig.gopls.setup({ capabilities = capabilities }) + + require("conform").setup({ + go = {"gofmt"}, + }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'rust', + callback = function() + require('dap-python').setup() + + lspconfig.rust_analyzer.setup({ + capabilities = capabilities, + settings = { + ["rust-analyzer"] = { + checkOnSave = { + command = "clippy", + }, + }, + }, + }) + + require("conform").setup({ + rust = {"rustfmt"}, + }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'markdown', + callback = function() + lspconfig.marksman.setup({ capabilities = capabilities }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'dockerfile', + callback = function() + lspconfig.dockerls.setup({ capabilities = capabilities }) + lspconfig.docker_compose_language_service.setup({ capabilities = capabilities }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'cs', + callback = function() + lspconfig.omnisharp.setup({ capabilities = capabilities }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'yaml', + callback = function() + lspconfig.yamlls.setup({ capabilities = capabilities }) + lspconfig.docker_compose_language_service.setup({ capabilities = capabilities }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = {'c', 'cpp', 'objc', 'objcpp'}, + callback = function() + lspconfig.clangd.setup({ capabilities = capabilities }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + group = 'FileTypeConfigs', + pattern = 'sql', + callback = function() + lspconfig.sqls.setup({ capabilities = capabilities }) + end, +}) diff --git a/nvim/plugins.lua b/nvim/plugins.lua index 24e944c..3f88df9 100644 --- a/nvim/plugins.lua +++ b/nvim/plugins.lua @@ -97,18 +97,9 @@ cmp.setup.cmdline(':', { local capabilities = require('cmp_nvim_lsp').default_capabilities() local lspconfig = require("lspconfig") -lspconfig.gopls.setup({ capabilities = capabilities }) -lspconfig.svelte.setup({ capabilities = capabilities }) -lspconfig.pyright.setup({ capabilities = capabilities }) -lspconfig.omnisharp.setup({ capabilities = capabilities }) -lspconfig.clangd.setup({ capabilities = capabilities }) -lspconfig.dockerls.setup({ capabilities = capabilities }) -lspconfig.docker_compose_language_service.setup({ capabilities = capabilities }) -lspconfig.flow.setup({ capabilities = capabilities }) -lspconfig.marksman.setup({ capabilities = capabilities }) -lspconfig.sqls.setup({ capabilities = capabilities }) -lspconfig.yamlls.setup({ capabilities = capabilities }) -lspconfig.nil_ls.setup({ capabilities = capabilities }) +-- lspconfig.svelte.setup({ capabilities = capabilities }) +-- lspconfig.flow.setup({ capabilities = capabilities }) +-- lspconfig.nil_ls.setup({ capabilities = capabilities }) require("yanky").setup({ ring = { @@ -277,6 +268,11 @@ require("obsidian").setup({ path = "/mnt/c/Users/marti/Documents/notes/Work", }, }, + templates = { + folder = "_templates", + date_format = "%Y-%m-%d, %a", + time_format = "%H:%M", + }, ui = { checkboxes = { [" "] = { char = "󰄱", hl_group = "ObsidianTodo" }, @@ -287,6 +283,41 @@ require("obsidian").setup({ ["?"] = { char = "?", hl_group = "ObsidianImportant" }, }, }, + disable_frontmatter = false, + note_frontmatter_func = function(note) + -- Add the title of the note as an alias. + if note.title then + note:add_alias(note.title) + end + + local out = { id = note.id, tags = note.tags } + + -- `note.metadata` contains any manually added fields in the frontmatter. + -- So here we just make sure those fields are kept in the frontmatter. + if note.metadata ~= nil and not vim.tbl_isempty(note.metadata) then + for k, v in pairs(note.metadata) do + out[k] = v + end + end + + return out + end, + note_path_func = function(spec) + -- This is equivalent to the default behavior. + local path = spec.dir / spec.title + return path:with_suffix(".md") + end, + -- daily_notes = { + -- -- Optional, if you keep daily notes in a separate directory. + -- folder = "Journal", + -- -- Optional, if you want to change the date format for the ID of daily notes. + -- date_format = "%Y-%m-%d", + -- -- Optional, default tags to add to each new daily note created. + -- default_tags = { "journal" }, + -- -- Optional, if you want to automatically insert a template from your template directory like 'daily.md' + -- template = "daily.md" + -- }, + }) require("conform").setup({