refactor: remove file token feature

Problem: The file metadata token (file:<path>:<line>) was implemented
but is no longer wanted.

Solution: Remove all traces — parse.lua token parsing, diff.lua
reconciliation, views.lua LineMeta field, buffer.lua virtual text and
PendingFile highlight, complete.lua omnifunc trigger, init.lua
goto_file/add_here functions and -file edit token, plugin keymaps
<Plug>(pending-goto-file) and <Plug>(pending-add-here), config.lua
goto_file keymap field, vimdoc FILE TOKEN section, and
spec/file_spec.lua.
This commit is contained in:
Barrett Ruth 2026-02-26 22:38:35 -05:00
parent 0e0568769d
commit 904be4e910
10 changed files with 6 additions and 597 deletions

View file

@ -324,15 +324,6 @@ function M._setup_buf_mappings(bufnr)
end
end
local goto_key = km.goto_file
if goto_key == nil then
goto_key = 'gf'
end
if goto_key and goto_key ~= false then
vim.keymap.set('n', goto_key --[[@as string]], function()
M.goto_file()
end, opts)
end
end
---@param bufnr integer
@ -664,10 +655,6 @@ local function parse_edit_token(token)
if token == '-rec' or token == '-' .. rk then
return 'recur', vim.NIL, nil
end
if token == '-file' then
return 'file_clear', true, nil
end
local due_val = token:match('^' .. vim.pesc(dk) .. ':(.+)$')
if due_val then
local resolved = parse.resolve_date(due_val)
@ -711,11 +698,10 @@ local function parse_edit_token(token)
.. dk
.. ':<date>, cat:<name>, '
.. rk
.. ':<pattern>, file:<path>:<line>, +!, -!, -'
.. ':<pattern>, +!, -!, -'
.. dk
.. ', -cat, -'
.. rk
.. ', -file'
end
---@param id_str string
@ -795,9 +781,6 @@ function M.edit(id_str, rest)
elseif field == 'priority' then
updates.priority = value
table.insert(feedback, value == 1 and 'priority added' or 'priority removed')
elseif field == 'file_clear' then
updates.file_clear = true
table.insert(feedback, 'file reference removed')
end
end
@ -810,17 +793,6 @@ function M.edit(id_str, rest)
s:update(id, updates)
if updates.file_clear then
local t = s:get(id)
if t and t._extra then
t._extra.file = nil
if next(t._extra) == nil then
t._extra = nil
end
t.modified = os.date('!%Y-%m-%dT%H:%M:%SZ') --[[@as string]]
end
end
s:save()
local bufnr = buffer.bufnr()
@ -831,91 +803,6 @@ function M.edit(id_str, rest)
vim.notify('Task #' .. id .. ' updated: ' .. table.concat(feedback, ', '))
end
---@return nil
function M.goto_file()
local bufnr = vim.api.nvim_get_current_buf()
if vim.bo[bufnr].filetype ~= 'pending' then
return
end
local lnum = vim.api.nvim_win_get_cursor(0)[1]
local meta = buffer.meta()
local m = meta and meta[lnum]
if not m or m.type ~= 'task' then
vim.notify('No task on this line', vim.log.levels.WARN)
return
end
local task = get_store():get(m.id)
if not task or not task._extra or not task._extra.file then
vim.notify('No file attached to this task', vim.log.levels.WARN)
return
end
local file_spec = task._extra.file
local rel_path, line_str = file_spec:match('^(.+):(%d+)$')
if not rel_path then
vim.notify('Invalid file spec: ' .. file_spec, vim.log.levels.ERROR)
return
end
local data_dir = vim.fn.fnamemodify(get_store().path, ':h')
local abs_path = data_dir .. '/' .. rel_path
if vim.fn.filereadable(abs_path) == 0 then
vim.notify('File not found: ' .. abs_path, vim.log.levels.ERROR)
return
end
vim.cmd.edit(abs_path)
local lnum_target = tonumber(line_str) or 1
vim.api.nvim_win_set_cursor(0, { lnum_target, 0 })
end
---@return nil
function M.add_here()
local cur_bufnr = vim.api.nvim_get_current_buf()
if vim.bo[cur_bufnr].filetype == 'pending' then
vim.notify('Already in pending buffer', vim.log.levels.WARN)
return
end
local cur_file = vim.api.nvim_buf_get_name(cur_bufnr)
if cur_file == '' or vim.fn.filereadable(cur_file) == 0 then
vim.notify('Not editing a readable file', vim.log.levels.ERROR)
return
end
local cur_lnum = vim.api.nvim_win_get_cursor(0)[1]
local s = get_store()
local data_dir = vim.fn.fnamemodify(s.path, ':h')
local abs_file = vim.fn.fnamemodify(cur_file, ':p')
local rel_file
if abs_file:sub(1, #data_dir + 1) == data_dir .. '/' then
rel_file = abs_file:sub(#data_dir + 2)
else
rel_file = abs_file
end
local file_spec = rel_file .. ':' .. cur_lnum
s:load()
local tasks = s:active_tasks()
if #tasks == 0 then
vim.notify('No active tasks', vim.log.levels.INFO)
return
end
local items = {}
for _, task in ipairs(tasks) do
table.insert(items, task)
end
vim.ui.select(items, {
prompt = 'Attach file to task:',
format_item = function(task)
return '[' .. task.id .. '] ' .. task.description
end,
}, function(task)
if not task then
return
end
task._extra = task._extra or {}
task._extra.file = file_spec
task.modified = os.date('!%Y-%m-%dT%H:%M:%SZ') --[[@as string]]
s:save()
vim.notify('Attached ' .. file_spec .. ' to task ' .. task.id)
end)
end
---@return nil
function M.init()
local path = vim.fn.getcwd() .. '/.pending.json'