From 65d8ae2976cfebb7899e6abcd140ff703b28c58d Mon Sep 17 00:00:00 2001 From: Isrothy Date: Thu, 8 Aug 2024 11:33:58 -0700 Subject: [PATCH 1/3] feat: Add toggleFocus command --- lua/neominimap.lua | 5 +++++ lua/neominimap/command/focus.lua | 32 ++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/lua/neominimap.lua b/lua/neominimap.lua index dc84614..a96abed 100644 --- a/lua/neominimap.lua +++ b/lua/neominimap.lua @@ -90,6 +90,11 @@ M.unfocus = function(args, opts) require("neominimap.command.focus").subcommand_tbl.unfocus.impl(args, opts) end + +M.toggleFocus = function(args, opts) + require("neominimap.command.focus").subcommand_tbl.toggleFocus.impl(args, opts) +end + M.setup = function() local gid = api.nvim_create_augroup("Neominimap", { clear = true }) diff --git a/lua/neominimap/command/focus.lua b/lua/neominimap/command/focus.lua index 831bee3..090c686 100644 --- a/lua/neominimap/command/focus.lua +++ b/lua/neominimap/command/focus.lua @@ -4,21 +4,45 @@ local logger = require("neominimap.logger") local M = {} +---@param winid integer +local focus = function(winid) + if not window.focus(winid) then + logger.notify("Minimap can not be focused for current window", vim.log.levels.ERROR) + end +end + +---@param mwinid integer +local unfocus = function(mwinid) + if not window.unfocus(mwinid) then + logger.notify("Minimap can not be unfocused for current window", vim.log.levels.ERROR) + end +end + ---@type table M.subcommand_tbl = { focus = { impl = function(args, opts) local winid = api.nvim_get_current_win() - if not window.focus(winid) then - logger.notify("Minimap can not be focused for current window", vim.log.levels.ERROR) + if not window.is_minimap_window(winid) then + focus(winid) end end, }, unfocus = { impl = function(args, opts) local winid = api.nvim_get_current_win() - if not window.unfocus(winid) then - logger.notify("Minimap can not be unfocused for current window", vim.log.levels.ERROR) + if window.is_minimap_window(winid) then + unfocus(winid) + end + end, + }, + toggleFocus = { + impl = function(args, opts) + local winid = api.nvim_get_current_win() + if window.is_minimap_window(winid) then + unfocus(winid) + else + focus(winid) end end, }, From 831a60cad09698b5cd8019c6d2c1410f27bfe0b9 Mon Sep 17 00:00:00 2001 From: Isrothy Date: Thu, 8 Aug 2024 11:37:15 -0700 Subject: [PATCH 2/3] chore: Type annotation --- lua/neominimap.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lua/neominimap.lua b/lua/neominimap.lua index a96abed..1537b73 100644 --- a/lua/neominimap.lua +++ b/lua/neominimap.lua @@ -86,11 +86,14 @@ M.focus = function(args, opts) require("neominimap.command.focus").subcommand_tbl.focus.impl(args, opts) end +---@param args string[] +---@param opts table M.unfocus = function(args, opts) require("neominimap.command.focus").subcommand_tbl.unfocus.impl(args, opts) end - +---@param args string[] +---@param opts table M.toggleFocus = function(args, opts) require("neominimap.command.focus").subcommand_tbl.toggleFocus.impl(args, opts) end From c62c86cea3646736248bdb08bebaf4c6539fd1da Mon Sep 17 00:00:00 2001 From: Isrothy Date: Thu, 8 Aug 2024 11:37:36 -0700 Subject: [PATCH 3/3] doc: Fix neominimap focus --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2db9578..91cc58f 100644 --- a/README.md +++ b/README.md @@ -230,7 +230,8 @@ Notice that a minimap is shown if and only if | `Neominimap winToggle [window_list]` | Toggle the minimap for specified windows. If no windows are specified, toggle for the current window. | Optional: List of windows | | `Neominimap winRefresh [window_list]` | Refresh the minimap for specified windows. If no windows are specified, refresh for the current window. | Optional: List of windows | | `Neominimap focus` | Focus on the minimap. Set cursor to the minimap window. | None | -| `Neominimap blur` | Unfocus the minimap. Set cursor back. | None | +| `Neominimap unfocus` | Unfocus the minimap. Set cursor back. | None | +| `Neominimap toggleFocus` | Toggle minimap focus | None | ### Usage Examples @@ -271,7 +272,8 @@ These are the corresponding commands in the Lua API. | `Neominimap winToggle [args]` | Toggles the minimap for specified windows. | `require('neominimap').winToggle({"3", "4"})` | | `Neominimap winRefresh [args]` | Refreshes the minimap for specified windows. | `require('neominimap').winRefresh({"3", "4"})` | | `Neominimap focus` | Focuses the minimap. | `require('neominimap').focus()` | -| `Neominimap unfocus` | Unfocuses the minimap. | `require('neominimap').unfocus()` |` +| `Neominimap unfocus` | Unfocuses the minimap. | `require('neominimap').unfocus()` | +| `Neominimap toggleFocus` | Toggle minimap focus. | `require('neominimap').toggleFocus()` | ## How it works