From f670202de619cb6fb4f50c91d9a4b5b88063818e Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Sun, 17 May 2026 14:47:30 +0300 Subject: a bunch of changes --- .config/nvim/lua/extra.lua | 125 ++++++++++++++++++++---------- .config/nvim/lua/fortune.lua | 2 +- .config/nvim/lua/plugins/auto-save.lua | 3 +- .config/nvim/lua/plugins/auto-session.lua | 2 + .config/nvim/queries/c/highlights.scm | 3 +- modules/apps.nix | 13 +++- 6 files changed, 103 insertions(+), 45 deletions(-) diff --git a/.config/nvim/lua/extra.lua b/.config/nvim/lua/extra.lua index 97dbeda..ad8b6bd 100644 --- a/.config/nvim/lua/extra.lua +++ b/.config/nvim/lua/extra.lua @@ -322,7 +322,22 @@ vim.api.nvim_create_autocmd({ 'VimEnter', 'BufRead', 'BufWinEnter', 'BufWritePos ---------------------------------------------------------------------------- -- NOTE: Jump to a file location from a "path:line:column" in terminal buffers ---------------------------------------------------------------------------- -function Jump_to_file_location(focus) +function Jump_to_file_location(win, path, lnum, col, focus) + if win then + vim.api.nvim_win_call(win, function() + vim.cmd('edit ' .. path) + vim.api.nvim_win_set_cursor(0, { tonumber(lnum), tonumber(col) - 1 }) + end) + if focus then + vim.api.nvim_set_current_win(win) + end + else + vim.cmd('edit ' .. path) + vim.api.nvim_win_set_cursor(0, { tonumber(lnum), tonumber(col) - 1 }) + end +end + +function Jump_to_file_location_at_cursor(focus) local line = vim.api.nvim_get_current_line() local path, lnum, col = line:match('([^:]+):(%d+):(%d+):') if not (path and lnum) then @@ -339,18 +354,7 @@ function Jump_to_file_location(focus) end end - if main_win then - vim.api.nvim_win_call(main_win, function() - vim.cmd('edit ' .. path) - vim.api.nvim_win_set_cursor(0, { tonumber(lnum), tonumber(col) - 1 }) - end) - if focus then - vim.api.nvim_set_current_win(main_win) - end - else - vim.cmd('edit ' .. path) - vim.api.nvim_win_set_cursor(0, { tonumber(lnum), tonumber(col) - 1 }) - end + Jump_to_file_location(main_win, path, lnum, col, focus) end vim.api.nvim_create_autocmd('TermOpen', { @@ -359,14 +363,14 @@ vim.api.nvim_create_autocmd('TermOpen', { args.buf, 'n', 'gd', - 'lua Jump_to_file_location(true)', + 'lua Jump_to_file_location_at_cursor(true)', { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap( args.buf, 'n', 'go', - 'lua Jump_to_file_location(false)', + 'lua Jump_to_file_location_at_cursor(false)', { noremap = true, silent = true } ) end, @@ -388,21 +392,33 @@ function Compile_project(command) end local pos = vim.api.nvim_win_get_position(current) local is_build = nil - if pos[x] == 0 then - is_build = function(pos) - return pos ~= 0 + -- if pos[x] == 0 then + -- is_build = function(pos) + -- return pos ~= 0 + -- end + -- else + -- is_build = function(pos) + -- return pos == 0 + -- end + -- end + + -- NOTE: for new monitor setup, temporary + if pos[x] < 160 then + is_build = function(pos_x) + return pos_x > 160 end else - is_build = function(pos) - return pos == 0 + is_build = function(pos_x) + return pos_x == 0 end end - -- vim.notify('Current window: ' .. vim.inspect(current), vim.log.levels.INFO) + -- vim.notify('Current window: ' .. vim.inspect(current) .. ' ' .. vim.inspect(pos), vim.log.levels.INFO) local windows = vim.tbl_filter(filter, vim.api.nvim_list_wins()) -- vim.notify('Valid windows: ' .. vim.inspect(windows), vim.log.levels.INFO) - local build_win = -1 + local old_build_win = -1 + local new_build_win = -1 for _, win in ipairs(windows) do local pos = vim.api.nvim_win_get_position(win) -- vim.notify('Window id: ' .. vim.inspect(win) .. ' Window pos: ' .. vim.inspect(pos), vim.log.levels.INFO) @@ -410,21 +426,27 @@ function Compile_project(command) -- 'is build: ' .. vim.inspect(is_build(pos[1])) .. ' y == 0: ' .. vim.inspect(pos[2] == 0), -- vim.log.levels.INFO -- ) + if vim.api.nvim_win_get_buf(win) == BuildTerminalBuf then + old_build_win = win + end if is_build(pos[x]) and pos[y] == 0 then - build_win = win + new_build_win = win -- vim.notify('SET BUILD_WIN: ' .. vim.inspect(build_win), vim.log.levels.INFO) end end + if old_build_win == new_build_win then + old_build_win = -1 + end - if build_win == -1 then + if new_build_win == -1 then vim.cmd('botright vsplit') -- vim.cmd('vertical resize ' .. math.floor(vim.o.columns * 0.395)) -- vim.cmd('vertical resize ' .. math.floor(vim.o.columns * 0.46)) - build_win = vim.api.nvim_get_current_win() + new_build_win = vim.api.nvim_get_current_win() -- vim.notify('SET BUILD_WIN: ' .. vim.inspect(build_win), vim.log.levels.INFO) end - if not filter(build_win) then + if not filter(new_build_win) then return end -- local build_pos = vim.api.nvim_win_get_position(build_win) @@ -433,9 +455,9 @@ function Compile_project(command) -- vim.log.levels.INFO -- ) - vim.api.nvim_set_current_win(build_win) + vim.api.nvim_set_current_win(new_build_win) - local build_buf = vim.api.nvim_win_get_buf(build_win) + local build_buf = vim.api.nvim_win_get_buf(new_build_win) if vim.api.nvim_win_get_buf(current) == BuildTerminalBuf then -- NOTE(kyren): switch buffers vim.api.nvim_win_set_buf(current, build_buf) @@ -443,10 +465,16 @@ function Compile_project(command) local old_terminal = BuildTerminalBuf BuildTerminalBuf = vim.api.nvim_create_buf(false, true) + vim.bo[BuildTerminalBuf].filetype = 'build_terminal' vim.api.nvim_buf_call(BuildTerminalBuf, function() vim.fn.termopen(command, vim.empty_dict()) end) - vim.api.nvim_win_set_buf(build_win, BuildTerminalBuf) + + local previous_buffer = vim.api.nvim_win_get_buf(new_build_win) + vim.api.nvim_win_set_buf(new_build_win, BuildTerminalBuf) + if old_build_win ~= -1 then + vim.api.nvim_win_set_buf(old_build_win, previous_buffer) + end if old_terminal then vim.api.nvim_buf_delete(old_terminal, { force = true }) @@ -468,6 +496,10 @@ vim.keymap.set({ 'i', 'n', 'v' }, '', 'CompileClosewqa') ---------------------------------------------------------------------------- function JumpToError(direction) + vim.defer_fn(function() + vim.cmd('w') + end, 10) + vim.defer_fn(function() -- vim.notify("Running JumpToError after delay", "warn") @@ -485,6 +517,14 @@ function JumpToError(direction) end end, + function(line) + -- Clang: ABS:LINE:COL: warning: ... + local file, lnum = line:match('^(.-):(%d+):%d+:%s+warning:') + if file and lnum then + return { file = file, line = tonumber(lnum) } + end + end, + function(line) -- MSVC: PATH(LINE): error ... -- Z:\home\kyren\projects\krypton\src\krypton\libkrypton.c(22): error C2220: ... @@ -526,7 +566,8 @@ function JumpToError(direction) return end - local current_file = vim.api.nvim_buf_get_name(0) + local win = 0 + local current_file = vim.api.nvim_buf_get_name(win) local filtered = {} for _, e in ipairs(errors) do if e.file == current_file then @@ -543,32 +584,34 @@ function JumpToError(direction) return a.line < b.line end) - local cursor_line = vim.api.nvim_win_get_cursor(0)[1] + local cursor_line = vim.api.nvim_win_get_cursor(win)[1] if direction == 1 then for _, e in ipairs(filtered) do if e.line > cursor_line then - vim.api.nvim_win_set_cursor(0, { e.line, 0 }) + vim.api.nvim_win_set_cursor(win, { e.line, 0 }) return end end - vim.api.nvim_win_set_cursor(0, { filtered[1].line, 0 }) + vim.api.nvim_win_set_cursor(win, { filtered[1].line, 0 }) else for i = #filtered, 1, -1 do if filtered[i].line < cursor_line then - vim.api.nvim_win_set_cursor(0, { filtered[i].line, 0 }) + vim.api.nvim_win_set_cursor(win, { filtered[i].line, 0 }) return end end - vim.api.nvim_win_set_cursor(0, { filtered[#filtered].line, 0 }) + vim.api.nvim_win_set_cursor(win, { filtered[#filtered].line, 0 }) end - end, 1) -- 1 second async delay + end, 0) -- in milliseconds - -- if vim.g.project_compile_cmd then - -- Compile_project(vim.g.project_compile_cmd) - -- else - -- -- vim.notify("vim.g.project_compile_cmd missing", "warn") - -- end + vim.defer_fn(function() + if vim.g.project_compile_cmd then + Compile_project(vim.g.project_compile_cmd) + else + vim.notify('vim.g.project_compile_cmd missing', 'warn') + end + end, 100) -- in milliseconds end function JumpToNextError() diff --git a/.config/nvim/lua/fortune.lua b/.config/nvim/lua/fortune.lua index b960dab..61adbfc 100644 --- a/.config/nvim/lua/fortune.lua +++ b/.config/nvim/lua/fortune.lua @@ -149,7 +149,7 @@ local fortune_list = { '- C.A.R. Hoare', }, { "If you don't make mistakes, you're not working on hard enough problems.", '', '- Frank Wilczek' }, - { "If you don't start with a spec, every piece of code you write is a patch.", '', '- Leslie Lamport' }, + { '"If you don\'t start with a spec, every piece of code you write is a patch." -Leslie Lamport -- This is stupid', '', '- Kyren' }, { 'Caches are bugs waiting to happen.', '', '- Rob Pike' }, { 'Abstraction is not about vagueness, it is about being precise at a new semantic level.', diff --git a/.config/nvim/lua/plugins/auto-save.lua b/.config/nvim/lua/plugins/auto-save.lua index 7fca622..664166a 100644 --- a/.config/nvim/lua/plugins/auto-save.lua +++ b/.config/nvim/lua/plugins/auto-save.lua @@ -34,7 +34,8 @@ return { local filetype = vim.bo[buf].filetype -- Don't autosave special buffers or Oil buffers - return buftype == '' and filetype ~= 'oil' and filetype ~= 'hyprlang' + local result = buftype == '' and filetype ~= 'oil' and filetype ~= 'hyprlang' and filetype ~= 'build_terminal' + return result end, } end, diff --git a/.config/nvim/lua/plugins/auto-session.lua b/.config/nvim/lua/plugins/auto-session.lua index 925893e..60ecdfb 100644 --- a/.config/nvim/lua/plugins/auto-session.lua +++ b/.config/nvim/lua/plugins/auto-session.lua @@ -4,5 +4,7 @@ return { opts = { suppressed_dirs = { '~/', '/' }, session_lens = { load_on_setup = false }, + bypass_save_filetypes = { 'snacks_dashboard' }, + close_filetypes_on_save = { 'checkhealth', 'build_terminal' }, }, } diff --git a/.config/nvim/queries/c/highlights.scm b/.config/nvim/queries/c/highlights.scm index c5bfbbd..d51c4e6 100644 --- a/.config/nvim/queries/c/highlights.scm +++ b/.config/nvim/queries/c/highlights.scm @@ -1,6 +1,7 @@ ; extends ([(identifier) (type_identifier) (true) (false)] @keyword - (#any-of? @keyword "proc" "inlined" + (#any-of? @keyword + "kr_proc" "inlined" "u8" "u16" "u32" "u64" "i8" "i16" "i32" "i64" "f32" "f64" diff --git a/modules/apps.nix b/modules/apps.nix index 0c554d2..acf2d70 100644 --- a/modules/apps.nix +++ b/modules/apps.nix @@ -1,4 +1,11 @@ -{ pkgs, lib, config, inputs, ... }: { +{ + pkgs, + lib, + config, + inputs, + ... +}: +{ options.apps.enable = lib.mkOption { type = lib.types.bool; @@ -68,6 +75,10 @@ _010editor chromium fsearch + warpd + wl-kbptr + nnd + cppcheck # Communication wasistlos # Whatsapp -- cgit v1.3.1