From 0b97925fb8e916e14635c6ece5138a3008e7f8d3 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 6 Mar 2026 12:26:49 +0100 Subject: neovim: calender kann nun auch das Datum aktualisieren --- nvim/lua/plugins/ui.lua | 45 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) (limited to 'nvim') diff --git a/nvim/lua/plugins/ui.lua b/nvim/lua/plugins/ui.lua index 502c271..22c0c3a 100644 --- a/nvim/lua/plugins/ui.lua +++ b/nvim/lua/plugins/ui.lua @@ -64,18 +64,41 @@ return { "mattn/calendar-vim", config = function() vim.cmd([[ - function! CalendarInsertDate(day, month, year, week, dir) - let date = printf("%04d-%02d-%02d", a:year, a:month, a:day) - wincmd q - wincmd p - execute "normal! a" . date - endfunction - let calendar_action = 'CalendarInsertDate' + function! CalendarInsertDate(day, month, year, week, dir) + let date = printf("%04d-%02d-%02d", a:year, a:month, a:day) - let g:calendar_monday = 1 - let g:calendar_wruler = 'So Mo Di Mi Do Fr Sa' - let g:calendar_mruler = 'Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez' - let g:calendar_weeknm = 4 + " Kalenderfenster schließen und zum vorherigen Fenster zurück + wincmd q + wincmd p + + let pattern = '\v\d{4}-\d{2}-\d{2}' + let line = getline('.') + let col = col('.') + + " Prüfen ob Cursor innerhalb eines Datums steht + let start = match(line, pattern) + + while start >= 0 + let end = start + strlen(matchstr(line[start:], pattern)) + if col >= start + 1 && col <= end + " Datum ersetzen + call setline('.', line[:start-1] . date . line[end:]) + call cursor('.', start + strlen(date)) + return + endif + let start = match(line, pattern, end) + endwhile + + " Kein Datum unter Cursor → wie bisher einfügen + execute "normal! a" . date + endfunction + + let calendar_action = 'CalendarInsertDate' + + let g:calendar_monday = 1 + let g:calendar_wruler = 'So Mo Di Mi Do Fr Sa' + let g:calendar_mruler = 'Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez' + let g:calendar_weeknm = 4 ]]) end, }, -- cgit v1.3