From b37c190db22489c7978012550cbb5f884d5e62bf Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Sun, 16 May 2021 15:50:27 +0200 Subject: [PATCH 01/88] Add buttons to scroll tabs when there are too many Use config.max_tabs to configure the maximum number of tabs that can be shown. Beyond the maximum value scroll buttons will appear to scroll the tabs. --- data/core/config.lua | 1 + data/core/rootview.lua | 136 ++++++++++++++++++++++++--- data/fonts/icons.ttf | Bin 9620 -> 10036 bytes dev-utils/fontello-config-small.json | 118 ----------------------- 4 files changed, 122 insertions(+), 133 deletions(-) delete mode 100644 dev-utils/fontello-config-small.json diff --git a/data/core/config.lua b/data/core/config.lua index f9b4e87..74ca3d2 100644 --- a/data/core/config.lua +++ b/data/core/config.lua @@ -11,6 +11,7 @@ config.symbol_pattern = "[%a_][%w_]*" config.non_word_chars = " \t\n/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-" config.undo_merge_timeout = 0.3 config.max_undos = 10000 +config.max_tabs = 10 config.highlight_current_line = true config.line_height = 1.2 config.indent_size = 2 diff --git a/data/core/rootview.lua b/data/core/rootview.lua index da628c7..1ed571a 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -1,5 +1,6 @@ local core = require "core" local common = require "core.common" +local config = require "core.config" local style = require "core.style" local keymap = require "core.keymap" local Object = require "core.object" @@ -59,7 +60,9 @@ function Node:new(type) end self.hovered = {x = -1, y = -1 } self.hovered_close = 0 - self.tab_margin = style.padding.x + self.tab_shift = 0 + self.tab_offset = 1 + self.tab_width = style.tab_width self.move_towards = View.move_towards end @@ -236,11 +239,20 @@ function Node:get_divider_overlapping_point(px, py) end +function Node:get_visible_tabs_number() + return math.min(#self.views - self.tab_offset + 1, config.max_tabs) +end + + function Node:get_tab_overlapping_point(px, py) if #self.views == 1 then return nil end - local x, y, w, h = self:get_tab_rect(1) - if px >= x and py >= y and px < x + w * #self.views and py < y + h then - return math.floor((px - x) / w) + 1 + local tabs_number = self:get_visible_tabs_number() + -- FIXME: looping over tabs is may be not needed. Find a simpler way. + for i = self.tab_offset, self.tab_offset + tabs_number - 1 do + local x, y, w, h = self:get_tab_rect(i) + if px >= x and py >= y and px < x + w and py < y + h then + return i + end end end @@ -252,18 +264,33 @@ local function close_button_location(x, w) end +function Node:get_scroll_button_index(px, py) + for i = 1, 2 do + local x, y, w, h = self:get_scroll_button_rect(i) + if px >= x and px < x + w and py >= y and py < y + h then + return i + end + end +end + + function Node:tab_hovered_update(px, py) local tab_index = self:get_tab_overlapping_point(px, py) self.hovered_tab = tab_index + self.hovered_close = 0 + self.hovered_tab_scroll = 0 if tab_index then local x, y, w, h = self:get_tab_rect(tab_index) local cx, cw = close_button_location(x, w) if px >= cx and px < cx + cw and py >= y and py < y + h then self.hovered_close = tab_index - return + end + else + local tab_scroll_index = self:get_scroll_button_index(px, py) + if tab_scroll_index then + self.hovered_tab_scroll = tab_scroll_index end end - self.hovered_close = 0 end @@ -280,10 +307,24 @@ function Node:get_child_overlapping_point(x, y) end +function Node:get_scroll_button_rect(index) + local w = style.icon_font:get_width(">") + local pad = w + local h = style.font:get_height() + style.padding.y * 2 + if index == 1 then + return self.position.x, self.position.y, w + 2 * pad, h, pad + else + return self.position.x + self.size.x - w - 2 * pad, self.position.y, w + 2 * pad, h, pad + end +end + + function Node:get_tab_rect(idx) - local tw = math.min(style.tab_width, (self.size.x - self.tab_margin) / #self.views) - local x_left = self.position.x + tw * (idx - 1) - local x1, x2 = math.floor(x_left), math.floor(x_left + tw) + -- FIXME: we may consider to create a separate method just to get the + -- width of the scroll button. It is needed to compute tabs placement. + local _, _, sbw = self:get_scroll_button_rect(1) + local x_left = self.position.x + sbw + self.tab_width * (idx - 1) - self.tab_shift + local x1, x2 = math.floor(x_left), math.floor(x_left + self.tab_width) local h = style.font:get_height() + style.padding.y * 2 return x1, self.position.y, x2 - x1, h end @@ -386,13 +427,61 @@ function Node:update_layout() end +function Node:scroll_tabs_to_visible() + local index = self:get_view_idx(self.active_view) + if index then + local tabs_number = self:get_visible_tabs_number() + if self.tab_offset > index then + self.tab_offset = index + elseif self.tab_offset + tabs_number - 1 < index then + self.tab_offset = index - tabs_number + 1 + elseif tabs_number < config.max_tabs and self.tab_offset > 1 then + self.tab_offset = #self.views - config.max_tabs + 1 + end + end +end + + +function Node:scroll_tabs(dir) + local view_index = self:get_view_idx(self.active_view) + if dir == 1 then + if self.tab_offset > 1 then + self.tab_offset = self.tab_offset - 1 + local last_index = self.tab_offset + self:get_visible_tabs_number() - 1 + if view_index > last_index then + self:set_active_view(self.views[last_index]) + end + end + elseif dir == 2 then + local tabs_number = self:get_visible_tabs_number() + if self.tab_offset + tabs_number - 1 < #self.views then + self.tab_offset = self.tab_offset + 1 + local view_index = self:get_view_idx(self.active_view) + if view_index < self.tab_offset then + self:set_active_view(self.views[self.tab_offset]) + end + end + end +end + + +function Node:target_tab_width() + local tabs_number = self:get_visible_tabs_number() + local _, _, sbw = self:get_scroll_button_rect(1) + return math.min(style.tab_width, (self.size.x - sbw * 2) / tabs_number) +end + + function Node:update() if self.type == "leaf" then + self:scroll_tabs_to_visible() for _, view in ipairs(self.views) do view:update() end self:tab_hovered_update(self.hovered.x, self.hovered.y) - self:move_towards("tab_margin", style.padding.x) + local tab_width = self:target_tab_width() + self:move_towards("tab_shift", tab_width * (self.tab_offset - 1)) + self:move_towards("tab_width", tab_width) else self.a:update() self.b:update() @@ -401,14 +490,27 @@ end function Node:draw_tabs() - local x, y, _, h = self:get_tab_rect(1) + local x, y, w, h, scroll_padding = self:get_scroll_button_rect(1) local ds = style.divider_size local dots_width = style.font:get_width("…") core.push_clip_rect(x, y, self.size.x, h) renderer.draw_rect(x, y, self.size.x, h, style.background2) renderer.draw_rect(x, y + h - ds, self.size.x, ds, style.divider) - for i, view in ipairs(self.views) do + if self.tab_offset > 1 then + local button_style = self.hovered_tab_scroll == 1 and style.text or style.dim + common.draw_text(style.icon_font, button_style, "<", nil, x + scroll_padding, y, 0, h) + end + + local tabs_number = self:get_visible_tabs_number() + if #self.views > self.tab_offset + tabs_number - 1 then + local xrb, yrb, wrb = self:get_scroll_button_rect(2) + local button_style = self.hovered_tab_scroll == 2 and style.text or style.dim + common.draw_text(style.icon_font, button_style, ">", nil, xrb + scroll_padding, yrb, 0, h) + end + + for i = self.tab_offset, self.tab_offset + tabs_number - 1 do + local view = self.views[i] local x, y, w, h = self:get_tab_rect(i) local text = view:get_name() local color = style.dim @@ -637,11 +739,13 @@ function RootView:on_mouse_pressed(button, x, y, clicks) return end local node = self.root_node:get_child_overlapping_point(x, y) + if node.hovered_tab_scroll > 0 then + node:scroll_tabs(node.hovered_tab_scroll) + return + end local idx = node:get_tab_overlapping_point(x, y) if idx then if button == "middle" or node.hovered_close == idx then - local _, _, tw = node:get_tab_rect(idx) - node.tab_margin = node.tab_margin + tw node:close_view(self.root_node, node.views[idx]) else self.dragged_node = idx @@ -702,7 +806,9 @@ function RootView:on_mouse_moved(x, y, dx, dy) local node = self.root_node:get_child_overlapping_point(x, y) local div = self.root_node:get_divider_overlapping_point(x, y) local tab_index = node and node:get_tab_overlapping_point(x, y) - if div then + if node and node:get_scroll_button_index(x, y) then + system.set_cursor("arrow") + elseif div then local axis = (div.type == "hsplit" and "x" or "y") if div.a:is_resizable(axis) and div.b:is_resizable(axis) then system.set_cursor(div.type == "hsplit" and "sizeh" or "sizev") diff --git a/data/fonts/icons.ttf b/data/fonts/icons.ttf index 00b4cc3bd262b1cb9f3339d2e5379c4b45f983c2..43ab376735b7a7a4355a91dacd639d4dcc8d285e 100644 GIT binary patch delta 1138 zcmb`G-%C?r7{{OYoU_fHGq<^&ZIaW?A8qp&O$ogjCgz2uiIn++8nWqr7@Hn+s8P5m zx(iW`7hZ(cMN&d2Orh>V=*H_n3F)eESQkMEMz!_4XGiD{XfNOQ`##V6>^YzJJ==2k zcJE?UI`jvC^Z~%YXfh=EUv&F0ehI)FkItmr23NirptK+N8=_Jy8E*P@590>_Mnfz# zEn(h_aSwV?EO9rg+q32XxMke`7LSC+%FC9509LGrmN+JKyX;qt-(Xx5Pp0O&20!G# zVB!!H{fWuZ(D_7d7(n!6+>i{-Nu=EP7USC(yC*`)$c}OP2gdgi@Rc+_0R|bXp^(V z#ZuQYO|qZiTtum%b#&B#M;Sh#qYmoi>x@@t1rd8{Wx`g=YfM>y0}b}n>WXltA3Z)& z05IUP*r;T{M9mB(7O)l)>MUZDd3li$VgY^oRLBQ6R8dg8SVhI?Lj_$03O}NXo?uKB{tO_hssufz%7Q+w zik@>;m6(Zgn&O6AwAt&#eGBV0xr!I(*(U`-CK@-Qzc5OvXBDu z7^`TiT@ToRMl-|1!`luAqbse~Gj`ELv{hc>x!6itnq9;$G7GtVQp@wfwBQtSVL>3P zd<7rmnT^~*ZeLmQWDT9H3PO;tz>WpblnScEe`)DmBzfEH$~+Mj~cX*SG`m;xtYVzbB&hws-vow@9@v^s1w z&t~%{B!d5>hp0U&dBSqVTSw-Z0p=NV%673EoW%Xs_%$n)!+mDQY0V^xaxc~qF delta 718 zcmX|8OK4L;6g~64wMp~ZJZ;1T6VsRqwxAX2!a${U;U`Mb(h4r>OPY_+*hdqz;-b)% zxU!BQO2r^uR8X@>UAS>!K?G4;NH@B0BSz^$)M7v|-bn@-&O7g%xpVKGxvQscowyO5 zPjv!p6u@}8;JCYQC$^AY0hH(IOQnc6+!z45S82a5>*fln{eP~K{sj2EIj887Pv^TI z5x3>0uVgDPhduyW9_U!gXPl|f+UrArU!(oOJQ?N-^(*NF=~%u{nj4uo-1tn!c`}mI zGifJ09<7rW3HKD7IhO@}&q%)~9l7WfGEaTQpQL|LgAd)AV(Gxn)8Bw?Woo+Joz1w} z;mQ)_-dL=kW7qi@%k{5=(P7{n)aG9waXW>tL&GxpA-aJIFLq%s`uPS6b4%G5WaPJ2 z1kvV-L9969Jf-wfDuZ{aJ-n&}`F+J0)O4d+1u)wHdP6D!kGJJ@2=c+|L|4m@Uq7W- z;AO?MT7k9y{sXmlewdVic)Sq_o%o1^D43KmiBC#UeTabyP$M`aAv&6n@DQJs5Va>I zM5j|N3{b~FR>C6ANzlY`K|);UvV^~SQ>(D*qWRksx;u1lWztG)!cv>J`gmvU4TV84 zU$zfgw(!+jW0PfQmJ9rceXQpRt1F{QSyj|m+L(4t`>yZMkLqRpuQ6-9Z4S?_rnY`j Vn9Yv|;=B}y@yCI3HMza!`v*8uh9>|3 diff --git a/dev-utils/fontello-config-small.json b/dev-utils/fontello-config-small.json deleted file mode 100644 index 895de30..0000000 --- a/dev-utils/fontello-config-small.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "name": "icons", - "css_prefix_text": "icon-", - "css_use_suffix": false, - "hinting": true, - "units_per_em": 1000, - "ascent": 850, - "glyphs": [ - { - "uid": "9dd9e835aebe1060ba7190ad2b2ed951", - "css": "search-1", - "code": 76, - "src": "fontawesome" - }, - { - "uid": "c76b7947c957c9b78b11741173c8349b", - "css": "attention-1", - "code": 33, - "src": "fontawesome" - }, - { - "uid": "1b5a5d7b7e3c71437f5a26befdd045ed", - "css": "doc-1", - "code": 102, - "src": "fontawesome" - }, - { - "uid": "f8aa663c489bcbd6e68ec8147dca841e", - "css": "folder-1", - "code": 100, - "src": "fontawesome" - }, - { - "uid": "c95735c17a10af81448c7fed98a04546", - "css": "folder-open-1", - "code": 68, - "src": "fontawesome" - }, - { - "uid": "e99461abfef3923546da8d745372c995", - "css": "cog", - "code": 80, - "src": "fontawesome" - }, - { - "uid": "7bf14281af5633a597f85b061ef1cfb9", - "css": "angle-right", - "code": 43, - "src": "fontawesome" - }, - { - "uid": "e4dde1992f787163e2e2b534b8c8067d", - "css": "angle-down", - "code": 45, - "src": "fontawesome" - }, - { - "uid": "ea2d9a8c51ca42b38ef0d2a07f16d9a7", - "css": "chart-line", - "code": 103, - "src": "fontawesome" - }, - { - "uid": "f4445feb55521283572ee88bc304f928", - "css": "floppy", - "code": 83, - "src": "fontawesome" - }, - { - "uid": "9755f76110ae4d12ac5f9466c9152031", - "css": "book", - "code": 66, - "src": "fontawesome" - }, - { - "uid": "e82cedfa1d5f15b00c5a81c9bd731ea2", - "css": "info-circled-1", - "code": 105, - "src": "fontawesome" - }, - { - "uid": "5211af474d3a9848f67f945e2ccaf143", - "css": "cancel-1", - "code": 67, - "src": "fontawesome" - }, - { - "uid": "04f022b8bd044d4ccfffd3887ff72088", - "css": "window-minimize", - "code": 95, - "src": "fontawesome" - }, - { - "uid": "d0e62145dbf40f30e47b3819b8b43a8f", - "css": "window-restore", - "code": 119, - "src": "fontawesome" - }, - { - "uid": "7394501fc0b17cb7bda99538f92e26d6", - "css": "window-close", - "code": 88, - "src": "fontawesome" - }, - { - "uid": "559647a6f430b3aeadbecd67194451dd", - "css": "menu-1", - "code": 77, - "src": "fontawesome" - }, - { - "uid": "07f0832c07f3d9713fffb06c8bffa027", - "css": "window-maximize", - "code": 87, - "src": "fontawesome" - } - ] -} \ No newline at end of file From bd4efa14a2ef5518ab7109977041375843544ab8 Mon Sep 17 00:00:00 2001 From: Cukmekerb Date: Sun, 16 May 2021 23:56:21 -0700 Subject: [PATCH 02/88] add `of` keyword to language_js.lua and improve js string syntax highlighting in (#186) --- data/plugins/language_js.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/plugins/language_js.lua b/data/plugins/language_js.lua index a258bb3..671e1bd 100644 --- a/data/plugins/language_js.lua +++ b/data/plugins/language_js.lua @@ -7,7 +7,7 @@ syntax.add { patterns = { { pattern = "//.-\n", type = "comment" }, { pattern = { "/%*", "%*/" }, type = "comment" }, - { pattern = { '/', '/', '\\' }, type = "string" }, + { pattern = { '/%g', '/', '\\' }, type = "string" }, { pattern = { '"', '"', '\\' }, type = "string" }, { pattern = { "'", "'", '\\' }, type = "string" }, { pattern = { "`", "`", '\\' }, type = "string" }, @@ -41,6 +41,7 @@ syntax.add { ["if"] = "keyword", ["import"] = "keyword", ["in"] = "keyword", + ["of"] = "keyword", ["instanceof"] = "keyword", ["let"] = "keyword", ["new"] = "keyword", From e54ffc49eaf65c57e840bddcdef7e5d7f62e49f8 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 17 May 2021 03:14:46 -0400 Subject: [PATCH 03/88] Added in keyboard shortcuts to the project search module. (#188) --- data/plugins/projectsearch.lua | 36 +++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/data/plugins/projectsearch.lua b/data/plugins/projectsearch.lua index 4c1fca6..ef887b4 100644 --- a/data/plugins/projectsearch.lua +++ b/data/plugins/projectsearch.lua @@ -265,12 +265,38 @@ command.add(ResultsView, { ["project-search:refresh"] = function() core.active_view:refresh() end, + + ["project-search:move-to-previous-page"] = function() + local view = core.active_view + view.scroll.to.y = view.scroll.to.y - view.size.y + end, + + ["project-search:move-to-next-page"] = function() + local view = core.active_view + view.scroll.to.y = view.scroll.to.y + view.size.y + end, + + ["project-search:move-to-start-of-doc"] = function() + local view = core.active_view + view.scroll.to.y = 0 + end, + + ["project-search:move-to-end-of-doc"] = function() + local view = core.active_view + view.scroll.to.y = view:get_scrollable_size() + end }) keymap.add { - ["f5"] = "project-search:refresh", - ["ctrl+shift+f"] = "project-search:find", - ["up"] = "project-search:select-previous", - ["down"] = "project-search:select-next", - ["return"] = "project-search:open-selected", + ["f5"] = "project-search:refresh", + ["ctrl+shift+f"] = "project-search:find", + ["up"] = "project-search:select-previous", + ["down"] = "project-search:select-next", + ["return"] = "project-search:open-selected", + ["pageup"] = "project-search:move-to-previous-page", + ["pagedown"] = "project-search:move-to-next-page", + ["ctrl+home"] = "project-search:move-to-start-of-doc", + ["ctrl+end"] = "project-search:move-to-end-of-doc", + ["home"] = "project-search:move-to-start-of-doc", + ["end"] = "project-search:move-to-end-of-doc" } From 85d0d684dec52095f1c73f9914754ad042e81da6 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 17 May 2021 03:16:20 -0400 Subject: [PATCH 04/88] Truncated lines longer than 256 characters, and skipped to the relevant portion of the line to reduce slowdown and increase relevancy. (#185) --- data/plugins/projectsearch.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/plugins/projectsearch.lua b/data/plugins/projectsearch.lua index ef887b4..ed818bf 100644 --- a/data/plugins/projectsearch.lua +++ b/data/plugins/projectsearch.lua @@ -30,7 +30,10 @@ local function find_all_matches_in_file(t, filename, fn) for line in fp:lines() do local s = fn(line) if s then - table.insert(t, { file = filename, text = line, line = n, col = s }) + -- Insert maximum 256 characters. If we insert more, for compiled files, which can have very long lines + -- things tend to get sluggish. If our line is longer than 80 characters, begin to truncate the thing. + local start_index = math.max(s - 80, 1) + table.insert(t, { file = filename, text = (start_index > 1 and "..." or "") .. line:sub(start_index, 256 + start_index), line = n, col = s }) core.redraw = true end if n % 100 == 0 then coroutine.yield() end From e43f1b9df9644791cdd3c7649810b556855c1f66 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 17 May 2021 03:29:51 -0400 Subject: [PATCH 05/88] Unified open and saving style. (#189) --- data/core/commands/core.lua | 3 ++- data/core/commands/doc.lua | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/data/core/commands/core.lua b/data/core/commands/core.lua index c823306..abbe7cb 100644 --- a/data/core/commands/core.lua +++ b/data/core/commands/core.lua @@ -88,7 +88,8 @@ command.add(nil, { ["core:open-file"] = function() local view = core.active_view if view.doc and view.doc.abs_filename then - core.command_view:set_text(common.home_encode(view.doc.abs_filename)) + local dirname, filename = view.doc.abs_filename:match("(.*)[/\\](.+)$") + core.command_view:set_text(core.normalize_to_project_dir(dirname) .. PATHSEP) end core.command_view:enter("Open File", function(text) core.root_view:open_doc(core.open_doc(common.home_expand(text))) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index 965f345..ee93015 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -299,6 +299,9 @@ local commands = { ["doc:save-as"] = function() if doc().filename then core.command_view:set_text(doc().filename) + elseif core.last_active_view then + local dirname, filename = core.last_active_view.doc.abs_filename:match("(.*)[/\\](.+)$") + core.command_view:set_text(core.normalize_to_project_dir(dirname) .. PATHSEP) end core.command_view:enter("Save As", function(filename) save(common.home_expand(filename)) From 6e08c3321c2770f6ecada953b9bb610fd64c58a9 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 17 May 2021 04:05:08 -0400 Subject: [PATCH 06/88] Fixed a bug where if detectindent is paired with another plugin that hooks the event, it'll overwrite the other plugin's functions. (#190) --- data/plugins/detectindent.lua | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/data/plugins/detectindent.lua b/data/plugins/detectindent.lua index 681dce2..079a92e 100644 --- a/data/plugins/detectindent.lua +++ b/data/plugins/detectindent.lua @@ -102,21 +102,28 @@ end local doc_on_text_change = Doc.on_text_change local adjust_threshold = 4 +local current_on_text_change = nil + local function update_cache(doc) local type, size, score = detect_indent_stat(doc) cache[doc] = { type = type, size = size, confirmed = (score >= adjust_threshold) } doc.indent_info = cache[doc] if score < adjust_threshold and doc_on_text_change then - Doc.on_text_change = function(self, ...) - doc_on_text_change(self, ...) + current_on_text_change = function(self, ...) update_cache(self) end elseif score >= adjust_threshold and doc_on_text_change then - Doc.on_text_change = doc_on_text_change - doc_on_text_change = nil + current_on_text_change = nil end end +function Doc:on_text_change(...) + if current_on_text_change then + current_on_text_change(...) + end + doc_on_text_change(...) +end + local new = Doc.new function Doc:new(...) From 92322986b8e938a9d76c5420600db9e867871dec Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Mon, 17 May 2021 10:16:55 +0200 Subject: [PATCH 07/88] Fix error with previous commit Error was introduced with PR: https://github.com/franko/lite-xl/pull/190 --- data/plugins/detectindent.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/plugins/detectindent.lua b/data/plugins/detectindent.lua index 079a92e..63fe8a5 100644 --- a/data/plugins/detectindent.lua +++ b/data/plugins/detectindent.lua @@ -117,7 +117,7 @@ local function update_cache(doc) end end -function Doc:on_text_change(...) +function Doc.on_text_change(...) if current_on_text_change then current_on_text_change(...) end From ba40bc0dfc8fe02e47de5cb81ed1be6ecafc0973 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Mon, 17 May 2021 12:14:01 +0200 Subject: [PATCH 08/88] Final adjustments to tab's rect computations --- data/core/rootview.lua | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 1ed571a..981734f 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -224,6 +224,15 @@ function Node:get_children(t) end +-- return the width including the padding space and separately +-- the padding space itself +local function get_scroll_button_width() + local w = style.icon_font:get_width(">") + local pad = w + return w + 2 * pad, pad +end + + function Node:get_divider_overlapping_point(px, py) if self.type ~= "leaf" then local p = 6 @@ -247,12 +256,10 @@ end function Node:get_tab_overlapping_point(px, py) if #self.views == 1 then return nil end local tabs_number = self:get_visible_tabs_number() - -- FIXME: looping over tabs is may be not needed. Find a simpler way. - for i = self.tab_offset, self.tab_offset + tabs_number - 1 do - local x, y, w, h = self:get_tab_rect(i) - if px >= x and py >= y and px < x + w and py < y + h then - return i - end + local x1, y1, w, h = self:get_tab_rect(self.tab_offset) + local x2, y2 = self:get_tab_rect(self.tab_offset + tabs_number) + if px >= x1 and py >= y1 and px < x2 and py < y1 + h then + return math.floor((px - x1) / w) + self.tab_offset end end @@ -308,25 +315,18 @@ end function Node:get_scroll_button_rect(index) - local w = style.icon_font:get_width(">") - local pad = w + local w, pad = get_scroll_button_width() local h = style.font:get_height() + style.padding.y * 2 - if index == 1 then - return self.position.x, self.position.y, w + 2 * pad, h, pad - else - return self.position.x + self.size.x - w - 2 * pad, self.position.y, w + 2 * pad, h, pad - end + local x = self.position.x + (index == 1 and 0 or self.size.x - w) + return x, self.position.y, w, h, pad end function Node:get_tab_rect(idx) - -- FIXME: we may consider to create a separate method just to get the - -- width of the scroll button. It is needed to compute tabs placement. - local _, _, sbw = self:get_scroll_button_rect(1) - local x_left = self.position.x + sbw + self.tab_width * (idx - 1) - self.tab_shift - local x1, x2 = math.floor(x_left), math.floor(x_left + self.tab_width) + local sbw = get_scroll_button_width() + local x = self.position.x + sbw + self.tab_width * (idx - 1) - self.tab_shift local h = style.font:get_height() + style.padding.y * 2 - return x1, self.position.y, x2 - x1, h + return x, self.position.y, self.tab_width, h end @@ -467,7 +467,7 @@ end function Node:target_tab_width() local tabs_number = self:get_visible_tabs_number() - local _, _, sbw = self:get_scroll_button_rect(1) + local sbw = get_scroll_button_width() return math.min(style.tab_width, (self.size.x - sbw * 2) / tabs_number) end From 13529c28d4a3a16e94053de524d26b9b5ca6cc00 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Mon, 17 May 2021 13:37:05 +0200 Subject: [PATCH 09/88] Cosmetic variable name change --- data/core/rootview.lua | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 981734f..3f300b4 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -285,7 +285,7 @@ function Node:tab_hovered_update(px, py) local tab_index = self:get_tab_overlapping_point(px, py) self.hovered_tab = tab_index self.hovered_close = 0 - self.hovered_tab_scroll = 0 + self.hovered_scroll_button = 0 if tab_index then local x, y, w, h = self:get_tab_rect(tab_index) local cx, cw = close_button_location(x, w) @@ -293,10 +293,7 @@ function Node:tab_hovered_update(px, py) self.hovered_close = tab_index end else - local tab_scroll_index = self:get_scroll_button_index(px, py) - if tab_scroll_index then - self.hovered_tab_scroll = tab_scroll_index - end + self.hovered_scroll_button = self:get_scroll_button_index(px, py) or 0 end end @@ -498,14 +495,14 @@ function Node:draw_tabs() renderer.draw_rect(x, y + h - ds, self.size.x, ds, style.divider) if self.tab_offset > 1 then - local button_style = self.hovered_tab_scroll == 1 and style.text or style.dim + local button_style = self.hovered_scroll_button == 1 and style.text or style.dim common.draw_text(style.icon_font, button_style, "<", nil, x + scroll_padding, y, 0, h) end local tabs_number = self:get_visible_tabs_number() if #self.views > self.tab_offset + tabs_number - 1 then local xrb, yrb, wrb = self:get_scroll_button_rect(2) - local button_style = self.hovered_tab_scroll == 2 and style.text or style.dim + local button_style = self.hovered_scroll_button == 2 and style.text or style.dim common.draw_text(style.icon_font, button_style, ">", nil, xrb + scroll_padding, yrb, 0, h) end @@ -739,8 +736,8 @@ function RootView:on_mouse_pressed(button, x, y, clicks) return end local node = self.root_node:get_child_overlapping_point(x, y) - if node.hovered_tab_scroll > 0 then - node:scroll_tabs(node.hovered_tab_scroll) + if node.hovered_scroll_button > 0 then + node:scroll_tabs(node.hovered_scroll_button) return end local idx = node:get_tab_overlapping_point(x, y) From 1fb01f36df1adb9b2e2ae0c39de3757b65a63f57 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Mon, 17 May 2021 15:11:06 +0200 Subject: [PATCH 10/88] Avoid overflowing tab rectangles when animating --- data/core/rootview.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 3f300b4..17bb7c7 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -321,9 +321,12 @@ end function Node:get_tab_rect(idx) local sbw = get_scroll_button_width() - local x = self.position.x + sbw + self.tab_width * (idx - 1) - self.tab_shift + local maxw = self.size.x - 2 * sbw + local x0 = self.position.x + sbw + local x1 = x0 + common.clamp(self.tab_width * (idx - 1) - self.tab_shift, 0, maxw) + local x2 = x0 + common.clamp(self.tab_width * idx - self.tab_shift, 0, maxw) local h = style.font:get_height() + style.padding.y * 2 - return x, self.position.y, self.tab_width, h + return x1, self.position.y, x2 - x1, h end From ca05562cc0d7160780663d7f3d0008b3c9c2ceb0 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Mon, 17 May 2021 15:16:57 +0200 Subject: [PATCH 11/88] Restore correct fontello configuration --- dev-utils/fontello-config.json | 378 +++------------------------------ 1 file changed, 30 insertions(+), 348 deletions(-) diff --git a/dev-utils/fontello-config.json b/dev-utils/fontello-config.json index 9dd4681..42334c2 100644 --- a/dev-utils/fontello-config.json +++ b/dev-utils/fontello-config.json @@ -1,5 +1,5 @@ { - "name": "", + "name": "icons", "css_prefix_text": "icon-", "css_use_suffix": false, "hinting": true, @@ -12,234 +12,18 @@ "code": 76, "src": "fontawesome" }, - { - "uid": "12f4ece88e46abd864e40b35e05b11cd", - "css": "ok-1", - "code": 59402, - "src": "fontawesome" - }, - { - "uid": "43ab845088317bd348dee1d975700c48", - "css": "ok-circled-1", - "code": 59403, - "src": "fontawesome" - }, - { - "uid": "ad33e708f4d2e25c5056c931da1528d6", - "css": "ok-circled2", - "code": 59405, - "src": "fontawesome" - }, - { - "uid": "1400d5103edd2fa6d2d61688fee79a5a", - "css": "ok-squared", - "code": 61770, - "src": "fontawesome" - }, - { - "uid": "5211af474d3a9848f67f945e2ccaf143", - "css": "cancel-1", - "code": 67, - "src": "fontawesome" - }, - { - "uid": "0f4cae16f34ae243a6144c18a003f2d8", - "css": "cancel-circled-1", - "code": 99, - "src": "fontawesome" - }, - { - "uid": "d7271d490b71df4311e32cdacae8b331", - "css": "home-1", - "code": 59407, - "src": "fontawesome" - }, - { - "uid": "3d4ea8a78dc34efe891f3a0f3d961274", - "css": "info", - "code": 61737, - "src": "fontawesome" - }, - { - "uid": "ce3cf091d6ebd004dd0b52d24074e6e3", - "css": "help", - "code": 61736, - "src": "fontawesome" - }, - { - "uid": "17ebadd1e3f274ff0205601eef7b9cc4", - "css": "help-circled-1", - "code": 59408, - "src": "fontawesome" - }, - { - "uid": "e82cedfa1d5f15b00c5a81c9bd731ea2", - "css": "info-circled-1", - "code": 59409, - "src": "fontawesome" - }, - { - "uid": "c1f1975c885aa9f3dad7810c53b82074", - "css": "lock", - "code": 59410, - "src": "fontawesome" - }, - { - "uid": "657ab647f6248a6b57a5b893beaf35a9", - "css": "lock-open-1", - "code": 59411, - "src": "fontawesome" - }, - { - "uid": "05376be04a27d5a46e855a233d6e8508", - "css": "lock-open-alt-1", - "code": 61758, - "src": "fontawesome" - }, - { - "uid": "3db5347bd219f3bce6025780f5d9ef45", - "css": "tag", - "code": 59412, - "src": "fontawesome" - }, - { - "uid": "a3f89e106175a5c5c4e9738870b12e55", - "css": "tags", - "code": 59413, - "src": "fontawesome" - }, - { - "uid": "7034e4d22866af82bef811f52fb1ba46", - "css": "code", - "code": 61729, - "src": "fontawesome" - }, - { - "uid": "d35a1d35efeb784d1dc9ac18b9b6c2b6", - "css": "pencil-1", - "code": 59414, - "src": "fontawesome" - }, - { - "uid": "44fae3bfdd54754dc68ec50d37efea37", - "css": "pencil-squared", - "code": 61771, - "src": "fontawesome" - }, - { - "uid": "41087bc74d4b20b55059c60a33bf4008", - "css": "edit", - "code": 59415, - "src": "fontawesome" - }, - { - "uid": "ecb97add13804c190456025e43ec003b", - "css": "keyboard", - "code": 61724, - "src": "fontawesome" - }, { "uid": "c76b7947c957c9b78b11741173c8349b", "css": "attention-1", "code": 33, "src": "fontawesome" }, - { - "uid": "00391fac5d419345ffcccd95b6f76263", - "css": "attention-alt-1", - "code": 61738, - "src": "fontawesome" - }, - { - "uid": "b035c28eba2b35c6ffe92aee8b0df507", - "css": "attention-circled", - "code": 59417, - "src": "fontawesome" - }, - { - "uid": "f48ae54adfb27d8ada53d0fd9e34ee10", - "css": "trash-empty", - "code": 59418, - "src": "fontawesome" - }, { "uid": "1b5a5d7b7e3c71437f5a26befdd045ed", "css": "doc-1", "code": 102, "src": "fontawesome" }, - { - "uid": "c8585e1e5b0467f28b70bce765d5840c", - "css": "docs", - "code": 61637, - "src": "fontawesome" - }, - { - "uid": "5408be43f7c42bccee419c6be53fdef5", - "css": "doc-text", - "code": 61686, - "src": "fontawesome" - }, - { - "uid": "178053298e3e5b03551d754d4b9acd8b", - "css": "doc-inv", - "code": 61787, - "src": "fontawesome" - }, - { - "uid": "c08a1cde48d96cba21d8c05fa7d7feb1", - "css": "doc-text-inv", - "code": 61788, - "src": "fontawesome" - }, - { - "uid": "9daa1fdf0838118518a7e22715e83abc", - "css": "file-pdf", - "code": 61889, - "src": "fontawesome" - }, - { - "uid": "310ffd629da85142bc8669f010556f2d", - "css": "file-word", - "code": 61890, - "src": "fontawesome" - }, - { - "uid": "edcd4022de8d8df266ef7c42d2658ca5", - "css": "file-powerpoint", - "code": 61892, - "src": "fontawesome" - }, - { - "uid": "3c961c1a8d874815856fc6637dc5a13c", - "css": "file-image", - "code": 61893, - "src": "fontawesome" - }, - { - "uid": "e80ae555c1413a4ec18b33fb348b4049", - "css": "file-archive", - "code": 61894, - "src": "fontawesome" - }, - { - "uid": "81db033e704eb7c586a365559d7c0f36", - "css": "file-audio", - "code": 61895, - "src": "fontawesome" - }, - { - "uid": "dd69d9aa589ea7bc0a82a3fe67039f4b", - "css": "file-video", - "code": 61896, - "src": "fontawesome" - }, - { - "uid": "26613a2e6bc41593c54bead46f8c8ee3", - "css": "file-code", - "code": 61897, - "src": "fontawesome" - }, { "uid": "f8aa663c489bcbd6e68ec8147dca841e", "css": "folder-1", @@ -252,58 +36,10 @@ "code": 68, "src": "fontawesome" }, - { - "uid": "b091a8bd0fdade174951f17d936f51e4", - "css": "folder-empty-1", - "code": 61716, - "src": "fontawesome" - }, - { - "uid": "6533bdc16ab201eb3f3b27ce989cab33", - "css": "folder-open-empty-1", - "code": 61717, - "src": "fontawesome" - }, - { - "uid": "559647a6f430b3aeadbecd67194451dd", - "css": "menu-1", - "code": 61641, - "src": "fontawesome" - }, { "uid": "e99461abfef3923546da8d745372c995", "css": "cog", - "code": 59422, - "src": "fontawesome" - }, - { - "uid": "98687378abd1faf8f6af97c254eb6cd6", - "css": "cog-alt", - "code": 59423, - "src": "fontawesome" - }, - { - "uid": "5bb103cd29de77e0e06a52638527b575", - "css": "wrench", - "code": 59424, - "src": "fontawesome" - }, - { - "uid": "0b2b66e526028a6972d51a6f10281b4b", - "css": "zoom-in", - "code": 59425, - "src": "fontawesome" - }, - { - "uid": "d25d10efa900f529ad1d275657cfd30e", - "css": "zoom-out", - "code": 59426, - "src": "fontawesome" - }, - { - "uid": "f3f90c8c89795da30f7444634476ea4f", - "css": "angle-left", - "code": 61700, + "code": 80, "src": "fontawesome" }, { @@ -312,24 +48,12 @@ "code": 43, "src": "fontawesome" }, - { - "uid": "5de9370846a26947e03f63142a3f1c07", - "css": "angle-up", - "code": 61701, - "src": "fontawesome" - }, { "uid": "e4dde1992f787163e2e2b534b8c8067d", "css": "angle-down", "code": 45, "src": "fontawesome" }, - { - "uid": "bbfb51903f40597f0b70fd75bc7b5cac", - "css": "trash", - "code": 61944, - "src": "fontawesome" - }, { "uid": "ea2d9a8c51ca42b38ef0d2a07f16d9a7", "css": "chart-line", @@ -342,106 +66,64 @@ "code": 83, "src": "fontawesome" }, - { - "uid": "b429436ec5a518c78479d44ef18dbd60", - "css": "paste", - "code": 61674, - "src": "fontawesome" - }, - { - "uid": "8772331a9fec983cdb5d72902a6f9e0e", - "css": "scissors", - "code": 59428, - "src": "fontawesome" - }, { "uid": "9755f76110ae4d12ac5f9466c9152031", "css": "book", - "code": 59429, + "code": 66, "src": "fontawesome" }, { - "uid": "f9cbf7508cd04145ade2800169959eef", - "css": "font", - "code": 59430, + "uid": "e82cedfa1d5f15b00c5a81c9bd731ea2", + "css": "info-circled-1", + "code": 105, "src": "fontawesome" }, { - "uid": "d3b3f17bc3eb7cd809a07bbd4d178bee", - "css": "resize-vertical", - "code": 59431, + "uid": "5211af474d3a9848f67f945e2ccaf143", + "css": "cancel-1", + "code": 67, "src": "fontawesome" }, { - "uid": "3c73d058e4589b65a8d959c0fc8f153d", - "css": "resize-horizontal", - "code": 59432, + "uid": "04f022b8bd044d4ccfffd3887ff72088", + "css": "window-minimize", + "code": 95, "src": "fontawesome" }, { - "uid": "e594fc6e5870b4ab7e49f52571d52577", - "css": "resize-full", - "code": 59433, + "uid": "d0e62145dbf40f30e47b3819b8b43a8f", + "css": "window-restore", + "code": 119, "src": "fontawesome" }, { - "uid": "5278ef7773e948d56c4d442c8c8c98cf", - "css": "lightbulb", - "code": 61675, + "uid": "7394501fc0b17cb7bda99538f92e26d6", + "css": "window-close", + "code": 88, "src": "fontawesome" }, { - "uid": "598a5f2bcf3521d1615de8e1881ccd17", - "css": "clock", - "code": 59434, + "uid": "559647a6f430b3aeadbecd67194451dd", + "css": "menu-1", + "code": 77, "src": "fontawesome" }, { - "uid": "1c4068ed75209e21af36017df8871802", - "css": "down-big", - "code": 59435, + "uid": "07f0832c07f3d9713fffb06c8bffa027", + "css": "window-maximize", + "code": 87, "src": "fontawesome" }, { - "uid": "555ef8c86832e686fef85f7af2eb7cde", - "css": "left-big", - "code": 59436, + "uid": "d870630ff8f81e6de3958ecaeac532f2", + "css": "left-open", + "code": 60, "src": "fontawesome" }, { - "uid": "ad6b3fbb5324abe71a9c0b6609cbb9f1", - "css": "right-big", - "code": 59437, - "src": "fontawesome" - }, - { - "uid": "95376bf082bfec6ce06ea1cda7bd7ead", - "css": "up-big", - "code": 59438, - "src": "fontawesome" - }, - { - "uid": "107ce08c7231097c7447d8f4d059b55f", - "css": "ellipsis", - "code": 61761, - "src": "fontawesome" - }, - { - "uid": "750058837a91edae64b03d60fc7e81a7", - "css": "ellipsis-vert", - "code": 61762, - "src": "fontawesome" - }, - { - "uid": "8fb55fd696d9a0f58f3b27c1d8633750", - "css": "table", - "code": 61646, - "src": "fontawesome" - }, - { - "uid": "53dd31a6cc6438192b2d7b09b1c1dd45", - "css": "columns", - "code": 61659, + "uid": "399ef63b1e23ab1b761dfbb5591fa4da", + "css": "right-open", + "code": 62, "src": "fontawesome" } ] From ba4fbde33db9b8061effa8f8b2882887ae1800af Mon Sep 17 00:00:00 2001 From: lqdev Date: Tue, 18 May 2021 17:52:18 +0200 Subject: [PATCH 12/88] fixed mixed indentation --- data/core/tokenizer.lua | 56 ++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/data/core/tokenizer.lua b/data/core/tokenizer.lua index f307099..a4fe286 100644 --- a/data/core/tokenizer.lua +++ b/data/core/tokenizer.lua @@ -38,23 +38,23 @@ local function find_non_escaped(text, pattern, offset, esc) end end --- State is a 32-bit number that is four separate bytes, illustrating how many --- differnet delimiters we have open, and which subsyntaxes we have active. --- At most, there are 3 subsyntaxes active at the same time. Beyond that, +-- State is a 32-bit number that is four separate bytes, illustrating how many +-- differnet delimiters we have open, and which subsyntaxes we have active. +-- At most, there are 3 subsyntaxes active at the same time. Beyond that, -- does not support further highlighting. local function retrieve_syntax_state(incoming_syntax, state) - local current_syntax, subsyntax_info, current_state, current_level = + local current_syntax, subsyntax_info, current_state, current_level = incoming_syntax, nil, state, 0 if state > 0 and (state > 255 or current_syntax.patterns[state].syntax) then - -- If we have higher bits, then decode them one at a time, and find which - -- syntax we're using. Rather than walking the bytes, and calling into + -- If we have higher bits, then decode them one at a time, and find which + -- syntax we're using. Rather than walking the bytes, and calling into -- `syntax` each time, we could probably cache this in a single table. for i=0,2 do local target = bit32.extract(state, i*8, 8) if target ~= 0 then if current_syntax.patterns[target].syntax then subsyntax_info = current_syntax.patterns[target] - current_syntax = type(subsyntax_info.syntax) == "table" and + current_syntax = type(subsyntax_info.syntax) == "table" and subsyntax_info.syntax or syntax.get(subsyntax_info.syntax) current_state = 0 current_level = i+1 @@ -62,7 +62,7 @@ local function retrieve_syntax_state(incoming_syntax, state) current_state = target break end - else + else break end end @@ -77,28 +77,28 @@ function tokenizer.tokenize(incoming_syntax, text, state) if #incoming_syntax.patterns == 0 then return { "normal", text } end - + state = state or 0 - local current_syntax, subsyntax_info, current_state, current_level = + local current_syntax, subsyntax_info, current_state, current_level = retrieve_syntax_state(incoming_syntax, state) while i <= #text do -- continue trying to match the end pattern of a pair if we have a state set if current_state > 0 then local p = current_syntax.patterns[current_state] local s, e = find_non_escaped(text, p.pattern[2], i, p.pattern[3]) - + local cont = true -- If we're in subsyntax mode, always check to see if we end our syntax -- first. if subsyntax_info then local ss, se = find_non_escaped( - text, - subsyntax_info.pattern[2], - i, - subsyntax_info.pattern[3] - ) + text, + subsyntax_info.pattern[2], + i, + subsyntax_info.pattern[3] + ) if ss and (s == nil or ss < s) then - push_token(res, p.type, text:sub(i, ss - 1)) + push_token(res, p.type, text:sub(i, ss - 1)) i = ss cont = false end @@ -118,17 +118,17 @@ function tokenizer.tokenize(incoming_syntax, text, state) -- Check for end of syntax. if subsyntax_info then local s, e = find_non_escaped( - text, - "^" .. subsyntax_info.pattern[2], - i, - nil + text, + "^" .. subsyntax_info.pattern[2], + i, + nil ) if s then push_token(res, subsyntax_info.type, text:sub(i, e)) current_level = current_level - 1 -- Zero out the state above us, as well as our new current state. state = bit32.replace(state, 0, current_level*8, 16) - current_syntax, subsyntax_info, current_state, current_level = + current_syntax, subsyntax_info, current_state, current_level = retrieve_syntax_state(incoming_syntax, state) i = e + 1 end @@ -143,20 +143,20 @@ function tokenizer.tokenize(incoming_syntax, text, state) if s then -- matched pattern; make and add token local t = text:sub(s, e) - + push_token(res, current_syntax.symbols[t] or p.type, t) -- update state if this was a start|end pattern pair if type(p.pattern) == "table" then state = bit32.replace(state, n, current_level*8, 8) - -- If we've found a new subsyntax, bump our level, and set the - -- appropriate variables. + -- If we've found a new subsyntax, bump our level, and set the + -- appropriate variables. if p.syntax then current_level = current_level + 1 subsyntax_info = p - current_syntax = type(p.syntax) == "table" and - p.syntax or syntax.get(p.syntax) + current_syntax = type(p.syntax) == "table" and + p.syntax or syntax.get(p.syntax) current_state = 0 - else + else current_state = n end end From a92d15fe300f589041965f063c1a062ca86309bb Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Wed, 19 May 2021 10:09:40 +0200 Subject: [PATCH 13/88] Use all the available space for tabs Use a tab's width larger than style.tab_width if there is enough available space to display the number of tabs specified in config.max_tabs. --- data/core/rootview.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 17bb7c7..7cdc78c 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -466,9 +466,9 @@ end function Node:target_tab_width() - local tabs_number = self:get_visible_tabs_number() - local sbw = get_scroll_button_width() - return math.min(style.tab_width, (self.size.x - sbw * 2) / tabs_number) + local n = self:get_visible_tabs_number() + local w = self.size.x - get_scroll_button_width() * 2 + return common.clamp(style.tab_width, w / config.max_tabs, w / n) end From 86a7037ed9c6abfa014e1e12a6212f7c3afa63c6 Mon Sep 17 00:00:00 2001 From: liquidev Date: Wed, 19 May 2021 22:35:28 +0200 Subject: [PATCH 14/88] support for multiple groups in one pattern (#196) --- data/core/tokenizer.lua | 47 +++++++++++++++++++++++++++++++------ data/plugins/language_c.lua | 28 +++++++++++----------- 2 files changed, 54 insertions(+), 21 deletions(-) diff --git a/data/core/tokenizer.lua b/data/core/tokenizer.lua index a4fe286..6d51928 100644 --- a/data/core/tokenizer.lua +++ b/data/core/tokenizer.lua @@ -15,6 +15,39 @@ local function push_token(t, type, text) end +local function push_tokens(t, syn, pattern, full_text, find_results) + if #find_results > 2 then + -- We do some manipulation with find_results so that it's arranged + -- like this: + -- { start, end, i_1, i_2, i_3, …, i_last } + -- Each position spans characters from i_n to ((i_n+1) - 1), to form + -- consecutive spans of text. + -- + -- If i_1 is not equal to start, start is automatically inserted at + -- that index. + if find_results[3] ~= find_results[1] then + table.insert(find_results, 3, find_results[1]) + end + -- Copy the ending index to the end of the table, so that an ending index + -- always follows a starting index after position 3 in the table. + table.insert(find_results, find_results[2] + 1) + -- Then, we just iterate over our modified table. + for i = 3, #find_results - 1 do + local start = find_results[i] + local fin = find_results[i + 1] - 1 + local type = pattern.type[i - 2] + -- ↑ (i - 2) to convert from [3; n] to [1; n] + local text = full_text:sub(start, fin) + push_token(t, syn.symbols[text] or type, text) + end + else + local start, fin = find_results[1], find_results[2] + local text = full_text:sub(start, fin) + push_token(t, syn.symbols[text] or pattern.type, text) + end +end + + local function is_escaped(text, idx, esc) local byte = esc:byte() local count = 0 @@ -49,7 +82,7 @@ local function retrieve_syntax_state(incoming_syntax, state) -- If we have higher bits, then decode them one at a time, and find which -- syntax we're using. Rather than walking the bytes, and calling into -- `syntax` each time, we could probably cache this in a single table. - for i=0,2 do + for i = 0, 2 do local target = bit32.extract(state, i*8, 8) if target ~= 0 then if current_syntax.patterns[target].syntax then @@ -138,13 +171,13 @@ function tokenizer.tokenize(incoming_syntax, text, state) local matched = false for n, p in ipairs(current_syntax.patterns) do local pattern = (type(p.pattern) == "table") and p.pattern[1] or p.pattern - local s, e = text:find("^" .. pattern, i) + local find_results = { text:find("^" .. pattern, i) } + local start, fin = find_results[1], find_results[2] - if s then - -- matched pattern; make and add token - local t = text:sub(s, e) + if start then + -- matched pattern; make and add tokens + push_tokens(res, current_syntax, p, text, find_results) - push_token(res, current_syntax.symbols[t] or p.type, t) -- update state if this was a start|end pattern pair if type(p.pattern) == "table" then state = bit32.replace(state, n, current_level*8, 8) @@ -162,7 +195,7 @@ function tokenizer.tokenize(incoming_syntax, text, state) end -- move cursor past this token - i = e + 1 + i = fin + 1 matched = true break end diff --git a/data/plugins/language_c.lua b/data/plugins/language_c.lua index 1445d06..b311884 100644 --- a/data/plugins/language_c.lua +++ b/data/plugins/language_c.lua @@ -5,17 +5,20 @@ syntax.add { files = { "%.c$", "%.h$", "%.inl$", "%.cpp$", "%.hpp$" }, comment = "//", patterns = { - { pattern = "//.-\n", type = "comment" }, - { pattern = { "/%*", "%*/" }, type = "comment" }, - { pattern = { "#", "[^\\]\n" }, type = "comment" }, - { pattern = { '"', '"', '\\' }, type = "string" }, - { pattern = { "'", "'", '\\' }, type = "string" }, - { pattern = "-?0x%x+", type = "number" }, - { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, - { pattern = "-?%.?%d+f?", type = "number" }, - { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, - { pattern = "[%a_][%w_]*%f[(]", type = "function" }, - { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d+[%d%.eE]*f?", type = "number" }, + { pattern = "%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "struct%s()[%a_][%w_]*", type = {"keyword", "keyword2"} }, + { pattern = "union%s()[%a_][%w_]*", type = {"keyword", "keyword2"} }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "#include%s()<.->", type = {"keyword", "string"} }, + { pattern = "#[%a_][%w_]*", type = "keyword" }, }, symbols = { ["if"] = "keyword", @@ -29,8 +32,6 @@ syntax.add { ["continue"] = "keyword", ["return"] = "keyword", ["goto"] = "keyword", - ["struct"] = "keyword", - ["union"] = "keyword", ["typedef"] = "keyword", ["enum"] = "keyword", ["extern"] = "keyword", @@ -42,7 +43,6 @@ syntax.add { ["case"] = "keyword", ["default"] = "keyword", ["auto"] = "keyword", - ["const"] = "keyword", ["void"] = "keyword", ["int"] = "keyword2", ["short"] = "keyword2", From b278306fc94b421eaedf8764301042391ff1569b Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 19 May 2021 16:41:28 -0400 Subject: [PATCH 15/88] Changed deindent, so that if the deindent runs into an unusual line with a partial indent at the front, it'll still de-indent that. (#193) --- data/core/commands/doc.lua | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index ee93015..cf4430d 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -45,15 +45,22 @@ local function insert_at_start_of_selected_lines(text, skip_empty) doc():set_selection(line1, col1 + #text, line2, col2 + #text, swap) end + -local function remove_from_start_of_selected_lines(text, skip_empty) +local function remove_from_start_of_selected_lines(text, skip_empty, remove_partial) local line1, col1, line2, col2, swap = doc_multiline_selection(true) for line = line1, line2 do local line_text = doc().lines[line] - if line_text:sub(1, #text) == text - and (not skip_empty or line_text:find("%S")) - then - doc():remove(line, 1, line, #text + 1) + for i = #text, 1, -1 do + if line_text:sub(1, i) == text:sub(1, i) + and (not skip_empty or line_text:find("%S")) + then + doc():remove(line, 1, line, i + 1) + break + end + if not remove_partial then + break + end end end doc():set_selection(line1, col1 - #text, line2, col2 - #text, swap) @@ -193,7 +200,7 @@ local commands = { ["doc:unindent"] = function() local text = get_indent_string() - remove_from_start_of_selected_lines(text) + remove_from_start_of_selected_lines(text, false, true) end, ["doc:duplicate-lines"] = function() From b15914d6642a49c9f5fc0e3af6411e90dde8636e Mon Sep 17 00:00:00 2001 From: Janis-Leuenberger <50821376+Janis-Leuenberger@users.noreply.github.com> Date: Thu, 20 May 2021 13:43:56 +0200 Subject: [PATCH 16/88] Add default keymap documentation (#199) --- doc/default-keymap.md | 113 ++++++++++++++++++++++++++++++++++++++++++ doc/usage.md | 2 + 2 files changed, 115 insertions(+) create mode 100644 doc/default-keymap.md diff --git a/doc/default-keymap.md b/doc/default-keymap.md new file mode 100644 index 0000000..72bca33 --- /dev/null +++ b/doc/default-keymap.md @@ -0,0 +1,113 @@ +# Default keymap + +*Note: When using macOS `ctrl` refers to the command key.* + +| Key combination | Actions | +| --------------------- | ----------------------------------- | +| ctrl+shift+p | core:find-command | +| ctrl+p | core:find-file | +| ctrl+o | core:open-file | +| ctrl+n | core:new-doc | +| ctrl+shift+c | core:change-project-folder | +| ctrl+shift+o | core:open-project-folder | +| alt+return | core:toggle-fullscreen | +| alt+shift+j | root:split-left | +| alt+shift+l | root:split-right | +| alt+shift+i | root:split-up | +| alt+shift+k | root:split-down | +| alt+j | root:switch-to-left | +| alt+l | root:switch-to-right | +| alt+i | root:switch-to-up | +| alt+k | root:switch-to-down | +| ctrl+w | root:close | +| ctrl+tab | root:switch-to-next-tab | +| ctrl+shift+tab | root:switch-to-previous-tab | +| ctrl+pageup | root:move-tab-left | +| ctrl+pagedown | root:move-tab-right | +| alt+1 | root:switch-to-tab-1 | +| alt+2 | root:switch-to-tab-2 | +| alt+3 | root:switch-to-tab-3 | +| alt+4 | root:switch-to-tab-4 | +| alt+5 | root:switch-to-tab-5 | +| alt+6 | root:switch-to-tab-6 | +| alt+7 | root:switch-to-tab-7 | +| alt+8 | root:switch-to-tab-8 | +| alt+9 | root:switch-to-tab-9 | +| ctrl+f | find-replace:find | +| ctrl+r | find-replace:replace | +| f3 | find-replace:repeat-find | +| shift+f3 | find-replace:previous-find | +| ctrl+g | doc:go-to-line | +| ctrl+s | doc:save | +| ctrl+shift+s | doc:save-as | +| ctrl+z | doc:undo | +| ctrl+y | doc:redo | +| ctrl+x | doc:cut | +| ctrl+c | doc:copy | +| ctrl+v | doc:paste | +| ctrl+insert | doc:copy | +| shift+insert | doc:paste | +| escape | command:escape | +| escape | doc:select-none | +| escape | dialog:select-no | +| tab | command:complete | +| tab | doc:indent | +| shift+tab | doc:unindent | +| backspace | doc:backspace | +| shift+backspace | doc:backspace | +| ctrl+backspace | doc:delete-to-previous-word-start | +| ctrl+shift+backspace | doc:delete-to-previous-word-start | +| delete | doc:delete | +| shift+delete | doc:delete | +| ctrl+delete | doc:delete-to-next-word-end | +| ctrl+shift+delete | doc:delete-to-next-word-end | +| return | command:submit | +| return | doc:newline | +| return | dialog:select | +| keypad enter | command:submit | +| keypad enter | doc:newline | +| keypad enter | dialog:select | +| ctrl+return | doc:newline-below | +| ctrl+shift+return | doc:newline-above | +| ctrl+j | doc:join-lines | +| ctrl+a | doc:select-all | +| ctrl+d | find-replace:select-next | +| ctrl+d | doc:select-word | +| ctrl+l | doc:select-lines | +| ctrl+/ | doc:toggle-line-comments | +| ctrl+up | doc:move-lines-up | +| ctrl+down | doc:move-lines-down | +| ctrl+shift+d | doc:duplicate-lines | +| ctrl+shift+k | doc:delete-lines | +| left | doc:move-to-previous-char | +| left | dialog:previous-entry | +| right | doc:move-to-next-char | +| right | dialog:next-entry | +| up | command:select-previous | +| up | doc:move-to-previous-line | +| down | command:select-next | +| down | doc:move-to-next-line | +| ctrl+left | doc:move-to-previous-word-start | +| ctrl+right | doc:move-to-next-word-end | +| ctrl+[ | doc:move-to-previous-block-start | +| ctrl+] | doc:move-to-next-block-end | +| home | doc:move-to-start-of-line | +| end | doc:move-to-end-of-line | +| ctrl+home | doc:move-to-start-of-doc | +| ctrl+end | doc:move-to-end-of-doc | +| pageup | doc:move-to-previous-page | +| pagedown | doc:move-to-next-page | +| shift+left | doc:select-to-previous-char | +| shift+right | doc:select-to-next-char | +| shift+up | doc:select-to-previous-line | +| shift+down | doc:select-to-next-line | +| ctrl+shift+left | doc:select-to-previous-word-start | +| ctrl+shift+right | doc:select-to-next-word-end | +| ctrl+shift+[ | doc:select-to-previous-block-start | +| ctrl+shift+] | doc:select-to-next-block-end | +| shift+home | doc:select-to-start-of-line | +| shift+end | doc:select-to-end-of-line | +| ctrl+shift+home | doc:select-to-start-of-doc | +| ctrl+shift+end | doc:select-to-end-of-doc | +| shift+pageup | doc:select-to-previous-page | +| shift+pagedown | doc:select-to-next-page | diff --git a/doc/usage.md b/doc/usage.md index b42917d..d92ea70 100644 --- a/doc/usage.md +++ b/doc/usage.md @@ -149,6 +149,8 @@ local keymap = require "core.keymap" keymap.add { ["ctrl+q"] = "core:quit" } ``` +A list of default mappings can be viewed [here](./default-keymap.md). + ## Plugins Plugins in lite are normal lua modules and are treated as such — no From 78999cabe2212b66eb7e237698ef1dc3ec175ca8 Mon Sep 17 00:00:00 2001 From: liquidev Date: Thu, 20 May 2021 19:02:40 +0200 Subject: [PATCH 17/88] Improved Lua syntax (#201) * improved Lua syntax * added some missing cases with number literals --- data/plugins/language_lua.lua | 37 +++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/data/plugins/language_lua.lua b/data/plugins/language_lua.lua index 168ea0c..5df3d29 100644 --- a/data/plugins/language_lua.lua +++ b/data/plugins/language_lua.lua @@ -6,21 +6,28 @@ syntax.add { headers = "^#!.*[ /]lua", comment = "--", patterns = { - { pattern = { '"', '"', '\\' }, type = "string" }, - { pattern = { "'", "'", '\\' }, type = "string" }, - { pattern = { "%[%[", "%]%]" }, type = "string" }, - { pattern = { "%-%-%[%[", "%]%]"}, type = "comment" }, - { pattern = "%-%-.-\n", type = "comment" }, - { pattern = "-?0x%x+", type = "number" }, - { pattern = "-?%d+[%d%.eE]*", type = "number" }, - { pattern = "-?%.?%d+", type = "number" }, - { pattern = "<%a+>", type = "keyword2" }, - { pattern = "%.%.%.?", type = "operator" }, - { pattern = "[<>~=]=", type = "operator" }, - { pattern = "[%+%-=/%*%^%%#<>]", type = "operator" }, - { pattern = "[%a_][%w_]*%s*%f[(\"{]", type = "function" }, - { pattern = "[%a_][%w_]*", type = "symbol" }, - { pattern = "::[%a_][%w_]*::", type = "function" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "%[%[", "%]%]" }, type = "string" }, + { pattern = { "%-%-%[%[", "%]%]"}, type = "comment" }, + { pattern = "%-%-.-\n", type = "comment" }, + { pattern = "0x%x+%.%x*[pP][-+]?%d+", type = "number" }, + { pattern = "0x%x+%.%x*", type = "number" }, + { pattern = "0x%.%x+[pP][-+]?%d+", type = "number" }, + { pattern = "0x%.%x+", type = "number" }, + { pattern = "0x%x+[pP][-+]?%d+", type = "number" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d%.%d*[eE][-+]?%d+", type = "number" }, + { pattern = "%d%.%d*", type = "number" }, + { pattern = "%.?%d*[eE][-+]?%d+", type = "number" }, + { pattern = "%.?%d+", type = "number" }, + { pattern = "<%a+>", type = "keyword2" }, + { pattern = "%.%.%.?", type = "operator" }, + { pattern = "[<>~=]=", type = "operator" }, + { pattern = "[%+%-=/%*%^%%#<>]", type = "operator" }, + { pattern = "[%a_][%w_]*()%s*%f[(\"'{]", type = {"function", "normal"} }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "::[%a_][%w_]*::", type = "function" }, }, symbols = { ["if"] = "keyword", From 949692860e777ff6be0ddc013806f20302e7ffea Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 20 May 2021 15:58:27 -0400 Subject: [PATCH 18/88] Tokenizer cleanup (#198) * Cleaned up tokenizer to make subsyntax operations more clear. * Explanatory comments. * Made it so push_subsyntax could be safely called elsewhere. * Unified terminology. * Minor bug fix. * State is an incredibly vaguely named variable. Changed convention to represent what it actually is. * Also changed function name. * Fixed bug. --- data/core/tokenizer.lua | 99 +++++++++++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 28 deletions(-) diff --git a/data/core/tokenizer.lua b/data/core/tokenizer.lua index 6d51928..83e0e66 100644 --- a/data/core/tokenizer.lua +++ b/data/core/tokenizer.lua @@ -74,9 +74,20 @@ end -- State is a 32-bit number that is four separate bytes, illustrating how many -- differnet delimiters we have open, and which subsyntaxes we have active. -- At most, there are 3 subsyntaxes active at the same time. Beyond that, --- does not support further highlighting. +-- does not support further highlighting. + +-- You can think of it as a maximum 4 integer (0-255) stack. It always has +-- 1 integer in it. Calling `push_subsyntax` increases the stack depth. Calling +-- `pop_subsyntax` decreases it. The integers represent the index of a pattern +-- that we're following in the syntax. The top of the stack can be any valid +-- pattern index, any integer lower in the stack must represent a pattern that +-- specifies a subsyntax. + +-- If you do not have subsyntaxes in your syntax, the three most +-- singificant numbers will always be 0, the stack will only ever be length 1 +-- and the state variable will only ever range from 0-255. local function retrieve_syntax_state(incoming_syntax, state) - local current_syntax, subsyntax_info, current_state, current_level = + local current_syntax, subsyntax_info, current_pattern_idx, current_level = incoming_syntax, nil, state, 0 if state > 0 and (state > 255 or current_syntax.patterns[state].syntax) then -- If we have higher bits, then decode them one at a time, and find which @@ -89,10 +100,10 @@ local function retrieve_syntax_state(incoming_syntax, state) subsyntax_info = current_syntax.patterns[target] current_syntax = type(subsyntax_info.syntax) == "table" and subsyntax_info.syntax or syntax.get(subsyntax_info.syntax) - current_state = 0 + current_pattern_idx = 0 current_level = i+1 else - current_state = target + current_pattern_idx = target break end else @@ -100,7 +111,7 @@ local function retrieve_syntax_state(incoming_syntax, state) end end end - return current_syntax, subsyntax_info, current_state, current_level + return current_syntax, subsyntax_info, current_pattern_idx, current_level end function tokenizer.tokenize(incoming_syntax, text, state) @@ -112,17 +123,51 @@ function tokenizer.tokenize(incoming_syntax, text, state) end state = state or 0 - local current_syntax, subsyntax_info, current_state, current_level = + -- incoming_syntax : the parent syntax of the file. + -- state : a 32-bit number representing syntax state (see above) + + -- current_syntax : the syntax we're currently in. + -- subsyntax_info : info about the delimiters of this subsyntax. + -- current_pattern_idx: the index of the pattern we're on for this syntax. + -- current_level : how many subsyntaxes deep we are. + local current_syntax, subsyntax_info, current_pattern_idx, current_level = retrieve_syntax_state(incoming_syntax, state) + + -- Should be used to set the state variable. Don't modify it directly. + local function set_subsyntax_pattern_idx(pattern_idx) + current_pattern_idx = pattern_idx + state = bit32.replace(state, pattern_idx, current_level*8, 8) + end + + + local function push_subsyntax(entering_syntax, pattern_idx) + set_subsyntax_pattern_idx(pattern_idx) + current_level = current_level + 1 + subsyntax_info = entering_syntax + current_syntax = type(entering_syntax.syntax) == "table" and + entering_syntax.syntax or syntax.get(entering_syntax.syntax) + current_pattern_idx = 0 + end + + local function pop_subsyntax() + set_subsyntax_pattern_idx(0) + current_level = current_level - 1 + set_subsyntax_pattern_idx(0) + current_syntax, subsyntax_info, current_pattern_idx, current_level = + retrieve_syntax_state(incoming_syntax, state) + + end + while i <= #text do -- continue trying to match the end pattern of a pair if we have a state set - if current_state > 0 then - local p = current_syntax.patterns[current_state] + if current_pattern_idx > 0 then + local p = current_syntax.patterns[current_pattern_idx] local s, e = find_non_escaped(text, p.pattern[2], i, p.pattern[3]) local cont = true -- If we're in subsyntax mode, always check to see if we end our syntax - -- first. + -- first, before the found delimeter, as ending the subsyntax takes + -- precedence over ending the delimiter in the subsyntax. if subsyntax_info then local ss, se = find_non_escaped( text, @@ -130,17 +175,22 @@ function tokenizer.tokenize(incoming_syntax, text, state) i, subsyntax_info.pattern[3] ) + -- If we find that we end the subsyntax before the + -- delimiter, push the token, and signal we shouldn't + -- treat the bit after as a token to be normally parsed + -- (as it's the syntax delimiter). if ss and (s == nil or ss < s) then push_token(res, p.type, text:sub(i, ss - 1)) i = ss cont = false end end + -- If we don't have any concerns about syntax delimiters, + -- continue on as normal. if cont then if s then push_token(res, p.type, text:sub(i, e)) - current_state = 0 - state = bit32.replace(state, 0, current_level*8, 8) + set_subsyntax_pattern_idx(0) i = e + 1 else push_token(res, p.type, text:sub(i)) @@ -148,7 +198,9 @@ function tokenizer.tokenize(incoming_syntax, text, state) end end end - -- Check for end of syntax. + -- General end of syntax check. Applies in the case where + -- we're ending early in the middle of a delimiter, or + -- just normally, upon finding a token. if subsyntax_info then local s, e = find_non_escaped( text, @@ -158,11 +210,8 @@ function tokenizer.tokenize(incoming_syntax, text, state) ) if s then push_token(res, subsyntax_info.type, text:sub(i, e)) - current_level = current_level - 1 - -- Zero out the state above us, as well as our new current state. - state = bit32.replace(state, 0, current_level*8, 16) - current_syntax, subsyntax_info, current_state, current_level = - retrieve_syntax_state(incoming_syntax, state) + -- On finding unescaped delimiter, pop it. + pop_subsyntax() i = e + 1 end end @@ -180,20 +229,14 @@ function tokenizer.tokenize(incoming_syntax, text, state) -- update state if this was a start|end pattern pair if type(p.pattern) == "table" then - state = bit32.replace(state, n, current_level*8, 8) - -- If we've found a new subsyntax, bump our level, and set the - -- appropriate variables. + -- If we have a subsyntax, push that onto the subsyntax stack. if p.syntax then - current_level = current_level + 1 - subsyntax_info = p - current_syntax = type(p.syntax) == "table" and - p.syntax or syntax.get(p.syntax) - current_state = 0 - else - current_state = n + push_subsyntax(p, n) + else + set_subsyntax_pattern_idx(n) end end - + -- move cursor past this token i = fin + 1 matched = true From 18fe6576d864a58c22d39df3e861f36dfc97912a Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Fri, 21 May 2021 16:31:31 -0400 Subject: [PATCH 19/88] Fixed meson build on Mac. --- meson.build | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meson.build b/meson.build index 5b9576d..888ea9b 100644 --- a/meson.build +++ b/meson.build @@ -33,6 +33,9 @@ lite_link_args = [] if cc.get_id() == 'gcc' and get_option('buildtype') == 'release' lite_link_args += ['-static-libgcc', '-static-libstdc++'] endif +if host_machine.system() == 'darwin' + lite_link_args += ['-framework', 'CoreSerivces', '-framework', 'Foundation'] +endif lite_rc = [] if host_machine.system() == 'windows' From 3a5f04fae54102aee8aca1c70e6695f68c0369c5 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Fri, 21 May 2021 16:32:26 -0400 Subject: [PATCH 20/88] Spelling mistkae. --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 888ea9b..414c761 100644 --- a/meson.build +++ b/meson.build @@ -34,7 +34,7 @@ if cc.get_id() == 'gcc' and get_option('buildtype') == 'release' lite_link_args += ['-static-libgcc', '-static-libstdc++'] endif if host_machine.system() == 'darwin' - lite_link_args += ['-framework', 'CoreSerivces', '-framework', 'Foundation'] + lite_link_args += ['-framework', 'CoreServices', '-framework', 'Foundation'] endif lite_rc = [] From aa0b2bb5fcb9bc7e52049f380172d6d3c2baf5ec Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Fri, 21 May 2021 23:22:46 +0200 Subject: [PATCH 21/88] Fix crash problem with rencache and font access In some cases rencache was using a FontDesc pointer that was actually freed by Lua giving segfaults errors. In addition, some FontDesc object were not freed in some cases if the rencache_end_frame was not called when performing the "restart" command. The invalid access problem can happen because rencache keep some pointers to FontDesc object but these are Lua userdata that Lua can dispose of. This situation is prone to hard errors and we should avoid to keep pointers to objects managed by Lua. To this purpose we use luaL_ref/unref to bind the FontDesc into the Lua's registry while rencache need them. We still keeps pointer to FontDesc object but using luaL_ref we are assured they will not be disposed by Lua. Since we are using luaL_ref/unref to inform the GC about when the objects are in use we can now finalize the objects directly when Lua collects them. Previously the GC metamethods was issuing a FREE command to rencache and the font was actually freed only from the rencache_end_frame function. --- src/api/renderer.c | 6 ++-- src/api/renderer_font.c | 5 ++- src/main.c | 5 --- src/rencache.c | 72 +++++++++++++++++++++++++---------------- src/rencache.h | 9 +++--- 5 files changed, 55 insertions(+), 42 deletions(-) diff --git a/src/api/renderer.c b/src/api/renderer.c index c6883a9..8dc13ad 100644 --- a/src/api/renderer.c +++ b/src/api/renderer.c @@ -38,13 +38,13 @@ static int f_get_size(lua_State *L) { static int f_begin_frame(lua_State *L) { - rencache_begin_frame(); + rencache_begin_frame(L); return 0; } static int f_end_frame(lua_State *L) { - rencache_end_frame(); + rencache_end_frame(L); return 0; } @@ -90,7 +90,7 @@ static int draw_text_subpixel_impl(lua_State *L, bool draw_subpixel) { replace_color = (RenColor) {0}; } - x_subpixel = rencache_draw_text(font_desc, text, x_subpixel, y, color, draw_subpixel, rep_table, replace_color); + x_subpixel = rencache_draw_text(L, font_desc, 1, text, x_subpixel, y, color, draw_subpixel, rep_table, replace_color); lua_pushnumber(L, x_subpixel); return 1; } diff --git a/src/api/renderer_font.c b/src/api/renderer_font.c index 3d85597..47ea97a 100644 --- a/src/api/renderer_font.c +++ b/src/api/renderer_font.c @@ -1,3 +1,6 @@ +#include +#include + #include "api.h" #include "fontdesc.h" #include "renderer.h" @@ -62,7 +65,7 @@ static int f_set_tab_size(lua_State *L) { static int f_gc(lua_State *L) { FontDesc *self = luaL_checkudata(L, 1, API_TYPE_FONT); - rencache_free_font(self); + font_desc_free(self); return 0; } diff --git a/src/main.c b/src/main.c index ca332dd..b0eb50d 100644 --- a/src/main.c +++ b/src/main.c @@ -159,11 +159,6 @@ init_lua: enable_momentum_scroll(); #endif - /* We need to clear the rencache commands because we may restarting the application - and it could be non-empty. It is important to clear the command buffer because it - stores pointers to font_desc objects and these are Lua managed. */ - rencache_clear(); - const char *init_lite_code = \ "local core\n" "xpcall(function()\n" diff --git a/src/rencache.c b/src/rencache.c index 1f3e42c..31165e9 100644 --- a/src/rencache.c +++ b/src/rencache.c @@ -1,6 +1,8 @@ #include #include #include + +#include #include "rencache.h" /* a cache over the software renderer -- all drawing operations are stored as @@ -14,7 +16,7 @@ #define COMMAND_BUF_SIZE (1024 * 512) #define COMMAND_BARE_SIZE offsetof(Command, text) -enum { FREE_FONT, SET_CLIP, DRAW_TEXT, DRAW_RECT, DRAW_TEXT_SUBPIXEL }; +enum { SET_CLIP, DRAW_TEXT, DRAW_RECT, DRAW_TEXT_SUBPIXEL }; typedef struct { int8_t type; @@ -30,6 +32,15 @@ typedef struct { char text[0]; } Command; +#define FONT_REFS_MAX 12 +struct FontRef { + FontDesc *font_desc; + int index; +}; +typedef struct FontRef FontRef; +FontRef font_refs[FONT_REFS_MAX]; +int font_refs_len = 0; + static unsigned cells_buf1[CELLS_X * CELLS_Y]; static unsigned cells_buf2[CELLS_X * CELLS_Y]; @@ -45,6 +56,33 @@ static bool show_debug; static inline int min(int a, int b) { return a < b ? a : b; } static inline int max(int a, int b) { return a > b ? a : b; } +static int font_refs_add(lua_State *L, FontDesc *font_desc, int index) { + for (int i = 0; i < font_refs_len; i++) { + if (font_refs[i].font_desc == font_desc) { + return font_refs[i].index; + } + } + + if (font_refs_len >= FONT_REFS_MAX) { + fprintf(stderr, "Warning: (" __FILE__ "): exhausted font reference buffer\n"); + return LUA_NOREF; + } + + lua_pushvalue(L, index); + int ref = luaL_ref(L, LUA_REGISTRYINDEX); + + font_refs[font_refs_len++] = (FontRef) { font_desc, ref }; + return ref; +} + + +static void font_refs_clear(lua_State *L) { + for (int i = 0; i < font_refs_len; i++) { + luaL_unref(L, LUA_REGISTRYINDEX, font_refs[i].index); + } + font_refs_len = 0; +} + /* 32bit fnv-1a hash */ #define HASH_INITIAL 2166136261 @@ -115,12 +153,6 @@ void rencache_show_debug(bool enable) { } -void rencache_free_font(FontDesc *font_desc) { - Command *cmd = push_command(FREE_FONT, COMMAND_BARE_SIZE); - if (cmd) { cmd->font_desc = font_desc; } -} - - void rencache_set_clip_rect(RenRect rect) { Command *cmd = push_command(SET_CLIP, COMMAND_BARE_SIZE); if (cmd) { cmd->rect = intersect_rects(rect, screen_rect); } @@ -136,7 +168,7 @@ void rencache_draw_rect(RenRect rect, RenColor color) { } } -int rencache_draw_text(FontDesc *font_desc, +int rencache_draw_text(lua_State *L, FontDesc *font_desc, int font_index, const char *text, int x, int y, RenColor color, bool draw_subpixel, CPReplaceTable *replacements, RenColor replace_color) { @@ -148,7 +180,7 @@ int rencache_draw_text(FontDesc *font_desc, rect.width = ren_font_subpixel_round(w_subpixel, subpixel_scale, 0); rect.height = ren_get_font_height(font_desc); - if (rects_overlap(screen_rect, rect)) { + if (rects_overlap(screen_rect, rect) && font_refs_add(L, font_desc, font_index) >= 0) { int sz = strlen(text) + 1; Command *cmd = push_command(draw_subpixel ? DRAW_TEXT_SUBPIXEL : DRAW_TEXT, COMMAND_BARE_SIZE + sz); if (cmd) { @@ -173,7 +205,7 @@ void rencache_invalidate(void) { } -void rencache_begin_frame(void) { +void rencache_begin_frame(lua_State *L) { /* reset all cells if the screen width/height has changed */ int w, h; ren_get_size(&w, &h); @@ -182,6 +214,7 @@ void rencache_begin_frame(void) { screen_rect.height = h; rencache_invalidate(); } + font_refs_clear(L); } @@ -214,7 +247,7 @@ static void push_rect(RenRect r, int *count) { } -void rencache_end_frame(void) { +void rencache_end_frame(lua_State *L) { /* update cells from commands */ Command *cmd = NULL; RenRect cr = screen_rect; @@ -253,7 +286,6 @@ void rencache_end_frame(void) { } /* redraw updated regions */ - bool has_free_commands = false; for (int i = 0; i < rect_count; i++) { /* draw */ RenRect r = rect_buf[i]; @@ -262,9 +294,6 @@ void rencache_end_frame(void) { cmd = NULL; while (next_command(&cmd)) { switch (cmd->type) { - case FREE_FONT: - has_free_commands = true; - break; case SET_CLIP: ren_set_clip_rect(intersect_rects(cmd->rect, r)); break; @@ -296,16 +325,6 @@ void rencache_end_frame(void) { ren_update_rects(rect_buf, rect_count); } - /* free fonts */ - if (has_free_commands) { - cmd = NULL; - while (next_command(&cmd)) { - if (cmd->type == FREE_FONT) { - font_desc_free(cmd->font_desc); - } - } - } - /* swap cell buffer and reset */ unsigned *tmp = cells; cells = cells_prev; @@ -313,6 +332,3 @@ void rencache_end_frame(void) { command_buf_idx = 0; } -void rencache_clear() { - command_buf_idx = 0; -} diff --git a/src/rencache.h b/src/rencache.h index 987b685..1d0f45a 100644 --- a/src/rencache.h +++ b/src/rencache.h @@ -2,17 +2,16 @@ #define RENCACHE_H #include +#include #include "renderer.h" void rencache_show_debug(bool enable); -void rencache_free_font(FontDesc *font_desc); void rencache_set_clip_rect(RenRect rect); void rencache_draw_rect(RenRect rect, RenColor color); -int rencache_draw_text(FontDesc *font_desc, const char *text, int x, int y, RenColor color, +int rencache_draw_text(lua_State *L, FontDesc *font_desc, int font_index, const char *text, int x, int y, RenColor color, bool draw_subpixel, CPReplaceTable *replacements, RenColor replace_color); void rencache_invalidate(void); -void rencache_begin_frame(void); -void rencache_end_frame(void); -void rencache_clear(); +void rencache_begin_frame(lua_State *L); +void rencache_end_frame(lua_State *L); #endif From abc69a7a195b4d8e856d93ff85eba51943f9e020 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Sat, 22 May 2021 14:55:58 +0200 Subject: [PATCH 22/88] Prepare release 1.16.10 --- changelog.md | 11 +++++++++++ data/core/start.lua | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 62ccdf2..f484fcb 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,17 @@ Lite XL is following closely [rxi/lite](https://github.com/rxi/lite) but with so This files document the changes done in Lite XL for each release. +### 1.16.10 + +Improved syntax highlight system thanks to @liquidev and @adamharrison. +Thanks to the new system we provide more a accurate syntax highlighting for Lua, C and C++. +Other syntax improvements contributed by @vincens2005. + +Fixed bug with fonts and rencache module. +Under very specific situations the application was crashing due to invalid memory access. + +Add documentation for keymap binding, thanks to @Janis-Leuenberger. + ### 1.16.9 Fix a bug related to nested panes resizing. diff --git a/data/core/start.lua b/data/core/start.lua index 7d4ad9a..17e12bd 100644 --- a/data/core/start.lua +++ b/data/core/start.lua @@ -1,6 +1,6 @@ -- this file is used by lite-xl to setup the Lua environment -- when starting -VERSION = "1.16.9" +VERSION = "1.16.10" MOD_VERSION = "1" SCALE = tonumber(os.getenv("LITE_SCALE")) or SCALE From 04c7a49d004f45746256ffc2796ebbe9fe974913 Mon Sep 17 00:00:00 2001 From: "Alexandr \"Nil\" Shchelov" Date: Sat, 22 May 2021 14:57:18 +0200 Subject: [PATCH 23/88] Link to release page for MacOS section of building (#207) This should help those who aren't familiar w/ GitHub's UI and who missed the "Get Lite XL" link at the top of the README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca9558f..a5e0bad 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ is meant for people using a unix-like shell and the command line. Please note that there aren't any hard-coded directories in the executable, so that the package can be extracted and used in any directory. -Mac OS X is fully supported and a notarized app disk image is provided in the release page. +Mac OS X is fully supported and a notarized app disk image is provided in the [release page](https://github.com/franko/lite-xl/releases). In addition the application can be compiled using the generic instructions given above. ## Contributing From a254d393db6b6abf60869046b82ca063db748d40 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 22 May 2021 09:01:19 -0400 Subject: [PATCH 24/88] Indent Enhancements (#202) * Indent enhancements. * Fixed to match style guidelines. * Added in useful explanatory comment. * Changed which selection we're using, as we don't want this kind of wrapping to happen. * Fixed bug involving lines full of whitespace. * Removed unecessary commit. * Actually reverted function, so that we don't screw up commenting. * Fixed hard tab issue. --- data/core/commands/doc.lua | 77 ++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index cf4430d..6acc4e8 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -45,22 +45,15 @@ local function insert_at_start_of_selected_lines(text, skip_empty) doc():set_selection(line1, col1 + #text, line2, col2 + #text, swap) end - -local function remove_from_start_of_selected_lines(text, skip_empty, remove_partial) +local function remove_from_start_of_selected_lines(text, skip_empty) local line1, col1, line2, col2, swap = doc_multiline_selection(true) for line = line1, line2 do local line_text = doc().lines[line] - for i = #text, 1, -1 do - if line_text:sub(1, i) == text:sub(1, i) - and (not skip_empty or line_text:find("%S")) - then - doc():remove(line, 1, line, i + 1) - break - end - if not remove_partial then - break - end + if line_text:sub(1, #text) == text + and (not skip_empty or line_text:find("%S")) + then + doc():remove(line, 1, line, #text + 1) end end doc():set_selection(line1, col1 - #text, line2, col2 - #text, swap) @@ -81,6 +74,56 @@ local function save(filename) core.log("Saved \"%s\"", saved_filename) end +-- returns the size of the original indent, and the indent +-- in your config format, rounded either up or down +local function get_line_indent(line, rnd_up) + local _, e = line:find("^[ \t]+") + local soft_tab = string.rep(" ", config.indent_size) + if config.tab_type == "hard" then + local indent = e and line:sub(1, e):gsub(soft_tab, "\t") or "" + return e, indent:gsub(" +", rnd_up and "\t" or "") + else + local indent = e and line:sub(1, e):gsub("\t", soft_tab) or "" + local number = #indent / #soft_tab + return e, indent:sub(1, + (rnd_up and math.ceil(number) or math.floor(number))*#soft_tab) + end +end + +-- un/indents text; behaviour varies based on selection and un/indent. +-- * if there's a selection, it will stay static around the +-- text for both indenting and unindenting. +-- * if you are in the beginning whitespace of a line, and are indenting, the +-- cursor will insert the exactly appropriate amount of spaces, and jump the +-- cursor to the beginning of first non whitespace characters +-- * if you are not in the beginning whitespace of a line, and you indent, it +-- inserts the appropriate whitespace, as if you typed them normally. +-- * if you are unindenting, the cursor will jump to the start of the line, +-- and remove the appropriate amount of spaces (or a tab). +local function indent_text(unindent) + local text = get_indent_string() + local line1, col1, line2, col2, swap = doc():get_selection(true) + local _, se = doc().lines[line1]:find("^[ \t]+") + local in_beginning_whitespace = col1 == 1 or (se and col1 <= se + 1) + if unindent or doc():has_selection() or in_beginning_whitespace then + local l1d, l2d = #doc().lines[line1], #doc().lines[line2] + for line = line1, line2 do + local e, rnded = get_line_indent(doc().lines[line], unindent) + doc():remove(line, 1, line, (e or 0) + 1) + doc():insert(line, 1, + unindent and rnded:sub(1, #rnded - #text) or rnded .. text) + end + l1d, l2d = #doc().lines[line1] - l1d, #doc().lines[line2] - l2d + if (unindent or in_beginning_whitespace) and not doc():has_selection() then + local start_cursor = (se and se + 1 or 1) + l1d or #(doc().lines[line1]) + doc():set_selection(line1, start_cursor, line2, start_cursor, swap) + else + doc():set_selection(line1, col1 + l1d, line2, col2 + l2d, swap) + end + else + doc():text_input(text) + end +end local commands = { ["doc:undo"] = function() @@ -190,17 +233,11 @@ local commands = { end, ["doc:indent"] = function() - local text = get_indent_string() - if doc():has_selection() then - insert_at_start_of_selected_lines(text) - else - doc():text_input(text) - end + indent_text() end, ["doc:unindent"] = function() - local text = get_indent_string() - remove_from_start_of_selected_lines(text, false, true) + indent_text(true) end, ["doc:duplicate-lines"] = function() From 217360ed3153879ca54d61c2cb61d6fee40d75b0 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 20 May 2021 22:51:04 +0200 Subject: [PATCH 25/88] Switch to FiraSans and JetBrainsMono fonts --- LICENSE | 2 +- changelog.md | 6 ++ data/core/init.lua | 4 +- data/core/style.lua | 6 +- data/fonts/FiraSans-Medium.ttf | Bin 0 -> 296032 bytes data/fonts/FiraSans-Regular.ttf | Bin 0 -> 295724 bytes data/fonts/JetBrainsMono-Regular.ttf | Bin 0 -> 112172 bytes data/fonts/font.ttf | Bin 171272 -> 0 bytes data/fonts/monospace.ttf | Bin 109212 -> 0 bytes data/user/init.lua | 50 ----------- doc/contributors.md | 43 +++++++++ doc/licenses.md | 130 +++++++++++++++++++++++++++ meson.build | 6 ++ 13 files changed, 191 insertions(+), 56 deletions(-) create mode 100644 data/fonts/FiraSans-Medium.ttf create mode 100644 data/fonts/FiraSans-Regular.ttf create mode 100644 data/fonts/JetBrainsMono-Regular.ttf delete mode 100644 data/fonts/font.ttf delete mode 100644 data/fonts/monospace.ttf delete mode 100644 data/user/init.lua create mode 100644 doc/contributors.md create mode 100644 doc/licenses.md diff --git a/LICENSE b/LICENSE index 39ddd05..20ca7d6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2020 rxi +Copyright (c) 2020-2021 Francesco Abbate Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/changelog.md b/changelog.md index f484fcb..1a273ce 100644 --- a/changelog.md +++ b/changelog.md @@ -8,11 +8,17 @@ Improved syntax highlight system thanks to @liquidev and @adamharrison. Thanks to the new system we provide more a accurate syntax highlighting for Lua, C and C++. Other syntax improvements contributed by @vincens2005. +Move to JetBrains Mono and Fira Sans fonts for code and UI respectively. +Thet are provided under the SIL Open Font License, Version 1.1. +See `doc/licenses.md` for license details. + Fixed bug with fonts and rencache module. Under very specific situations the application was crashing due to invalid memory access. Add documentation for keymap binding, thanks to @Janis-Leuenberger. +Added a contibutors page in `doc/contributors.md`. + ### 1.16.9 Fix a bug related to nested panes resizing. diff --git a/data/core/init.lua b/data/core/init.lua index 8d4d84c..e2da780 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -274,8 +274,8 @@ local style = require "core.style" ------------------------------- Fonts ---------------------------------------- -- customize fonts: --- style.font = renderer.font.load(DATADIR .. "/fonts/font.ttf", 13 * SCALE) --- style.code_font = renderer.font.load(DATADIR .. "/fonts/monospace.ttf", 12 * SCALE) +-- style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Medium.ttf", 13 * SCALE) +-- style.code_font = renderer.font.load(DATADIR .. "/fonts/JetBrainsMono-Regular.ttf", 13 * SCALE) -- -- font names used by lite: -- style.font : user interface diff --git a/data/core/style.lua b/data/core/style.lua index ab72bde..bce8c07 100644 --- a/data/core/style.lua +++ b/data/core/style.lua @@ -21,11 +21,11 @@ style.tab_width = common.round(170 * SCALE) -- -- On High DPI monitor or non RGB monitor you may consider using antialiasing grayscale instead. -- The antialiasing grayscale with full hinting is interesting for crisp font rendering. -style.font = renderer.font.load(DATADIR .. "/fonts/font.ttf", 13 * SCALE) -style.big_font = renderer.font.load(DATADIR .. "/fonts/font.ttf", 34 * SCALE) +style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Medium.ttf", 13 * SCALE) +style.big_font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Medium.ttf", 40 * SCALE) style.icon_font = renderer.font.load(DATADIR .. "/fonts/icons.ttf", 14 * SCALE, {antialiasing="grayscale", hinting="full"}) style.icon_big_font = renderer.font.load(DATADIR .. "/fonts/icons.ttf", 20 * SCALE, {antialiasing="grayscale", hinting="full"}) -style.code_font = renderer.font.load(DATADIR .. "/fonts/monospace.ttf", 12 * SCALE) +style.code_font = renderer.font.load(DATADIR .. "/fonts/JetBrainsMono-Regular.ttf", 13 * SCALE) style.background = { common.color "#2e2e32" } style.background2 = { common.color "#252529" } diff --git a/data/fonts/FiraSans-Medium.ttf b/data/fonts/FiraSans-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fb9c257cf0ad60841b37c03c587134ca727f84b6 GIT binary patch literal 296032 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%0D7AQKcs&bTIK2{eL*o`nVCHzh%eb%@+k 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 literal 0 HcmV?d00001 diff --git a/data/fonts/FiraSans-Regular.ttf b/data/fonts/FiraSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6b2886491b5c274c39dfb12e99c8b6b935618f64 GIT binary patch literal 295724 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%0D7AQKcs&bTIK2{eL*o`nVCHzh%eb%@+k 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 From 0a55b246b50571824589e7c2fc12a0753267df44 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 27 May 2021 16:17:19 +0200 Subject: [PATCH 40/88] Use thread in detectindent plugin --- data/plugins/detectindent.lua | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/data/plugins/detectindent.lua b/data/plugins/detectindent.lua index 63fe8a5..814eaaa 100644 --- a/data/plugins/detectindent.lua +++ b/data/plugins/detectindent.lua @@ -99,29 +99,11 @@ local function detect_indent_stat(doc) end -local doc_on_text_change = Doc.on_text_change -local adjust_threshold = 4 - -local current_on_text_change = nil - local function update_cache(doc) local type, size, score = detect_indent_stat(doc) - cache[doc] = { type = type, size = size, confirmed = (score >= adjust_threshold) } + local score_threshold = 4 + cache[doc] = { type = type, size = size, confirmed = (score >= score_threshold) } doc.indent_info = cache[doc] - if score < adjust_threshold and doc_on_text_change then - current_on_text_change = function(self, ...) - update_cache(self) - end - elseif score >= adjust_threshold and doc_on_text_change then - current_on_text_change = nil - end -end - -function Doc.on_text_change(...) - if current_on_text_change then - current_on_text_change(...) - end - doc_on_text_change(...) end @@ -129,6 +111,14 @@ local new = Doc.new function Doc:new(...) new(self, ...) update_cache(self) + if not cache[self].confirmed then + core.add_thread(function () + while not cache[self].confirmed do + update_cache(self) + coroutine.yield(1) + end + end, self) + end end local clean = Doc.clean From ee25e3c5f4178bca563cc5bd6718ea3fd53870e1 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 27 May 2021 16:17:45 +0200 Subject: [PATCH 41/88] Reduce number of used lines in detectindent --- data/plugins/detectindent.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/plugins/detectindent.lua b/data/plugins/detectindent.lua index 814eaaa..9e7ed93 100644 --- a/data/plugins/detectindent.lua +++ b/data/plugins/detectindent.lua @@ -76,7 +76,7 @@ local function get_non_empty_lines(syntax, lines) end -local auto_detect_max_lines = 200 +local auto_detect_max_lines = 100 local function detect_indent_stat(doc) local stat = {} From 34e38dd04a0fc9ef0b24eec3a1d1843ec5b2224b Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 27 May 2021 18:53:31 +0200 Subject: [PATCH 42/88] Fix missing check for filename when saving a file Close #225 --- data/core/commands/doc.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index 9b5b086..daf71ba 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -341,9 +341,10 @@ local commands = { end, ["doc:save-as"] = function() + local last_doc = core.last_active_view and core.last_active_view.doc if doc().filename then core.command_view:set_text(doc().filename) - elseif core.last_active_view and core.last_active_view.doc then + elseif last_doc and last_doc.filename then local dirname, filename = core.last_active_view.doc.abs_filename:match("(.*)[/\\](.+)$") core.command_view:set_text(core.normalize_to_project_dir(dirname) .. PATHSEP) end From 4ffb5e36724b97b43abcdc182cb10256bc485c71 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 28 May 2021 02:17:49 -0400 Subject: [PATCH 43/88] Fixed commenting and uncommenting. (#224) --- data/core/commands/doc.lua | 51 ++++++++++++++------------------------ 1 file changed, 18 insertions(+), 33 deletions(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index daf71ba..ffaf029 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -33,33 +33,6 @@ local function doc_multiline_selection(sort) return line1, col1, line2, col2, swap end - -local function insert_at_start_of_selected_lines(text, skip_empty) - local line1, col1, line2, col2, swap = doc_multiline_selection(true) - for line = line1, line2 do - local line_text = doc().lines[line] - if (not skip_empty or line_text:find("%S")) then - doc():insert(line, 1, text) - end - end - doc():set_selection(line1, col1 + #text, line2, col2 + #text, swap) -end - - -local function remove_from_start_of_selected_lines(text, skip_empty) - local line1, col1, line2, col2, swap = doc_multiline_selection(true) - for line = line1, line2 do - local line_text = doc().lines[line] - if line_text:sub(1, #text) == text - and (not skip_empty or line_text:find("%S")) - then - doc():remove(line, 1, line, #text + 1) - end - end - doc():set_selection(line1, col1 - #text, line2, col2 - #text, swap) -end - - local function append_line_if_last_line(line) if line >= #doc().lines then doc():insert(line, math.huge, "\n") @@ -281,19 +254,31 @@ local commands = { ["doc:toggle-line-comments"] = function() local comment = doc().syntax.comment if not comment then return end + local indentation = get_indent_string() local comment_text = comment .. " " - local line1, _, line2 = doc():get_selection(true) + local line1, _, line2 = doc_multiline_selection(true) local uncomment = true + local start_offset = math.huge for line = line1, line2 do local text = doc().lines[line] - if text:find("%S") and text:find(comment_text, 1, true) ~= 1 then + local s = text:find("%S") + local cs, ce = text:find(comment_text, s, true) + if s and cs ~= s then uncomment = false + start_offset = math.min(start_offset, s) end end - if uncomment then - remove_from_start_of_selected_lines(comment_text, true) - else - insert_at_start_of_selected_lines(comment_text, true) + for line = line1, line2 do + local text = doc().lines[line] + local s = text:find("%S") + if uncomment then + local cs, ce = text:find(comment_text, s, true) + if ce then + doc():remove(line, cs, line, ce + 1) + end + elseif s then + doc():insert(line, start_offset, comment_text) + end end end, From 818a7abb0a6a1d231d6b107ce810e4d8c287f4d2 Mon Sep 17 00:00:00 2001 From: redtide Date: Thu, 27 May 2021 22:01:25 +0200 Subject: [PATCH 44/88] Avoid to restore window size when maximized (#226) --- data/core/init.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/data/core/init.lua b/data/core/init.lua index 2cb3a87..466a487 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -17,7 +17,7 @@ local core = {} local function load_session() local ok, t = pcall(dofile, USERDIR .. "/session.lua") if ok then - return t.recents, t.window + return t.recents, t.window, t.window_mode end return {} end @@ -28,6 +28,7 @@ local function save_session() if fp then fp:write("return {recents=", common.serialize(core.recent_projects), ", window=", common.serialize(table.pack(system.get_window_size())), + ", window_mode=", common.serialize(system.get_window_mode()), "}\n") fp:close() end @@ -428,9 +429,11 @@ function core.init() end do - local recent_projects, window_position = load_session() - if window_position then + local recent_projects, window_position, window_mode = load_session() + if window_mode == "normal" then system.set_window_size(table.unpack(window_position)) + else + system.set_window_mode("maximized") end core.recent_projects = recent_projects end From f7e3e41ab167ef9a0217e1bdcfcb8cd72109c610 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Fri, 28 May 2021 15:35:46 +0200 Subject: [PATCH 45/88] Fix problem with mouse cursor over dividers --- data/core/rootview.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index fff7a6e..8b3a91a 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -272,7 +272,7 @@ end function Node:get_scroll_button_index(px, py) - if #self.views == 1 then return 0 end + if #self.views == 1 then return end for i = 1, 2 do local x, y, w, h = self:get_scroll_button_rect(i) if px >= x and px < x + w and py >= y and py < y + h then From 6d044224c1ad8f629a7baaa40a912f58d30c9896 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Fri, 28 May 2021 16:35:25 +0200 Subject: [PATCH 46/88] Starts maximized only if it was in previous session --- data/core/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/core/init.lua b/data/core/init.lua index 466a487..a7ae2a2 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -432,7 +432,7 @@ function core.init() local recent_projects, window_position, window_mode = load_session() if window_mode == "normal" then system.set_window_size(table.unpack(window_position)) - else + elseif window_mode == "maximized" then system.set_window_mode("maximized") end core.recent_projects = recent_projects From 4e93eabbacba2743d324e7a53ae3f3e1b5b0eaca Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Mon, 31 May 2021 09:41:37 +0200 Subject: [PATCH 47/88] Deprecate core.add_save_hook to override Doc:save In order to stay simple and closer to the lite's design principles we deprecate the core.add_save_hook function and the related mechanism. Instead we now directly override the Doc:save() method. The method is already overrided from core.init to add the automatic reloading of style when user's module is saved. The cleanup is related to the discussion in issue #229. --- data/core/init.lua | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/data/core/init.lua b/data/core/init.lua index a7ae2a2..36cc1d0 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -411,6 +411,20 @@ local function whitespace_replacements() end +local function reload_on_user_module_save() + -- auto-realod style when user's module is saved by overriding Doc:Save() + local doc_save = Doc.save + local user_filename = system.absolute_path(USERDIR .. PATHSEP .. "init.lua") + function Doc:save(filename) + doc_save(self) + if self.abs_filename == user_filename then + core.reload_module("core.style") + core.load_user_directory() + end + end +end + + function core.init() command = require "core.command" keymap = require "core.keymap" @@ -553,6 +567,8 @@ function core.init() if item.text == "Exit" then os.exit(1) end end) end + + reload_on_user_module_save() end @@ -612,13 +628,19 @@ do end +-- DEPRECATED function core.doc_save_hooks = {} function core.add_save_hook(fn) + core.error("The function core.add_save_hook is deprecated." .. + " Modules should now directly override the Doc:save function.") core.doc_save_hooks[#core.doc_save_hooks + 1] = fn end +-- DEPRECATED function function core.on_doc_save(filename) + -- for backward compatibility in modules. Hooks are deprecated, the function Doc:save + -- should be directly overidded. for _, hook in ipairs(core.doc_save_hooks) do hook(filename) end @@ -1065,15 +1087,4 @@ function core.on_error(err) end -core.add_save_hook(function(filename) - local doc = core.active_view.doc - local user_filename = system.absolute_path(USERDIR .. PATHSEP .. "init.lua") - if doc and doc:is(Doc) and doc.abs_filename == user_filename then - core.reload_module("core.style") - core.load_user_directory() - end -end) - - - return core From ea5e9b0ce5ab52b75755178597af6ade81968d56 Mon Sep 17 00:00:00 2001 From: lqdev Date: Wed, 2 Jun 2021 19:09:55 +0200 Subject: [PATCH 48/88] fixed broken Doc:save monkeypatch --- data/core/commands/doc.lua | 12 ++++++------ data/core/init.lua | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index ffaf029..8165b42 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -47,7 +47,7 @@ local function save(filename) core.log("Saved \"%s\"", saved_filename) end --- returns the size of the original indent, and the indent +-- returns the size of the original indent, and the indent -- in your config format, rounded either up or down local function get_line_indent(line, rnd_up) local _, e = line:find("^[ \t]+") @@ -58,18 +58,18 @@ local function get_line_indent(line, rnd_up) else local indent = e and line:sub(1, e):gsub("\t", soft_tab) or "" local number = #indent / #soft_tab - return e, indent:sub(1, + return e, indent:sub(1, (rnd_up and math.ceil(number) or math.floor(number))*#soft_tab) end end -- un/indents text; behaviour varies based on selection and un/indent. --- * if there's a selection, it will stay static around the +-- * if there's a selection, it will stay static around the -- text for both indenting and unindenting. --- * if you are in the beginning whitespace of a line, and are indenting, the +-- * if you are in the beginning whitespace of a line, and are indenting, the -- cursor will insert the exactly appropriate amount of spaces, and jump the -- cursor to the beginning of first non whitespace characters --- * if you are not in the beginning whitespace of a line, and you indent, it +-- * if you are not in the beginning whitespace of a line, and you indent, it -- inserts the appropriate whitespace, as if you typed them normally. -- * if you are unindenting, the cursor will jump to the start of the line, -- and remove the appropriate amount of spaces (or a tab). @@ -83,7 +83,7 @@ local function indent_text(unindent) for line = line1, line2 do local e, rnded = get_line_indent(doc().lines[line], unindent) doc():remove(line, 1, line, (e or 0) + 1) - doc():insert(line, 1, + doc():insert(line, 1, unindent and rnded:sub(1, #rnded - #text) or rnded .. text) end l1d, l2d = #doc().lines[line1] - l1d, #doc().lines[line2] - l2d diff --git a/data/core/init.lua b/data/core/init.lua index 36cc1d0..cc4b46d 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -415,8 +415,8 @@ local function reload_on_user_module_save() -- auto-realod style when user's module is saved by overriding Doc:Save() local doc_save = Doc.save local user_filename = system.absolute_path(USERDIR .. PATHSEP .. "init.lua") - function Doc:save(filename) - doc_save(self) + function Doc:save(filename, abs_filename) + doc_save(self, filename, abs_filename) if self.abs_filename == user_filename then core.reload_module("core.style") core.load_user_directory() From 248d70a8ca5d8bf516ca6809fde0d500b9a7221f Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 2 Jun 2021 15:27:00 -0400 Subject: [PATCH 49/88] Add PCRE to support regular expressions Use regular expressions instead of Lua patterns for find and replace editor commands. Syntax files can now use regex or Lua patterns as before keeping backward compatibility for plugins. --- build.sh | 2 +- data/core/commands/findreplace.lua | 14 ++-- data/core/doc/search.lua | 36 +++++---- data/core/init.lua | 1 + data/core/regex.lua | 69 +++++++++++++++++ data/core/tokenizer.lua | 75 ++++++++----------- data/plugins/projectsearch.lua | 9 ++- meson.build | 1 + src/api/api.c | 2 + src/api/regex.c | 115 +++++++++++++++++++++++++++++ src/meson.build | 3 +- 11 files changed, 257 insertions(+), 70 deletions(-) create mode 100644 data/core/regex.lua create mode 100644 src/api/regex.c diff --git a/build.sh b/build.sh index bfb679b..6f60579 100755 --- a/build.sh +++ b/build.sh @@ -3,7 +3,7 @@ cflags+="-Wall -O3 -g -std=gnu11 -fno-strict-aliasing -Isrc -Ilib/font_renderer" cflags+=" $(pkg-config --cflags lua5.2) $(sdl2-config --cflags)" lflags="-static-libgcc -static-libstdc++" -for package in libagg freetype2 lua5.2 x11; do +for package in libagg freetype2 lua5.2 x11 libpcre2-8; do lflags+=" $(pkg-config --libs $package)" done lflags+=" $(sdl2-config --libs) -lm" diff --git a/data/core/commands/findreplace.lua b/data/core/commands/findreplace.lua index 937c410..af60f33 100644 --- a/data/core/commands/findreplace.lua +++ b/data/core/commands/findreplace.lua @@ -90,6 +90,7 @@ local function has_selection() and core.active_view.doc:has_selection() end + command.add(has_selection, { ["find-replace:select-next"] = function() local l1, c1, l2, c2 = doc():get_selection(true) @@ -107,9 +108,9 @@ command.add("core.docview", { end) end, - ["find-replace:find-pattern"] = function() - find("Find Text Pattern", function(doc, line, col, text) - local opt = { wrap = true, no_case = true, pattern = true } + ["find-replace:find-regex"] = function() + find("Find Text Regex", function(doc, line, col, text) + local opt = { wrap = true, no_case = true, regex = true } return search.find(doc, line, col, text, opt) end) end, @@ -144,9 +145,10 @@ command.add("core.docview", { end) end, - ["find-replace:replace-pattern"] = function() - replace("Pattern", "", function(text, old, new) - return text:gsub(old, new) + ["find-replace:replace-regex"] = function() + replace("Regex", "", function(text, old, new) + local re = regex.compile(old) + return regex.gsub(re, text, new) end) end, diff --git a/data/core/doc/search.lua b/data/core/doc/search.lua index fe57523..0409067 100644 --- a/data/core/doc/search.lua +++ b/data/core/doc/search.lua @@ -15,12 +15,8 @@ local function init_args(doc, line, col, text, opt) opt = opt or default_opt line, col = doc:sanitize_position(line, col) - if opt.no_case then - if opt.pattern then - text = text:gsub("%%?.", pattern_lower) - else - text = text:lower() - end + if opt.no_case and not opt.regex then + text = text:lower() end return doc, line, col, text, opt @@ -30,20 +26,32 @@ end function search.find(doc, line, col, text, opt) doc, line, col, text, opt = init_args(doc, line, col, text, opt) + local re + if opt.regex then + re = regex.compile(text, opt.no_case and "i" or "") + end for line = line, #doc.lines do local line_text = doc.lines[line] - if opt.no_case then - line_text = line_text:lower() + if opt.regex then + local s, e = re:cmatch(line_text, col) + if s then + return line, s, line, e + end + col = 1 + else + if opt.no_case then + line_text = line_text:lower() + end + local s, e = line_text:find(text, col, true) + if s then + return line, s, line, e + 1 + end + col = 1 end - local s, e = line_text:find(text, col, not opt.pattern) - if s then - return line, s, line, e + 1 - end - col = 1 end if opt.wrap then - opt = { no_case = opt.no_case, pattern = opt.pattern } + opt = { no_case = opt.no_case, regex = opt.regex } return search.find(doc, 1, 1, text, opt) end end diff --git a/data/core/init.lua b/data/core/init.lua index cc4b46d..a3e6eba 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -1,4 +1,5 @@ require "core.strict" +require "core.regex" local common = require "core.common" local config = require "core.config" local style = require "core.style" diff --git a/data/core/regex.lua b/data/core/regex.lua new file mode 100644 index 0000000..a360f0a --- /dev/null +++ b/data/core/regex.lua @@ -0,0 +1,69 @@ + +-- So that in addition to regex.gsub(pattern, string), we can also do +-- pattern:gsub(string). +regex.__index = function(table, key) return regex[key]; end + +regex.match = function(pattern_string, string, offset, options) + local pattern = type(pattern_string) == "table" and + pattern_string or regex.compile(pattern_string) + return regex.cmatch(pattern, string, offset, options) +end + +-- Will iterate back through any UTF-8 bytes so that we don't replace bits +-- mid character. +local function previous_character(str, index) + local byte + repeat + index = index - 1 + byte = string.byte(str, index) + until byte < 128 or byte >= 192 + return index +end + +-- Moves to the end of the identified character. +local function end_character(str, index) + local byte = string.byte(str, index + 1) + while byte >= 128 and byte < 192 do + index = index + 1 + byte = string.byte(str, index + 1) + end + return index +end + +-- Build off matching. For now, only support basic replacements, but capture +-- groupings should be doable. We can even have custom group replacements and +-- transformations and stuff in lua. Currently, this takes group replacements +-- as \1 - \9. +-- Should work on UTF-8 text. +regex.gsub = function(pattern_string, str, replacement) + local pattern = type(pattern_string) == "table" and + pattern_string or regex.compile(pattern_string) + local result, indices = "" + local n = 0 + repeat + indices = { regex.cmatch(pattern, str) } + if #indices > 0 then + n = n + 1 + local currentReplacement = replacement + if #indices > 2 then + for i = 1, (#indices/2 - 1) do + currentReplacement = string.gsub( + currentReplacement, + "\\" .. i, + str:sub(indices[i*2+1], end_character(str,indices[i*2+2]-1)) + ) + end + end + currentReplacement = string.gsub(currentReplacement, "\\%d", "") + if indices[1] > 1 then + result = result .. + str:sub(1, previous_character(str, indices[1])) .. currentReplacement + else + result = result .. currentReplacement + end + str = str:sub(indices[2]) + end + until #indices == 0 or indices[1] == indices[2] + return result .. str, n +end + diff --git a/data/core/tokenizer.lua b/data/core/tokenizer.lua index 83e0e66..a20dba5 100644 --- a/data/core/tokenizer.lua +++ b/data/core/tokenizer.lua @@ -48,29 +48,6 @@ local function push_tokens(t, syn, pattern, full_text, find_results) end -local function is_escaped(text, idx, esc) - local byte = esc:byte() - local count = 0 - for i = idx - 1, 1, -1 do - if text:byte(i) ~= byte then break end - count = count + 1 - end - return count % 2 == 1 -end - - -local function find_non_escaped(text, pattern, offset, esc) - while true do - local s, e = text:find(pattern, offset) - if not s then break end - if esc and is_escaped(text, s, esc) then - offset = e + 1 - else - return s, e - end - end -end - -- State is a 32-bit number that is four separate bytes, illustrating how many -- differnet delimiters we have open, and which subsyntaxes we have active. -- At most, there are 3 subsyntaxes active at the same time. Beyond that, @@ -155,26 +132,44 @@ function tokenizer.tokenize(incoming_syntax, text, state) set_subsyntax_pattern_idx(0) current_syntax, subsyntax_info, current_pattern_idx, current_level = retrieve_syntax_state(incoming_syntax, state) + end + local function find_text(text, p, offset, at_start, close) + local target, res = p.pattern or p.regex, { 1, offset - 1 }, p.regex + local code = type(target) == "table" and target[close and 2 or 1] or target + if p.regex and type(p.regex) ~= "table" then + p._regex = p._regex or regex.compile(p.regex) + code = p._regex + end + repeat + res = p.pattern and { text:find(at_start and "^" .. code or code, res[2]+1) } + or { regex.match(code, text, res[2]+1, at_start and regex.ANCHORED or 0) } + if res[1] and close and target[3] then + local count = 0 + for i = res[1] - 1, 1, -1 do + if text:byte(i) ~= target[3]:byte() then break end + count = count + 1 + end + -- Check to see if the escaped character is there, + -- and if it is not itself escaped. + if count % 2 == 0 then break end + end + until not res[1] or not close or not target[3] + return unpack(res) end while i <= #text do -- continue trying to match the end pattern of a pair if we have a state set if current_pattern_idx > 0 then local p = current_syntax.patterns[current_pattern_idx] - local s, e = find_non_escaped(text, p.pattern[2], i, p.pattern[3]) + local s, e = find_text(text, p, i, false, true) local cont = true -- If we're in subsyntax mode, always check to see if we end our syntax -- first, before the found delimeter, as ending the subsyntax takes -- precedence over ending the delimiter in the subsyntax. if subsyntax_info then - local ss, se = find_non_escaped( - text, - subsyntax_info.pattern[2], - i, - subsyntax_info.pattern[3] - ) + local ss, se = find_text(text, subsyntax_info, i, false, true) -- If we find that we end the subsyntax before the -- delimiter, push the token, and signal we shouldn't -- treat the bit after as a token to be normally parsed @@ -202,12 +197,7 @@ function tokenizer.tokenize(incoming_syntax, text, state) -- we're ending early in the middle of a delimiter, or -- just normally, upon finding a token. if subsyntax_info then - local s, e = find_non_escaped( - text, - "^" .. subsyntax_info.pattern[2], - i, - nil - ) + local s, e = find_text(text, subsyntax_info, i, true, true) if s then push_token(res, subsyntax_info.type, text:sub(i, e)) -- On finding unescaped delimiter, pop it. @@ -219,16 +209,12 @@ function tokenizer.tokenize(incoming_syntax, text, state) -- find matching pattern local matched = false for n, p in ipairs(current_syntax.patterns) do - local pattern = (type(p.pattern) == "table") and p.pattern[1] or p.pattern - local find_results = { text:find("^" .. pattern, i) } - local start, fin = find_results[1], find_results[2] - - if start then + local find_results = { find_text(text, p, i, true, false) } + if find_results[1] then -- matched pattern; make and add tokens push_tokens(res, current_syntax, p, text, find_results) - -- update state if this was a start|end pattern pair - if type(p.pattern) == "table" then + if type(p.pattern or p.regex) == "table" then -- If we have a subsyntax, push that onto the subsyntax stack. if p.syntax then push_subsyntax(p, n) @@ -236,9 +222,8 @@ function tokenizer.tokenize(incoming_syntax, text, state) set_subsyntax_pattern_idx(n) end end - -- move cursor past this token - i = fin + 1 + i = find_results[2] + 1 matched = true break end diff --git a/data/plugins/projectsearch.lua b/data/plugins/projectsearch.lua index 69a2709..45399ed 100644 --- a/data/plugins/projectsearch.lua +++ b/data/plugins/projectsearch.lua @@ -237,9 +237,12 @@ command.add(nil, { end) end, - ["project-search:find-pattern"] = function() - core.command_view:enter("Find Pattern In Project", function(text) - begin_search(text, function(line_text) return line_text:find(text) end) + ["project-search:find-regex"] = function() + core.command_view:enter("Find Regex In Project", function(text) + local re = regex.compile(text, "i") + begin_search(text, function(line_text) + return regex.cmatch(re, line_text) + end) end) end, diff --git a/meson.build b/meson.build index 9b1ab84..5a218df 100644 --- a/meson.build +++ b/meson.build @@ -9,6 +9,7 @@ libm = cc.find_library('m', required : false) libdl = cc.find_library('dl', required : false) libx11 = dependency('x11', required : false) lua_dep = dependency('lua5.2', required : false) +pcre2_dep = dependency('libpcre2-8') if not lua_dep.found() lua_subproject = subproject('lua', default_options: ['shared=false', 'use_readline=false', 'app=false']) diff --git a/src/api/api.c b/src/api/api.c index 34067a9..5ea2e78 100644 --- a/src/api/api.c +++ b/src/api/api.c @@ -3,11 +3,13 @@ int luaopen_system(lua_State *L); int luaopen_renderer(lua_State *L); +int luaopen_regex(lua_State *L); static const luaL_Reg libs[] = { { "system", luaopen_system }, { "renderer", luaopen_renderer }, + { "regex", luaopen_regex }, { NULL, NULL } }; diff --git a/src/api/regex.c b/src/api/regex.c new file mode 100644 index 0000000..5245d8c --- /dev/null +++ b/src/api/regex.c @@ -0,0 +1,115 @@ +#include "api.h" + +#define PCRE2_CODE_UNIT_WIDTH 8 + +#include +#include + +static int f_pcre_gc(lua_State* L) { + lua_rawgeti(L, -1, 1); + pcre2_code* re = (pcre2_code*)lua_touserdata(L, -1); + if (re) + pcre2_code_free(re); + return 0; +} + +static int f_pcre_compile(lua_State *L) { + size_t len; + PCRE2_SIZE errorOffset; + int errorNumber; + int pattern = PCRE2_UTF; + const char* str = luaL_checklstring(L, 1, &len); + if (lua_gettop(L) > 1) { + const char* options = luaL_checkstring(L, 2); + if (strstr(options,"i")) + pattern |= PCRE2_CASELESS; + if (strstr(options,"m")) + pattern |= PCRE2_MULTILINE; + if (strstr(options,"s")) + pattern |= PCRE2_DOTALL; + } + pcre2_code* re = pcre2_compile( + (PCRE2_SPTR)str, + len, + pattern, + &errorNumber, + &errorOffset, + NULL + ); + if (re) { + lua_newtable(L); + lua_pushlightuserdata(L, re); + lua_rawseti(L, -2, 1); + luaL_setmetatable(L, "regex"); + return 1; + } + PCRE2_UCHAR buffer[256]; + pcre2_get_error_message(errorNumber, buffer, sizeof(buffer)); + luaL_error(L, "regex compilation failed at offset %d: %s", + (int)errorOffset, buffer); + return 0; +} + +// Takes string, compiled regex, returns list of indices of matched groups +// (including the whole match), if a match was found. +static int f_pcre_match(lua_State *L) { + size_t len, offset = 1, opts = 0; + luaL_checktype(L, 1, LUA_TTABLE); + const char* str = luaL_checklstring(L, 2, &len); + if (lua_gettop(L) > 2) + offset = luaL_checknumber(L, 3); + if (lua_gettop(L) > 3) + opts = luaL_checknumber(L, 4); + lua_rawgeti(L, 1, 1); + pcre2_code* re = (pcre2_code*)lua_touserdata(L, -1); + pcre2_match_data* md = pcre2_match_data_create_from_pattern(re, NULL); + int rc = pcre2_match(re, (PCRE2_SPTR)str, len, offset - 1, opts, md, NULL); + if (rc < 0) { + pcre2_match_data_free(md); + if (rc != PCRE2_ERROR_NOMATCH) + luaL_error(L, "regex matching error %d", rc); + return 0; + } + PCRE2_SIZE* ovector = pcre2_get_ovector_pointer(md); + if (ovector[0] > ovector[1]) { + /* We must guard against patterns such as /(?=.\K)/ that use \K in an + assertion to set the start of a match later than its end. In the editor, + we just detect this case and give up. */ + luaL_error(L, "regex matching error: \\K was used in an assertion to " + " set the match start after its end"); + pcre2_match_data_free(md); + return 0; + } + for (int i = 0; i < rc*2; i++) + lua_pushnumber(L, ovector[i]+1); + pcre2_match_data_free(md); + return rc*2; +} + +static const luaL_Reg lib[] = { + { "compile", f_pcre_compile }, + { "cmatch", f_pcre_match }, + { "__gc", f_pcre_gc }, + { NULL, NULL } +}; + +int luaopen_regex(lua_State *L) { + luaL_newlib(L, lib); + lua_pushliteral(L, "regex"); + lua_setfield(L, -2, "__name"); + lua_pushvalue(L, -1); + lua_setfield(L, LUA_REGISTRYINDEX, "regex"); + lua_pushnumber(L, PCRE2_ANCHORED); + lua_setfield(L, -2, "ANCHORED"); + lua_pushnumber(L, PCRE2_ANCHORED) ; + lua_setfield(L, -2, "ENDANCHORED"); + lua_pushnumber(L, PCRE2_NOTBOL); + lua_setfield(L, -2, "NOTBOL"); + lua_pushnumber(L, PCRE2_NOTEOL); + lua_setfield(L, -2, "NOTEOL"); + lua_pushnumber(L, PCRE2_NOTEMPTY); + lua_setfield(L, -2, "NOTEMPTY"); + lua_pushnumber(L, PCRE2_NOTEMPTY_ATSTART); + lua_setfield(L, -2, "NOTEMPTY_ATSTART"); + return 1; +} diff --git a/src/meson.build b/src/meson.build index 881014b..faa1a8e 100644 --- a/src/meson.build +++ b/src/meson.build @@ -3,6 +3,7 @@ lite_sources = [ 'api/cp_replace.c', 'api/renderer.c', 'api/renderer_font.c', + 'api/regex.c', 'api/system.c', 'renderer.c', 'renwindow.c', @@ -18,7 +19,7 @@ endif executable('lite', lite_sources + lite_rc, include_directories: [lite_include, font_renderer_include], - dependencies: [lua_dep, sdl_dep, libm, libdl, libx11], + dependencies: [lua_dep, sdl_dep, pcre2_dep, libm, libdl, libx11], c_args: lite_cargs, link_with: libfontrenderer, link_args: lite_link_args, From 8c1a25100cbeabc29fa7c4e621d6fe0d30d998a8 Mon Sep 17 00:00:00 2001 From: redtide Date: Thu, 3 Jun 2021 18:57:26 +0200 Subject: [PATCH 50/88] Moved documentation to the website repository, updated README (#247) --- README.md | 156 +++++++++---------------- doc/contributors.md | 43 ------- doc/default-keymap.md | 113 ------------------ doc/usage.md | 209 ---------------------------------- {doc => licenses}/licenses.md | 0 5 files changed, 53 insertions(+), 468 deletions(-) delete mode 100644 doc/contributors.md delete mode 100644 doc/default-keymap.md delete mode 100644 doc/usage.md rename {doc => licenses}/licenses.md (100%) diff --git a/README.md b/README.md index a5e0bad..07f1f55 100644 --- a/README.md +++ b/README.md @@ -1,126 +1,76 @@ # Lite XL -![screenshot-dark](https://user-images.githubusercontent.com/433545/111063905-66943980-84b1-11eb-9040-3876f1133b20.png) +[![Discord Badge Image]](https://discord.gg/SR4ArdYr) -A lightweight text editor written in Lua, adapted from [lite](https://github.com/rxi/lite) +![screenshot-dark] -* **[Get Lite XL](https://github.com/franko/lite-xl/releases/latest)** — Download - for Windows, Linux and Mac OS (notarized app). -* **[Get started](doc/usage.md)** — A quick overview on how to get started -* **[Get plugins](https://github.com/franko/lite-plugins)** — Add additional - functionality, adapted for Lite XL -* **[Get color themes](https://github.com/rxi/lite-colors)** — Add additional colors - themes +A lightweight text editor written in Lua, adapted from [lite]. -Lite XL has support for high DPI display on Windows and Linux and, since 1.16.7 release, it supports **retina displays** on Mac OS. +* **[Get Lite XL]** — Download for Windows, Linux and Mac OS (notarized app). +* **[Get plugins]** — Add additional functionality, adapted for Lite XL. +* **[Get color themes]** — Add additional colors themes. + +Please refer to our [website] for the user and developer documentation, +including [build] instructions. + +Lite XL has support for high DPI display on Windows and Linux and, +since 1.16.7 release, it supports **retina displays** on macOS. Please note that Lite XL is compatible with lite for most plugins and all color themes. -We provide a separate lite-plugins repository for Lite XL, because in some cases some adaptations may be needed to make them work better with Lite XL. -The repository with modified plugins is http://github.com/franko/lite-plugins. +We provide a separate lite-plugins repository for Lite XL, because in some cases +some adaptations may be needed to make them work better with Lite XL. +The repository with modified plugins is https://github.com/franko/lite-plugins. -The changes and differences between Lite XL and rxi/lite are listed in the [changelog](https://github.com/franko/lite-xl/blob/master/changelog.md). +The changes and differences between Lite XL and rxi/lite are listed in the +[changelog]. ## Overview -Lite XL is derived from lite. It is a lightweight text editor written mostly in Lua — it aims to provide -something practical, pretty, *small* and fast easy to modify and extend, or to use without doing either. +Lite XL is derived from lite. +It is a lightweight text editor written mostly in Lua — it aims to provide +something practical, pretty, *small* and fast easy to modify and extend, +or to use without doing either. -The aim of Lite XL compared to lite is to be more user friendly, improve the quality of font rendering, and reduce CPU usage. +The aim of Lite XL compared to lite is to be more user friendly, +improve the quality of font rendering, and reduce CPU usage. ## Customization -Additional functionality can be added through plugins which are available in -the [plugins repository](https://github.com/rxi/lite-plugins) or in the [Lite XL-specific plugins repository](https://github.com/franko/lite-plugins). -Additional color themes can be found in the [colors repository](https://github.com/rxi/lite-colors). +Additional functionality can be added through plugins which are available in +the [plugins repository] or in the [Lite XL plugins repository]. + +Additional color themes can be found in the [colors repository]. These color themes are bundled with all releases of Lite XL by default. -The editor can be customized by making changes to the [user module](data/user/init.lua). - -## Building - -You can build Lite XL yourself using Meson. - -In addition, the `build-packages.sh` script can be used to compile Lite XL and create an OS-specific package for Linux, Windows or Mac OS. - -The following libraries are required: - -- freetype2 -- SDL2 - -The following libraries are **optional**: - -- libagg -- Lua 5.2 - -If they are not found, they will be downloaded and compiled by Meson. -Otherwise, if they are present, they will be used to compile Lite XL. - -On Debian-based systems the required libraries and Meson can be installed using the following commands: - -```sh -# To install the required libraries: -sudo apt install libfreetype6-dev libsdl2-dev - -# To install Meson: -sudo apt install meson -# or pip3 install --user meson -``` - -To build Lite XL with Meson the commands below can be used: -```sh -meson setup --buildtype=release build -meson compile -C build -meson install -C build -``` - -If you are using a version of Meson below 0.54 you need to use diffent commands to compile and install: - -```sh -meson setup --buildtype=release build -ninja -C build -ninja -C build install -``` - -When performing the `meson setup` command you may enable the `-Dportable=true` option to specify whether files should be installed as in a portable application. - -If `portable` is enabled, Lite XL is built to use a `data` directory placed next to the executable. -Otherwise, Lite XL will use unix-like directory locations. -In this case, the `data` directory will be `$prefix/share/lite-xl` and the executable will be located in `$prefix/bin`. -`$prefix` is determined when the application starts as a directory such that `$prefix/bin` corresponds to the location of the executable. - -The `user` directory does not depend on the `portable` option and will always be `$HOME/.config/lite-xl`. -`$HOME` is determined from the corresponding environment variable. -As a special case on Windows the variable `$USERPROFILE` will be used instead. - -If you compile Lite XL yourself, it is recommended to use the script `build-packages.sh`: - -```sh -bash build-packages.sh -``` - -The script will run Meson and create a zip file with the application or, for linux, a tar compressed archive. -Lite XL can be easily installed by unpacking the archive in any directory of your choice. - -On Windows two packages will be created, one called "portable" using the "data" folder next to the executable and -the other one using a unix-like file layout. Both packages works correctly. The one with unix-like file layout -is meant for people using a unix-like shell and the command line. - -Please note that there aren't any hard-coded directories in the executable, so that the -package can be extracted and used in any directory. - -Mac OS X is fully supported and a notarized app disk image is provided in the [release page](https://github.com/franko/lite-xl/releases). -In addition the application can be compiled using the generic instructions given above. - ## Contributing -Any additional functionality that can be added through a plugin should be done -as a plugin, after which a pull request to the -[plugins repository](https://github.com/rxi/lite-plugins) can be made. -If the plugin uses any Lite XL-specific functionality, please open a pull request to the -[Lite XL plugins repository](https://github.com/franko/lite-plugins). +Any additional functionality that can be added through a plugin should be done +as a plugin, after which a pull request to the [plugins repository] can be made. + +If the plugin uses any Lite XL-specific functionality, +please open a pull request to the [Lite XL plugins repository]. Pull requests to improve or modify the editor itself are welcome. -## License +## Licenses + This project is free software; you can redistribute it and/or modify it under -the terms of the MIT license. See [LICENSE](LICENSE) for details. +the terms of the MIT license. See [LICENSE] for details. + +See the [licenses] file for details on licenses used by the required dependencies. + + +[Discord Badge Image]: https://img.shields.io/discord/847122429742809208?label=discord&logo=discord +[screenshot-dark]: https://user-images.githubusercontent.com/433545/111063905-66943980-84b1-11eb-9040-3876f1133b20.png +[lite]: https://github.com/rxi/lite +[website]: https://lite-xl.github.io +[build]: https://lite-xl.github.io/en/build +[Get Lite XL]: https://github.com/franko/lite-xl/releases/latest +[Get plugins]: https://github.com/franko/lite-plugins +[Get color themes]: https://github.com/rxi/lite-colors +[changelog]: https://github.com/franko/lite-xl/blob/master/changelog.md +[Lite XL plugins repository]: https://github.com/franko/lite-plugins +[plugins repository]: https://github.com/rxi/lite-plugins +[colors repository]: https://github.com/rxi/lite-colors +[LICENSE]: LICENSE +[licenses]: licenses/licenses.md diff --git a/doc/contributors.md b/doc/contributors.md deleted file mode 100644 index 4313e46..0000000 --- a/doc/contributors.md +++ /dev/null @@ -1,43 +0,0 @@ -## rxi - -Original development of lite editor. - -## Francesco Abbate (franko) - -Creator of lite-xl fork from rxi/lite. - -## Takase (takase1121) - -NagView and X Window database resource query for Xft.dpi setting. - -## Nils Kvist (budRich) - -Popup window replacement with CommandView dialog. - -## liquidev - -Tab style and animations improvements. - -## adamharrison - -Multi-language syntax highlighting and many other improvements. - -## vincens2005 - -Syntax highlighting improvements. - -## Janis-Leuenberger - -Add keymap bindings help file and macOS testing. - -## Mat Mariani (mathewmariani) - -Help for Mac OS port. Some resources taken from mathewmariani/lite-macos. - -## daubaris - -Initial implementation of Xft.dpi query using xrdb command. - -## Robert Štojs (netrobert) - -Continuos integration configuration diff --git a/doc/default-keymap.md b/doc/default-keymap.md deleted file mode 100644 index 72bca33..0000000 --- a/doc/default-keymap.md +++ /dev/null @@ -1,113 +0,0 @@ -# Default keymap - -*Note: When using macOS `ctrl` refers to the command key.* - -| Key combination | Actions | -| --------------------- | ----------------------------------- | -| ctrl+shift+p | core:find-command | -| ctrl+p | core:find-file | -| ctrl+o | core:open-file | -| ctrl+n | core:new-doc | -| ctrl+shift+c | core:change-project-folder | -| ctrl+shift+o | core:open-project-folder | -| alt+return | core:toggle-fullscreen | -| alt+shift+j | root:split-left | -| alt+shift+l | root:split-right | -| alt+shift+i | root:split-up | -| alt+shift+k | root:split-down | -| alt+j | root:switch-to-left | -| alt+l | root:switch-to-right | -| alt+i | root:switch-to-up | -| alt+k | root:switch-to-down | -| ctrl+w | root:close | -| ctrl+tab | root:switch-to-next-tab | -| ctrl+shift+tab | root:switch-to-previous-tab | -| ctrl+pageup | root:move-tab-left | -| ctrl+pagedown | root:move-tab-right | -| alt+1 | root:switch-to-tab-1 | -| alt+2 | root:switch-to-tab-2 | -| alt+3 | root:switch-to-tab-3 | -| alt+4 | root:switch-to-tab-4 | -| alt+5 | root:switch-to-tab-5 | -| alt+6 | root:switch-to-tab-6 | -| alt+7 | root:switch-to-tab-7 | -| alt+8 | root:switch-to-tab-8 | -| alt+9 | root:switch-to-tab-9 | -| ctrl+f | find-replace:find | -| ctrl+r | find-replace:replace | -| f3 | find-replace:repeat-find | -| shift+f3 | find-replace:previous-find | -| ctrl+g | doc:go-to-line | -| ctrl+s | doc:save | -| ctrl+shift+s | doc:save-as | -| ctrl+z | doc:undo | -| ctrl+y | doc:redo | -| ctrl+x | doc:cut | -| ctrl+c | doc:copy | -| ctrl+v | doc:paste | -| ctrl+insert | doc:copy | -| shift+insert | doc:paste | -| escape | command:escape | -| escape | doc:select-none | -| escape | dialog:select-no | -| tab | command:complete | -| tab | doc:indent | -| shift+tab | doc:unindent | -| backspace | doc:backspace | -| shift+backspace | doc:backspace | -| ctrl+backspace | doc:delete-to-previous-word-start | -| ctrl+shift+backspace | doc:delete-to-previous-word-start | -| delete | doc:delete | -| shift+delete | doc:delete | -| ctrl+delete | doc:delete-to-next-word-end | -| ctrl+shift+delete | doc:delete-to-next-word-end | -| return | command:submit | -| return | doc:newline | -| return | dialog:select | -| keypad enter | command:submit | -| keypad enter | doc:newline | -| keypad enter | dialog:select | -| ctrl+return | doc:newline-below | -| ctrl+shift+return | doc:newline-above | -| ctrl+j | doc:join-lines | -| ctrl+a | doc:select-all | -| ctrl+d | find-replace:select-next | -| ctrl+d | doc:select-word | -| ctrl+l | doc:select-lines | -| ctrl+/ | doc:toggle-line-comments | -| ctrl+up | doc:move-lines-up | -| ctrl+down | doc:move-lines-down | -| ctrl+shift+d | doc:duplicate-lines | -| ctrl+shift+k | doc:delete-lines | -| left | doc:move-to-previous-char | -| left | dialog:previous-entry | -| right | doc:move-to-next-char | -| right | dialog:next-entry | -| up | command:select-previous | -| up | doc:move-to-previous-line | -| down | command:select-next | -| down | doc:move-to-next-line | -| ctrl+left | doc:move-to-previous-word-start | -| ctrl+right | doc:move-to-next-word-end | -| ctrl+[ | doc:move-to-previous-block-start | -| ctrl+] | doc:move-to-next-block-end | -| home | doc:move-to-start-of-line | -| end | doc:move-to-end-of-line | -| ctrl+home | doc:move-to-start-of-doc | -| ctrl+end | doc:move-to-end-of-doc | -| pageup | doc:move-to-previous-page | -| pagedown | doc:move-to-next-page | -| shift+left | doc:select-to-previous-char | -| shift+right | doc:select-to-next-char | -| shift+up | doc:select-to-previous-line | -| shift+down | doc:select-to-next-line | -| ctrl+shift+left | doc:select-to-previous-word-start | -| ctrl+shift+right | doc:select-to-next-word-end | -| ctrl+shift+[ | doc:select-to-previous-block-start | -| ctrl+shift+] | doc:select-to-next-block-end | -| shift+home | doc:select-to-start-of-line | -| shift+end | doc:select-to-end-of-line | -| ctrl+shift+home | doc:select-to-start-of-doc | -| ctrl+shift+end | doc:select-to-end-of-doc | -| shift+pageup | doc:select-to-previous-page | -| shift+pagedown | doc:select-to-next-page | diff --git a/doc/usage.md b/doc/usage.md deleted file mode 100644 index 90f6dc8..0000000 --- a/doc/usage.md +++ /dev/null @@ -1,209 +0,0 @@ -# lite - -![screenshot](https://user-images.githubusercontent.com/3920290/81471642-6c165880-91ea-11ea-8cd1-fae7ae8f0bc4.png) - -## Overview -Lite is a lightweight text editor written mostly in Lua — it aims to provide -something practical, pretty, *small* and fast, implemented as simply as -possible; easy to modify and extend, or to use without doing either. - -Lite XL is based on the Lite editor itself and provide some enhancements -while remaining generally compatible with Lite. - - -## Getting Started -Lite works using a *project directory* — this is the directory where your -project's code and other data resides. - -To open lite with a specific project directory the directory name can be passed -as a command-line argument *(`.` can be passed to use the current directory)* or -the directory can be dragged onto either the lite executable or a running -instance of lite. - -Once started the project directory can be changed using the command -`core:change-project-folder`. The command will close all the documents -currently opened and switch to the new project directory. - -If you want to open a project directory in a new window the command -`core:open-project-folder` will open a new editor window with the selected -project directory. - -The main way of opening files in lite is through the `core:find-file` command -— this provides a fuzzy finder over all of the project's files and can be -opened using the **`ctrl+p`** shortcut by default. - -Commands can be run using keyboard shortcuts, or by using the `core:find-command` -command bound to **`ctrl+shift+p`** by default. For example, pressing -`ctrl+shift+p` and typing `newdoc` then pressing `return` would open a new -document. The current keyboard shortcut for a command can be seen to the right -of the command name on the command finder, thus to find the shortcut for a command -`ctrl+shift+p` can be pressed and the command name typed. - - -## User Module -lite can be configured through use of the user module. The user module can be -used for changing options in the config module, adding additional key bindings, -loading custom color themes, modifying the style or changing any other part of -lite to your personal preference. - -The user module is loaded by lite when the application starts, after the plugins -have been loaded. - -The user module can be modified by running the `core:open-user-module` command -or otherwise directly opening the `$HOME/.config/lite-xl/init.lua` file. - -On Windows, the variable `$USERPROFILE` will be used instead of -`$HOME`. - -Please note that Lite XL differs from the standard Lite editor for the location -of the user's module. - -## Project Module -The project module is an optional module which is loaded from the current -project's directory when lite is started. Project modules can be useful for -things like adding custom commands for project-specific build systems, or -loading project-specific plugins. - -The project module is loaded by lite when the application starts, after both the -plugins and user module have been loaded. - -The project module can be edited by running the `core:open-project-module` -command — if the module does not exist for the current project when the -command is run it will be created. - -## Big directories -Often projects contain compiled, bundled or downloaded files which you don't want to edit. These files can be excluded from projects by configuring `config.ignore_files`. Such a configuration might look like `config.ignore_files = { "^%.", "node_modules" }`. This will exclude the `node_modules` folder and any file starting with `.`. You can add this to a user or project module. - -If a project has more files than the maximum (configured with `config.max_project_files`) lite-xl will switch to a different mode where files are lazily loaded. - -_Note: Because of lazy loading `core:find-file` will open `core:open-file` instead._ - -## Add directories to a project - -In addition to the project directories it is possible to add other directories -using the command `core:add-directory`. -Once added a directory it will be shown in the tree-view on the left side and -the additional files will be reachable using the `ctrl+p` command (find file). -The additonal files will be also visible when searching across the project. - -The additional directories can be removed using the command `core:remove-directory`. - -When you will open again Lite XL on the same project folder the application will -remember your workspace including the additonal project directories. - -Since version 1.15 Lite XL does not need a workspace plugin as it is now -bundled with the editor. - - -## Create new empty directory - -Using the command `files:create-directory` or control-click in a directory in the -tree-view to create a new empty subdirectory. - - -## Commands -Commands in lite are used both through the command finder (`ctrl+shift+p`) and -by lite's keyboard shortcut system. Commands consist of 3 components: -* **Name** — The command name in the form of `namespace:action-name`, for - example: `doc:select-all` -* **Predicate** — A function that returns true if the command can be ran, for - example, for any document commands the predicate checks whether the active - view is a document -* **Function** — The function which performs the command itself - -Commands can be added using the `command.add` function provided by the -`core.command` module: -```lua -local core = require "core" -local command = require "core.command" - -command.add("core.docview", { - ["doc:save"] = function() - core.active_view.doc:save() - core.log("Saved '%s', core.active_view.doc.filename) - end -}) -``` - -Commands can be performed programatically (eg. from another command or by your -user module) by calling the `command.perform` function after requiring the -`command` module: -```lua -local command = require "core.command" -command.perform "core:quit" -``` - - -## Keymap -All keyboard shortcuts in lite are handled by the `core.keymap` module. A key -binding in lite maps a "stroke" (eg. `ctrl+q`) to one or more commands (eg. -`core:quit`). When the shortcut is pressed lite will iterate each command -assigned to that key and run the *predicate function* for that command — if the -predicate passes it stops iterating and runs the command. - -An example of where this used is the default binding of the `tab` key: -``` lua - ["tab"] = { "command:complete", "doc:indent" }, -``` -When tab is pressed the `command:complete` command is attempted which will only -succeed if the command-input at the bottom of the window is active. Otherwise -the `doc:indent` command is attempted which will only succeed if we have a -document as our active view. - -A new mapping can be added by your user module as follows: -```lua -local keymap = require "core.keymap" -keymap.add { ["ctrl+q"] = "core:quit" } -``` - -A list of default mappings can be viewed [here](./default-keymap.md). - - -## Plugins -Plugins in lite are normal lua modules and are treated as such — no -complicated plugin manager is provided, and, once a plugin is loaded, it is never -expected be to have to unload itself. - -To install a plugin simply drop it in the `plugins` directory in the user -module directory. -When Lite XL starts it will first load the plugins included in the data directory -and will then loads the plugins located in the user module directory. - -To uninstall a plugin the -plugin file can be deleted — any plugin (including those included with lite's -default installation) can be deleted to remove its functionality. - -If you want to load a plugin only under a certain circumstance (for example, -only on a given project) the plugin can be placed somewhere other than the -`plugins` directory so that it is not automatically loaded. The plugin can -then be loaded manually as needed by using the `require` function. - -Plugins can be downloaded from the [plugins repository](https://github.com/rxi/lite-plugins). - - -## Restarting the editor - -If you modifies the user configuration file or some of the Lua implementation files you may -restart the editor using the command `core:restart`. -All the application will be restarting by keeping the window that is already in use. - - -## Color Themes -Colors themes in lite are lua modules which overwrite the color fields of lite's -`core.style` module. -Pre-defined color methods are located in the `colors` folder in the data directory. -Additional color themes can be installed in the user's directory in a folder named -`colors`. - -A color theme can be set by requiring it in your user module: -```lua -core.reload_module "colors.winter" -``` - -In the Lite editor the function `require` is used instead of `core.reload_module`. -In Lite XL `core.reload_module` should be used to ensure that the color module -is actually reloaded when saving the user's configuration file. - -Color themes can be downloaded from the [color themes repository](https://github.com/rxi/lite-colors). -They are included with Lite XL release packages. - diff --git a/doc/licenses.md b/licenses/licenses.md similarity index 100% rename from doc/licenses.md rename to licenses/licenses.md From a128790112c54367e2a81af96420d0ac6b815709 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 3 Jun 2021 15:23:54 -0400 Subject: [PATCH 51/88] Update README.md Changed invite link to be permanent. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 07f1f55..b96c9dc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Lite XL -[![Discord Badge Image]](https://discord.gg/SR4ArdYr) +[![Discord Badge Image]](https://discord.gg/RWzqC3nx7K) ![screenshot-dark] From f23419994d8fd46c7efcfa89b378c720517286f7 Mon Sep 17 00:00:00 2001 From: Tommi Jalkanen <1162417+Koura@users.noreply.github.com> Date: Thu, 3 Jun 2021 22:43:09 +0300 Subject: [PATCH 52/88] Fix: broken build-packages.sh (#251) Previous commit changed the locations of certain documentation files causing the meson build to fail. --- meson.build | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 5a218df..b6ab050 100644 --- a/meson.build +++ b/meson.build @@ -32,9 +32,7 @@ foreach data_module : ['core', 'fonts', 'plugins', 'colors'] install_subdir('data' / data_module , install_dir : lite_datadir) endforeach -foreach file : ['usage.md', 'licenses.md', 'contributors.md', 'default-keymap.md'] - install_data('doc' / file, install_dir : lite_docdir) -endforeach +install_data('licenses/licenses.md', install_dir : lite_docdir) lite_link_args = [] if cc.get_id() == 'gcc' and get_option('buildtype') == 'release' From 1eabf990548e8644d2f7a5384ece7e1791934a67 Mon Sep 17 00:00:00 2001 From: Ferdinand Prantl Date: Thu, 3 Jun 2021 21:48:15 +0200 Subject: [PATCH 53/88] Enable lite-xl to be started from a symlink to the deployed binary (#249) Use resolved executablePath instead of resourcePath to allow lanching the lite-xl binary via a symlink, like typically done by Homebrew: /usr/local/bin/lite-xl -> /Applications/lite-xl.app/Contents/MacOS/lite-xl The resourcePath returns /usr/local in this case instead of /Applications/lite-xl.app/Contents/Resources, which makes later access to the resource files fail. Resolving the symlink to the executable and then the relative path to the expected directory Resources is a workaround for starting the application from both the launcher directly and the command line via the symlink. --- src/bundle_open.m | 21 +++++++++++++++++++-- src/main.c | 8 +++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/bundle_open.m b/src/bundle_open.m index 5881186..f4f0b94 100644 --- a/src/bundle_open.m +++ b/src/bundle_open.m @@ -4,8 +4,25 @@ void set_macos_bundle_resources(lua_State *L) { @autoreleasepool { - NSString* resource_path = [[NSBundle mainBundle] resourcePath]; - lua_pushstring(L, [resource_path UTF8String]); + /* Use resolved executablePath instead of resourcePath to allow lanching + the lite-xl binary via a symlink, like typically done by Homebrew: + + /usr/local/bin/lite-xl -> /Applications/lite-xl.app/Contents/MacOS/lite-xl + + The resourcePath returns /usr/local in this case instead of + /Applications/lite-xl.app/Contents/Resources, which makes later + access to the resource files fail. Resolving the symlink to the + executable and then the relative path to the expected directory + Resources is a workaround for starting the application from both + the launcher directly and the command line via the symlink. + */ + NSString* executable_path = [[NSBundle mainBundle] executablePath]; + char resolved_path[PATH_MAX + 16 + 1]; + realpath([executable_path UTF8String], resolved_path); + strcat(resolved_path, "/../../Resources"); + char resource_path[PATH_MAX + 1]; + realpath(resolved_path, resource_path); + lua_pushstring(L, resource_path); lua_setglobal(L, "MACOS_RESOURCES"); }} diff --git a/src/main.c b/src/main.c index b0eb50d..341f820 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,5 @@ #include +#include #include #include "api/api.h" #include "rencache.h" @@ -62,8 +63,13 @@ static void get_exe_filename(char *buf, int sz) { int len = readlink(path, buf, sz - 1); buf[len] = '\0'; #elif __APPLE__ + /* use realpath to resolve a symlink if the process was launched from one. + ** This happens when Homebrew installs a cack and creates a symlink in + ** /usr/loca/bin for launching the executable from the command line. */ unsigned size = sz; - _NSGetExecutablePath(buf, &size); + char exepath[size]; + _NSGetExecutablePath(exepath, &size); + realpath(exepath, buf); #else strcpy(buf, "./lite"); #endif From d0adb748a67ede460ffcaa9c97a93761106f58e9 Mon Sep 17 00:00:00 2001 From: Ferdinand Prantl Date: Thu, 3 Jun 2021 22:14:50 +0200 Subject: [PATCH 54/88] Flush the SDL_QUIT event when Cmd+W is detected in SDL_KEYDOWN as well (#248) On macos 11.2.3 with sdl 2.0.14 the keyup handler for cmd+w was not enough. Maybe the quit event started to be triggered from the keydown handler? In any case, flushing the quit event there too helped. --- src/api/system.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/api/system.c b/src/api/system.c index 89c037c..bbe0801 100644 --- a/src/api/system.c +++ b/src/api/system.c @@ -152,6 +152,14 @@ top: return 4; case SDL_KEYDOWN: +#ifdef __APPLE__ + /* on macos 11.2.3 with sdl 2.0.14 the keyup handler for cmd+w below + ** was not enough. Maybe the quit event started to be triggered from the + ** keydown handler? In any case, flushing the quit event here too helped. */ + if ((e.key.keysym.sym == SDLK_w) && (e.key.keysym.mod & KMOD_GUI)) { + SDL_FlushEvent(SDL_QUIT); + } +#endif lua_pushstring(L, "keypressed"); lua_pushstring(L, key_name(buf, e.key.keysym.sym)); return 2; @@ -162,8 +170,7 @@ top: ** we want to flush this event and let the keymapper ** handle this key combination. ** Thanks to mathewmariani, taken from his lite-macos github repository. */ - if ((e.key.keysym.sym == SDLK_w) && (e.key.keysym.mod & KMOD_GUI)) - { + if ((e.key.keysym.sym == SDLK_w) && (e.key.keysym.mod & KMOD_GUI)) { SDL_FlushEvent(SDL_QUIT); } #endif From b046afccf9b7294331ec35c4d77f51aab4a7a378 Mon Sep 17 00:00:00 2001 From: Francesco Date: Thu, 3 Jun 2021 22:49:37 +0200 Subject: [PATCH 55/88] Scale fonts context menu (#246) * Retrieve scale plugin from lite-plugins * New implementation of scale plugin and font C API Introduce two new C API functions, renderer.font.get_size and set_size respectively to get the font size and to set the size to a new value. Using these functions we don't need to know the name of the font but we can just change their size. Adapt the scale plugin to use the new C API function with minor adaptations in the logic. Use smaller step to scale fonts. Rename font_desc_free function, previous name was misleading as only the cached resources are freed. * Add contextmenu plugin from takase From https://github.com/takase1121/lite-contextmenu Adapted to show font scaling commands and find/replace commands. i# testing.lua * Fix the cursor flickering with contextmenu To avoid flickering of the cursor when using the context menu we add a new function `core.request_cursor` that just take note of the cursor requested. The cursor will be actually changed only in root_view:draw() method only when all the drawing operations are done. This means the cursor will be changed only once per frame and only the most recent cursor change request will take effect. * Remove unneeded scale plugin return functions --- data/core/init.lua | 5 + data/core/rootview.lua | 14 +- data/plugins/contextmenu.lua | 285 +++++++++++++++++++++++++++++++++++ data/plugins/scale.lua | 100 ++++++++++++ src/api/renderer_font.c | 20 ++- src/fontdesc.c | 3 +- src/fontdesc.h | 2 +- 7 files changed, 421 insertions(+), 8 deletions(-) create mode 100644 data/plugins/contextmenu.lua create mode 100644 data/plugins/scale.lua diff --git a/data/core/init.lua b/data/core/init.lua index a3e6eba..c16307c 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -1073,6 +1073,11 @@ function core.blink_reset() end +function core.request_cursor(value) + core.cursor_change_req = value +end + + function core.on_error(err) -- write error to file local fp = io.open(USERDIR .. "/error.txt", "wb") diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 8b3a91a..b01303c 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -783,7 +783,7 @@ end function RootView:on_mouse_moved(x, y, dx, dy) if core.active_view == core.nag_view then - system.set_cursor("arrow") + core.request_cursor("arrow") core.active_view:on_mouse_moved(x, y, dx, dy) return end @@ -808,14 +808,14 @@ function RootView:on_mouse_moved(x, y, dx, dy) local div = self.root_node:get_divider_overlapping_point(x, y) local tab_index = node and node:get_tab_overlapping_point(x, y) if node and node:get_scroll_button_index(x, y) then - system.set_cursor("arrow") + core.request_cursor("arrow") elseif div then local axis = (div.type == "hsplit" and "x" or "y") if div.a:is_resizable(axis) and div.b:is_resizable(axis) then - system.set_cursor(div.type == "hsplit" and "sizeh" or "sizev") + core.request_cursor(div.type == "hsplit" and "sizeh" or "sizev") end elseif tab_index then - system.set_cursor("arrow") + core.request_cursor("arrow") if self.dragged_node and self.dragged_node ~= tab_index then local tab = node.views[self.dragged_node] table.remove(node.views, self.dragged_node) @@ -823,7 +823,7 @@ function RootView:on_mouse_moved(x, y, dx, dy) self.dragged_node = tab_index end else - system.set_cursor(node.active_view.cursor) + core.request_cursor(node.active_view.cursor) end end @@ -858,6 +858,10 @@ function RootView:draw() local t = table.remove(self.deferred_draws) t.fn(table.unpack(t)) end + if core.cursor_change_req then + system.set_cursor(core.cursor_change_req) + core.cursor_change_req = nil + end end diff --git a/data/plugins/contextmenu.lua b/data/plugins/contextmenu.lua new file mode 100644 index 0000000..e7a27e7 --- /dev/null +++ b/data/plugins/contextmenu.lua @@ -0,0 +1,285 @@ +-- mod-version:1 -- lite-xl 1.16 +local core = require "core" +local common = require "core.common" +local config = require "core.config" +local command = require "core.command" +local keymap = require "core.keymap" +local style = require "core.style" +local Object = require "core.object" +local RootView = require "core.rootview" + +local border_width = 1 +local divider_width = 1 +local DIVIDER = {} + +local ContextMenu = Object:extend() + +function ContextMenu:new() + self.itemset = {} + self.show_context_menu = false + self.selected = -1 + self.height = 0 + self.position = { x = 0, y = 0 } +end + +local function get_item_size(item) + local lw, lh + if item == DIVIDER then + lw = 0 + lh = divider_width + else + lw = style.font:get_width(item.text) + if item.info then + lw = lw + style.padding.x + style.font:get_width(item.info) + end + lh = style.font:get_height() + style.padding.y + end + return lw, lh +end + +function ContextMenu:register(predicate, items) + if type(predicate) == "string" then + predicate = require(predicate) + end + if type(predicate) == "table" then + local class = predicate + predicate = function() return core.active_view:is(class) end + end + + local width, height = 0, 0 --precalculate the size of context menu + for i, item in ipairs(items) do + if item ~= DIVIDER then + item.info = keymap.reverse_map[item.command] + end + local lw, lh = get_item_size(item) + width = math.max(width, lw) + height = height + lh + end + width = width + style.padding.x * 2 + items.width, items.height = width, height + table.insert(self.itemset, { predicate = predicate, items = items }) +end + +function ContextMenu:show(x, y) + self.items = nil + for _, items in ipairs(self.itemset) do + if items.predicate(x, y) then + self.items = items.items + break + end + end + + if self.items then + local w, h = self.items.width, self.items.height + + -- by default the box is opened on the right and below + if x + w >= core.root_view.size.x then + x = x - w + end + if y + h >= core.root_view.size.y then + y = y - h + end + + self.position.x, self.position.y = x, y + self.show_context_menu = true + return true + end + return false +end + +function ContextMenu:hide() + self.show_context_menu = false + self.items = nil + self.selected = -1 + self.height = 0 +end + +function ContextMenu:each_item() + local x, y, w = self.position.x, self.position.y, self.items.width + local oy = y + return coroutine.wrap(function() + for i, item in ipairs(self.items) do + local _, lh = get_item_size(item) + if y - oy > self.height then break end + coroutine.yield(i, item, x, y, w, lh) + y = y + lh + end + end) +end + +function ContextMenu:on_mouse_moved(px, py) + if not self.show_context_menu then return end + + self.selected = -1 + for i, item, x, y, w, h in self:each_item() do + if px > x and px <= x + w and py > y and py <= y + h then + self.selected = i + break + end + end + if self.selected >= 0 then + core.request_cursor("arrow") + end +end + +function ContextMenu:on_selected(item) + if type(item.command) == "string" then + command.perform(item.command) + else + item.command() + end +end + +function ContextMenu:on_mouse_pressed(button, x, y, clicks) + local selected = (self.items or {})[self.selected] + local caught = false + + self:hide() + if button == "left" then + if selected then + self:on_selected(selected) + caught = true + end + end + + if button == "right" then + caught = self:show(x, y) + end + return caught +end + +-- copied from core.docview +function ContextMenu:move_towards(t, k, dest, rate) + if type(t) ~= "table" then + return self:move_towards(self, t, k, dest, rate) + end + local val = t[k] + if not config.transitions or math.abs(val - dest) < 0.5 then + t[k] = dest + else + rate = rate or 0.5 + if config.fps ~= 60 or config.animation_rate ~= 1 then + local dt = 60 / config.fps + rate = 1 - common.clamp(1 - rate, 1e-8, 1 - 1e-8)^(config.animation_rate * dt) + end + t[k] = common.lerp(val, dest, rate) + end + if val ~= dest then + core.redraw = true + end +end + +function ContextMenu:update() + if self.show_context_menu then + self:move_towards("height", self.items.height) + end +end + +function ContextMenu:draw() + if not self.show_context_menu then return end + core.root_view:defer_draw(self.draw_context_menu, self) +end + +function ContextMenu:draw_context_menu() + if not self.items then return end + local bx, by, bw, bh = self.position.x, self.position.y, self.items.width, self.height + + renderer.draw_rect( + bx - border_width, + by - border_width, + bw + (border_width * 2), + bh + (border_width * 2), + style.divider + ) + renderer.draw_rect(bx, by, bw, bh, style.background3) + + for i, item, x, y, w, h in self:each_item() do + if item == DIVIDER then + renderer.draw_rect(x, y, w, h, style.caret) + else + if i == self.selected then + renderer.draw_rect(x, y, w, h, style.selection) + end + + common.draw_text(style.font, style.text, item.text, "left", x + style.padding.x, y, w, h) + if item.info then + common.draw_text(style.font, style.dim, item.info, "right", x, y, w - style.padding.x, h) + end + end + end +end + + +local menu = ContextMenu() +local root_view_on_mouse_pressed = RootView.on_mouse_pressed +local root_view_on_mouse_moved = RootView.on_mouse_moved +local root_view_update = RootView.update +local root_view_draw = RootView.draw + +function RootView:on_mouse_moved(...) + root_view_on_mouse_moved(self, ...) + menu:on_mouse_moved(...) +end + +-- this function is mostly copied from lite-xl's source +function RootView:on_mouse_pressed(button, x,y, clicks) + local div = self.root_node:get_divider_overlapping_point(x, y) + if div then + self.dragged_divider = div + return + end + local node = self.root_node:get_child_overlapping_point(x, y) + if node.hovered_scroll_button > 0 then + node:scroll_tabs(node.hovered_scroll_button) + return + end + local idx = node:get_tab_overlapping_point(x, y) + if idx then + if button == "middle" or node.hovered_close == idx then + node:close_view(self.root_node, node.views[idx]) + else + self.dragged_node = idx + node:set_active_view(node.views[idx]) + end + else + core.set_active_view(node.active_view) + -- send to context menu first + if not menu:on_mouse_pressed(button, x, y, clicks) then + node.active_view:on_mouse_pressed(button, x, y, clicks) + end + end +end + +function RootView:update(...) + root_view_update(self, ...) + menu:update() +end + +function RootView:draw(...) + root_view_draw(self, ...) + menu:draw() +end + +command.add(nil, { + ["context:show"] = function() + menu:show(core.active_view.position.x, core.active_view.position.y) + end +}) + +keymap.add { + ["menu"] = "context:show" +} + +if require("plugins.scale") then + menu:register("core.docview", { + { text = "Font +", command = "scale:increase" }, + { text = "Font -", command = "scale:decrease" }, + { text = "Font Reset", command = "scale:reset" }, + DIVIDER, + { text = "Find", command = "find-replace:find" }, + { text = "Replace", command = "find-replace:replace" }, + DIVIDER, + { text = "Find Pattern", command = "find-replace:find-pattern" }, + { text = "Replace Pattern", command = "find-replace:replace-pattern" }, + }) +end diff --git a/data/plugins/scale.lua b/data/plugins/scale.lua new file mode 100644 index 0000000..1106423 --- /dev/null +++ b/data/plugins/scale.lua @@ -0,0 +1,100 @@ +-- mod-version:1 -- lite-xl 1.16 +local core = require "core" +local common = require "core.common" +local command = require "core.command" +local config = require "core.config" +local keymap = require "core.keymap" +local style = require "core.style" +local RootView = require "core.rootview" +local CommandView = require "core.commandview" + +config.scale_mode = "code" +config.scale_use_mousewheel = true + +local scale_level = 0 +local scale_steps = 0.05 + +local current_scale = SCALE +local default_scale = SCALE + +local function set_scale(scale) + scale = common.clamp(scale, 0.2, 6) + + -- save scroll positions + local scrolls = {} + for _, view in ipairs(core.root_view.root_node:get_children()) do + local n = view:get_scrollable_size() + if n ~= math.huge and not view:is(CommandView) and n > view.size.y then + scrolls[view] = view.scroll.y / (n - view.size.y) + end + end + + local s = scale / current_scale + current_scale = scale + + if config.scale_mode == "ui" then + SCALE = scale + + style.padding.x = style.padding.x * s + style.padding.y = style.padding.y * s + style.divider_size = style.divider_size * s + style.scrollbar_size = style.scrollbar_size * s + style.caret_width = style.caret_width * s + style.tab_width = style.tab_width * s + + for _, name in ipairs {"font", "big_font", "icon_font", "icon_big_font", "code_font"} do + renderer.font.set_size(style[name], s * style[name]:get_size()) + end + else + renderer.font.set_size(style.code_font, s * style.code_font:get_size()) + end + + -- restore scroll positions + for view, n in pairs(scrolls) do + view.scroll.y = n * (view:get_scrollable_size() - view.size.y) + view.scroll.to.y = view.scroll.y + end + + core.redraw = true +end + + +local on_mouse_wheel = RootView.on_mouse_wheel + +function RootView:on_mouse_wheel(d, ...) + if keymap.modkeys["ctrl"] and config.scale_use_mousewheel then + if d < 0 then command.perform "scale:decrease" end + if d > 0 then command.perform "scale:increase" end + else + return on_mouse_wheel(self, d, ...) + end +end + +local function res_scale() + scale_level = 0 + set_scale(default_scale) +end + +local function inc_scale() + scale_level = scale_level + 1 + set_scale(default_scale + scale_level * scale_steps) +end + +local function dec_scale() + scale_level = scale_level - 1 + set_scale(default_scale + scale_level * scale_steps) +end + + +command.add(nil, { + ["scale:reset" ] = function() res_scale() end, + ["scale:decrease"] = function() dec_scale() end, + ["scale:increase"] = function() inc_scale() end, +}) + +keymap.add { + ["ctrl+0"] = "scale:reset", + ["ctrl+-"] = "scale:decrease", + ["ctrl+="] = "scale:increase", +} + diff --git a/src/api/renderer_font.c b/src/api/renderer_font.c index 47ea97a..f510da7 100644 --- a/src/api/renderer_font.c +++ b/src/api/renderer_font.c @@ -65,7 +65,7 @@ static int f_set_tab_size(lua_State *L) { static int f_gc(lua_State *L) { FontDesc *self = luaL_checkudata(L, 1, API_TYPE_FONT); - font_desc_free(self); + font_desc_clear(self); return 0; } @@ -104,6 +104,22 @@ static int f_get_height(lua_State *L) { } +static int f_get_size(lua_State *L) { + FontDesc *self = luaL_checkudata(L, 1, API_TYPE_FONT); + lua_pushnumber(L, self->size); + return 1; +} + + +static int f_set_size(lua_State *L) { + FontDesc *self = luaL_checkudata(L, 1, API_TYPE_FONT); + float new_size = luaL_checknumber(L, 2); + font_desc_clear(self); + self->size = new_size; + return 0; +} + + static const luaL_Reg lib[] = { { "__gc", f_gc }, { "load", f_load }, @@ -112,6 +128,8 @@ static const luaL_Reg lib[] = { { "get_width_subpixel", f_get_width_subpixel }, { "get_height", f_get_height }, { "subpixel_scale", f_subpixel_scale }, + { "get_size", f_get_size }, + { "set_size", f_set_size }, { NULL, NULL } }; diff --git a/src/fontdesc.c b/src/fontdesc.c index d1d0825..44460a6 100644 --- a/src/fontdesc.c +++ b/src/fontdesc.c @@ -18,11 +18,12 @@ void font_desc_init(FontDesc *font_desc, const char *filename, float size, unsig font_desc->cache_last_index = 0; /* Normally no need to initialize. */ } -void font_desc_free(FontDesc *font_desc) { +void font_desc_clear(FontDesc *font_desc) { for (int i = 0; i < font_desc->cache_length; i++) { ren_free_font(font_desc->cache[i].font); } font_desc->cache_length = 0; + font_desc->cache_last_index = 0; } void font_desc_set_tab_size(FontDesc *font_desc, int tab_size) { diff --git a/src/fontdesc.h b/src/fontdesc.h index 2f4702a..bf59180 100644 --- a/src/fontdesc.h +++ b/src/fontdesc.h @@ -26,7 +26,7 @@ void font_desc_init(FontDesc *font_desc, const char *filename, float size, unsig int font_desc_alloc_size(const char *filename); int font_desc_get_tab_size(FontDesc *font_desc); void font_desc_set_tab_size(FontDesc *font_desc, int tab_size); -void font_desc_free(FontDesc *font_desc); +void font_desc_clear(FontDesc *font_desc); RenFont *font_desc_get_font_at_scale(FontDesc *font_desc, int scale); #endif From 29e25a7605f4ebc306737114c016d4bf4a990373 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Fri, 4 Jun 2021 14:05:54 +0200 Subject: [PATCH 56/88] Do not show empty documents when restoring session When a filename cannot be read when restoring a session do not create a document. Previous behavior was to create an empty "unsaved" document. --- data/plugins/workspace.lua | 48 +++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/data/plugins/workspace.lua b/data/plugins/workspace.lua index 25c7f67..7697d31 100644 --- a/data/plugins/workspace.lua +++ b/data/plugins/workspace.lua @@ -29,7 +29,7 @@ local function workspace_files_for(project_dir) end -local function load_workspace_file(project_dir) +local function consume_workspace_file(project_dir) for filename, id in workspace_files_for(project_dir) do local load_f = loadfile(filename) local workspace = load_f and load_f() @@ -99,16 +99,26 @@ end local function load_view(t) if t.type == "doc" then - local ok, doc = pcall(core.open_doc, t.filename) - if not ok then - return DocView(core.open_doc()) + local dv + if not t.filename then + -- document not associated to a file + dv = DocView(core.open_doc()) + if t.text then dv.doc:insert(1, 1, t.text) end + else + -- we have a filename, try to read the file + local ok, doc = pcall(core.open_doc, t.filename) + if ok then + dv = DocView(doc) + end + end + -- doc view "dv" can be nil here if the filename associated to the document + -- cannot be read. + if dv and dv.doc then + dv.doc:set_selection(table.unpack(t.selection)) + dv.last_line, dv.last_col = dv.doc:get_selection() + dv.scroll.x, dv.scroll.to.x = t.scroll.x, t.scroll.x + dv.scroll.y, dv.scroll.to.y = t.scroll.y, t.scroll.y end - local dv = DocView(doc) - if t.text then doc:insert(1, 1, t.text) end - doc:set_selection(table.unpack(t.selection)) - dv.last_line, dv.last_col = doc:get_selection() - dv.scroll.x, dv.scroll.to.x = t.scroll.x, t.scroll.x - dv.scroll.y, dv.scroll.to.y = t.scroll.y, t.scroll.y return dv end return require(t.module)() @@ -141,13 +151,19 @@ end local function load_node(node, t) if t.type == "leaf" then local res - for _, v in ipairs(t.views) do + local active_view + for i, v in ipairs(t.views) do local view = load_view(v) - if v.active then res = view end - node:add_view(view) + if view then + if v.active then res = view end + node:add_view(view) + if t.active_view == i then + active_view = view + end + end end - if t.active_view then - node:set_active_view(node.views[t.active_view]) + if active_view then + node:set_active_view(active_view) end return res else @@ -184,7 +200,7 @@ end local function load_workspace() - local workspace = load_workspace_file(core.project_dir) + local workspace = consume_workspace_file(core.project_dir) if workspace then local root = get_unlocked_root(core.root_view.root_node) local active_view = load_node(root, workspace.documents) From c5acd030a1e1486f9b9ed49adf399a6cc11088c6 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Fri, 4 Jun 2021 14:42:08 +0200 Subject: [PATCH 57/88] Do not save log views in session file --- data/plugins/workspace.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/plugins/workspace.lua b/data/plugins/workspace.lua index 7697d31..77efd7c 100644 --- a/data/plugins/workspace.lua +++ b/data/plugins/workspace.lua @@ -2,6 +2,7 @@ local core = require "core" local common = require "core.common" local DocView = require "core.docview" +local LogView = require "core.logview" local function workspace_files_for(project_dir) @@ -85,6 +86,7 @@ local function save_view(view) text = not view.doc.filename and view.doc:get_text(1, 1, math.huge, math.huge) } end + if mt == LogView then return end for name, mod in pairs(package.loaded) do if mod == mt then return { From 794cf3813aa1eb9534a2775004f46686fd3e1210 Mon Sep 17 00:00:00 2001 From: takase1121 <20792268+takase1121@users.noreply.github.com> Date: Sat, 5 Jun 2021 08:47:32 +0800 Subject: [PATCH 58/88] export context menu --- data/plugins/contextmenu.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/plugins/contextmenu.lua b/data/plugins/contextmenu.lua index e7a27e7..19ed585 100644 --- a/data/plugins/contextmenu.lua +++ b/data/plugins/contextmenu.lua @@ -14,6 +14,8 @@ local DIVIDER = {} local ContextMenu = Object:extend() +ContextMenu.DIVIDER = DIVIDER + function ContextMenu:new() self.itemset = {} self.show_context_menu = false @@ -283,3 +285,5 @@ if require("plugins.scale") then { text = "Replace Pattern", command = "find-replace:replace-pattern" }, }) end + +return menu From cd5c64fe8c7a2aeb086a1d4440961a1fce21f096 Mon Sep 17 00:00:00 2001 From: takase1121 <20792268+takase1121@users.noreply.github.com> Date: Sat, 5 Jun 2021 08:51:17 +0800 Subject: [PATCH 59/88] prevent mouse movement from propagating when context menu is open --- data/plugins/contextmenu.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/plugins/contextmenu.lua b/data/plugins/contextmenu.lua index 19ed585..6a14d04 100644 --- a/data/plugins/contextmenu.lua +++ b/data/plugins/contextmenu.lua @@ -122,6 +122,7 @@ function ContextMenu:on_mouse_moved(px, py) if self.selected >= 0 then core.request_cursor("arrow") end + return true end function ContextMenu:on_selected(item) @@ -219,8 +220,8 @@ local root_view_update = RootView.update local root_view_draw = RootView.draw function RootView:on_mouse_moved(...) + if menu:on_mouse_moved(...) then return end root_view_on_mouse_moved(self, ...) - menu:on_mouse_moved(...) end -- this function is mostly copied from lite-xl's source From 3b816a2b4a0c0543cafdd1c9698aa0a1df53348d Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Fri, 4 Jun 2021 23:58:17 -0400 Subject: [PATCH 60/88] Changed regex error handling, so that errors can be handled gracefully in lua, and made it so gsub returns the exact matches and replacements. --- data/core/regex.lua | 9 +++++---- src/api/regex.c | 8 +++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/data/core/regex.lua b/data/core/regex.lua index a360f0a..19c5916 100644 --- a/data/core/regex.lua +++ b/data/core/regex.lua @@ -6,7 +6,7 @@ regex.__index = function(table, key) return regex[key]; end regex.match = function(pattern_string, string, offset, options) local pattern = type(pattern_string) == "table" and pattern_string or regex.compile(pattern_string) - return regex.cmatch(pattern, string, offset, options) + return regex.cmatch(pattern, string, offset or 1, options or 0) end -- Will iterate back through any UTF-8 bytes so that we don't replace bits @@ -39,11 +39,11 @@ regex.gsub = function(pattern_string, str, replacement) local pattern = type(pattern_string) == "table" and pattern_string or regex.compile(pattern_string) local result, indices = "" - local n = 0 + local matches, replacements = {}, {} repeat indices = { regex.cmatch(pattern, str) } if #indices > 0 then - n = n + 1 + table.insert(matches, indices) local currentReplacement = replacement if #indices > 2 then for i = 1, (#indices/2 - 1) do @@ -55,6 +55,7 @@ regex.gsub = function(pattern_string, str, replacement) end end currentReplacement = string.gsub(currentReplacement, "\\%d", "") + table.insert(replacements, { indices[1], #currentReplacement+indices[1] }) if indices[1] > 1 then result = result .. str:sub(1, previous_character(str, indices[1])) .. currentReplacement @@ -64,6 +65,6 @@ regex.gsub = function(pattern_string, str, replacement) str = str:sub(indices[2]) end until #indices == 0 or indices[1] == indices[2] - return result .. str, n + return result .. str, matches, replacements end diff --git a/src/api/regex.c b/src/api/regex.c index 5245d8c..a5d1760 100644 --- a/src/api/regex.c +++ b/src/api/regex.c @@ -45,9 +45,11 @@ static int f_pcre_compile(lua_State *L) { } PCRE2_UCHAR buffer[256]; pcre2_get_error_message(errorNumber, buffer, sizeof(buffer)); - luaL_error(L, "regex compilation failed at offset %d: %s", - (int)errorOffset, buffer); - return 0; + lua_pushnil(L); + char message[1024]; + len = snprintf(message, sizeof(message), "regex compilation failed at offset %d: %s", (int)errorOffset, buffer); + lua_pushlstring(L, message, len); + return 2; } // Takes string, compiled regex, returns list of indices of matched groups From 090d67f2526f35a8221a45ce543677c2a703c336 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Sat, 5 Jun 2021 00:44:35 -0400 Subject: [PATCH 61/88] Exposed indent function, and made it more flexible. --- data/core/commands/doc.lua | 39 ++------------------------------------ data/core/doc/init.lua | 35 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index 8165b42..b7b389c 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -63,41 +63,6 @@ local function get_line_indent(line, rnd_up) end end --- un/indents text; behaviour varies based on selection and un/indent. --- * if there's a selection, it will stay static around the --- text for both indenting and unindenting. --- * if you are in the beginning whitespace of a line, and are indenting, the --- cursor will insert the exactly appropriate amount of spaces, and jump the --- cursor to the beginning of first non whitespace characters --- * if you are not in the beginning whitespace of a line, and you indent, it --- inserts the appropriate whitespace, as if you typed them normally. --- * if you are unindenting, the cursor will jump to the start of the line, --- and remove the appropriate amount of spaces (or a tab). -local function indent_text(unindent) - local text = get_indent_string() - local line1, col1, line2, col2, swap = doc_multiline_selection(true) - local _, se = doc().lines[line1]:find("^[ \t]+") - local in_beginning_whitespace = col1 == 1 or (se and col1 <= se + 1) - if unindent or doc():has_selection() or in_beginning_whitespace then - local l1d, l2d = #doc().lines[line1], #doc().lines[line2] - for line = line1, line2 do - local e, rnded = get_line_indent(doc().lines[line], unindent) - doc():remove(line, 1, line, (e or 0) + 1) - doc():insert(line, 1, - unindent and rnded:sub(1, #rnded - #text) or rnded .. text) - end - l1d, l2d = #doc().lines[line1] - l1d, #doc().lines[line2] - l2d - if (unindent or in_beginning_whitespace) and not doc():has_selection() then - local start_cursor = (se and se + 1 or 1) + l1d or #(doc().lines[line1]) - doc():set_selection(line1, start_cursor, line2, start_cursor, swap) - else - doc():set_selection(line1, col1 + l1d, line2, col2 + l2d, swap) - end - else - doc():text_input(text) - end -end - local commands = { ["doc:undo"] = function() doc():undo() @@ -206,11 +171,11 @@ local commands = { end, ["doc:indent"] = function() - indent_text() + doc():indent_text(false, doc_multiline_selection(true)) end, ["doc:unindent"] = function() - indent_text(true) + doc():indent_text(true, doc_multiline_selection(true)) end, ["doc:duplicate-lines"] = function() diff --git a/data/core/doc/init.lua b/data/core/doc/init.lua index 39fae9c..4967eed 100644 --- a/data/core/doc/init.lua +++ b/data/core/doc/init.lua @@ -405,6 +405,41 @@ function Doc:select_to(...) self:set_selection(line, col, line2, col2) end + +-- un/indents text; behaviour varies based on selection and un/indent. +-- * if there's a selection, it will stay static around the +-- text for both indenting and unindenting. +-- * if you are in the beginning whitespace of a line, and are indenting, the +-- cursor will insert the exactly appropriate amount of spaces, and jump the +-- cursor to the beginning of first non whitespace characters +-- * if you are not in the beginning whitespace of a line, and you indent, it +-- inserts the appropriate whitespace, as if you typed them normally. +-- * if you are unindenting, the cursor will jump to the start of the line, +-- and remove the appropriate amount of spaces (or a tab). +function Doc:indent_text(unindent, line1, col1, line2, col2, swap) + local text = get_indent_string() + local _, se = self.lines[line1]:find("^[ \t]+") + local in_beginning_whitespace = col1 == 1 or (se and col1 <= se + 1) + if unindent or self:has_selection() or in_beginning_whitespace then + local l1d, l2d = #doc().lines[line1], #self.lines[line2] + for line = line1, line2 do + local e, rnded = get_line_indent(self.lines[line], unindent) + self:remove(line, 1, line, (e or 0) + 1) + self:insert(line, 1, + unindent and rnded:sub(1, #rnded - #text) or rnded .. text) + end + l1d, l2d = #self.lines[line1] - l1d, #self.lines[line2] - l2d + if (unindent or in_beginning_whitespace) and not self:has_selection() then + local start_cursor = (se and se + 1 or 1) + l1d or #(self.lines[line1]) + self:set_selection(line1, start_cursor, line2, start_cursor, swap) + else + self:set_selection(line1, col1 + l1d, line2, col2 + l2d, swap) + end + else + self:text_input(text) + end +end + -- For plugins to add custom actions of document change function Doc:on_text_change(type) end From 2170ab9649cf750b34caa7a7eee42d711d8747c4 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Sat, 5 Jun 2021 00:50:25 -0400 Subject: [PATCH 62/88] Apologies for the subpar previous commit. This fixes the bugs in that one. --- data/core/commands/doc.lua | 16 ---------------- data/core/doc/init.lua | 28 ++++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index b7b389c..2186689 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -47,22 +47,6 @@ local function save(filename) core.log("Saved \"%s\"", saved_filename) end --- returns the size of the original indent, and the indent --- in your config format, rounded either up or down -local function get_line_indent(line, rnd_up) - local _, e = line:find("^[ \t]+") - local soft_tab = string.rep(" ", config.indent_size) - if config.tab_type == "hard" then - local indent = e and line:sub(1, e):gsub(soft_tab, "\t") or "" - return e, indent:gsub(" +", rnd_up and "\t" or "") - else - local indent = e and line:sub(1, e):gsub("\t", soft_tab) or "" - local number = #indent / #soft_tab - return e, indent:sub(1, - (rnd_up and math.ceil(number) or math.floor(number))*#soft_tab) - end -end - local commands = { ["doc:undo"] = function() doc():undo() diff --git a/data/core/doc/init.lua b/data/core/doc/init.lua index 4967eed..88f63a6 100644 --- a/data/core/doc/init.lua +++ b/data/core/doc/init.lua @@ -406,6 +406,29 @@ function Doc:select_to(...) end +local function get_indent_string() + if config.tab_type == "hard" then + return "\t" + end + return string.rep(" ", config.indent_size) +end + +-- returns the size of the original indent, and the indent +-- in your config format, rounded either up or down +local function get_line_indent(line, rnd_up) + local _, e = line:find("^[ \t]+") + local soft_tab = string.rep(" ", config.indent_size) + if config.tab_type == "hard" then + local indent = e and line:sub(1, e):gsub(soft_tab, "\t") or "" + return e, indent:gsub(" +", rnd_up and "\t" or "") + else + local indent = e and line:sub(1, e):gsub("\t", soft_tab) or "" + local number = #indent / #soft_tab + return e, indent:sub(1, + (rnd_up and math.ceil(number) or math.floor(number))*#soft_tab) + end +end + -- un/indents text; behaviour varies based on selection and un/indent. -- * if there's a selection, it will stay static around the -- text for both indenting and unindenting. @@ -420,8 +443,9 @@ function Doc:indent_text(unindent, line1, col1, line2, col2, swap) local text = get_indent_string() local _, se = self.lines[line1]:find("^[ \t]+") local in_beginning_whitespace = col1 == 1 or (se and col1 <= se + 1) - if unindent or self:has_selection() or in_beginning_whitespace then - local l1d, l2d = #doc().lines[line1], #self.lines[line2] + local has_selection = line1 ~= line2 or col1 ~= col2 + if unindent or has_selection or in_beginning_whitespace then + local l1d, l2d = #self.lines[line1], #self.lines[line2] for line = line1, line2 do local e, rnded = get_line_indent(self.lines[line], unindent) self:remove(line, 1, line, (e or 0) + 1) From 130b29438afab472103abcb9715045955e9908b3 Mon Sep 17 00:00:00 2001 From: Takase <20792268+takase1121@users.noreply.github.com> Date: Tue, 8 Jun 2021 04:44:35 +0800 Subject: [PATCH 63/88] Allow creation of nested directories (#254) * allow nested directories to be created * fix / be turned into // * refactor error handling * refactor path splitting and mkdir calls If a path exists it will now return immediately. * fix typo * remove possible trailing empty string * fix bugs with path check --- data/core/commands/files.lua | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/data/core/commands/files.lua b/data/core/commands/files.lua index a0106f4..a366d43 100644 --- a/data/core/commands/files.lua +++ b/data/core/commands/files.lua @@ -1,12 +1,39 @@ local core = require "core" local command = require "core.command" +local function mkdirp(path) + local segments = {} + local pos = 1 + while true do + local s, e = string.find(path, "[/\\]+", pos) + if not s then break end + table.insert(segments, string.sub(str, pos, s - 1)) + pos = e + 1 + end + table.insert(segments, string.sub(str, pos)) + if segments[#segments] == '' then + table.remove(segments) + end + + for i = 1, #segments do + local p = table.concat(segments, PATHSEP, 1, i) + local stat = system.get_file_info(p) + if stat and stat.type == "file" then + return nil, "path exists", p + end + local success, err = system.mkdir(p) + if not success then + return nil, err, p + end + end +end + command.add(nil, { ["files:create-directory"] = function() core.command_view:enter("New directory name", function(text) - local success, err = system.mkdir(text) + local success, err, path = mkdirp(text) if not success then - core.error("cannot create directory %q: %s", text, err) + core.error("cannot create directory %q: %s", path, err) end end) end, From 0fd1fa8872d378b572f07d89d1a4a58c8bafc0e7 Mon Sep 17 00:00:00 2001 From: Takase <20792268+takase1121@users.noreply.github.com> Date: Tue, 8 Jun 2021 05:00:29 +0800 Subject: [PATCH 64/88] Commands refactor (#257) * remove unecessary check * move command registration to core/commands --- data/core/commands/command.lua | 8 +------- data/core/commands/dialog.lua | 34 ++++++++++++++++++++++++++++++++++ data/core/nagview.lua | 34 +--------------------------------- 3 files changed, 36 insertions(+), 40 deletions(-) create mode 100644 data/core/commands/dialog.lua diff --git a/data/core/commands/command.lua b/data/core/commands/command.lua index f0b8007..1a635a8 100644 --- a/data/core/commands/command.lua +++ b/data/core/commands/command.lua @@ -1,13 +1,7 @@ local core = require "core" local command = require "core.command" -local CommandView = require "core.commandview" -local function has_commandview() - return core.active_view:is(CommandView) -end - - -command.add(has_commandview, { +command.add("core.commandview", { ["command:submit"] = function() core.active_view:submit() end, diff --git a/data/core/commands/dialog.lua b/data/core/commands/dialog.lua new file mode 100644 index 0000000..f6df69a --- /dev/null +++ b/data/core/commands/dialog.lua @@ -0,0 +1,34 @@ +local core = require "core" +local command = require "core.command" + +command.add("core.nagview", { + ["dialog:previous-entry"] = function() + local v = core.active_view + local hover = v.hovered_item or 1 + v:change_hovered(hover == 1 and #v.options or hover - 1) + end, + ["dialog:next-entry"] = function() + local v = core.active_view + local hover = v.hovered_item or 1 + v:change_hovered(hover == #v.options and 1 or hover + 1) + end, + ["dialog:select-yes"] = function() + local v = core.active_view + if v ~= core.nag_view then return end + v:change_hovered(findindex(v.options, "default_yes")) + command.perform "dialog:select" + end, + ["dialog:select-no"] = function() + local v = core.active_view + if v ~= core.nag_view then return end + v:change_hovered(findindex(v.options, "default_no")) + command.perform "dialog:select" + end, + ["dialog:select"] = function() + local v = core.active_view + if v.hovered_item then + v.on_selected(v.options[v.hovered_item]) + v:next() + end + end +}) diff --git a/data/core/nagview.lua b/data/core/nagview.lua index accb1a4..1f48d8d 100644 --- a/data/core/nagview.lua +++ b/data/core/nagview.lua @@ -212,36 +212,4 @@ function NagView:show(title, message, options, on_select) if #self.queue > 0 and not self.title then self:next() end end -command.add(NagView, { - ["dialog:previous-entry"] = function() - local v = core.active_view - local hover = v.hovered_item or 1 - v:change_hovered(hover == 1 and #v.options or hover - 1) - end, - ["dialog:next-entry"] = function() - local v = core.active_view - local hover = v.hovered_item or 1 - v:change_hovered(hover == #v.options and 1 or hover + 1) - end, - ["dialog:select-yes"] = function() - local v = core.active_view - if v ~= core.nag_view then return end - v:change_hovered(findindex(v.options, "default_yes")) - command.perform "dialog:select" - end, - ["dialog:select-no"] = function() - local v = core.active_view - if v ~= core.nag_view then return end - v:change_hovered(findindex(v.options, "default_no")) - command.perform "dialog:select" - end, - ["dialog:select"] = function() - local v = core.active_view - if v.hovered_item then - v.on_selected(v.options[v.hovered_item]) - v:next() - end - end, -}) - -return NagView \ No newline at end of file +return NagView From b4896ed69ec537233407d8ae4798167fd3fbe6c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jefferson=20Gonz=C3=A1lez?= Date: Mon, 7 Jun 2021 17:29:03 -0400 Subject: [PATCH 65/88] [plugin/contextmenu] Append itemsets that where registered. (#258) --- data/plugins/contextmenu.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/data/plugins/contextmenu.lua b/data/plugins/contextmenu.lua index 6a14d04..a23d59c 100644 --- a/data/plugins/contextmenu.lua +++ b/data/plugins/contextmenu.lua @@ -64,14 +64,19 @@ end function ContextMenu:show(x, y) self.items = nil + local items_list = { width = 0, height = 0 } for _, items in ipairs(self.itemset) do if items.predicate(x, y) then - self.items = items.items - break + items_list.width = math.max(items_list.width, items.items.width) + items_list.height = items_list.height + items.items.height + for _, subitems in ipairs(items.items) do + table.insert(items_list, subitems) + end end end - if self.items then + if #items_list > 0 then + self.items = items_list local w, h = self.items.width, self.items.height -- by default the box is opened on the right and below From e7d0709828979378f290a0cac4ec03b6fbee3692 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Tue, 8 Jun 2021 12:06:54 +0200 Subject: [PATCH 66/88] Fix error in workspace file error reporting --- data/plugins/workspace.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/plugins/workspace.lua b/data/plugins/workspace.lua index 77efd7c..9c1e20c 100644 --- a/data/plugins/workspace.lua +++ b/data/plugins/workspace.lua @@ -12,7 +12,7 @@ local function workspace_files_for(project_dir) if not info_wsdir then local ok, err = system.mkdir(workspace_dir) if not ok then - error("cannot create workspace directory: %s", err) + error("cannot create workspace directory: \"" .. err .. "\"") end end return coroutine.wrap(function() From ef48d5d48cce2839c8ecc6a5a663e4b956e1de01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Buckwalter?= Date: Tue, 8 Jun 2021 16:13:00 +0200 Subject: [PATCH 67/88] Use `ctrl` for next tab on macos Fixes #261. --- data/core/keymap-macos.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/core/keymap-macos.lua b/data/core/keymap-macos.lua index 0809615..f631ff9 100644 --- a/data/core/keymap-macos.lua +++ b/data/core/keymap-macos.lua @@ -18,8 +18,8 @@ local function keymap_macos(keymap) ["alt+k"] = "root:switch-to-down", ["ctrl+w"] = "root:close", - ["cmd+tab"] = "root:switch-to-next-tab", - ["cmd+shift+tab"] = "root:switch-to-previous-tab", + ["ctrl+tab"] = "root:switch-to-next-tab", + ["ctrl+shift+tab"] = "root:switch-to-previous-tab", ["cmd+pageup"] = "root:move-tab-left", ["cmd+pagedown"] = "root:move-tab-right", ["alt+1"] = "root:switch-to-tab-1", From 29837d0c410ac81500c3c87edc01fbc24914ca57 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Tue, 8 Jun 2021 21:31:09 -0400 Subject: [PATCH 68/88] Replaced fill loop with SDL_FillRect. --- src/renderer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer.c b/src/renderer.c index b08c25d..9be0858 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -309,7 +309,8 @@ void ren_draw_rect(RenRect rect, RenColor color) { int dr = surface->w - (x2 - x1); if (color.a == 0xff) { - rect_draw_loop(color); + SDL_Rect rect = { x1, y1, x2 - x1, y2 - y1 }; + SDL_FillRect(surface, &rect, 255 << 24 | color.r << 16 | color.g << 8 | color.r); } else { rect_draw_loop(blend_pixel(*d, color)); } From 702ab2625cd346deaaacb0545e01836c72fddac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Buckwalter?= Date: Wed, 9 Jun 2021 20:23:40 +0200 Subject: [PATCH 69/88] MacOS modifier key adjustment (replace `alt`) per #262 (#263) * Use `cmd` as modifier key for tab seletion (macos) Part of #262. * Use `cmd+shift` instead of `alt` on macos Fixes #262. --- data/core/keymap-macos.lua | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/data/core/keymap-macos.lua b/data/core/keymap-macos.lua index f631ff9..ccbb102 100644 --- a/data/core/keymap-macos.lua +++ b/data/core/keymap-macos.lua @@ -6,31 +6,31 @@ local function keymap_macos(keymap) ["cmd+n"] = "core:new-doc", ["cmd+shift+c"] = "core:change-project-folder", ["cmd+shift+o"] = "core:open-project-folder", - ["alt+return"] = "core:toggle-fullscreen", + ["cmd+ctrl+return"] = "core:toggle-fullscreen", - ["alt+shift+j"] = "root:split-left", - ["alt+shift+l"] = "root:split-right", - ["alt+shift+i"] = "root:split-up", - ["alt+shift+k"] = "root:split-down", - ["alt+j"] = "root:switch-to-left", - ["alt+l"] = "root:switch-to-right", - ["alt+i"] = "root:switch-to-up", - ["alt+k"] = "root:switch-to-down", + ["cmd+ctrl+shift+j"] = "root:split-left", + ["cmd+ctrl+shift+l"] = "root:split-right", + ["cmd+ctrl+shift+i"] = "root:split-up", + ["cmd+ctrl+shift+k"] = "root:split-down", + ["cmd+ctrl+j"] = "root:switch-to-left", + ["cmd+ctrl+l"] = "root:switch-to-right", + ["cmd+ctrl+i"] = "root:switch-to-up", + ["cmd+ctrl+k"] = "root:switch-to-down", ["ctrl+w"] = "root:close", ["ctrl+tab"] = "root:switch-to-next-tab", ["ctrl+shift+tab"] = "root:switch-to-previous-tab", ["cmd+pageup"] = "root:move-tab-left", ["cmd+pagedown"] = "root:move-tab-right", - ["alt+1"] = "root:switch-to-tab-1", - ["alt+2"] = "root:switch-to-tab-2", - ["alt+3"] = "root:switch-to-tab-3", - ["alt+4"] = "root:switch-to-tab-4", - ["alt+5"] = "root:switch-to-tab-5", - ["alt+6"] = "root:switch-to-tab-6", - ["alt+7"] = "root:switch-to-tab-7", - ["alt+8"] = "root:switch-to-tab-8", - ["alt+9"] = "root:switch-to-tab-9", + ["cmd+1"] = "root:switch-to-tab-1", + ["cmd+2"] = "root:switch-to-tab-2", + ["cmd+3"] = "root:switch-to-tab-3", + ["cmd+4"] = "root:switch-to-tab-4", + ["cmd+5"] = "root:switch-to-tab-5", + ["cmd+6"] = "root:switch-to-tab-6", + ["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", From aa9f16c74ca4aaab43b03a0af8aa91ad11a381a7 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Wed, 9 Jun 2021 18:05:39 -0400 Subject: [PATCH 70/88] Added in #if guard for ARM achitectures. --- src/renderer.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/renderer.c b/src/renderer.c index 9be0858..8cecbcf 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -309,8 +309,12 @@ void ren_draw_rect(RenRect rect, RenColor color) { int dr = surface->w - (x2 - x1); if (color.a == 0xff) { - SDL_Rect rect = { x1, y1, x2 - x1, y2 - y1 }; - SDL_FillRect(surface, &rect, 255 << 24 | color.r << 16 | color.g << 8 | color.r); + #if defined(__arm__) || defined(__aarch64__) + rect_draw_loop(color); + #else + SDL_Rect rect = { x1, y1, x2 - x1, y2 - y1 }; + SDL_FillRect(surface, &rect, SDL_MapRGBA(surface->format, color.r, color.g, color.b, color.a)); + #endif } else { rect_draw_loop(blend_pixel(*d, color)); } From 214e6898df88d1855ae595ea7e76c1e7603bea74 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Wed, 9 Jun 2021 19:34:02 -0400 Subject: [PATCH 71/88] Reverted if guard. --- src/renderer.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/renderer.c b/src/renderer.c index 8cecbcf..cd26968 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -309,12 +309,8 @@ void ren_draw_rect(RenRect rect, RenColor color) { int dr = surface->w - (x2 - x1); if (color.a == 0xff) { - #if defined(__arm__) || defined(__aarch64__) - rect_draw_loop(color); - #else - SDL_Rect rect = { x1, y1, x2 - x1, y2 - y1 }; - SDL_FillRect(surface, &rect, SDL_MapRGBA(surface->format, color.r, color.g, color.b, color.a)); - #endif + SDL_Rect rect = { x1, y1, x2 - x1, y2 - y1 }; + SDL_FillRect(surface, &rect, SDL_MapRGBA(surface->format, color.r, color.g, color.b, color.a)); } else { rect_draw_loop(blend_pixel(*d, color)); } From 9153f5695df5ed0d667fe941d3e173bf8692b384 Mon Sep 17 00:00:00 2001 From: jgmdev Date: Wed, 9 Jun 2021 20:13:23 -0400 Subject: [PATCH 72/88] Added missing NagView dialog commands to startup. --- data/core/command.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/core/command.lua b/data/core/command.lua index 9574306..7915e16 100644 --- a/data/core/command.lua +++ b/data/core/command.lua @@ -59,7 +59,10 @@ end function command.add_defaults() - local reg = { "core", "root", "command", "doc", "findreplace", "files", "drawwhitespace" } + local reg = { + "core", "root", "command", "doc", "findreplace", + "files", "drawwhitespace", "dialog" + } for _, name in ipairs(reg) do require("core.commands." .. name) end From 752ecd5ece0a8797b37a44e12b0cbd69bf7635a0 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Wed, 9 Jun 2021 23:37:03 +0200 Subject: [PATCH 73/88] Group mouse move events from C API function Groups together consecutive mouse move events like done in core.step() lua function but on the C side. It does not introduce any meaningful speedup but it theory is more efficient and simplifies the Lua code. The simplification of the Lua code alone is enough to justify this change? --- data/core/init.lua | 14 +++----------- src/api/system.c | 8 ++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/data/core/init.lua b/data/core/init.lua index c16307c..3f85c6e 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -949,26 +949,18 @@ end function core.step() -- handle events 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 - mouse_moved = true - mouse.x, mouse.y = a, b - mouse.dx, mouse.dy = mouse.dx + c, mouse.dy + d - elseif type == "textinput" and did_keymap then + if type == "textinput" and did_keymap then did_keymap = false + elseif type == "mousemoved" then + core.try(core.on_event, type, a, b, c, d) else local _, res = core.try(core.on_event, type, a, b, c, d) did_keymap = res or did_keymap end core.redraw = true end - if mouse_moved then - core.try(core.on_event, "mousemoved", mouse.x, mouse.y, mouse.dx, mouse.dy) - end local width, height = renderer.get_size() diff --git a/src/api/system.c b/src/api/system.c index bbe0801..d00a9e4 100644 --- a/src/api/system.c +++ b/src/api/system.c @@ -201,6 +201,14 @@ top: return 4; case SDL_MOUSEMOTION: + SDL_PumpEvents(); + SDL_Event event_plus; + while (SDL_PeepEvents(&event_plus, 1, SDL_GETEVENT, SDL_MOUSEMOTION, SDL_MOUSEMOTION) > 0) { + e.motion.x = event_plus.motion.x; + e.motion.y = event_plus.motion.y; + e.motion.xrel += event_plus.motion.xrel; + e.motion.yrel += event_plus.motion.yrel; + } lua_pushstring(L, "mousemoved"); lua_pushnumber(L, e.motion.x); lua_pushnumber(L, e.motion.y); From 0f2ac136d0b8e0a852d53cee05399046fd22fa56 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Fri, 11 Jun 2021 14:57:41 +0200 Subject: [PATCH 74/88] Fix whitespace errors --- src/api/system.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/api/system.c b/src/api/system.c index d00a9e4..4b98509 100644 --- a/src/api/system.c +++ b/src/api/system.c @@ -538,11 +538,11 @@ static int f_fuzzy_match(lua_State *L) { bool files = false; if (lua_gettop(L) > 2 && lua_isboolean(L,3)) files = lua_toboolean(L, 3); - + int score = 0; int run = 0; - - // Match things *backwards*. This allows for better matching on filenames than the above + + // Match things *backwards*. This allows for better matching on filenames than the above // function. For example, in the lite project, opening "renderer" has lib/font_render/build.sh // as the first result, rather than src/renderer.c. Clearly that's wrong. if (files) { From 7ea096247ce0c96a4c04c5fe2ce87e256d1a8c63 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Fri, 11 Jun 2021 23:38:25 +0200 Subject: [PATCH 75/88] documents should not be put into global doc root --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 9b1ab84..3ac0e7a 100644 --- a/meson.build +++ b/meson.build @@ -22,7 +22,7 @@ if get_option('portable') lite_docdir = 'doc' lite_datadir = 'data' else - lite_docdir = 'share/doc' + lite_docdir = 'share/doc/lite-xl' lite_datadir = 'share/lite-xl' endif From f729d7d0081933fd00080ed31eb210d9ecdf44f7 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Sat, 5 Jun 2021 20:46:09 -0400 Subject: [PATCH 76/88] Allows you to drag nodes around splits. --- data/core/rootview.lua | 85 +++++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index b01303c..31268d3 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -129,36 +129,42 @@ function Node:split(dir, view, locked, resizable) return self.b end +function Node:remove_view(root, view, new_active_view) + if #self.views > 1 then + local idx = self:get_view_idx(view) + if idx < self.tab_offset then + self.tab_offset = self.tab_offset - 1 + end + table.remove(self.views, idx) + if new_active_view then + self:set_active_view(self.views[idx] or self.views[#self.views]) + end + else + local parent = self:get_parent_node(root) + local is_a = (parent.a == self) + local other = parent[is_a and "b" or "a"] + if other:get_locked_size() then + self.views = {} + self:add_view(EmptyView()) + else + parent:consume(other) + local p = parent + while p.type ~= "leaf" do + p = p[is_a and "a" or "b"] + end + p:set_active_view(p.active_view) + if self.is_primary_node then + p.is_primary_node = true + end + end + end + core.last_active_view = nil +end function Node:close_view(root, view) local new_active_view = view == self.active_view local do_close = function() - if #self.views > 1 then - local idx = self:get_view_idx(view) - table.remove(self.views, idx) - if new_active_view then - self:set_active_view(self.views[idx] or self.views[#self.views]) - end - else - local parent = self:get_parent_node(root) - local is_a = (parent.a == self) - local other = parent[is_a and "b" or "a"] - if other:get_locked_size() then - self.views = {} - self:add_view(EmptyView()) - else - parent:consume(other) - local p = parent - while p.type ~= "leaf" do - p = p[is_a and "a" or "b"] - end - p:set_active_view(p.active_view) - if self.is_primary_node then - p.is_primary_node = true - end - end - end - core.last_active_view = nil + self:remove_view(root, view, new_active_view) end view:try_close(do_close) end @@ -169,13 +175,13 @@ function Node:close_active_view(root) end -function Node:add_view(view) +function Node:add_view(view, idx) assert(self.type == "leaf", "Tried to add view to non-leaf node") assert(not self.locked, "Tried to add view to locked node") if self.views[1] and self.views[1]:is(EmptyView) then table.remove(self.views) end - table.insert(self.views, view) + table.insert(self.views, idx or (#self.views + 1), view) self:set_active_view(view) end @@ -749,7 +755,7 @@ function RootView:on_mouse_pressed(button, x, y, clicks) if button == "middle" or node.hovered_close == idx then node:close_view(self.root_node, node.views[idx]) else - self.dragged_node = idx + self.dragged_node = { node, idx } node:set_active_view(node.views[idx]) end else @@ -816,15 +822,24 @@ function RootView:on_mouse_moved(x, y, dx, dy) end elseif tab_index then core.request_cursor("arrow") - if self.dragged_node and self.dragged_node ~= tab_index then - local tab = node.views[self.dragged_node] - table.remove(node.views, self.dragged_node) - table.insert(node.views, tab_index, tab) - self.dragged_node = tab_index - end else core.request_cursor(node.active_view.cursor) end + if 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 + local tab = self.dragged_node[1].views[self.dragged_node[2]] + if self.dragged_node[1] ~= node then + self.dragged_node[1]:remove_view(self.root_node, tab) + node:add_view(tab, tab_index) + tab_index = tab_index or #node.views + self.root_node:update_layout() + core.redraw = true + else + table.remove(self.dragged_node[1].views, self.dragged_node[2]) + table.insert(node.views, tab_index, tab) + end + self.dragged_node = { node, tab_index } + end end From a18eeafbc815b2bf3b080eb3776a26de36d2911f Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Sat, 5 Jun 2021 21:55:12 -0400 Subject: [PATCH 77/88] Added in some more checks. --- 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 31268d3..ba64445 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -822,10 +822,10 @@ function RootView:on_mouse_moved(x, y, dx, dy) end elseif tab_index then core.request_cursor("arrow") - else + elseif node then core.request_cursor(node.active_view.cursor) end - if self.dragged_node and (self.dragged_node[1] ~= node or (tab_index and self.dragged_node[2] ~= tab_index)) + 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 local tab = self.dragged_node[1].views[self.dragged_node[2]] if self.dragged_node[1] ~= node then From 66b76f15c290b60a868817905d310443913601cf Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Sat, 12 Jun 2021 14:24:31 -0400 Subject: [PATCH 78/88] Added a check for duplicate tabs, also ensured that the appropriate view is set as active. --- data/core/rootview.lua | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index ba64445..1fd5135 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -129,14 +129,14 @@ function Node:split(dir, view, locked, resizable) return self.b end -function Node:remove_view(root, view, new_active_view) +function Node:remove_view(root, view) if #self.views > 1 then local idx = self:get_view_idx(view) if idx < self.tab_offset then self.tab_offset = self.tab_offset - 1 end table.remove(self.views, idx) - if new_active_view then + if self.active_view == view then self:set_active_view(self.views[idx] or self.views[#self.views]) end else @@ -162,9 +162,8 @@ function Node:remove_view(root, view, new_active_view) end function Node:close_view(root, view) - local new_active_view = view == self.active_view local do_close = function() - self:remove_view(root, view, new_active_view) + self:remove_view(root, view) end view:try_close(do_close) end @@ -829,16 +828,19 @@ function RootView:on_mouse_moved(x, y, dx, dy) 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 - self.dragged_node[1]:remove_view(self.root_node, tab) - node:add_view(tab, tab_index) - tab_index = tab_index or #node.views - self.root_node:update_layout() - core.redraw = true + for i, v in ipairs(node.views) do if v.doc == tab.doc then tab = nil break end end + if tab then + self.dragged_node[1]:remove_view(self.root_node, tab) + node:add_view(tab, tab_index) + self.root_node:update_layout() + self.dragged_node = { node, tab_index or #node.views } + core.redraw = true + end else table.remove(self.dragged_node[1].views, self.dragged_node[2]) table.insert(node.views, tab_index, tab) + self.dragged_node = { node, tab_index } end - self.dragged_node = { node, tab_index } end end From 98164f6d4f7e70d70710804c7baa31a8d93c19b9 Mon Sep 17 00:00:00 2001 From: Francesco Date: Sun, 13 Jun 2021 19:50:42 +0200 Subject: [PATCH 79/88] Integrate mkdirp function in common module (#265) Move the function mkdirp into common to be generally available. Use the new common.mkdirp from create_user_directory() from core/init.lua replacing previous parent directory creation code within the function. The previous mkdirp function did not work on Windows where absolute paths starts with a drive letter. The code from create_user_directory() did not have this problem but was wrong in the way it was creating the nested directories. The new implementation in common.mkdirp fix both problems. --- data/core/commands/files.lua | 30 ++---------------------------- data/core/common.lua | 22 ++++++++++++++++++++++ data/core/init.lua | 21 ++++----------------- 3 files changed, 28 insertions(+), 45 deletions(-) diff --git a/data/core/commands/files.lua b/data/core/commands/files.lua index a366d43..b2fdb33 100644 --- a/data/core/commands/files.lua +++ b/data/core/commands/files.lua @@ -1,37 +1,11 @@ local core = require "core" local command = require "core.command" - -local function mkdirp(path) - local segments = {} - local pos = 1 - while true do - local s, e = string.find(path, "[/\\]+", pos) - if not s then break end - table.insert(segments, string.sub(str, pos, s - 1)) - pos = e + 1 - end - table.insert(segments, string.sub(str, pos)) - if segments[#segments] == '' then - table.remove(segments) - end - - for i = 1, #segments do - local p = table.concat(segments, PATHSEP, 1, i) - local stat = system.get_file_info(p) - if stat and stat.type == "file" then - return nil, "path exists", p - end - local success, err = system.mkdir(p) - if not success then - return nil, err, p - end - end -end +local common = require "core.common" command.add(nil, { ["files:create-directory"] = function() core.command_view:enter("New directory name", function(text) - local success, err, path = mkdirp(text) + local success, err, path = common.mkdirp(text) if not success then core.error("cannot create directory %q: %s", path, err) end diff --git a/data/core/common.lua b/data/core/common.lua index e8a989d..155d4dd 100644 --- a/data/core/common.lua +++ b/data/core/common.lua @@ -273,4 +273,26 @@ function common.relative_path(ref_dir, dir) end +function common.mkdirp(path) + local stat = system.get_file_info(path) + if stat and stat.type then + return false, "path exists", path + end + local subdirs = {} + while path and path ~= "" do + local success_mkdir = system.mkdir(path) + if success_mkdir then break end + local updir, basedir = path:match("(.*)[/\\](.+)$") + table.insert(subdirs, 1, basedir or path) + path = updir + end + for _, dirname in ipairs(subdirs) do + path = path and path .. PATHSEP .. dirname or dirname + if not system.mkdir(path) then + return false, "cannot create directory", path + end + end + return true +end + return common diff --git a/data/core/init.lua b/data/core/init.lua index 3f85c6e..7adb316 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -276,25 +276,12 @@ end -- create a directory using mkdir but may need to create the parent -- directories as well. local function create_user_directory() - local dirname_create = USERDIR - local basedir - local subdirs = {} - while dirname_create and dirname_create ~= "" do - local success_mkdir = system.mkdir(dirname_create) - if success_mkdir then break end - dirname_create, basedir = dirname_create:match("(.*)[/\\](.+)$") - if basedir then - subdirs[#subdirs + 1] = basedir - end - end - for _, dirname in ipairs(subdirs) do - dirname_create = dirname_create .. '/' .. dirname - if not system.mkdir(dirname_create) then - error("cannot create directory: \"" .. dirname_create .. "\"") - end + local success, err = common.mkdirp(USERDIR) + if not success then + error("cannot create directory \"" .. USERDIR .. "\": " .. err) end for _, modname in ipairs {'plugins', 'colors', 'fonts'} do - local subdirname = dirname_create .. '/' .. modname + local subdirname = USERDIR .. PATHSEP .. modname if not system.mkdir(subdirname) then error("cannot create directory: \"" .. subdirname .. "\"") end From e070dbebc143de9bbb21ebfbacb89cc5a2f8d0ff Mon Sep 17 00:00:00 2001 From: jgmdev Date: Sun, 13 Jun 2021 21:28:29 -0400 Subject: [PATCH 80/88] Fix undeclared NagView findindex() by moving it to common. --- data/core/commands/dialog.lua | 5 +++-- data/core/common.lua | 7 +++++++ data/core/nagview.lua | 8 +------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/data/core/commands/dialog.lua b/data/core/commands/dialog.lua index f6df69a..90606ab 100644 --- a/data/core/commands/dialog.lua +++ b/data/core/commands/dialog.lua @@ -1,5 +1,6 @@ local core = require "core" local command = require "core.command" +local common = require "core.common" command.add("core.nagview", { ["dialog:previous-entry"] = function() @@ -15,13 +16,13 @@ command.add("core.nagview", { ["dialog:select-yes"] = function() local v = core.active_view if v ~= core.nag_view then return end - v:change_hovered(findindex(v.options, "default_yes")) + v:change_hovered(common.find_index(v.options, "default_yes")) command.perform "dialog:select" end, ["dialog:select-no"] = function() local v = core.active_view if v ~= core.nag_view then return end - v:change_hovered(findindex(v.options, "default_no")) + v:change_hovered(common.find_index(v.options, "default_no")) command.perform "dialog:select" end, ["dialog:select"] = function() diff --git a/data/core/common.lua b/data/core/common.lua index 155d4dd..b7dd61d 100644 --- a/data/core/common.lua +++ b/data/core/common.lua @@ -22,6 +22,13 @@ function common.round(n) end +function common.find_index(tbl, prop) + for i, o in ipairs(tbl) do + if o[prop] then return i end + end +end + + function common.lerp(a, b, t) if type(a) ~= "table" then return a + (b - a) * t diff --git a/data/core/nagview.lua b/data/core/nagview.lua index 1f48d8d..6d6f89f 100644 --- a/data/core/nagview.lua +++ b/data/core/nagview.lua @@ -170,12 +170,6 @@ function NagView:draw() end end -local function findindex(tbl, prop) - for i, o in ipairs(tbl) do - if o[prop] then return i end - end -end - function NagView:get_message_height() local h = 0 for str in string.gmatch(self.message, "(.-)\n") do @@ -196,7 +190,7 @@ function NagView:next() -- self.target_height is the nagview height needed to display the message and -- the buttons, excluding the top and bottom padding space. self.target_height = math.max(message_height, self:get_buttons_height()) - self:change_hovered(findindex(self.options, "default_yes")) + self:change_hovered(common.find_index(self.options, "default_yes")) end self.force_focus = self.message ~= nil core.set_active_view(self.message ~= nil and self or core.last_active_view) From aed643893e7bb2739eda40653f8d643158d808c0 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Mon, 14 Jun 2021 09:23:04 -0400 Subject: [PATCH 81/88] Fixed contextmenu to play nice with dragging nodes. --- data/plugins/contextmenu.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/plugins/contextmenu.lua b/data/plugins/contextmenu.lua index a23d59c..6320c5f 100644 --- a/data/plugins/contextmenu.lua +++ b/data/plugins/contextmenu.lua @@ -246,7 +246,7 @@ function RootView:on_mouse_pressed(button, x,y, clicks) if button == "middle" or node.hovered_close == idx then node:close_view(self.root_node, node.views[idx]) else - self.dragged_node = idx + self.dragged_node = { node, idx or #node.views } node:set_active_view(node.views[idx]) end else From 2fc245eb696a6495e302d780a291e66217ba8abc Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Mon, 14 Jun 2021 20:33:15 -0400 Subject: [PATCH 82/88] Added in an interface to the scale plugin. --- data/plugins/scale.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/data/plugins/scale.lua b/data/plugins/scale.lua index 1106423..5a1a69b 100644 --- a/data/plugins/scale.lua +++ b/data/plugins/scale.lua @@ -58,6 +58,9 @@ local function set_scale(scale) core.redraw = true end +local function get_scale() + return current_scale +end local on_mouse_wheel = RootView.on_mouse_wheel @@ -98,3 +101,10 @@ keymap.add { ["ctrl+="] = "scale:increase", } +return { + ["set"] = set_scale, + ["get"] = get_scale, + ["increase"] = inc_scale, + ["decrease"] = dec_scale, + ["reset"] = res_scale +} From b39db791f91788eb5bee667f684f1e3503a9a33e Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 17 Jun 2021 10:13:04 +0200 Subject: [PATCH 83/88] Do not duplicate RootView method in contextmenu The method RootView:on_mouse_pressed was copied in the contextmenu plugin with a small modification to intercept the mouse clicks of the active view. This approach is problematic because a relatively large portion of code is duplicated. We introduced a function named RootView.on_view_mouse_pressed to let plugins like contextmenu intercepts mouse clicks in the active area without duplicating the function RootView:on_mouse_pressed. --- data/core/rootview.lua | 10 +++++++++- data/plugins/contextmenu.lua | 37 +++++++----------------------------- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 1fd5135..aa9a40c 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -738,6 +738,12 @@ function RootView:close_all_docviews() end +-- Function to intercept mouse pressed events on the active view. +-- Do nothing by default. +function RootView.on_view_mouse_pressed(button, x, y, clicks) +end + + function RootView:on_mouse_pressed(button, x, y, clicks) local div = self.root_node:get_divider_overlapping_point(x, y) if div then @@ -759,7 +765,9 @@ function RootView:on_mouse_pressed(button, x, y, clicks) end else core.set_active_view(node.active_view) - node.active_view:on_mouse_pressed(button, x, y, clicks) + if not self.on_view_mouse_pressed(button, x, y, clicks) then + node.active_view:on_mouse_pressed(button, x, y, clicks) + end end end diff --git a/data/plugins/contextmenu.lua b/data/plugins/contextmenu.lua index 6320c5f..4de4608 100644 --- a/data/plugins/contextmenu.lua +++ b/data/plugins/contextmenu.lua @@ -219,43 +219,20 @@ end local menu = ContextMenu() -local root_view_on_mouse_pressed = RootView.on_mouse_pressed -local root_view_on_mouse_moved = RootView.on_mouse_moved +local on_view_mouse_pressed = RootView.on_view_mouse_pressed +local on_mouse_moved = RootView.on_mouse_moved local root_view_update = RootView.update local root_view_draw = RootView.draw function RootView:on_mouse_moved(...) if menu:on_mouse_moved(...) then return end - root_view_on_mouse_moved(self, ...) + on_mouse_moved(self, ...) end --- this function is mostly copied from lite-xl's source -function RootView:on_mouse_pressed(button, x,y, clicks) - local div = self.root_node:get_divider_overlapping_point(x, y) - if div then - self.dragged_divider = div - return - end - local node = self.root_node:get_child_overlapping_point(x, y) - if node.hovered_scroll_button > 0 then - node:scroll_tabs(node.hovered_scroll_button) - return - end - local idx = node:get_tab_overlapping_point(x, y) - if idx then - if button == "middle" or node.hovered_close == idx then - node:close_view(self.root_node, node.views[idx]) - else - self.dragged_node = { node, idx or #node.views } - node:set_active_view(node.views[idx]) - end - else - core.set_active_view(node.active_view) - -- send to context menu first - if not menu:on_mouse_pressed(button, x, y, clicks) then - node.active_view:on_mouse_pressed(button, x, y, clicks) - end - end +function RootView.on_view_mouse_pressed(button, x, y, clicks) + -- We give the priority to the menu to process mouse pressed events. + local handled = menu:on_mouse_pressed(button, x, y, clicks) + return handled or on_view_mouse_pressed(button, x, y, clicks) end function RootView:update(...) From 4c9083398a6faa08568f2010a196fceb2dfee582 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 17 Jun 2021 18:23:30 +0200 Subject: [PATCH 84/88] Fix error in dirname computation in TreeView In TreeView:on_mouse_pressed() we need to find the directory a relative filename belongs to from its absolute filename. The code was using string.find to locate the relative filename within the absolute path but in some very specific cases we can find a pattern which is not the right-most one leading to a wrong directory name. Fix the error by adding a loop to make sure we find the right-most match. The standard Lua library has not a string.rfind to make a reverse search. Close #275 --- data/plugins/treeview.lua | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/data/plugins/treeview.lua b/data/plugins/treeview.lua index 8615343..5c2af3c 100644 --- a/data/plugins/treeview.lua +++ b/data/plugins/treeview.lua @@ -222,7 +222,14 @@ function TreeView:on_mouse_pressed(button, x, y, clicks) else if core.project_files_limit and not hovered_item.expanded then local filename, abs_filename = hovered_item.filename, hovered_item.abs_filename - local index = string.find(abs_filename, filename, 1, true) + local index = 0 + -- The loop below is used to find the first match starting from the end + -- in case there are multiple matches. + while index and index + #filename < #abs_filename do + index = string.find(abs_filename, filename, index + 1, true) + end + -- we assume here index is not nil because the abs_filename must contain the + -- relative filename local dirname = string.sub(abs_filename, 1, index - 2) core.scan_project_folder(dirname, filename) self:invalidate_cache(dirname) From 1ad4289e769486388db531a7fd55cc02ee40ed8a Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 17 Jun 2021 19:07:32 +0200 Subject: [PATCH 85/88] Do not try to update topdir folder in treeview If the directory expanded is a project's top directory do not attempt to update its content. Fix again issue #275 --- data/core/init.lua | 10 ++++++++++ data/plugins/treeview.lua | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/data/core/init.lua b/data/core/init.lua index 7adb316..e571e6b 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -195,6 +195,16 @@ local function project_scan_thread() end +function core.is_project_folder(dirname) + for _, dir in ipairs(core.project_directories) do + if dir.name == dirname then + return true + end + end + return false +end + + function core.scan_project_folder(dirname, filename) for _, dir in ipairs(core.project_directories) do if dir.name == dirname then diff --git a/data/plugins/treeview.lua b/data/plugins/treeview.lua index 5c2af3c..8214bda 100644 --- a/data/plugins/treeview.lua +++ b/data/plugins/treeview.lua @@ -231,8 +231,10 @@ function TreeView:on_mouse_pressed(button, x, y, clicks) -- we assume here index is not nil because the abs_filename must contain the -- relative filename local dirname = string.sub(abs_filename, 1, index - 2) - core.scan_project_folder(dirname, filename) - self:invalidate_cache(dirname) + if core.is_project_folder(dirname) then + core.scan_project_folder(dirname, filename) + self:invalidate_cache(dirname) + end end hovered_item.expanded = not hovered_item.expanded end From bdc37f1f6cba10ce3a643e68a19556136866f751 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 17 Jun 2021 16:26:27 -0400 Subject: [PATCH 86/88] Added in remove file function. (#272) * Added in remove file function. * Changed namespace of rename and remove (now delete). --- data/core/commands/doc.lua | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index 2186689..c8c2750 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -238,7 +238,7 @@ local commands = { ["doc:lower-case"] = function() doc():replace(string.lower) end, - + ["doc:go-to-line"] = function() local dv = dv() @@ -297,7 +297,7 @@ local commands = { end end, - ["doc:rename"] = function() + ["file:rename"] = function() local old_filename = doc().filename if not old_filename then core.error("Cannot rename unsaved doc") @@ -312,6 +312,21 @@ local commands = { end end, common.path_suggest) end, + + + ["file:delete"] = function() + local filename = doc().abs_filename + if not filename then + core.error("Cannot remove unsaved doc") + return + end + for i,docview in ipairs(core.get_views_referencing_doc(doc())) do + local node = core.root_view.root_node:get_node_for_view(docview) + node:close_view(core.root_view, docview) + end + os.remove(filename) + core.log("Removed \"%s\"", filename) + end } From 5151e36981abf247d2d45258c5facc53d8f7f4d2 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 17 Jun 2021 17:15:08 -0400 Subject: [PATCH 87/88] Added in the ability to customize the config directory used with the environment variable XDG_CONFIG_HOME. (#271) --- data/core/start.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/core/start.lua b/data/core/start.lua index 513fda2..3ef806c 100644 --- a/data/core/start.lua +++ b/data/core/start.lua @@ -12,7 +12,7 @@ else local prefix = EXEDIR:match("^(.+)[/\\]bin$") DATADIR = prefix and (prefix .. '/share/lite-xl') or (EXEDIR .. '/data') end -USERDIR = HOME and (HOME .. '/.config/lite-xl') or (EXEDIR .. '/user') +USERDIR = os.getenv("XDG_CONFIG_HOME") or (HOME and (HOME .. '/.config/lite-xl') or (EXEDIR .. '/user')) package.path = DATADIR .. '/?.lua;' .. package.path package.path = DATADIR .. '/?/init.lua;' .. package.path From e9e1214e5959303cd87aa61e127fac6ebd1bc270 Mon Sep 17 00:00:00 2001 From: jgmdev Date: Thu, 17 Jun 2021 20:58:22 -0400 Subject: [PATCH 88/88] [plugin/scale] fixed wrong increase and decrease If the user manually set the desired scale by calling scale.set(1.60) the scale_level was not set accordingly which meant that later doing a Scale:Increase/Decrease command yielded incorrect scale amount. --- data/plugins/scale.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/data/plugins/scale.lua b/data/plugins/scale.lua index 5a1a69b..a5f5aae 100644 --- a/data/plugins/scale.lua +++ b/data/plugins/scale.lua @@ -32,6 +32,9 @@ local function set_scale(scale) local s = scale / current_scale current_scale = scale + -- we set scale_level in case this was called by user + scale_level = (scale - default_scale) / scale_steps + if config.scale_mode == "ui" then SCALE = scale @@ -58,7 +61,7 @@ local function set_scale(scale) core.redraw = true end -local function get_scale() +local function get_scale() return current_scale end @@ -101,9 +104,9 @@ keymap.add { ["ctrl+="] = "scale:increase", } -return { - ["set"] = set_scale, - ["get"] = get_scale, +return { + ["set"] = set_scale, + ["get"] = get_scale, ["increase"] = inc_scale, ["decrease"] = dec_scale, ["reset"] = res_scale

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 Yr1kw5THgm~eSb*n`y=YgpLpK?10N51WB>pF literal 0 HcmV?d00001 diff --git a/data/fonts/JetBrainsMono-Regular.ttf b/data/fonts/JetBrainsMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5e3aa31d6cbab3194a963fbf3c238a8242b55ce4 GIT binary patch literal 112172 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 diff --git a/data/fonts/monospace.ttf b/data/fonts/monospace.ttf deleted file mode 100644 index 5919b5d1bf061d687f60300fd7ab774c6b06df50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109212 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 Qit=CXyrr1vyPZG%7iFl@s{jB1 diff --git a/data/user/init.lua b/data/user/init.lua deleted file mode 100644 index a1c6ddd..0000000 --- a/data/user/init.lua +++ /dev/null @@ -1,50 +0,0 @@ --- put user settings here --- this module will be loaded after everything else when the application starts --- it will be automatically reloaded when saved - -local core = require "core" -local keymap = require "core.keymap" -local config = require "core.config" -local style = require "core.style" - ------------------------------- Themes ---------------------------------------- - --- light theme: --- core.reload_module("colors.summer") - ---------------------------- Key bindings ------------------------------------- - --- key binding: --- keymap.add { ["ctrl+escape"] = "core:quit" } - - -------------------------------- Fonts ---------------------------------------- - --- customize fonts: --- style.font = renderer.font.load(DATADIR .. "/fonts/font.ttf", 13 * SCALE) --- style.code_font = renderer.font.load(DATADIR .. "/fonts/monospace.ttf", 12 * SCALE) --- --- font names used by lite: --- style.font : user interface --- style.big_font : big text in welcome screen --- style.icon_font : icons --- style.icon_big_font : toolbar icons --- style.code_font : code --- --- the function to load the font accept a 3rd optional argument like: --- --- {antialiasing="grayscale", hinting="full"} --- --- possible values are: --- antialiasing: grayscale, subpixel --- hinting: none, slight, full - ------------------------------- Plugins ---------------------------------------- - --- enable or disable plugin loading setting config entries: - --- enable trimwhitespace, otherwise it is disable by default: --- config.trimwhitespace = true --- --- disable detectindent, otherwise it is enabled by default --- config.detectindent = false diff --git a/doc/contributors.md b/doc/contributors.md new file mode 100644 index 0000000..4313e46 --- /dev/null +++ b/doc/contributors.md @@ -0,0 +1,43 @@ +## rxi + +Original development of lite editor. + +## Francesco Abbate (franko) + +Creator of lite-xl fork from rxi/lite. + +## Takase (takase1121) + +NagView and X Window database resource query for Xft.dpi setting. + +## Nils Kvist (budRich) + +Popup window replacement with CommandView dialog. + +## liquidev + +Tab style and animations improvements. + +## adamharrison + +Multi-language syntax highlighting and many other improvements. + +## vincens2005 + +Syntax highlighting improvements. + +## Janis-Leuenberger + +Add keymap bindings help file and macOS testing. + +## Mat Mariani (mathewmariani) + +Help for Mac OS port. Some resources taken from mathewmariani/lite-macos. + +## daubaris + +Initial implementation of Xft.dpi query using xrdb command. + +## Robert Štojs (netrobert) + +Continuos integration configuration diff --git a/doc/licenses.md b/doc/licenses.md new file mode 100644 index 0000000..8005c4a --- /dev/null +++ b/doc/licenses.md @@ -0,0 +1,130 @@ +# Licenses + +## rxi/lite + +Copyright (c) 2020 rxi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +## Fira Sans + +Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +## Fira Code + +Copyright (c) 2014, The Fira Code Project Authors (https://github.com/tonsky/FiraCode) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +## JetBrains Mono + +Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +# SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/meson.build b/meson.build index 414c761..9b1ab84 100644 --- a/meson.build +++ b/meson.build @@ -19,8 +19,10 @@ sdl_dep = dependency('sdl2', method: 'config-tool') lite_cargs = [] if get_option('portable') + lite_docdir = 'doc' lite_datadir = 'data' else + lite_docdir = 'share/doc' lite_datadir = 'share/lite-xl' endif @@ -29,6 +31,10 @@ foreach data_module : ['core', 'fonts', 'plugins', 'colors'] install_subdir('data' / data_module , install_dir : lite_datadir) endforeach +foreach file : ['usage.md', 'licenses.md', 'contributors.md', 'default-keymap.md'] + install_data('doc' / file, install_dir : lite_docdir) +endforeach + lite_link_args = [] if cc.get_id() == 'gcc' and get_option('buildtype') == 'release' lite_link_args += ['-static-libgcc', '-static-libstdc++'] From bbc3ea41043a6f365c875c2d9fa04c0ec0b19f68 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Sat, 22 May 2021 18:02:58 +0200 Subject: [PATCH 26/88] Update copyright and version info info.plist --- dev-utils/Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-utils/Info.plist b/dev-utils/Info.plist index 7559156..014e0e3 100644 --- a/dev-utils/Info.plist +++ b/dev-utils/Info.plist @@ -16,8 +16,8 @@ MinimumOSVersion10.13 CFBundleShortVersionString - 1.16.5 + 1.16.10 NSHumanReadableCopyright - © 2019-2021 rxi franko + © 2019-2021 Francesco Abbate From df3e1157d07d6762cf8cf72b743a05a87faf0155 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Sat, 22 May 2021 18:03:30 +0200 Subject: [PATCH 27/88] Add NSDocumentsFolderUsageDescription in info.plist Related to issue #203. Add also NSDesktopFolderUsageDescription. --- dev-utils/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dev-utils/Info.plist b/dev-utils/Info.plist index 014e0e3..8f3e38f 100644 --- a/dev-utils/Info.plist +++ b/dev-utils/Info.plist @@ -15,6 +15,8 @@ NSHighResolutionCapable MinimumOSVersion10.13 + NSDocumentsFolderUsageDescriptionapplication index whole project folders + NSDesktopFolderUsageDescriptionapplication index whole project folders CFBundleShortVersionString 1.16.10 NSHumanReadableCopyright From 81e8c8a22348d9ff944817c1e25553af6c6279d6 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Sat, 22 May 2021 23:31:49 +0200 Subject: [PATCH 28/88] Fix typo --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 1a273ce..19e0522 100644 --- a/changelog.md +++ b/changelog.md @@ -17,7 +17,7 @@ Under very specific situations the application was crashing due to invalid memor Add documentation for keymap binding, thanks to @Janis-Leuenberger. -Added a contibutors page in `doc/contributors.md`. +Added a contributors page in `doc/contributors.md`. ### 1.16.9 From 739763675eb325732505eed9990c41a2551ca35b Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Sat, 22 May 2021 23:32:45 +0200 Subject: [PATCH 29/88] Check the real absolute path of user module Close issue #212 --- data/core/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/core/init.lua b/data/core/init.lua index e2da780..fcadea2 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -1011,7 +1011,8 @@ end core.add_save_hook(function(filename) local doc = core.active_view.doc - if doc and doc:is(Doc) and doc.abs_filename == USERDIR .. PATHSEP .. "init.lua" then + local user_filename = system.absolute_path(USERDIR .. PATHSEP .. "init.lua") + if doc and doc:is(Doc) and doc.abs_filename == user_filename then core.reload_module("core.style") core.load_user_directory() end From 3634c212a9b2222ff50746b2e2b9fe689681feec Mon Sep 17 00:00:00 2001 From: Francesco Date: Sun, 23 May 2021 15:23:04 +0200 Subject: [PATCH 30/88] Add macos access request for Downloads folder Close #203 --- dev-utils/Info.plist | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dev-utils/Info.plist b/dev-utils/Info.plist index 8f3e38f..cc369cd 100644 --- a/dev-utils/Info.plist +++ b/dev-utils/Info.plist @@ -15,8 +15,9 @@ NSHighResolutionCapable MinimumOSVersion10.13 - NSDocumentsFolderUsageDescriptionapplication index whole project folders - NSDesktopFolderUsageDescriptionapplication index whole project folders + NSDocumentsFolderUsageDescriptionTo access, edit and index your projects. + NSDesktopFolderUsageDescriptionTo access, edit and index your projects. + NSDownloadsFolderUsageDescriptionTo access, edit and index your projects. CFBundleShortVersionString 1.16.10 NSHumanReadableCopyright From f17f5a4d6d9cfd45309d1a9214c01753e93a4b60 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Mon, 24 May 2021 15:57:02 +0200 Subject: [PATCH 31/88] Fix problem with filenames missing normalization --- data/core/commands/core.lua | 11 ++++++++--- data/core/common.lua | 4 +++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/data/core/commands/core.lua b/data/core/commands/core.lua index abbe7cb..9b34826 100644 --- a/data/core/commands/core.lua +++ b/data/core/commands/core.lua @@ -89,17 +89,22 @@ command.add(nil, { local view = core.active_view if view.doc and view.doc.abs_filename then local dirname, filename = view.doc.abs_filename:match("(.*)[/\\](.+)$") - core.command_view:set_text(core.normalize_to_project_dir(dirname) .. PATHSEP) + if dirname then + dirname = core.normalize_to_project_dir(dirname) + local text = dirname == core.project_dir and "" or common.home_encode(dirname) .. PATHSEP + core.command_view:set_text(text) + end end core.command_view:enter("Open File", function(text) - core.root_view:open_doc(core.open_doc(common.home_expand(text))) + local filename = system.absolute_path(common.home_expand(text)) + core.root_view:open_doc(core.open_doc(filename)) end, function (text) return common.home_encode_list(common.path_suggest(common.home_expand(text))) end, nil, function(text) local path_stat, err = system.get_file_info(common.home_expand(text)) if err then core.error("Cannot open file %q: %q", text, err) - elseif path_stat.type == 'dir' then + elseif path_stat.type == 'dir' then core.error("Cannot open %q, is a folder", text) else return true diff --git a/data/core/common.lua b/data/core/common.lua index 05f9111..e8a989d 100644 --- a/data/core/common.lua +++ b/data/core/common.lua @@ -206,7 +206,9 @@ end function common.home_encode(text) if HOME and string.find(text, HOME, 1, true) == 1 then local dir_pos = #HOME + 1 - if string.find(text, PATHSEP, dir_pos, true) == dir_pos then + -- ensure we don't replace if the text is just "$HOME" or "$HOME/" so + -- it must have a "/" following the $HOME and some characters following. + if string.find(text, PATHSEP, dir_pos, true) == dir_pos and #text > dir_pos then return "~" .. text:sub(dir_pos) end end From 8acb3fae8c9bdcd1187f9b372f22bda74f67f4f3 Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Mon, 24 May 2021 17:26:16 -0400 Subject: [PATCH 32/88] Fixed minor error that occurs when saving as after viewing a non-doc tab. --- data/core/commands/doc.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index 6acc4e8..938f9c5 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -343,7 +343,7 @@ local commands = { ["doc:save-as"] = function() if doc().filename then core.command_view:set_text(doc().filename) - elseif core.last_active_view then + elseif core.last_active_view and core.last_active_view.doc then local dirname, filename = core.last_active_view.doc.abs_filename:match("(.*)[/\\](.+)$") core.command_view:set_text(core.normalize_to_project_dir(dirname) .. PATHSEP) end From 10fde6e2640329295fc2f8cc9e25f7ca35f00a7a Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Tue, 25 May 2021 23:25:56 +0200 Subject: [PATCH 33/88] Implement lazy loading of directories When the number of files in a project directory is above the max limit switch back to a mechanism to read directory content only when the corresponding folder is expanded in the treeview. When the command core:find-file is invoked the command core:open-file is executed instead because the complete list of the project's files is not available. When a project search is done we search through all the files within the project dir without indexing them. Address issues #217 #203 #183. --- data/core/commands/core.lua | 3 + data/core/init.lua | 172 ++++++++++++++++++++++----------- data/plugins/projectsearch.lua | 13 ++- data/plugins/treeview.lua | 29 ++++-- 4 files changed, 146 insertions(+), 71 deletions(-) diff --git a/data/core/commands/core.lua b/data/core/commands/core.lua index 9b34826..859fb06 100644 --- a/data/core/commands/core.lua +++ b/data/core/commands/core.lua @@ -66,6 +66,9 @@ command.add(nil, { end, ["core:find-file"] = function() + if core.project_files_limit then + return command.perform "core:open-file" + end local files = {} for dir, item in core.get_project_files() do if item.type == "file" then diff --git a/data/core/init.lua b/data/core/init.lua index fcadea2..e8b2673 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -72,6 +72,7 @@ function core.set_project_dir(new_dir, change_project_fn) core.project_directories = {} core.add_project_directory(new_dir) core.project_files = {} + core.project_files_limit = false core.reschedule_project_scan() return true end @@ -99,6 +100,57 @@ local function strip_trailing_slash(filename) return filename end +local function compare_file(a, b) + return a.filename < b.filename +end + +-- "root" will by an absolute path without trailing '/' +-- "path" will be a path starting with '/' and without trailing '/' +-- or the empty string. +-- It will identifies a sub-path within "root. +-- The current path location will therefore always be: root .. path. +-- When recursing "root" will always be the same, only "path" will change. +-- Returns a list of file "items". In eash item the "filename" will be the +-- complete file path relative to "root" *without* the trailing '/'. +local function get_directory_files(root, path, t, recursive, begin_hook) + if begin_hook then begin_hook() end + local size_limit = config.file_size_limit * 10e5 + local all = system.list_dir(root .. path) or {} + local dirs, files = {}, {} + + local entries_count = 0 + local max_entries = config.max_project_files + for _, file in ipairs(all) do + if not common.match_pattern(file, config.ignore_files) then + local file = path .. PATHSEP .. file + local info = system.get_file_info(root .. file) + if info and info.size < size_limit then + info.filename = strip_leading_path(file) + table.insert(info.type == "dir" and dirs or files, info) + entries_count = entries_count + 1 + if recursive and entries_count > max_entries then return nil, entries_count end + end + end + end + + table.sort(dirs, compare_file) + for _, f in ipairs(dirs) do + table.insert(t, f) + if recursive and entries_count <= max_entries then + local subdir_t, subdir_count = get_directory_files(root, PATHSEP .. f.filename, t, recursive) + entries_count = entries_count + subdir_count + f.scanned = true + end + end + + table.sort(files, compare_file) + for _, f in ipairs(files) do + table.insert(t, f) + end + + return t, entries_count +end + local function project_scan_thread() local function diff_files(a, b) if #a ~= #b then return true end @@ -110,65 +162,16 @@ local function project_scan_thread() end end - local function compare_file(a, b) - return a.filename < b.filename - end - - -- "root" will by an absolute path without trailing '/' - -- "path" will be a path starting with '/' and without trailing '/' - -- or the empty string. - -- It will identifies a sub-path within "root. - -- The current path location will therefore always be: root .. path. - -- When recursing "root" will always be the same, only "path" will change. - -- Returns a list of file "items". In eash item the "filename" will be the - -- complete file path relative to "root" *without* the trailing '/'. - local function get_files(root, path, t) - coroutine.yield() - t = t or {} - local size_limit = config.file_size_limit * 10e5 - local all = system.list_dir(root .. path) or {} - local dirs, files = {}, {} - - local entries_count = 0 - local max_entries = config.max_project_files - for _, file in ipairs(all) do - if not common.match_pattern(file, config.ignore_files) then - local file = path .. PATHSEP .. file - local info = system.get_file_info(root .. file) - if info and info.size < size_limit then - info.filename = strip_leading_path(file) - table.insert(info.type == "dir" and dirs or files, info) - entries_count = entries_count + 1 - if entries_count > max_entries then break end - end - end - end - - table.sort(dirs, compare_file) - for _, f in ipairs(dirs) do - table.insert(t, f) - if entries_count <= max_entries then - local subdir_t, subdir_count = get_files(root, PATHSEP .. f.filename, t) - entries_count = entries_count + subdir_count - end - end - - table.sort(files, compare_file) - for _, f in ipairs(files) do - table.insert(t, f) - end - - return t, entries_count - end - while true do -- get project files and replace previous table if the new table is -- different - for i = 1, #core.project_directories do + local i = 1 + while not core.project_files_limit and i <= #core.project_directories do local dir = core.project_directories[i] - local t, entries_count = get_files(dir.name, "") + local t, entries_count = get_directory_files(dir.name, "", {}, true) if diff_files(dir.files, t) then if entries_count > config.max_project_files then + core.project_files_limit = true core.status_view:show_message("!", style.accent, "Too many files in project directory: stopping reading at ".. config.max_project_files.." files according to config.max_project_files. ".. @@ -182,6 +185,7 @@ local function project_scan_thread() if dir.name == core.project_dir then core.project_files = dir.files end + i = i + 1 end -- wait for next scan @@ -190,6 +194,46 @@ local function project_scan_thread() end +function core.scan_project_folder(dirname, filename) + for _, dir in ipairs(core.project_directories) do + if dir.name == dirname then + for i, file in ipairs(dir.files) do + local file = dir.files[i] + if file.filename == filename then + if file.scanned then return end + local new_files = get_directory_files(dirname, PATHSEP .. filename, {}) + for j, new_file in ipairs(new_files) do + table.insert(dir.files, i + j, new_file) + end + file.scanned = true + return + end + end + end + end +end + + +local function find_project_files_co(root, path) + local size_limit = config.file_size_limit * 10e5 + local all = system.list_dir(root .. path) or {} + for _, file in ipairs(all) do + if not common.match_pattern(file, config.ignore_files) then + local file = path .. PATHSEP .. file + local info = system.get_file_info(root .. file) + if info and info.size < size_limit then + info.filename = strip_leading_path(file) + if info.type == "file" then + coroutine.yield(root, info) + else + find_project_files_co(root, PATHSEP .. info.filename) + end + end + end + end +end + + local function project_files_iter(state) local dir = core.project_directories[state.dir_index] state.file_index = state.file_index + 1 @@ -204,17 +248,27 @@ end function core.get_project_files() - local state = { dir_index = 1, file_index = 0 } - return project_files_iter, state + if core.project_files_limit then + return coroutine.wrap(function() + for _, dir in ipairs(core.project_directories) do + find_project_files_co(dir.name, "") + end + end) + else + local state = { dir_index = 1, file_index = 0 } + return project_files_iter, state + end end function core.project_files_number() - local n = 0 - for i = 1, #core.project_directories do - n = n + #core.project_directories[i].files + if not core.project_files_limit then + local n = 0 + for i = 1, #core.project_directories do + n = n + #core.project_directories[i].files + end + return n end - return n end diff --git a/data/plugins/projectsearch.lua b/data/plugins/projectsearch.lua index ed818bf..69a2709 100644 --- a/data/plugins/projectsearch.lua +++ b/data/plugins/projectsearch.lua @@ -170,12 +170,17 @@ function ResultsView:draw() local ox, oy = self:get_content_offset() local x, y = ox + style.padding.x, oy + style.padding.y local files_number = core.project_files_number() - local per = self.last_file_idx / files_number + local per = files_number and self.last_file_idx / files_number or 1 local text if self.searching then - text = string.format("Searching %d%% (%d of %d files, %d matches) for %q...", - per * 100, self.last_file_idx, files_number, - #self.results, self.query) + if files_number then + text = string.format("Searching %d%% (%d of %d files, %d matches) for %q...", + per * 100, self.last_file_idx, files_number, + #self.results, self.query) + else + text = string.format("Searching (%d files, %d matches) for %q...", + self.last_file_idx, #self.results, self.query) + end else text = string.format("Found %d matches for %q", #self.results, self.query) diff --git a/data/plugins/treeview.lua b/data/plugins/treeview.lua index 73f4708..8615343 100644 --- a/data/plugins/treeview.lua +++ b/data/plugins/treeview.lua @@ -93,6 +93,13 @@ function TreeView:get_item_height() end +function TreeView:invalidate_cache(dirname) + for _, v in pairs(self.cache[dirname]) do + v.skip = nil + end +end + + function TreeView:check_cache() -- invalidate cache's skip values if project_files has changed for i = 1, #core.project_directories do @@ -102,9 +109,7 @@ function TreeView:check_cache() self.last[dir.name] = dir.files else if dir.files ~= last_files then - for _, v in pairs(self.cache[dir.name]) do - v.skip = nil - end + self:invalidate_cache(dir.name) self.last[dir.name] = dir.files end end @@ -208,17 +213,25 @@ function TreeView:on_mouse_pressed(button, x, y, clicks) if caught then return end - if not self.hovered_item then + local hovered_item = self.hovered_item + if not hovered_item then return - elseif self.hovered_item.type == "dir" then + elseif hovered_item.type == "dir" then if keymap.modkeys["ctrl"] and button == "left" then - create_directory_in(self.hovered_item) + create_directory_in(hovered_item) else - self.hovered_item.expanded = not self.hovered_item.expanded + if core.project_files_limit and not hovered_item.expanded then + local filename, abs_filename = hovered_item.filename, hovered_item.abs_filename + local index = string.find(abs_filename, filename, 1, true) + local dirname = string.sub(abs_filename, 1, index - 2) + core.scan_project_folder(dirname, filename) + self:invalidate_cache(dirname) + end + hovered_item.expanded = not hovered_item.expanded end else core.try(function() - local doc_filename = common.relative_path(core.project_dir, self.hovered_item.abs_filename) + local doc_filename = common.relative_path(core.project_dir, hovered_item.abs_filename) core.root_view:open_doc(core.open_doc(doc_filename)) end) end From cb610055d0be81ef8de7c9ea4881981351d2d34d Mon Sep 17 00:00:00 2001 From: liquidev Date: Wed, 26 May 2021 19:16:56 +0200 Subject: [PATCH 34/88] support for font changing in the syntax highlighter --- changelog.md | 13 ++++++++++++ data/core/docview.lua | 47 +++++++++++++++++++++++++++++-------------- data/core/style.lua | 7 +++++++ 3 files changed, 52 insertions(+), 15 deletions(-) diff --git a/changelog.md b/changelog.md index 19e0522..4c72c92 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,19 @@ Lite XL is following closely [rxi/lite](https://github.com/rxi/lite) but with so This files document the changes done in Lite XL for each release. +### 1.16.11 + +[#126](https://github.com/franko/lite-xl/issues/126): Implemented changing fonts per syntax group. +Example user module snippet that makes all comments italic: + +```lua +local style = require "core.style" + +-- italic.ttf must be provided by the user +local italic = renderer.font.load("italic.ttf", 14) +style.syntax_fonts["comment"] = italic +``` + ### 1.16.10 Improved syntax highlight system thanks to @liquidev and @adamharrison. diff --git a/data/core/docview.lua b/data/core/docview.lua index 68b242f..070ee0c 100644 --- a/data/core/docview.lua +++ b/data/core/docview.lua @@ -141,29 +141,45 @@ end function DocView:get_col_x_offset(line, col) - local text = self.doc.lines[line] - if not text then return 0 end - return self:get_font():get_width(text:sub(1, col - 1)) + local default_font = self:get_font() + local column = 1 + local xoffset = 0 + for _, type, text in self.doc.highlighter:each_token(line) do + local font = style.syntax_fonts[type] or default_font + for char in common.utf8_chars(text) do + if column == col then + return xoffset / font:subpixel_scale() + end + xoffset = xoffset + font:get_width_subpixel(char) + column = column + #char + end + end + + return xoffset / default_font:subpixel_scale() end function DocView:get_x_offset_col(line, x) - local text = self.doc.lines[line] + local line_text = self.doc.lines[line] local xoffset, last_i, i = 0, 1, 1 - local subpixel_scale = self:get_font():subpixel_scale(); + local default_font = self:get_font() + local subpixel_scale = default_font:subpixel_scale() local x_subpixel = subpixel_scale * x + subpixel_scale / 2 - for char in common.utf8_chars(text) do - local w = self:get_font():get_width_subpixel(char) - if xoffset >= subpixel_scale * x then - return (xoffset - x_subpixel > w / 2) and last_i or i + for _, type, text in self.doc.highlighter:each_token(line) do + local font = style.syntax_fonts[type] or default_font + for char in common.utf8_chars(text) do + local w = font:get_width_subpixel(char) + if xoffset >= subpixel_scale * x then + return (xoffset - x_subpixel > w / 2) and last_i or i + end + xoffset = xoffset + w + last_i = i + i = i + #char end - xoffset = xoffset + w - last_i = i - i = i + #char end - return #text + return #line_text end @@ -308,11 +324,12 @@ end function DocView:draw_line_text(idx, x, y) - local font = self:get_font() - local subpixel_scale = font:subpixel_scale() + local default_font = self:get_font() + local subpixel_scale = default_font:subpixel_scale() local tx, ty = subpixel_scale * x, y + self:get_line_text_y_offset() for _, type, text in self.doc.highlighter:each_token(idx) do local color = style.syntax[type] + local font = style.syntax_fonts[type] or default_font if config.draw_whitespace then tx = renderer.draw_text_subpixel(font, text, tx, ty, color, core.replacements, style.syntax.comment) else diff --git a/data/core/style.lua b/data/core/style.lua index bce8c07..7001cdc 100644 --- a/data/core/style.lua +++ b/data/core/style.lua @@ -57,4 +57,11 @@ style.syntax["string"] = { common.color "#f7c95c" } style.syntax["operator"] = { common.color "#93DDFA" } style.syntax["function"] = { common.color "#93DDFA" } +-- This can be used to override fonts per syntax group. +-- The syntax highlighter will take existing values from this table and +-- override style.code_font on a per-token basis, so you can choose to eg. +-- render comments in an italic font if you want to. +style.syntax_fonts = {} +-- style.syntax_fonts["comment"] = renderer.font.load(path_to_font, size_of_font, rendering_options) + return style From f1a4bf82187836e93f7a650cf01e696dff7d45da Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Wed, 26 May 2021 17:52:01 -0400 Subject: [PATCH 35/88] Changed to multiline select. --- data/core/commands/doc.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/core/commands/doc.lua b/data/core/commands/doc.lua index 938f9c5..9b5b086 100644 --- a/data/core/commands/doc.lua +++ b/data/core/commands/doc.lua @@ -102,7 +102,7 @@ end -- and remove the appropriate amount of spaces (or a tab). local function indent_text(unindent) local text = get_indent_string() - local line1, col1, line2, col2, swap = doc():get_selection(true) + local line1, col1, line2, col2, swap = doc_multiline_selection(true) local _, se = doc().lines[line1]:find("^[ \t]+") local in_beginning_whitespace = col1 == 1 or (se and col1 <= se + 1) if unindent or doc():has_selection() or in_beginning_whitespace then From 1394c53dbc9f5ded2c41486b28619ad9816f3aaf Mon Sep 17 00:00:00 2001 From: Janis-Leuenberger <50821376+Janis-Leuenberger@users.noreply.github.com> Date: Thu, 27 May 2021 08:28:58 +0200 Subject: [PATCH 36/88] Improve user feedback for big directories (#223) --- data/core/config.lua | 2 +- data/core/init.lua | 9 ++++----- doc/usage.md | 7 +++++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/data/core/config.lua b/data/core/config.lua index 74ca3d2..36a67ad 100644 --- a/data/core/config.lua +++ b/data/core/config.lua @@ -3,7 +3,7 @@ local config = {} config.project_scan_rate = 5 config.fps = 60 config.max_log_items = 80 -config.message_timeout = 3 +config.message_timeout = 5 config.mouse_wheel_scroll = 50 * SCALE config.file_size_limit = 10 config.ignore_files = "^%." diff --git a/data/core/init.lua b/data/core/init.lua index e8b2673..0e2f46c 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -173,11 +173,10 @@ local function project_scan_thread() if entries_count > config.max_project_files then core.project_files_limit = true core.status_view:show_message("!", style.accent, - "Too many files in project directory: stopping reading at ".. - config.max_project_files.." files according to config.max_project_files. ".. - "Either tweak this variable, or ignore certain files/directories by ".. - "using the config.ignore_files variable in your user plugin or ".. - "project config.") + "Too many files in project directory: stopped reading at ".. + config.max_project_files.." files. For more information see ".. + "usage.md at github.com/franko/lite-xl." + ) end dir.files = t core.redraw = true diff --git a/doc/usage.md b/doc/usage.md index d92ea70..90f6dc8 100644 --- a/doc/usage.md +++ b/doc/usage.md @@ -71,6 +71,13 @@ The project module can be edited by running the `core:open-project-module` command — if the module does not exist for the current project when the command is run it will be created. +## Big directories +Often projects contain compiled, bundled or downloaded files which you don't want to edit. These files can be excluded from projects by configuring `config.ignore_files`. Such a configuration might look like `config.ignore_files = { "^%.", "node_modules" }`. This will exclude the `node_modules` folder and any file starting with `.`. You can add this to a user or project module. + +If a project has more files than the maximum (configured with `config.max_project_files`) lite-xl will switch to a different mode where files are lazily loaded. + +_Note: Because of lazy loading `core:find-file` will open `core:open-file` instead._ + ## Add directories to a project In addition to the project directories it is possible to add other directories From 934f12cdedf1d81f9e88a2932a062fac23427d1a Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 27 May 2021 09:02:19 +0200 Subject: [PATCH 37/88] Fix bug with titleview close button not working The bug was actually due to a presence of a ghost tab scrolling button in all the views. We need to check if the node has multiple views, if not there are no tabs and therefore no scrolling button areas so we return nothing from the method Node:get_scroll_button_index(). Close #216 --- data/core/rootview.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/data/core/rootview.lua b/data/core/rootview.lua index 7cdc78c..fff7a6e 100644 --- a/data/core/rootview.lua +++ b/data/core/rootview.lua @@ -272,6 +272,7 @@ end function Node:get_scroll_button_index(px, py) + if #self.views == 1 then return 0 end for i = 1, 2 do local x, y, w, h = self:get_scroll_button_rect(i) if px >= x and px < x + w and py >= y and py < y + h then From fe828b6ed936dcd8d7db3d9b5cc4c1ab87108e42 Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 27 May 2021 13:46:51 +0200 Subject: [PATCH 38/88] Update changelog and release number --- changelog.md | 16 +++++++++++++--- data/core/start.lua | 5 ++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/changelog.md b/changelog.md index 4c72c92..eb20374 100644 --- a/changelog.md +++ b/changelog.md @@ -1,10 +1,14 @@ -Lite XL is following closely [rxi/lite](https://github.com/rxi/lite) but with some enhancements. - This files document the changes done in Lite XL for each release. ### 1.16.11 -[#126](https://github.com/franko/lite-xl/issues/126): Implemented changing fonts per syntax group. +When opening directories with too many files lite-xl now keep diplaying files and directories in the treeview. +The application remains functional and the directories can be explored without using too much memory. +In this operating mode the files of the project are not indexed so the command "Core: Find File" will act as the "Core: Open File" command. +The "Project Search: Find" will work by searching all the files present in the project directory even if they are not indexed. + +Implemented changing fonts per syntax group by @liquidev. + Example user module snippet that makes all comments italic: ```lua @@ -15,6 +19,12 @@ local italic = renderer.font.load("italic.ttf", 14) style.syntax_fonts["comment"] = italic ``` +Improved indentation behavior by @adamharrison. + +Fix bug with close button not working in borderless window mode. + +Fix problem with normalization of filename for opened documents. + ### 1.16.10 Improved syntax highlight system thanks to @liquidev and @adamharrison. diff --git a/data/core/start.lua b/data/core/start.lua index 17e12bd..513fda2 100644 --- a/data/core/start.lua +++ b/data/core/start.lua @@ -1,6 +1,5 @@ --- this file is used by lite-xl to setup the Lua environment --- when starting -VERSION = "1.16.10" +-- this file is used by lite-xl to setup the Lua environment when starting +VERSION = "1.16.11" MOD_VERSION = "1" SCALE = tonumber(os.getenv("LITE_SCALE")) or SCALE From ad7d17caca549bcb87d369e88fef485ff7bcfa3b Mon Sep 17 00:00:00 2001 From: Francesco Abbate Date: Thu, 27 May 2021 13:49:33 +0200 Subject: [PATCH 39/88] Use FiraSans regular for UI --- data/core/init.lua | 2 +- data/core/style.lua | 4 ++-- data/fonts/FiraSans-Medium.ttf | Bin 296032 -> 0 bytes 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 data/fonts/FiraSans-Medium.ttf diff --git a/data/core/init.lua b/data/core/init.lua index 0e2f46c..2cb3a87 100644 --- a/data/core/init.lua +++ b/data/core/init.lua @@ -327,7 +327,7 @@ local style = require "core.style" ------------------------------- Fonts ---------------------------------------- -- customize fonts: --- style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Medium.ttf", 13 * SCALE) +-- style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf", 13 * SCALE) -- style.code_font = renderer.font.load(DATADIR .. "/fonts/JetBrainsMono-Regular.ttf", 13 * SCALE) -- -- font names used by lite: diff --git a/data/core/style.lua b/data/core/style.lua index 7001cdc..60df7c7 100644 --- a/data/core/style.lua +++ b/data/core/style.lua @@ -21,8 +21,8 @@ style.tab_width = common.round(170 * SCALE) -- -- On High DPI monitor or non RGB monitor you may consider using antialiasing grayscale instead. -- The antialiasing grayscale with full hinting is interesting for crisp font rendering. -style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Medium.ttf", 13 * SCALE) -style.big_font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Medium.ttf", 40 * SCALE) +style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf", 13 * SCALE) +style.big_font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf", 40 * SCALE) style.icon_font = renderer.font.load(DATADIR .. "/fonts/icons.ttf", 14 * SCALE, {antialiasing="grayscale", hinting="full"}) style.icon_big_font = renderer.font.load(DATADIR .. "/fonts/icons.ttf", 20 * SCALE, {antialiasing="grayscale", hinting="full"}) style.code_font = renderer.font.load(DATADIR .. "/fonts/JetBrainsMono-Regular.ttf", 13 * SCALE) diff --git a/data/fonts/FiraSans-Medium.ttf b/data/fonts/FiraSans-Medium.ttf deleted file mode 100644 index fb9c257cf0ad60841b37c03c587134ca727f84b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296032 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