Rendering

October 20, 2025 ยท View on GitHub

These are some built-in task formatting functions and a library of useful pieces that you can use to build your own formats.

format_standard(task)

format_standard(task): overseer.TextChunk[]
The default format for tasks in the task list

ParamTypeDesc
taskoverseer.Task

Returns:

TypeDesc
overseer.TextChunk[][]

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      return require("overseer.render").format_standard(task)
    end,
  },
})

format_compact(task)

format_compact(task): overseer.TextChunk[]
A more compact format for tasks

ParamTypeDesc
taskoverseer.Task

Returns:

TypeDesc
overseer.TextChunk[][]

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      return require("overseer.render").format_compact(task)
    end,
  },
})

format_verbose(task)

format_verbose(task): overseer.TextChunk[]
A more verbose format for tasks

ParamTypeDesc
taskoverseer.Task

Returns:

TypeDesc
overseer.TextChunk[][]

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      return require("overseer.render").format_verbose(task)
    end,
  },
})

status(task)

status(task): overseer.TextChunk[]
Text chunks that display the status of a task

ParamTypeDesc
taskoverseer.Task

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return {
        render.status(task),
        { { task.name, "OverseerTask" } },
      }
    end,
  },
})

name(task)

name(task): overseer.TextChunk[]
Text chunks that display the name of a task

ParamTypeDesc
taskoverseer.Task

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return {
        render.name(task),
      }
    end,
  },
})

status_and_name(task)

status_and_name(task): overseer.TextChunk[]
Text chunks that display the status and name of a task

ParamTypeDesc
taskoverseer.Task

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return {
        render.status_and_name(task),
      }
    end,
  },
})

cmd(task)

cmd(task): overseer.TextChunk[]
Text chunks that display the command that was run

ParamTypeDesc
taskoverseer.Task

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return {
        { { task.name, "OverseerTask" } },
        render.cmd(task),
      }
    end,
  },
})

result_lines(task, opts)

result_lines(task, opts): overseer.TextChunk[]
Lines that display the result of a task

ParamTypeDesc
taskoverseer.Task
optsnil|{oneline?: boolean}

Returns:

TypeDesc
overseer.TextChunk[][]

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return vim.list_extend({
        { { task.name, "OverseerTask" } },
      }, render.result_lines(task, { oneline = false }))
    end,
  },
})

duration(task, opts)

duration(task, opts): overseer.TextChunk[]
Text chunks that display how long a task has been running / ran for

ParamTypeDesc
taskoverseer.Task
optsnil|{hl_group?: string}

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return {
        { { task.name, "OverseerTask" } },
        render.duration(task),
      }
    end,
  },
})

time_since_completed(task, opts)

time_since_completed(task, opts): overseer.TextChunk[]
Text chunks that display the time since a task was completed

ParamTypeDesc
taskoverseer.Task
optsnil|{hl_group?: string}

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return {
        { { task.name, "OverseerTask" } },
        render.time_since_completed(task),
      }
    end,
  },
})

output_lines(task, opts)

output_lines(task, opts): overseer.TextChunk[]
Lines that display the last few lines of output from a task

ParamTypeDesc
taskoverseer.Task
optsnil|{num_lines?: integer, prefix?: string, prefix_hl_group?: string}

Returns:

TypeDesc
overseer.TextChunk[][]

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return vim.list_extend({
        { { task.name, "OverseerTask" } },
      }, render.output_lines(task, { num_lines = 3, prefix = "$ " }))
    end,
  },
})

source_lines(task, opts)

source_lines(task, opts): overseer.TextChunk[]
Lines that display the source of a wrapped vim.system or vim.fn.jobstart task

ParamTypeDesc
taskoverseer.Task
optsnil|{hl_group?: string}

Returns:

TypeDesc
overseer.TextChunk[][]

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return vim.list_extend({
        { { task.name, "OverseerTask" } },
      }, render.source_lines(task, { num_lines = 3, prefix = "$ " }))
    end,
  },
})

join(a, b, sep)

join(a, b, sep): overseer.TextChunk[]
Join two lists of text chunks together with a separator

ParamTypeDesc
aoverseer.TextChunk[]
boverseer.TextChunk[]
sepnil|string|overseer.TextChunk

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      return {
        render.join(render.status(task), render.name(task), ": "),
      }
    end,
  },
})

remove_empty_lines(lines)

remove_empty_lines(lines): overseer.TextChunk[]
Removes empty lines from a list of lines (each line is a list of text chunks)

ParamTypeDesc
linesoverseer.TextChunk[][]

Returns:

TypeDesc
overseer.TextChunk[][]

Examples:

require("overseer").setup({
  task_list = {
    render = function(task)
      local render = require("overseer.render")
      local ret = vim.list_extend({
        { { task.name, "OverseerTask" } },
      }, render.output_lines(task, { num_lines = 3, prefix = "$ " }))
      return render.remove_empty_lines(ret)
    end,
  },
})