summaryrefslogtreecommitdiff
path: root/ar/.config/TheSiahxyz/lua/thesiahxyz/utils/tasks.lua
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-06-19 18:34:13 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-06-19 18:34:13 +0900
commit307fceea38b7352a79b0bdb87025a34b76973867 (patch)
tree382eb3e6a11973bc2c6ba33eee14d43ec2a9566b /ar/.config/TheSiahxyz/lua/thesiahxyz/utils/tasks.lua
parentb66f68b8c014a3041c936ee9de1b57db5bcb50fb (diff)
updates
Diffstat (limited to 'ar/.config/TheSiahxyz/lua/thesiahxyz/utils/tasks.lua')
-rw-r--r--ar/.config/TheSiahxyz/lua/thesiahxyz/utils/tasks.lua227
1 files changed, 0 insertions, 227 deletions
diff --git a/ar/.config/TheSiahxyz/lua/thesiahxyz/utils/tasks.lua b/ar/.config/TheSiahxyz/lua/thesiahxyz/utils/tasks.lua
deleted file mode 100644
index 34d5636..0000000
--- a/ar/.config/TheSiahxyz/lua/thesiahxyz/utils/tasks.lua
+++ /dev/null
@@ -1,227 +0,0 @@
--- ~/.config/nvim/lua/user_functions/tasks.lua
-local M = {}
-
--- Import the create_floating_scratch function from utils.lua
-local utils = require("thesiahxyz.utils.utils")
-
-function M.create_or_update_task()
- local current_line = vim.fn.getline(".")
- local cursor_pos = vim.fn.col(".")
- local file_path = vim.fn.expand("%:p") -- Get full path of current file
- local line_number = vim.fn.line(".") -- Get current line number
-
- -- Keywords we are looking for
- local keywords = { "TODO", "HACK", "NOTE", "PERF", "TEST", "WARN" }
-
- for _, keyword in ipairs(keywords) do
- local start_index, end_index = string.find(current_line, keyword)
- if start_index then
- local task_description = string.sub(current_line, end_index + 2, cursor_pos - 1)
- task_description = string.gsub(task_description, "%(siah%)", "")
- local task_tag = "+" .. string.lower(keyword)
-
- -- Ask for project and other tags
- local project = vim.fn.input("Enter project name: ")
- local additional_tags_input = vim.fn.input("Enter additional tags separated by spaces: ")
- local additional_tags = {}
-
- -- Prefix each additional tag with a "+"
- for tag in additional_tags_input:gmatch("%S+") do
- table.insert(additional_tags, "+" .. tag)
- end
-
- -- Prepare the task command
- local task_cmd = string.format('task add %s "%s"', task_tag, task_description)
-
- -- Add additional tags if available
- if #additional_tags > 0 then
- task_cmd = task_cmd .. " " .. table.concat(additional_tags, " ")
- end
-
- -- Add project if available
- if project and #project > 0 then
- task_cmd = task_cmd .. " project:" .. project
- end
-
- -- Execute the task add command
- local output = vim.fn.system(task_cmd)
- print("Output: ", output)
-
- for line in output:gmatch("[^\r\n]+") do
- local task_id = string.match(line, "Created task (%d+)%.")
- if task_id then
- print("Task ID extracted: ", task_id)
-
- -- Annotate task with filename and line number in the nvimline format
- local annotation = string.format("nvimline:%s:%s", line_number, file_path)
- local annotate_cmd = string.format('task %s annotate "%s"', task_id, annotation)
- local annotate_output = vim.fn.system(annotate_cmd)
-
- print("Annotation output: ", annotate_output)
- return
- else
- print("Failed to extract task ID")
- end
- end
- end
- end
-end
-
-vim.api.nvim_set_keymap(
- "i",
- "<C-t>",
- "<cmd>lua require('thesiahxyz.utils.tasks').create_or_update_task()<cr>",
- { noremap = true, silent = true, desc = "Create/Update task" }
-)
-
-function M.mark_task_done()
- -- Get the current line and parse it
- local line = vim.api.nvim_get_current_line()
- print("Original line: ", line)
-
- -- Uncomment the line
- vim.cmd("normal! gcc")
- line = vim.api.nvim_get_current_line()
- -- Remove (piotr1215) from the line
- line = string.gsub(line, "%s*%(siah%)%s*", " ")
- print("Uncommented line: ", line)
-
- local patterns = { "TODO:", "HACK:", "NOTE:", "PERF:", "TEST:", "WARN:" }
- local taskDescription = nil
- for _, pattern in ipairs(patterns) do
- local start_idx = string.find(line, pattern)
- if start_idx then
- taskDescription = string.sub(line, start_idx + string.len(pattern) + 1)
- break
- end
- end
- print("Task description: ", taskDescription or "nil")
-
- -- If a task description was found, mark it as done
- if taskDescription then
- local output = vim.fn.system("yes | task description~'" .. taskDescription .. "' done")
- print("Command output: ", output)
- -- Check the command's output to make sure the task was marked done
- if string.find(output, "Completed") then
- -- Delete the current line
- vim.cmd([[normal dd]])
- end
- end
-end
-
-vim.api.nvim_set_keymap(
- "n",
- "<localleader>td",
- "<Cmd>lua require('thesiahxyz.utils.tasks').mark_task_done()<CR>",
- { noremap = true, silent = true, desc = "Mark task done" }
-)
-
-function M.go_to_task_in_taskwarrior_tui()
- -- Get the current line and save it as the original line
- local original_line = vim.api.nvim_get_current_line()
-
- -- Uncomment the line
- vim.cmd("normal! gcc")
- local uncommented_line = vim.api.nvim_get_current_line()
-
- local patterns = { "TODO:", "HACK:", "NOTE:", "PERF:", "TEST:", "WARN:" }
- local taskDescription = nil
-
- for _, pattern in ipairs(patterns) do
- local start_idx = string.find(uncommented_line, pattern)
- if start_idx then
- taskDescription = string.sub(uncommented_line, start_idx + string.len(pattern) + 1)
- taskDescription = string.sub(taskDescription, 1, 50)
- break
- end
- end
-
- -- If a task description was found, use it to go to the task in taskwarrior-tui
- if taskDescription then
- -- print("Sleeping for 2 seconds before tmux switch...")
- -- vim.cmd("sleep 2") -- sleep for 2 seconds
- local output = vim.fn.system(" ~/.local/bin/opentasktui '" .. taskDescription .. "'")
- end
-
- -- Replace the line back with the original
- vim.api.nvim_set_current_line(original_line)
-end
-
-vim.api.nvim_set_keymap(
- "n",
- "<localleader>tt",
- "<Cmd>lua require('thesiahxyz.utils.tasks').go_to_task_in_taskwarrior_tui()<CR>",
- { noremap = true, silent = true, desc = "Open taskwarrior-tui" }
-)
-
-function M.process_task_list(start_line, end_line, ...)
- local args = { ... }
- local modifiers = table.concat(args, " ")
- local lines
-
- -- If no range is provided, use the entire buffer.
- if not start_line or not end_line then
- start_line, end_line = 1, vim.api.nvim_buf_line_count(0)
- end
-
- lines = vim.api.nvim_buf_get_lines(0, start_line - 1, end_line, false)
-
- local new_lines = { "#!/bin/sh", "set -e" }
-
- for _, line in ipairs(lines) do
- local trimmed_line = line:gsub("^[•*%-%+]+%s*", "")
- local links = {}
-
- trimmed_line = trimmed_line:gsub("(https?://[%w%.%-%_/&%?=%~]+)", function(link)
- table.insert(links, link)
- return ""
- end)
-
- if #trimmed_line > 0 then
- -- No more "\n" before "# Adding task:"; instead, just ensure it's a new entry in the table.
- table.insert(new_lines, "") -- Ensure there's an empty line before adding a new task if desired.
- table.insert(new_lines, "# Adding task: " .. trimmed_line)
- table.insert(
- new_lines,
- "output=$(task add " .. (modifiers ~= "" and modifiers .. " " or "") .. '"' .. trimmed_line .. '")'
- )
- table.insert(
- new_lines,
- 'task_id=$(echo "$output" | grep -o "Created task [0-9]*." | cut -d " " -f 3 | tr -d ".")'
- )
-
- for _, link in ipairs(links) do
- table.insert(new_lines, "task $task_id annotate -- " .. link)
- end
- end
- end
-
- -- Call the create_floating_scratch function from utils.lua
- utils.create_floating_scratch(new_lines)
-end
-
-function M.my_custom_complete(arg_lead, cmd_line, cursor_pos)
- -- This is your list of arguments.
- local items = { "project:", "due:", "+next", "duration:" }
-
- -- Filter the items based on the argument lead.
- local matches = {}
- for _, item in ipairs(items) do
- if item:find(arg_lead) == 1 then
- table.insert(matches, item)
- end
- end
-
- return matches
-end
-
-vim.api.nvim_create_user_command("ProcessTaskList", function(input)
- M.process_task_list(1, vim.api.nvim_buf_line_count(0), unpack(input.fargs))
-end, {
- nargs = "*",
- complete = function(arg_lead, cmd_line, cursor_pos)
- -- Call the custom completion function
- return M.my_custom_complete(arg_lead, cmd_line, cursor_pos)
- end,
-})
-return M