Skip to content

Commit

Permalink
lua: drop redrawtime option
Browse files Browse the repository at this point in the history
This hasn't worked in almost a year and even if it did it makes no
sense. Based on my testing lexing takes a couple milliseconds at most.
If it took 1 second (the default value for this option) vis would be
completely unusable.

If people want support for this it should be submitted upstream and vis
will act based on the outcome of that.

closes #1122: lexer no longer obeys redrawtime
  • Loading branch information
rnpnr committed Oct 30, 2023
1 parent 1eaeccc commit 26b59c9
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 18 deletions.
16 changes: 1 addition & 15 deletions lua/vis-std.lua
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,6 @@ vis:option_register("horizon", "number", function(horizon)
return true
end, "Number of bytes to consider for syntax highlighting")

vis:option_register("redrawtime", "string", function(redrawtime)
if not vis.win then return false end
local value = tonumber(redrawtime)
if not value or value <= 0 then
vis:info("A positive real number expected")
return false
end
vis.win.redrawtime = value
return true
end, "Seconds to wait for syntax highlighting before aborting it")

vis.events.subscribe(vis.events.WIN_HIGHLIGHT, function(win)
if not win.syntax or not vis.lexers.load then return end
local lexer = vis.lexers.load(win.syntax, nil, true)
Expand All @@ -67,19 +56,16 @@ vis.events.subscribe(vis.events.WIN_HIGHLIGHT, function(win)
-- TODO: improve heuristic for initial style
local viewport = win.viewport
if not viewport then return end
local redrawtime_max = win.redrawtime or 1.0
local horizon_max = win.horizon or 32768
local horizon = viewport.start < horizon_max and viewport.start or horizon_max
local view_start = viewport.start
local lex_start = viewport.start - horizon
viewport.start = lex_start
local data = win.file:content(viewport)
local token_styles = lexer._TAGS
local tokens, timedout = lexer:lex(data, 1, redrawtime_max)
local tokens = lexer:lex(data, 1)
local token_end = lex_start + (tokens[#tokens] or 1) - 1

if timedout then return end

for i = #tokens - 1, 1, -2 do
local token_start = lex_start + (tokens[i-1] or 1) - 1
if token_end < view_start then
Expand Down
3 changes: 0 additions & 3 deletions man/vis.1
Original file line number Diff line number Diff line change
Expand Up @@ -1379,9 +1379,6 @@ Highlight a fixed column.
.It Ic horizon Op Ar 32768
How many bytes back the lexer will look to synchronize parsing.
.
.It Ic redrawtime Op Ar 1.0
Maximum time (in seconds) to wait for syntax highlighting before aborting it.
.
.It Ic theme Op Do default-16 Dc or Do default-256 Dc
Color theme to use, name without file extension.
Loaded from a
Expand Down

0 comments on commit 26b59c9

Please sign in to comment.