From cd8bf02c387bc0b2a0142bd368dea1e586a51949 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 6 Mar 2026 12:37:08 +0100 Subject: neovim: reine Lua funktion --- nvim/lua/plugins/ui.lua | 56 +++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/nvim/lua/plugins/ui.lua b/nvim/lua/plugins/ui.lua index 22c0c3a..70140d8 100644 --- a/nvim/lua/plugins/ui.lua +++ b/nvim/lua/plugins/ui.lua @@ -63,43 +63,39 @@ 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) + function _G.CalendarInsertDate(day, month, year) + local date = string.format("%04d-%02d-%02d", year, month, day) - " Kalenderfenster schließen und zum vorherigen Fenster zurück - wincmd q - wincmd p + vim.cmd("wincmd q") + vim.cmd("wincmd p") - let pattern = '\v\d{4}-\d{2}-\d{2}' - let line = getline('.') - let col = col('.') + local line = vim.api.nvim_get_current_line() + local col = vim.api.nvim_win_get_cursor(0)[2] + 1 - " Prüfen ob Cursor innerhalb eines Datums steht - let start = match(line, pattern) + local start = 1 + while true do + local s, e = string.find(line, "%d%d%d%d%-%d%d%-%d%d", start) + if not s then break end - 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 + if col >= s and col <= e then + local new = line:sub(1, s - 1) .. date .. line:sub(e + 1) + vim.api.nvim_set_current_line(new) + vim.api.nvim_win_set_cursor(0, { vim.fn.line("."), s + #date - 1 }) + return + end - " Kein Datum unter Cursor → wie bisher einfügen - execute "normal! a" . date - endfunction + start = e + 1 + end - let calendar_action = 'CalendarInsertDate' + vim.api.nvim_put({ date }, "c", true, true) + end - 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 - ]]) + vim.g.calendar_action = "v:lua.CalendarInsertDate" + + vim.g.calendar_monday = 1 + vim.g.calendar_wruler = "So Mo Di Mi Do Fr Sa" + vim.g.calendar_mruler = "Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez" + vim.g.calendar_weeknm = 4 end, }, } -- cgit v1.3