aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2021-02-17 23:57:02 +0100
committerFrancesco Abbate <francesco.bbt@gmail.com>2021-02-17 23:57:02 +0100
commit59fbf9cfc0996166df1d95262f11fb83cba17d17 (patch)
tree6a27f155d62ba382f4e2c724d7ff8155293df5d5
parent4335ab93c95ca94532ed9c7d56cefdc55659390c (diff)
parenta40acce382fb28315bc7af79c62f6d9074e2af1b (diff)
downloadlite-xl-59fbf9cfc0996166df1d95262f11fb83cba17d17.tar.gz
lite-xl-59fbf9cfc0996166df1d95262f11fb83cba17d17.zip
Merge branch 'master' into dev
-rw-r--r--data/core/commands/core.lua20
-rw-r--r--data/core/commands/doc.lua7
-rw-r--r--data/core/common.lua19
-rw-r--r--data/core/doc/init.lua3
-rw-r--r--data/core/init.lua27
-rw-r--r--meson.build2
6 files changed, 56 insertions, 22 deletions
diff --git a/data/core/commands/core.lua b/data/core/commands/core.lua
index e7bc3190..725d3b02 100644
--- a/data/core/commands/core.lua
+++ b/data/core/commands/core.lua
@@ -7,17 +7,9 @@ local LogView = require "core.logview"
local fullscreen = false
-local function home_encode_list(paths)
- local t = {}
- for i = 1, #paths do
- t[i] = common.home_encode(paths[i])
- end
- return t
-end
-
local function suggest_directory(text)
text = common.home_expand(text)
- return home_encode_list(text == "" and core.recent_projects or common.dir_path_suggest(text))
+ return common.home_encode_list(text == "" and core.recent_projects or common.dir_path_suggest(text))
end
command.add(nil, {
@@ -95,7 +87,7 @@ command.add(nil, {
core.command_view:enter("Open File", function(text)
core.root_view:open_doc(core.open_doc(common.home_expand(text)))
end, function (text)
- return home_encode_list(common.path_suggest(common.home_expand(text)))
+ return common.home_encode_list(common.path_suggest(common.home_expand(text)))
end)
end,
@@ -107,12 +99,6 @@ command.add(nil, {
["core:open-user-module"] = function()
local user_module_doc = core.open_doc(USERDIR .. "/init.lua")
if not user_module_doc then return end
- local doc_save = user_module_doc.save
- user_module_doc.save = function(self)
- doc_save(self)
- core.reload_module("core.style")
- core.load_user_directory()
- end
core.root_view:open_doc(user_module_doc)
end,
@@ -184,7 +170,7 @@ command.add(nil, {
end
end, function(text)
text = common.home_expand(text)
- return home_encode_list(common.dir_list_suggest(text, dir_list))
+ return common.home_encode_list(common.dir_list_suggest(text, dir_list))
end)
end,
})
diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua
index e8eae510..7ff8d529 100644
--- a/data/core/commands/doc.lua
+++ b/data/core/commands/doc.lua
@@ -67,6 +67,7 @@ end
local function save(filename)
doc():save(filename)
+ core.on_doc_save(filename)
core.log("Saved \"%s\"", doc().filename)
end
@@ -297,8 +298,10 @@ local commands = {
core.command_view:set_text(doc().filename)
end
core.command_view:enter("Save As", function(filename)
- save(filename)
- end, common.path_suggest)
+ save(common.home_expand(filename))
+ end, function (text)
+ return common.home_encode_list(common.path_suggest(common.home_expand(text)))
+ end)
end,
["doc:save"] = function()
diff --git a/data/core/common.lua b/data/core/common.lua
index 6918a2b5..763d5f00 100644
--- a/data/core/common.lua
+++ b/data/core/common.lua
@@ -214,9 +214,28 @@ function common.home_encode(text)
end
+function common.home_encode_list(paths)
+ local t = {}
+ for i = 1, #paths do
+ t[i] = common.home_encode(paths[i])
+ end
+ return t
+end
+
+
function common.home_expand(text)
return HOME and text:gsub("^~", HOME) or text
end
+function common.normalize_path(filename)
+ if PATHSEP == '\\' then
+ filename = filename:gsub('[/\\]', '\\')
+ local drive, rem = filename:match('^([a-zA-Z])(:.*)')
+ return drive and drive:upper() .. rem or filename
+ end
+ return filename
+end
+
+
return common
diff --git a/data/core/doc/init.lua b/data/core/doc/init.lua
index 83b5fc01..096c6aa9 100644
--- a/data/core/doc/init.lua
+++ b/data/core/doc/init.lua
@@ -67,6 +67,7 @@ end
function Doc:load(filename)
local fp = assert( io.open(filename, "rb") )
+ filename = common.normalize_path(filename)
self:reset()
self.filename = filename
self.lines = {}
@@ -93,7 +94,7 @@ function Doc:save(filename)
fp:write(line)
end
fp:close()
- self.filename = filename or self.filename
+ self.filename = common.normalize_path(filename or self.filename)
self:reset_syntax()
self:clean()
end
diff --git a/data/core/init.lua b/data/core/init.lua
index 4b262b89..a0602468 100644
--- a/data/core/init.lua
+++ b/data/core/init.lua
@@ -7,6 +7,7 @@ local keymap
local RootView
local StatusView
local CommandView
+local DocView
local Doc
local core = {}
@@ -346,6 +347,7 @@ function core.init()
RootView = require "core.rootview"
StatusView = require "core.statusview"
CommandView = require "core.commandview"
+ DocView = require "core.docview"
Doc = require "core.doc"
do
@@ -473,6 +475,19 @@ do
core.on_enter_project = do_nothing
end
+
+core.doc_save_hooks = {}
+function core.add_save_hook(fn)
+ core.doc_save_hooks[#core.doc_save_hooks + 1] = fn
+end
+
+
+function core.on_doc_save(filename)
+ for _, hook in ipairs(core.doc_save_hooks) do
+ hook(filename)
+ end
+end
+
local function quit_with_function(quit_fn, force)
if force then
delete_temp_files()
@@ -709,6 +724,7 @@ function core.step()
local did_keymap = false
local mouse_moved = false
local mouse = { x = 0, y = 0, dx = 0, dy = 0 }
+
for type, a,b,c,d in system.poll_event do
if type == "mousemoved" then
@@ -746,7 +762,7 @@ function core.step()
-- update window title
local name = core.active_view:get_name()
- local title = (name ~= "---") and (name .. " - lite") or "lite"
+ local title = (name ~= "---") and ( (core.active_view:is(DocView) and core.active_view.doc.filename or name) .. " - lite") or "lite"
if title ~= core.window_title then
system.set_window_title(title)
core.window_title = title
@@ -839,4 +855,13 @@ function core.on_error(err)
end
+core.add_save_hook(function(filename)
+ local doc = core.active_view.doc
+ if doc and doc:is(Doc) and doc.filename == common.normalize_path(USERDIR .. PATHSEP .. "init.lua") then
+ core.reload_module("core.style")
+ core.load_user_directory()
+ end
+end)
+
+
return core
diff --git a/meson.build b/meson.build
index 70c5247f..edd6a730 100644
--- a/meson.build
+++ b/meson.build
@@ -28,7 +28,7 @@ foreach data_module : ['core', 'fonts', 'plugins', 'colors']
endforeach
lite_link_args = []
-if get_option('buildtype') == 'release'
+if cc.get_id() == 'gcc' and get_option('buildtype') == 'release'
lite_link_args += ['-static-libgcc', '-static-libstdc++']
endif