From 50f8f8aa949a810644e191cb105c649d9febb0b8 Mon Sep 17 00:00:00 2001 From: Jannik Buhr Date: Mon, 12 Feb 2024 11:34:36 +0100 Subject: [PATCH] wip --- filetype.lua | 12 +++ lua/plugins/quarto.lua | 26 +++++ lua/plugins/specific.lua | 47 +++++++--- queries/markdown/highlights.scm | 117 +++++++++++++++++++++++ queries/markdown_inline/highlights.scm | 125 +++++++++++++++++++++++++ 5 files changed, 316 insertions(+), 11 deletions(-) create mode 100644 filetype.lua create mode 100644 queries/markdown/highlights.scm create mode 100644 queries/markdown_inline/highlights.scm diff --git a/filetype.lua b/filetype.lua new file mode 100644 index 0000000..423a504 --- /dev/null +++ b/filetype.lua @@ -0,0 +1,12 @@ + +vim.filetype.add({ + extension = { + cp2k = 'cp2k', + inp = 'cp2k', + }, + pattern = { + ['.*cp2k.*%.inp'] = 'cp2k', + }, +}) + + diff --git a/lua/plugins/quarto.lua b/lua/plugins/quarto.lua index ef9dadc..6a03fb6 100644 --- a/lua/plugins/quarto.lua +++ b/lua/plugins/quarto.lua @@ -513,6 +513,32 @@ return { } } } + + + local configs = require 'lspconfig.configs' + if not configs.cp2k then + configs.cp2k = { + default_config = { + cmd = { 'cp2k-language-server' }, + filetypes = { 'cp2k' }, + single_file_support = true, + root_dir = function(fname) + local root_files = { + 'cp2k.inp', + 'cp2k.template.inp', + } + return util.root_pattern(unpack(root_files))(fname) or util.find_git_ancestor(fname) + end, + settings = {}, + }, + } + end + + lspconfig.cp2k.setup { + on_attach = on_attach, + capabilities = capabilities, + flags = lsp_flags, + } end, }, diff --git a/lua/plugins/specific.lua b/lua/plugins/specific.lua index 814a335..5b79dd8 100644 --- a/lua/plugins/specific.lua +++ b/lua/plugins/specific.lua @@ -3,6 +3,14 @@ return { + { + "nvim-neorg/neorg", + config = function() + require("neorg").setup { + } + end, + }, + -- { -- "jakewvincent/mkdnflow.nvim", -- config = function () @@ -23,15 +31,16 @@ return { "nvim-lua/plenary.nvim", }, keys = { - { "nd", ':ObsidianToday', "obsidian daily" }, - { "nt", ':ObsidianTomorrow', "obsidian tomorrow" }, - { "ny", ':ObsidianYesterday', "obsidian yesterday" }, - { "nb", ':ObsidianBacklinks', "obsidian backlinks" }, - { "nl", ':ObsidianLink', "obsidian link selection" }, - { "nf", ':ObsidianFollowLink', "obsidian follow link" }, - { "nn", ':ObsidianNew', "obsidian new" }, - { "ns", ':ObsidianSearch', "obsidian search" }, - { "no", ':ObsidianQuickSwitch', "obsidian quickswitch" }, + { "nd", ':ObsidianToday', desc = "obsidian daily" }, + { "nt", ':ObsidianToday 1', desc = "obsidian tomorrow" }, + { "ny", ':ObsidianToday -1', desc = "obsidian yesterday" }, + { "nb", ':ObsidianBacklinks', desc = "obsidian backlinks" }, + { "nl", ':ObsidianLink', desc = "obsidian link selection" }, + { "nf", ':ObsidianFollowLink', desc = "obsidian follow link" }, + { "nn", ':ObsidianNew', desc = "obsidian new" }, + { "ns", ':ObsidianSearch', desc = "obsidian search" }, + { "no", ':ObsidianQuickSwitch', desc = "obsidian quickswitch" }, + { "nO", ':ObsidianOpen', desc = "obsidian open in app" }, }, config = function() require("obsidian").setup { @@ -63,10 +72,26 @@ return { opts = { buffer = true }, }, }, + -- Optional, customize how names/IDs for new notes are created. + note_id_func = function(title) + -- Create note IDs in a Zettelkasten format with a timestamp and a suffix. + -- In this case a note with the title 'My new note' will be given an ID that looks + -- like '1657296016-my-new-note', and therefore the file name '1657296016-my-new-note.md' + local suffix = "" + if title ~= nil then + -- If title is given, transform it into valid file name. + suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower() + else + -- If title is nil, just add 4 random uppercase letters to the suffix. + for _ = 1, 4 do + suffix = suffix .. string.char(math.random(65, 90)) + end + end + return tostring(os.time()) .. "-" .. suffix + end, } - vim.wo.conceallevel = 1 - + vim.wo.conceallevel = 1 end, } } diff --git a/queries/markdown/highlights.scm b/queries/markdown/highlights.scm new file mode 100644 index 0000000..08f39d6 --- /dev/null +++ b/queries/markdown/highlights.scm @@ -0,0 +1,117 @@ +;From MDeiml/tree-sitter-markdown & Helix +(setext_heading + (paragraph) @markup.heading.1 + (setext_h1_underline) @markup.heading.1.marker) + +(setext_heading + (paragraph) @markup.heading.2 + (setext_h2_underline) @markup.heading.2.marker) + +(atx_heading + (atx_h1_marker) @markup.heading.1.marker + (inline) @markup.heading.1) + +(atx_heading + (atx_h2_marker) @markup.heading.2.marker + (inline) @markup.heading.2) + +(atx_heading + (atx_h3_marker) @markup.heading.3.marker + (inline) @markup.heading.3) + +(atx_heading + (atx_h4_marker) @markup.heading.4.marker + (inline) @markup.heading.4) + +(atx_heading + (atx_h5_marker) @markup.heading.5.marker + (inline) @markup.heading.5) + +(atx_heading + (atx_h6_marker) @markup.heading.6.marker + (inline) @markup.heading.6) + +(info_string) @label + +(pipe_table_header + (pipe_table_cell) @markup.heading) + +(pipe_table_header + "|" @punctuation.special) + +(pipe_table_row + "|" @punctuation.special) + +(pipe_table_delimiter_row + "|" @punctuation.special) + +(pipe_table_delimiter_cell) @punctuation.special + +; Code blocks (conceal backticks and language annotation) +(indented_code_block) @markup.raw.block + +((fenced_code_block) @markup.raw.block + (#set! "priority" 90)) + +(fenced_code_block + (fenced_code_block_delimiter) @markup.raw.delimiter + (#set! conceal "")) + +; (fenced_code_block +; (info_string +; (language) @conceal +; (#set! conceal ""))) + +(link_destination) @markup.link.url + +[ + (link_title) + (link_label) +] @markup.link.label + +[ + (list_marker_plus) + (list_marker_minus) + (list_marker_star) + (list_marker_dot) + (list_marker_parenthesis) +] @markup.list + +; NOTE: The following has been commented out due to issues with spaces in the +; list marker nodes generated by the parser. If those spaces ever get captured +; by a different node (e.g. block_continuation) we can safely readd these +; conceals. +; ;; Conceal bullet points +; ([(list_marker_plus) (list_marker_star)] +; @punctuation.special +; (#offset! @punctuation.special 0 0 0 -1) +; (#set! conceal "•")) +; ([(list_marker_plus) (list_marker_star)] +; @punctuation.special +; (#any-of? @punctuation.special "+" "*") +; (#set! conceal "•")) +; ((list_marker_minus) +; @punctuation.special +; (#offset! @punctuation.special 0 0 0 -1) +; (#set! conceal "—")) +; ((list_marker_minus) +; @punctuation.special +; (#eq? @punctuation.special "-") +; (#set! conceal "—")) +(thematic_break) @punctuation.special + +(task_list_marker_unchecked) @markup.list.unchecked + +(task_list_marker_checked) @markup.list.checked + +((block_quote) @markup.quote + (#set! "priority" 90)) + +[ + (block_continuation) + (block_quote_marker) +] @punctuation.special + +(backslash_escape) @string.escape + +(inline) @spell diff --git a/queries/markdown_inline/highlights.scm b/queries/markdown_inline/highlights.scm new file mode 100644 index 0000000..8cf4859 --- /dev/null +++ b/queries/markdown_inline/highlights.scm @@ -0,0 +1,125 @@ +; From MDeiml/tree-sitter-markdown +(code_span) @markup.raw @nospell + +(emphasis) @markup.italic + +(strong_emphasis) @markup.strong + +(strikethrough) @markup.strikethrough + +(shortcut_link + (link_text) @nospell) + +[ + (backslash_escape) + (hard_line_break) +] @string.escape + +; Conceal codeblock and text style markers +((code_span_delimiter) @markup.raw.delimiter + (#set! conceal "")) + +((emphasis_delimiter) @conceal + (#set! conceal "")) + +; Conceal inline links +(inline_link + [ + "[" + "]" + "(" + (link_destination) + ")" + ] @markup.link + (#set! conceal "")) + +(image + [ + "!" + "[" + "]" + "(" + (link_destination) + ")" + ] @markup.link) + +(image + [ + ("!" @exclamation_mark) + "[" + "]" + "(" + (link_destination) + ")" + ]) + +; (( +; ("!" @exclamation_mark) +; "[" @open +; "]" @close +; "(" @openround +; _ @dest +; ")" @closeround +; ) @markup.link) + +; Conceal full reference links +(full_reference_link + [ + "[" + "]" + (link_label) + ] @markup.link + (#set! conceal "")) + +; Conceal collapsed reference links +(collapsed_reference_link + [ + "[" + "]" + ] @markup.link + (#set! conceal "")) + +; Conceal shortcut links +(shortcut_link + [ + "[" + "]" + ] @markup.link + (#set! conceal "")) + +[ + (link_destination) + (uri_autolink) +] @markup.link.url @nospell + +[ + (link_label) + (link_text) + (link_title) + (image_description) +] @markup.link.label + +; Replace common HTML entities. +((entity_reference) @character.special + (#eq? @character.special " ") + (#set! conceal "")) + +((entity_reference) @character.special + (#eq? @character.special "<") + (#set! conceal "<")) + +((entity_reference) @character.special + (#eq? @character.special ">") + (#set! conceal ">")) + +((entity_reference) @character.special + (#eq? @character.special "&") + (#set! conceal "&")) + +((entity_reference) @character.special + (#eq? @character.special """) + (#set! conceal "\"")) + +((entity_reference) @character.special + (#any-of? @character.special " " " ") + (#set! conceal " "))