diff options
Diffstat (limited to 'runtime/lua/nvim/tutor.lua')
| -rw-r--r-- | runtime/lua/nvim/tutor.lua | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/runtime/lua/nvim/tutor.lua b/runtime/lua/nvim/tutor.lua index 97bfbbb2d0..fb6693024c 100644 --- a/runtime/lua/nvim/tutor.lua +++ b/runtime/lua/nvim/tutor.lua @@ -16,6 +16,30 @@ local tutor_hl_ns = vim.api.nvim_create_namespace('nvim.tutor.hl') local M = {} +-- Extract inline comments into metadata. +-- Example: "This is wrong. [[This is right.]]" => { '1' = 'This is right.'} +function M.load_metadata() + ---@type table<string, string|-1> + local data = {} + local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false) + + for i, line in ipairs(lines) do + local text, expected_text = line:match('^(.-)%s%[%[(.-)%]%]$') + + if text then + if expected_text == '-1' then + data[tostring(i)] = -1 + else + data[tostring(i)] = expected_text + end + lines[i] = text + end + end + + vim.b.tutor_metadata = { expect = data } + vim.api.nvim_buf_set_lines(0, 0, -1, false, lines) +end + ---@param line integer 1-based local function check_line(line) if vim.b.tutor_metadata and vim.b.tutor_metadata.expect and vim.b.tutor_extmarks then |