diff --git a/config/neomutt/accounts/uchicago b/config/neomutt/accounts/uchicago index 6ea7462..9252055 100644 --- a/config/neomutt/accounts/uchicago +++ b/config/neomutt/accounts/uchicago @@ -9,7 +9,6 @@ set crypt_autosign = no set crypt_opportunistic_encrypt = no set pgp_use_gpg_agent = yes set mbox_type = Maildir -set sort = "threads" # Account settings set folder = '~/mail/uchicago' diff --git a/config/neomutt/keybinds b/config/neomutt/keybinds index 4798138..cb0ad99 100644 --- a/config/neomutt/keybinds +++ b/config/neomutt/keybinds @@ -10,6 +10,7 @@ bind editor complete-query bind editor ^T complete # Pager +bind index,pager V edit-raw-message bind pager c imap-fetch-mail bind pager j next-line bind pager k previous-line diff --git a/config/neomutt/neomuttrc b/config/neomutt/neomuttrc index 4004a46..affbfd5 100644 --- a/config/neomutt/neomuttrc +++ b/config/neomutt/neomuttrc @@ -33,8 +33,9 @@ set date_format = "%d.%m.%Y %H:%M" # set sort = date # set sort_aux = date -set use_threads = reverse -set sort = last-date-received +set use_threads = threads +set sort = date +set sort_aux = date-received set sort_browser = reverse-date set uncollapse_jump set sort_re @@ -59,7 +60,7 @@ set tilde unset markers # MTA (mail transfer agent) -set sendmail = 'msmtpq --read-envelope-from --read-recipients' +set sendmail = 'msmtp --read-envelope-from --read-recipients' # Include keybindings source ~/.config/neomutt/keybinds diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 226515e..8045d11 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -56,6 +56,7 @@ add 'fang2hou/blink-copilot' add 'aserowy/tmux.nvim' add 'NMAC427/guess-indent.nvim' add 'wakatime/vim-wakatime' +add 'OXY2DEV/markview.nvim' -- color themes add 'EdenEast/nightfox.nvim' @@ -319,7 +320,7 @@ later(function() require('blink.cmp').setup { keymap = { preset = 'none', - [''] = { 'show', 'show_documentation', 'hide_documentation' }, + [''] = { 'show', 'show_documentation', 'hide_documentation' }, [''] = { 'hide' }, [''] = { 'accept', 'fallback' }, [''] = { @@ -347,6 +348,9 @@ later(function() }, }, completion = { + trigger = { + show_on_trigger_character = true, + }, menu = { enabled = true, border = 'rounded', @@ -376,6 +380,22 @@ later(function() } end) +later( + function() + require('markview').setup { + markdown_inline = { + checkboxes = { + checked = { + text = '󰗠', + hl = 'MarkviewCheckboxChecked', + scope_hl = 'MarkviewCheckboxStriked', + }, + }, + }, + } + end +) + later(function() require('mason').setup { ui = { @@ -395,6 +415,7 @@ later(function() 'rust_analyzer', -- Rust 'clangd', -- C/C++ 'copilot', + 'marksman', -- Markdown + Zettelkasten }, automatic_installation = true, } @@ -502,8 +523,15 @@ later(function() root_markers = { 'flake.nix', 'default.nix', 'shell.nix', '.git' }, } + -- Markdown (marksman) + vim.lsp.config.marksman = { + cmd = { 'marksman', 'server' }, + filetypes = { 'markdown', 'markdown.mdx' }, + root_markers = { '.marksman.toml', '.git', '.editorconfig' }, + } + -- Enable language servers - vim.lsp.enable { 'lua_ls', 'ts_ls', 'pyright', 'rust_analyzer', 'clangd', 'copilot', 'nixd' } + vim.lsp.enable { 'lua_ls', 'ts_ls', 'pyright', 'rust_analyzer', 'clangd', 'copilot', 'nixd', 'marksman' } end) local map = function(mode, lhs, rhs, opts) diff --git a/config/nvim/lua/raytheme.lua b/config/nvim/lua/raytheme.lua index 7bda1b9..1a75387 100644 --- a/config/nvim/lua/raytheme.lua +++ b/config/nvim/lua/raytheme.lua @@ -390,6 +390,115 @@ local function apply_highlights(c, opts) hi('@markup.strikethrough', { strikethrough = true }) hi('@markup.quote', { fg = c.comment, italic = true }) + -- Markview.nvim + -- Palette colors (used as base for many elements) + hi('MarkviewPalette0', { fg = c.tag, bg = c.bg_dark }) + hi('MarkviewPalette0Fg', { fg = c.tag }) + hi('MarkviewPalette0Bg', { bg = c.bg_dark }) + hi('MarkviewPalette0Sign', { fg = c.tag }) + hi('MarkviewPalette1', { fg = c.keyword, bg = c.bg_dark }) + hi('MarkviewPalette1Fg', { fg = c.keyword }) + hi('MarkviewPalette1Bg', { bg = c.bg_dark }) + hi('MarkviewPalette1Sign', { fg = c.keyword }) + hi('MarkviewPalette2', { fg = c.func, bg = c.bg_dark }) + hi('MarkviewPalette2Fg', { fg = c.func }) + hi('MarkviewPalette2Bg', { bg = c.bg_dark }) + hi('MarkviewPalette2Sign', { fg = c.func }) + hi('MarkviewPalette3', { fg = c.type, bg = c.bg_dark }) + hi('MarkviewPalette3Fg', { fg = c.type }) + hi('MarkviewPalette3Bg', { bg = c.bg_dark }) + hi('MarkviewPalette3Sign', { fg = c.type }) + hi('MarkviewPalette4', { fg = c.constant, bg = c.bg_dark }) + hi('MarkviewPalette4Fg', { fg = c.constant }) + hi('MarkviewPalette4Bg', { bg = c.bg_dark }) + hi('MarkviewPalette4Sign', { fg = c.constant }) + hi('MarkviewPalette5', { fg = c.misc, bg = c.bg_dark }) + hi('MarkviewPalette5Fg', { fg = c.misc }) + hi('MarkviewPalette5Bg', { bg = c.bg_dark }) + hi('MarkviewPalette5Sign', { fg = c.misc }) + hi('MarkviewPalette6', { fg = c.string, bg = c.bg_dark }) + hi('MarkviewPalette6Fg', { fg = c.string }) + hi('MarkviewPalette6Bg', { bg = c.bg_dark }) + hi('MarkviewPalette6Sign', { fg = c.string }) + + -- Headings + hi('MarkviewHeading1', { fg = c.tag, bold = true }) + hi('MarkviewHeading2', { fg = c.keyword, bold = true }) + hi('MarkviewHeading3', { fg = c.func, bold = true }) + hi('MarkviewHeading4', { fg = c.type, bold = true }) + hi('MarkviewHeading5', { fg = c.constant, bold = true }) + hi('MarkviewHeading6', { fg = c.misc, bold = true }) + hi('MarkviewHeading1Sign', { fg = c.tag }) + hi('MarkviewHeading2Sign', { fg = c.keyword }) + hi('MarkviewHeading3Sign', { fg = c.func }) + hi('MarkviewHeading4Sign', { fg = c.type }) + hi('MarkviewHeading5Sign', { fg = c.constant }) + hi('MarkviewHeading6Sign', { fg = c.misc }) + + -- Code + hi('MarkviewCode', { bg = c.bg_dark }) + hi('MarkviewCodeInfo', { fg = c.comment }) + hi('MarkviewCodeFg', { fg = c.fg }) + hi('MarkviewInlineCode', { fg = c.string, bg = c.bg_dark }) + + -- Lists + hi('MarkviewListItemStar', { fg = c.tag }) + hi('MarkviewListItemPlus', { fg = c.string }) + hi('MarkviewListItemMinus', { fg = c.keyword }) + + -- Checkboxes + hi('MarkviewCheckboxChecked', { fg = c.string }) + hi('MarkviewCheckboxUnchecked', { fg = c.fg }) + hi('MarkviewCheckboxPending', { fg = c.warning }) + hi('MarkviewCheckboxProgress', { fg = c.info }) + hi('MarkviewCheckboxCancelled', { fg = c.error, strikethrough = true }) + hi('MarkviewCheckboxStriked', { fg = c.fg_gutter, strikethrough = true }) + + -- Block quotes + hi('MarkviewBlockQuoteDefault', { fg = c.comment }) + hi('MarkviewBlockQuoteWarn', { fg = c.warning }) + hi('MarkviewBlockQuoteError', { fg = c.error }) + hi('MarkviewBlockQuoteNote', { fg = c.info }) + hi('MarkviewBlockQuoteOk', { fg = c.string }) + hi('MarkviewBlockQuoteSpecial', { fg = c.misc }) + + -- Tables + hi('MarkviewTableHeader', { fg = c.tag, bold = true }) + hi('MarkviewTableBorder', { fg = c.border }) + hi('MarkviewTableAlignLeft', { fg = c.border }) + hi('MarkviewTableAlignCenter', { fg = c.border }) + hi('MarkviewTableAlignRight', { fg = c.border }) + + -- Links + hi('MarkviewHyperlink', { fg = c.misc, underline = true }) + hi('MarkviewEmail', { fg = c.misc, underline = true }) + hi('MarkviewImage', { fg = c.support, underline = true }) + + -- Text styles + hi('MarkviewSubscript', { fg = c.fg_dark }) + hi('MarkviewSuperscript', { fg = c.fg_dark }) + + -- Icons (match palette colors) + hi('MarkviewIcon0', { fg = c.tag }) + hi('MarkviewIcon1', { fg = c.keyword }) + hi('MarkviewIcon2', { fg = c.func }) + hi('MarkviewIcon3', { fg = c.type }) + hi('MarkviewIcon4', { fg = c.constant }) + hi('MarkviewIcon5', { fg = c.misc }) + hi('MarkviewIcon6', { fg = c.string }) + + -- Gradients (subtle transition from dark to light) + hi('MarkviewGradient0', { fg = c.fg_gutter }) + hi('MarkviewGradient1', { fg = c.fg_gutter }) + hi('MarkviewGradient2', { fg = c.comment }) + hi('MarkviewGradient3', { fg = c.comment }) + hi('MarkviewGradient4', { fg = c.fg_dark }) + hi('MarkviewGradient5', { fg = c.fg_dark }) + hi('MarkviewGradient6', { fg = c.fg_dark }) + hi('MarkviewGradient7', { fg = c.fg }) + hi('MarkviewGradient8', { fg = c.fg }) + hi('MarkviewGradient9', { fg = c.fg }) + -- Apply user overrides if opts.overrides then for group, hl in pairs(opts.overrides) do diff --git a/config/sketchybar/items/widgets/calendar.lua b/config/sketchybar/items/widgets/calendar.lua index 48a128e..b66c5e3 100644 --- a/config/sketchybar/items/widgets/calendar.lua +++ b/config/sketchybar/items/widgets/calendar.lua @@ -8,8 +8,9 @@ local calendar = sbar.add('item', constants.items.CALENDAR, { calendar:subscribe({ 'forced', 'routine', 'system_woke' }, function(env) calendar:set { - label = os.date '%a %d %b, %H:%M', + label = os.date '%a %d %b, %I:%M %p', } end) -calendar:subscribe('mouse.clicked', function(env) sbar.exec "open -a 'Calendar'" end) +-- calendar:subscribe('mouse.clicked', function(env) sbar.exec "open -a 'Calendar'" end) +calendar:subscribe('mouse.clicked', function(env) sbar.exec "open -a 'Dato'" end) diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index fd8fd33..70962a9 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -28,6 +28,7 @@ set-option -sa terminal-features ',xterm-kitty:RGB:extkeys' # https://github.com/folke/tokyonight.nvim#making-undercurls-work-properly-in-tmux set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' +set -as terminal-overrides ',*:smxx=\E[9m' # strikethrough support setw -g automatic-rename on # rename window to reflect current program set -g renumber-windows on # renumber windows when a window is closed