Skip to content

Commit

Permalink
Update buffer-specific settings for all buffers on reset.
Browse files Browse the repository at this point in the history
This is analagous to updating view-specific settings for all views on reset.
  • Loading branch information
orbitalquark committed May 16, 2023
1 parent aa63854 commit b3b10d7
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
5 changes: 3 additions & 2 deletions core/lexer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -144,12 +144,13 @@ events.connect(events.STYLE_NEEDED, function(end_pos, buffer)
end
end)

-- Gives new buffers lexer-specific functions and sets a default lexer.
-- Gives new buffers lexer-specific functions and sets a default lexer (or resets the current
-- one on reset).
events.connect(events.BUFFER_NEW, function()
rawset(buffer, 'property', setmetatable({}, {__index = function() return '' end}))
buffer.get_lexer, buffer.set_lexer = get_lexer, set_lexer
buffer.name_of_style, buffer.style_of_name = name_of_style, style_of_name
set_lexer(buffer, 'text')
set_lexer(buffer, not rawget(buffer, 'lexer') and 'text' or buffer.lexer._name)
end)

--- Refreshes styles for the buffer's lexer.
Expand Down
25 changes: 13 additions & 12 deletions init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -100,18 +100,6 @@ events.connect(events.INITIALIZED, function()
ui.command_entry:set_theme(theme) -- env/nil
end)
end)
-- On reset, cycle through buffers, resetting the lexers, and cycle through views, simulating
-- `events.VIEW_NEW` event to update themes, colors, and styles.
events.connect(events.RESET_AFTER, function()
for _, buffer in ipairs(_BUFFERS) do
buffer:set_lexer(buffer.lexer._name)
buffer:colorize(1, 1) -- signal re-lexing is needed
end
for i = 1, #_VIEWS do
ui.goto_view(1)
events.emit(events.VIEW_NEW)
end
end)

-- Default buffer and view settings.

Expand Down Expand Up @@ -328,3 +316,16 @@ events.connect(events.VIEW_NEW, function()
for _, code in utf8.codes('LTUZ') do view:clear_cmd_key(code | (CTRL | SHIFT) << 16) end
load_view_settings()
end, 1)

-- On reset, cycle through buffers and views, simulating `events.BUFFER_NEW` and `events.VIEW_NEW`
-- events to update settings, themes, colors, and styles.
events.connect(events.RESET_AFTER, function()
for i = 1, #_BUFFERS do
events.emit(events.BUFFER_NEW)
view:goto_buffer(1)
end
for i = 1, #_VIEWS do
events.emit(events.VIEW_NEW)
ui.goto_view(1)
end
end, 1)

0 comments on commit b3b10d7

Please sign in to comment.