From dca18e3b27c3eaad0bc15617248cde1c2311b61e Mon Sep 17 00:00:00 2001 From: "martin f. krafft" Date: Wed, 6 Aug 2025 11:19:08 +0200 Subject: [PATCH] Import minimal ftplugin stuff from Vim --- .config/lazyvim/after/ftplugin/markdown.vim | 19 ++ .config/lazyvim/ftplugin/diff.vim | 8 + .config/lazyvim/ftplugin/mail.vim | 215 ++++++++++++++++++++ .config/lazyvim/ftplugin/markdown.vim | 4 + .config/lazyvim/ftplugin/python.lua | 22 ++ .config/lazyvim/ftplugin/tex.vim | 1 + .config/lazyvim/greeting_abbrevs.vim | 15 ++ .config/lazyvim/lazy-lock.json | 2 +- .gitignore.d/lazyvim | 7 + 9 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 .config/lazyvim/after/ftplugin/markdown.vim create mode 100644 .config/lazyvim/ftplugin/diff.vim create mode 100644 .config/lazyvim/ftplugin/mail.vim create mode 100644 .config/lazyvim/ftplugin/markdown.vim create mode 100644 .config/lazyvim/ftplugin/python.lua create mode 100644 .config/lazyvim/ftplugin/tex.vim create mode 100644 .config/lazyvim/greeting_abbrevs.vim diff --git a/.config/lazyvim/after/ftplugin/markdown.vim b/.config/lazyvim/after/ftplugin/markdown.vim new file mode 100644 index 0000000..56c2837 --- /dev/null +++ b/.config/lazyvim/after/ftplugin/markdown.vim @@ -0,0 +1,19 @@ +if !exists("g:markdown_in_mail") + setlocal wrap + setlocal linebreak + setlocal textwidth=0 + + " treat wrapped lines normally + nnoremap k gk + nnoremap gk + inoremap gk + nnoremap j gj + nnoremap gj + inoremap gj + nnoremap 0 g0 + nnoremap g0 + inoremap g0 + nnoremap $ g$ + nnoremap g$ + inoremap g$ +end diff --git a/.config/lazyvim/ftplugin/diff.vim b/.config/lazyvim/ftplugin/diff.vim new file mode 100644 index 0000000..e1402e6 --- /dev/null +++ b/.config/lazyvim/ftplugin/diff.vim @@ -0,0 +1,8 @@ +augroup tsperrorinsert + au! +augroup END +match none /\s*$/ +augroup listinsert + au! +augroup END +setlocal list& diff --git a/.config/lazyvim/ftplugin/mail.vim b/.config/lazyvim/ftplugin/mail.vim new file mode 100644 index 0000000..9dcf643 --- /dev/null +++ b/.config/lazyvim/ftplugin/mail.vim @@ -0,0 +1,215 @@ +setlocal textwidth=68 +setlocal formatoptions-=o +setlocal formatoptions-=r +setlocal formatoptions-=l +setlocal formatoptions+=a +setlocal formatoptions+=w +setlocal formatoptions+=n +setlocal formatexpr= + +setlocal comments=n:> + +"setlocal spell + +" augroup tsperrorinsert +" au! +" augroup END +" match none /\s*$/ +" augroup listinsert +" au! +" augroup END +" setlocal list& + +" Dynamically set format options, depending on where you are in a +" mail, idea from Teemu Likonen: +" http://groups.google.com/group/vim_use/msg/f59e5c1adc6be2b3 + +" let s:defaults = "setlocal fo=".&fo +" " tw=".&tw." ts=".&ts." sts=".&sts." sw=".&sw." fo=".&fo +" execute s:defaults +" let b:MailAreaDetect=1 +" +" nnoremap :call MailAreaDetect_Switch(0) +" inoremap :call MailAreaDetect_Switch(1) +" +" function! s:MailAreaDetect_Switch(vmode) +" if b:MailAreaDetect +" silent call MailAreaDetect_Off() +" let b:MailAreaDetect=0 +" echo 'MailAreaDetect Off' +" else +" silent call MailAreaDetect_On() +" let b:MailAreaDetect=1 +" echo 'MailAreaDetect On' +" endif +" endfu +" +" function! s:MailAreaDetect_On() +" silent autocmd! MailAreaDetect CursorMoved,CursorMoved +" \ call AreaOptions() +" let b:MailAreaDetect=1 +" endfunction +" +" function! s:MailAreaDetect_Off() +" silent autocmd! MailAreaDetect +" execute s:defaults +" let b:MailAreaDetect=0 +" endfunction +" +" augroup MailAreaDetect +" autocmd! +" call MailAreaDetect_On() +" augroup END +" +" function! s:AreaOptions() +" execute s:defaults +" +" let s:synCur = synIDattr(synID(line("."),1,0),"name") +" let s:synNext = synIDattr(synID(line(".")+1,1,0),"name") +" +" if s:synNext =~ '^mailQuote' && s:synCur == '' && getline('.') =~ '^.' +" " elseif getline('.') =~ '^\s*[^>]' && getline(line('.')+1) =~ '\m^\s*>' +" setlocal fo-=a +" "echo 'Quotation leader (fo='.&fo.')' +" elseif s:synCur =~ '^mailQuote' +" " elseif getline('.') =~ '\m^\s*>' +" setlocal fo-=a +" "echo 'Quotation (fo='.&fo.')' +" elseif CheckArea('\m^--- .*\n^+++ ','\v(^$|\n^-- $)') +" setlocal fo-=a fo-=w fo-=t noet +" "echo 'Patch (fo='.&fo.')' +" elseif s:synCur == '' && s:synNext =~ '^mailSignature' +" " elseif getline(line('.')+1) =~ '\m^-- $' +" setlocal fo-=a fo-=w fo-=t +" "echo 'Last line before signature (fo='.&fo.')' +" elseif s:synCur =~ '^mailSignature' +" " elseif CheckArea('^-- $','^$') +" setlocal fo-=a fo-=w fo-=t +" "echo 'Signature (fo='.&fo.')' +" elseif s:synCur =~ '^mail' +" " if CheckArea('\v^From( |: ).*\n','\v^$') +" setlocal fo-=a fo-=w fo-=t +" "echo 'Header (fo='.&fo.')' +" else +" "echo 'My text (fo='.&fo.')' +" endif +" endfunction +" +" function! s:CheckArea(start, end) +" return (search(a:start,'bcnW')-line('.')) > +" \ (search(a:end,'bnW')-line('.')) +" endfunction + +" function! FixQuotes() +" let l:i = 0 +" let l:lineNxt = getline(l:i) +" let l:synNxt = synIDattr(synID(l:i,1,0),"name") +" while l:i < line('$')-1 +" let l:lineCur = l:lineNxt +" let l:synCur = l:synNxt +" let l:lineNxt = getline(l:i+1) +" let l:synNxt = synIDattr(synID(l:i+1,1,0),"name") +" if l:synCur =~ '^mailQuote' && l:lineCur =~ '\w.*\S$' && +" \ l:synNxt =~ '^mailQuote' && l:lineNxt =~ '\w' +" call setline(l:i, l:lineCur . ' ') +" endif +" let l:i += 1 +" endwhile +" endfunction +" +" augroup fixquotes +" au! +" autocmd BufWinEnter $TMPDIR/mutt-* call FixQuotes() +" augroup END + +nmap :w:%!mailplate --keep-unknown official +nmap :w:%!mailplate --keep-unknown pobox +nmap :w:%!mailplate --keep-unknown tahi +nmap :w:%!mailplate --keep-unknown toni + +nmap :w:%!mailplate --keep-unknown kbkg +nmap :w:%!mailplate --keep-unknown krafftwerk +nmap :w:%!mailplate --keep-unknown siby +nmap :w:%!mailplate --keep-unknown debian + +nmap :w:%!mailplate --keep-unknown uniwh +nmap :w:%!mailplate --keep-unknown mtfk +nmap :w:%!mailplate --keep-unknown sudetia +nmap :w:%!mailplate --keep-unknown default +nmap :w:%!mailplate --auto --keep-unknown 2>/dev/null + +" change subject line +" Before: Subject: old +" After : Subject: New (was: old) +" http://strcat.de/wiki/dotfiles#vim +" map ,sw 1G/^Subject: :s/Re:/was:/Wi ($)0Whi +map ns 1G/^Subject: /:s,\(Subject: \)\(Re: \)*\(.*\)$,\1 (was: \3),:set nohlsf li + +" Delete 'was' in the Subject. +" Before: Subject: New (was: old) +" After : Subject: New +" http://strcat.de/wiki/dotfiles#vim +map dw 1G/^Subject: /:s, *(was: .*)$:set nohlsf l + +" packadd lbdbq +" +" http://dollyfish.net.nz/blog/2008-04-01/mutt-and-vim-custom-autocompletion +" fun! LBDBCompleteFn(findstart, base) +" let line = getline('.') +" if a:findstart +" " locate the start of the word +" let start = col('.') - 1 +" while start > 0 && line[start - 1] =~ '[^:,]' +" let start -= 1 +" endwhile +" while start < col('.') && line[start] =~ '[:, ]' +" let start += 1 +" endwhile +" return start +" else +" let res = [] +" let query = substitute(a:base, '"', '', 'g') +" let query = substitute(query, '\s*<.*>\s*', '', 'g') +" for m in LbdbQuery(query) +" call complete_add(printf('"%s" <%s>', escape(m[0], '"'), m[1])) +" if complete_check() +" break +" endif +" endfor +" return res +" endif +" endfun +" setlocal completefunc=LBDBCompleteFn + +" And this magic by James Vega, which ensures that we only complete with lbdb +" on the recipient lines of the mail header. +" inoremap DelegateCompletion(1) +" inoremap DelegateCompletion(0) + +" fun! DelegateCompletion(next) +" if getline('.') =~? '^\%(To\|B\=Cc\):' +" return "\x18\x15" +" elseif a:next +" return "\x0e" +" else +" return "\x10" +" endif +" endfun + +function! WriteMailBackup() + let l:tmpdir = fnameescape(expand('$TMPDIR')) || '/tmp' + let l:tgtdir = l:tmpdir . '/mail-backups' + call mkdir(l:tgtdir, "p", 0o700) + let l:modified = &modified + let l:filename = l:tgtdir . '/' . strftime('%Y-%m-%d-%H%M%S') . '.msg' + exe 'silent update! ' . l:filename + if 0 && l:modified + echo 'Backup written to ' . l:filename + endif +endfunction +autocmd BufWritePre call WriteMailBackup() + +let g:markdown_in_mail = 1 +runtime! ftplugin/markdown.vim + +runtime! greeting_abbrevs.vim diff --git a/.config/lazyvim/ftplugin/markdown.vim b/.config/lazyvim/ftplugin/markdown.vim new file mode 100644 index 0000000..af9d67d --- /dev/null +++ b/.config/lazyvim/ftplugin/markdown.vim @@ -0,0 +1,4 @@ +let g:vim_markdown_folding_disabled = 1 +let g:vim_markdown_strikethrough = 1 +let g:vim_markdown_follow_anchor = 1 +let g:vim_markdown_conceal = 1 diff --git a/.config/lazyvim/ftplugin/python.lua b/.config/lazyvim/ftplugin/python.lua new file mode 100644 index 0000000..a420d50 --- /dev/null +++ b/.config/lazyvim/ftplugin/python.lua @@ -0,0 +1,22 @@ +vim.g.python_highlight_all = true + +vim.g.linelength = 88 +vim.b.textwidth = vim.g.linelength + +vim.b.sw = 4 +vim.b.sts = 4 +vim.b.autoindent = true + +vim.b.formatoptions = vim.opt.formatoptions + 'bl' + +vim.b.ale_linters = { "mypy", "ruff" } +vim.b.ale_fixers = { + "add_blank_lines_for_python_control_statements", + "ruff", + "ruff_format" +} + +vim.keymap.set('i', 't', [[import ipdb; ipdb.set_trace() # noqa: E402 E702 I001 # fmt: skip]]) + +vim.keymap.set('i', 'm', [[if __name__ == "__main__":import syssys.exit()i]]) + diff --git a/.config/lazyvim/ftplugin/tex.vim b/.config/lazyvim/ftplugin/tex.vim new file mode 100644 index 0000000..6b55069 --- /dev/null +++ b/.config/lazyvim/ftplugin/tex.vim @@ -0,0 +1 @@ +runtime greeting_abbrevs.vim diff --git a/.config/lazyvim/greeting_abbrevs.vim b/.config/lazyvim/greeting_abbrevs.vim new file mode 100644 index 0000000..08e8fc2 --- /dev/null +++ b/.config/lazyvim/greeting_abbrevs.vim @@ -0,0 +1,15 @@ +iab sgf Sehr geehrte Frau +iab sgh Sehr geehrter Herr +iab sgdh Sehr geehrte Damen und Herren +iab sghn Sehr geehrte Herren +iab sgdn Sehr geehrte Damen +iab lf Liebe Frau +iab lh Lieber Herr +iab twimc To Whom It May Concern +iab lg liebe Grüsse +iab Lg Liebe Grüsse +iab fg Freundliche Grüsse +iab mfg Mit freundlichen Grüssen +iab mbg Mit den besten Grüssen +iab hg Herzliche Grüsse +iab mhg Mit herzlichen Grüssen diff --git a/.config/lazyvim/lazy-lock.json b/.config/lazyvim/lazy-lock.json index 3cc1ea8..0cc38cf 100644 --- a/.config/lazyvim/lazy-lock.json +++ b/.config/lazyvim/lazy-lock.json @@ -19,7 +19,7 @@ "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, "nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" }, "nvim-lint": { "branch": "master", "commit": "3615c26c4922ae5f7366f0c1943a0e7cece04325" }, - "nvim-lspconfig": { "branch": "master", "commit": "49c1268b99dab89671010673ed57980188cd00a0" }, + "nvim-lspconfig": { "branch": "master", "commit": "a56f4b9dde5daf3d4c7bb50cf78ab609537f2259" }, "nvim-treesitter": { "branch": "master", "commit": "684eeac91ed8e297685a97ef70031d19ac1de25a" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "205e3369bc83d8cb83f7409c36120e24611f8c5c" }, "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, diff --git a/.gitignore.d/lazyvim b/.gitignore.d/lazyvim index 5305566..e0c5215 100644 --- a/.gitignore.d/lazyvim +++ b/.gitignore.d/lazyvim @@ -1,6 +1,13 @@ * +!/.config/lazyvim/after/ftplugin/markdown.vim !/.config/lazyvim/autocmds.lua +!/.config/lazyvim/ftplugin/diff.vim +!/.config/lazyvim/ftplugin/mail.vim +!/.config/lazyvim/ftplugin/markdown.vim +!/.config/lazyvim/ftplugin/python.lua +!/.config/lazyvim/ftplugin/tex.vim !/.config/lazyvim/.gitignore +!/.config/lazyvim/greeting_abbrevs.vim !/.config/lazyvim/init.lua !/.config/lazyvim/keymaps.lua !/.config/lazyvim/lazy-lock.json -- 2.39.5