diff --git a/.config/nvim/lua/goodhumored/languages/init.lua b/.config/nvim/lua/goodhumored/languages/init.lua index fd8e178..9b6d6c4 100644 --- a/.config/nvim/lua/goodhumored/languages/init.lua +++ b/.config/nvim/lua/goodhumored/languages/init.lua @@ -5,8 +5,10 @@ return { -- require("goodhumored.languages.rust.rust.vim"), require("goodhumored.languages.rust.rust-tools"), require("goodhumored.languages.markdown.otter"), + require("goodhumored.languages.markdown.obsidian-nvim"), + require("goodhumored.languages.markdown.bullets-nvim"), require("goodhumored.languages.markdown.markview"), - require("goodhumored.languages.markdown.markdown-preview"), + -- require("goodhumored.languages.markdown.markdown-preview"), require("goodhumored.languages.plantuml.plantuml"), }, } diff --git a/.config/nvim/lua/goodhumored/languages/markdown/bullets-nvim.lua b/.config/nvim/lua/goodhumored/languages/markdown/bullets-nvim.lua new file mode 100644 index 0000000..cdd373f --- /dev/null +++ b/.config/nvim/lua/goodhumored/languages/markdown/bullets-nvim.lua @@ -0,0 +1,3 @@ +return { + "bullets-vim/bullets.vim", +} diff --git a/.config/nvim/lua/goodhumored/languages/markdown/markview.lua b/.config/nvim/lua/goodhumored/languages/markdown/markview.lua index 6e3fd90..764f28d 100644 --- a/.config/nvim/lua/goodhumored/languages/markdown/markview.lua +++ b/.config/nvim/lua/goodhumored/languages/markdown/markview.lua @@ -14,4 +14,60 @@ return { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons", }, + + config = function() + -- Настройка markview.nvim + require("markview").setup({ + modes = { "n", "i", "c" }, + hybrid_modes = { "i" }, + checkboxes = { + enable = false, -- Отключить чекбоксы, чтобы избежать конфликта с obsidian.nvim + }, + headings = { + enable = true, + level_1 = { + style = "icon", + icon = "📌 ", + hl = "MarkviewHeading1", + padding_left = " ", + padding_right = " ", + }, + level_2 = { + style = "icon", + icon = "📋 ", + hl = "MarkviewHeading2", + padding_left = " ", + padding_right = " ", + }, + level_3 = { + style = "icon", + icon = "📝 ", + hl = "MarkviewHeading3", + padding_left = " ", + padding_right = " ", + }, + level_4 = { + style = "icon", + icon = "🔖 ", + hl = "MarkviewHeading4", + padding_left = " ", + padding_right = " ", + }, + }, + list_items = { + enable = false, + marker_minus = { rendered = "•" }, + marker_star = { rendered = "★" }, + marker_plus = { rendered = "➕" }, + }, + links = { + enable = false, + conceal = false, + hl = "Underlined", + }, + conceal = { + enabled = true, + }, + }) + end, } diff --git a/.config/nvim/lua/goodhumored/languages/markdown/obsidian-nvim.lua b/.config/nvim/lua/goodhumored/languages/markdown/obsidian-nvim.lua new file mode 100644 index 0000000..d4b04bc --- /dev/null +++ b/.config/nvim/lua/goodhumored/languages/markdown/obsidian-nvim.lua @@ -0,0 +1,183 @@ +return { + "epwalsh/obsidian.nvim", + version = "*", -- recommended, use latest release instead of latest commit + lazy = true, + ft = "markdown", + -- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault: + -- event = { + -- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'. + -- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/*.md" + -- -- refer to `:h file-pattern` for more examples + -- "BufReadPre path/to/my-vault/*.md", + -- "BufNewFile path/to/my-vault/*.md", + -- }, + dependencies = { + -- Required. + "nvim-lua/plenary.nvim", + + -- see below for full list of optional dependencies 👇 + }, + opts = { + workspaces = { + { + name = "personal", + path = "~/notes/personal", + }, + { + name = "work", + path = "~/notes/work/", + }, + { + name = "study", + path = "~/notes/study", + }, + }, + -- Optional, configure key mappings. These are the defaults. If you don't want to set any keymappings this + -- way then set 'mappings = {}'. + mappings = { + -- Overrides the 'gf' mapping to work on markdown/wiki links within your vault. + ["gf"] = { + action = function() + return require("obsidian").util.gf_passthrough() + end, + opts = { noremap = false, expr = true, buffer = true }, + }, + ["njt"] = { + action = function() + return vim.cmd("ObsidianToday") + end, + opts = { noremap = true, buffer = true, desc = "Open [t]oday's daily note" }, + }, + ["njT"] = { + action = function() + return vim.cmd("ObsidianTomorrow") + end, + opts = { noremap = true, buffer = true, desc = "Open [t]omorrow's daily note" }, + }, + ["njy"] = { + action = function() + return vim.cmd("ObsidianYesterday") + end, + opts = { noremap = true, buffer = true, desc = "Open [y]esterday's daily note" }, + }, + ["nj"] = { + action = function() + return vim.cmd("ObsidianDailies") + end, + opts = { noremap = true, buffer = true, desc = "Obsidian dailies" }, + }, + ["so"] = { + action = function() + return vim.cmd("ObsidianSearch") + end, + opts = { noremap = true, buffer = true, desc = "[S]earch [O]bsidian" }, + }, + ["ow"] = { + action = function() + return vim.cmd("ObsidianWorkspace") + end, + opts = { noremap = true, buffer = true, desc = "[O]bsidian [W]orkspace" }, + }, + -- Toggle check-boxes. + ["ch"] = { + action = function() + return require("obsidian").util.toggle_checkbox() + end, + opts = { buffer = true }, + }, + -- Smart action depending on context, either follow link or toggle checkbox. + [""] = { + action = function() + return require("obsidian").util.smart_action() + end, + opts = { buffer = true, expr = true }, + }, + }, + daily_notes = { + -- Optional, if you keep daily notes in a separate directory. + folder = "daily", + -- Optional, if you want to change the date format for the ID of daily notes. + date_format = "%Y-%m-%d", + -- Optional, if you want to change the date format of the default alias of daily notes. + alias_format = "%B %-d, %Y", + -- Optional, default tags to add to each new daily note created. + default_tags = { "daily-notes" }, + -- Optional, if you want to automatically insert a template from your template directory like 'daily.md' + template = nil, + }, + ui = { + enable = true, -- set to false to disable all additional syntax features + update_debounce = 200, -- update delay after a text change (in milliseconds) + max_file_length = 5000, -- disable UI features for files with more than this many lines + -- Define how various check-boxes are displayed + checkboxes = { + -- NOTE: the 'char' value has to be a single character, and the highlight groups are defined below. + [" "] = { char = "󰄱", hl_group = "ObsidianTodo" }, + ["."] = { char = "󰦖", hl_group = "ObsidianInProgress" }, + ["x"] = { char = "󰸞", hl_group = "ObsidianDone" }, + ["="] = { char = "", hl_group = "ObsidianPause" }, + [">"] = { char = "󱞩", hl_group = "ObsidianRightArrow" }, + ["~"] = { char = "", hl_group = "ObsidianTilde" }, + ["!"] = { char = "󱈸", hl_group = "ObsidianImportant" }, + -- Replace the above with this if you don't have a patched font: + -- [" "] = { char = "☐", hl_group = "ObsidianTodo" }, + -- ["x"] = { char = "✔", hl_group = "ObsidianDone" }, + + -- You can also add more custom ones... + }, + -- Use bullet marks for non-checkbox lists. + bullets = { char = "•", hl_group = "ObsidianBullet" }, + external_link_icon = { char = "", hl_group = "ObsidianExtLinkIcon" }, + -- Replace the above with this if you don't have a patched font: + -- external_link_icon = { char = "", hl_group = "ObsidianExtLinkIcon" }, + reference_text = { hl_group = "ObsidianRefText" }, + highlight_text = { hl_group = "ObsidianHighlightText" }, + tags = { hl_group = "ObsidianTag" }, + block_ids = { hl_group = "ObsidianBlockID" }, + hl_groups = { + -- The options are passed directly to `vim.api.nvim_set_hl()`. See `:help nvim_set_hl`. + ObsidianTodo = { bold = true, fg = "#89ddff" }, + ObsidianInProgress = { bold = true, fg = "#a8e0ae" }, + ObsidianDone = { bold = true, fg = "#84c470" }, + ObsidianRightArrow = { bold = true, fg = "#f78c6c" }, + ObsidianTilde = { bold = true, fg = "#bbbcc7" }, + ObsidianImportant = { bold = true, fg = "#d73128" }, + ObsidianPause = { bold = true, fg = "#bcd1a7" }, + ObsidianBullet = { bold = true, fg = "#89ddff" }, + ObsidianRefText = { underline = true, fg = "#c792ea" }, + ObsidianExtLinkIcon = { fg = "#c792ea" }, + ObsidianTag = { italic = true, fg = "#89ddff" }, + ObsidianBlockID = { italic = true, fg = "#89ddff" }, + ObsidianHighlightText = { bg = "#75662e" }, + }, + }, + + -- Specify how to handle attachments. + attachments = { + -- The default folder to place images in via `:ObsidianPasteImg`. + -- If this is a relative path it will be interpreted as relative to the vault root. + -- You can always override this per image by passing a full path to the command instead of just a filename. + img_folder = "assets/imgs", -- This is the default + + -- Optional, customize the default name or prefix when pasting images via `:ObsidianPasteImg`. + ---@return string + img_name_func = function() + -- Prefix image names with timestamp. + return string.format("%s-", os.time()) + end, + + -- A function that determines the text to insert in the note when pasting an image. + -- It takes two arguments, the `obsidian.Client` and an `obsidian.Path` to the image file. + -- This is the default implementation. + ---@param client obsidian.Client + ---@param path obsidian.Path the absolute path to the image file + ---@return string + img_text_func = function(client, path) + path = client:vault_relative_path(path) or path + return string.format("![%s](%s)", path.name, path) + end, + }, + + -- see below for full list of options 👇 + }, +} diff --git a/.config/nvim/lua/goodhumored/languages/neorg/neorg.lua b/.config/nvim/lua/goodhumored/languages/neorg/neorg.lua index d9445c1..f228ebc 100644 --- a/.config/nvim/lua/goodhumored/languages/neorg/neorg.lua +++ b/.config/nvim/lua/goodhumored/languages/neorg/neorg.lua @@ -45,35 +45,35 @@ return { end, keys = { - { - "nw", - ":Neorg workspace ", - desc = "[N]eorg [W]orkspaces", - }, - { - "nj", - ":Neorg journal", - desc = "[N]eorg [J]ournal", - }, - { - "ni", - ":Neorg index", - desc = "[N]eorg [I]ndex", - }, - { - "nT", - ":Neorg toc qflist", - desc = "[N]eorg [T]able of contents", - }, - { - "nr", - ":Neorg return", - desc = "[N]eorg [R]eturn", - }, - { - "tl", - ":Neorg render-latex", - desc = "[N]eorg [L]atex", - }, + -- { + -- "nw", + -- ":Neorg workspace ", + -- desc = "[N]eorg [W]orkspaces", + -- }, + -- { + -- "nj", + -- ":Neorg journal", + -- desc = "[N]eorg [J]ournal", + -- }, + -- { + -- "ni", + -- ":Neorg index", + -- desc = "[N]eorg [I]ndex", + -- }, + -- { + -- "nT", + -- ":Neorg toc qflist", + -- desc = "[N]eorg [T]able of contents", + -- }, + -- { + -- "nr", + -- ":Neorg return", + -- desc = "[N]eorg [R]eturn", + -- }, + -- { + -- "tl", + -- ":Neorg render-latex", + -- desc = "[N]eorg [L]atex", + -- }, }, }