diff options
author | tiziw <34965470+tiziw@users.noreply.github.com> | 2020-06-18 07:23:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-18 07:23:27 +0200 |
commit | 0a2dbaac8fbd5d3a1c782a9b092c1d41d25bee58 (patch) | |
tree | 3b1c7f646242f731dbd7e4ae235a99d96ecec9a2 /plugins | |
parent | 900648e94fb778b443d75127e8d6c16a6bce4141 (diff) | |
parent | 1696515f5a3eb7548b373ff585531044c21b68c2 (diff) | |
download | lite-xl-plugins-0a2dbaac8fbd5d3a1c782a9b092c1d41d25bee58.tar.gz lite-xl-plugins-0a2dbaac8fbd5d3a1c782a9b092c1d41d25bee58.zip |
Merge pull request #1 from tiziw/patch-2
Patch 2
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/autoinsert.lua | 27 | ||||
-rw-r--r-- | plugins/workspace.lua | 23 |
2 files changed, 43 insertions, 7 deletions
diff --git a/plugins/autoinsert.lua b/plugins/autoinsert.lua index a3c8f98..0bf5a5a 100644 --- a/plugins/autoinsert.lua +++ b/plugins/autoinsert.lua @@ -1,4 +1,5 @@ local core = require "core" +local translate = require "core.doc.translate" local config = require "core.config" local DocView = require "core.docview" local command = require "core.command" @@ -60,7 +61,13 @@ function DocView:on_text_input(text) end -command.add("core.docview", { + +local function predicate() + return getmetatable(core.active_view) == DocView + and not core.active_view.doc:has_selection() +end + +command.add(predicate, { ["autoinsert:backspace"] = function() local doc = core.active_view.doc local l, c = doc:get_selection() @@ -70,6 +77,22 @@ command.add("core.docview", { end command.perform "doc:backspace" end, + + ["autoinsert:delete-to-previous-word-start"] = function() + local doc = core.active_view.doc + local le, ce = translate.previous_word_start(doc, doc:get_selection()) + while true do + local l, c = doc:get_selection() + if l == le and c == ce then + break + end + command.perform "autoinsert:backspace" + end + end, }) -keymap.add { ["backspace"] = "autoinsert:backspace" } +keymap.add { + ["backspace"] = "autoinsert:backspace", + ["ctrl+backspace"] = "autoinsert:delete-to-previous-word-start", + ["ctrl+shift+backspace"] = "autoinsert:delete-to-previous-word-start", +} diff --git a/plugins/workspace.lua b/plugins/workspace.lua index b40ab4b..8f8dfcc 100644 --- a/plugins/workspace.lua +++ b/plugins/workspace.lua @@ -41,6 +41,7 @@ local function save_view(view) if mt == DocView then return { type = "doc", + active = (core.active_view == view), filename = view.doc.filename, selection = { view.doc:get_selection() }, scroll = { x = view.scroll.to.x, y = view.scroll.to.y }, @@ -49,7 +50,11 @@ local function save_view(view) end for name, mod in pairs(package.loaded) do if mod == mt then - return { type = "view", module = name } + return { + type = "view", + active = (core.active_view == view), + module = name + } end end end @@ -98,17 +103,22 @@ end local function load_node(node, t) if t.type == "leaf" then + local res for _, v in ipairs(t.views) do - node:add_view(load_view(v)) + local view = load_view(v) + if v.active then res = view end + node:add_view(view) end if t.active_view then node:set_active_view(node.views[t.active_view]) end + return res else node:split(t.type == "hsplit" and "right" or "down") node.divider = t.divider - load_node(node.a, t.a) - load_node(node.b, t.b) + local res1 = load_node(node.a, t.a) + local res2 = load_node(node.b, t.b) + return res1 or res2 end end @@ -126,7 +136,10 @@ local function load_workspace() os.remove(workspace_filename) if ok then local root = get_unlocked_root(core.root_view.root_node) - load_node(root, t) + local active_view = load_node(root, t) + if active_view then + core.set_active_view(active_view) + end end end |