Skip to content

Commit

Permalink
Merge pull request #70 from Isrothy/focus-fix
Browse files Browse the repository at this point in the history
Focus fix
  • Loading branch information
Isrothy authored Aug 9, 2024
2 parents ffb02f0 + c62c86c commit fc3f1da
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 6 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,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

Expand Down Expand Up @@ -277,7 +278,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

Expand Down
8 changes: 8 additions & 0 deletions lua/neominimap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,18 @@ 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

M.setup = function()
local gid = api.nvim_create_augroup("Neominimap", { clear = true })

Expand Down
32 changes: 28 additions & 4 deletions lua/neominimap/command/focus.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, Neominimap.Subcommand>
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,
},
Expand Down

0 comments on commit fc3f1da

Please sign in to comment.