From fd3f25608f56f00a747c855cf20940989e719a38 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Sun, 27 Jun 2021 13:18:54 -0400 Subject: [PATCH 1/2] Created an extra command, to implement appropriat cmd+w behaviour on mac. --- data/core/commands/root.lua | 9 +++++++++ data/core/keymap-macos.lua | 4 ++-- data/core/rootview.lua | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/data/core/commands/root.lua b/data/core/commands/root.lua index 37d42f5a..7bc13283 100644 --- a/data/core/commands/root.lua +++ b/data/core/commands/root.lua @@ -11,6 +11,15 @@ local t = { node:close_active_view(core.root_view.root_node) end, + ["root:close-or-quit"] = function() + local node = core.root_view:get_active_node() + if node and (not node:is_empty() or not node.is_primary_node) then + node:close_active_view(core.root_view.root_node) + else + core.quit() + end + end, + ["root:close-all"] = function() core.confirm_close_all(core.root_view.close_all_docviews, core.root_view) end, diff --git a/data/core/keymap-macos.lua b/data/core/keymap-macos.lua index 327a1cc5..e233bb2e 100644 --- a/data/core/keymap-macos.lua +++ b/data/core/keymap-macos.lua @@ -17,7 +17,8 @@ local function keymap_macos(keymap) ["cmd+ctrl+i"] = "root:switch-to-up", ["cmd+ctrl+k"] = "root:switch-to-down", - ["cmd+w"] = "root:close", + + ["cmd+w"] = "root:close-or-quit", ["ctrl+tab"] = "root:switch-to-next-tab", ["ctrl+shift+tab"] = "root:switch-to-previous-tab", ["cmd+pageup"] = "root:move-tab-left", @@ -31,7 +32,6 @@ local function keymap_macos(keymap) ["cmd+7"] = "root:switch-to-tab-7", ["cmd+8"] = "root:switch-to-tab-8", ["cmd+9"] = "root:switch-to-tab-9", - ["cmd+f"] = "find-replace:find", ["cmd+r"] = "find-replace:replace", ["f3"] = "find-replace:repeat-find", diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 037e7580..9ffa12e4 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -584,7 +584,7 @@ end function Node:is_empty() if self.type == "leaf" then - return #self.views == 0 + return #self.views == 0 or (#self.views == 1 and self.views[1]:is(EmptyView)) else return self.a:is_empty() and self.b:is_empty() end @@ -833,7 +833,7 @@ function RootView:on_mouse_moved(x, y, dx, dy) core.request_cursor(node.active_view.cursor) end if node and self.dragged_node and (self.dragged_node[1] ~= node or (tab_index and self.dragged_node[2] ~= tab_index)) - and node.type == "leaf" and #node.views > 0 and node.views[1]:is(DocView) then + and node.type == "leaf" and #node.views > 0 and node.views[1]:is(DocView) then local tab = self.dragged_node[1].views[self.dragged_node[2]] if self.dragged_node[1] ~= node then for i, v in ipairs(node.views) do if v.doc == tab.doc then tab = nil break end end From f8998486317b4bd25ca53b25cf082c5eb88f0d72 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Sun, 27 Jun 2021 13:27:20 -0400 Subject: [PATCH 2/2] Added in checks so that the entire thing isn't consumed. --- data/core/rootview.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 9ffa12e4..36ab148d 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -608,9 +608,9 @@ function Node:close_all_docviews() else self.a:close_all_docviews() self.b:close_all_docviews() - if self.a:is_empty() then + if self.a:is_empty() and not self.a.is_primary_node then self:consume(self.b) - elseif self.b:is_empty() then + elseif self.b:is_empty() and not self.b.is_primary_node then self:consume(self.a) end end