From 76aa22472d2bd1a1f444ac0e4ebd13d1edfc1784 Mon Sep 17 00:00:00 2001 From: Barrett Ruth <62671086+barrettruth@users.noreply.github.com> Date: Wed, 4 Mar 2026 17:49:30 -0500 Subject: [PATCH] refactor(config): default icons to ascii (#55) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(config): default icons to ascii Problem: default icons used unicode characters (○, ✓, ●, ▸, ·, ↺) which render poorly in some terminals and font configurations. Solution: replace defaults with ascii equivalents (-, x, !, >, ., ~). Users can still override to unicode or nerd font icons via config. * ci: ignore library type checking --- .luarc.json | 1 + README.md | 8 ++++---- doc/pending.txt | 12 ++++++------ lua/pending/config.lua | 12 ++++++------ scripts/demo-init.lua | 9 --------- spec/icons_spec.lua | 22 +++++++++++----------- 6 files changed, 28 insertions(+), 36 deletions(-) diff --git a/.luarc.json b/.luarc.json index 3f6276a..c8eaaf9 100644 --- a/.luarc.json +++ b/.luarc.json @@ -2,6 +2,7 @@ "runtime.version": "LuaJIT", "runtime.path": ["lua/?.lua", "lua/?/init.lua"], "diagnostics.globals": ["vim", "jit"], + "diagnostics.libraryFiles": "Disable", "workspace.library": [ "$VIMRUNTIME/lua", "${3rd}/luv/library", diff --git a/README.md b/README.md index f6add96..5d57bcb 100644 --- a/README.md +++ b/README.md @@ -26,18 +26,18 @@ luarocks install pending.nvim ## Icons -pending.nvim renders task status and metadata using configurable icon characters. The defaults use plain unicode (no nerd font required): +pending.nvim renders task status and metadata using configurable icon characters. The defaults are ASCII-only (no unicode or nerd font required): ```lua vim.g.pending = { icons = { - pending = '○', done = '✓', priority = '●', - header = '▸', due = '·', recur = '↺', category = '#', + pending = '-', done = 'x', priority = '!', + header = '>', due = '.', recur = '~', category = '#', }, } ``` -See `:help pending.Icons` for nerd font examples. +See `:help pending.Icons` for unicode and nerd font examples. ## Acknowledgements diff --git a/doc/pending.txt b/doc/pending.txt index 5543516..b811288 100644 --- a/doc/pending.txt +++ b/doc/pending.txt @@ -664,12 +664,12 @@ Fields: ~ {icons} (table) *pending.Icons* Icon characters displayed in the buffer. Fields: - {pending} Uncompleted task icon. Default: '○' - {done} Completed task icon. Default: '✓' - {priority} Priority task icon. Default: '●' - {header} Category header prefix. Default: '▸' - {due} Due date prefix. Default: '·' - {recur} Recurrence prefix. Default: '↺' + {pending} Uncompleted task icon. Default: '-' + {done} Completed task icon. Default: 'x' + {priority} Priority task icon. Default: '!' + {header} Category header prefix. Default: '>' + {due} Due date prefix. Default: '.' + {recur} Recurrence prefix. Default: '~' {category} Category label prefix. Default: '#' ============================================================================== diff --git a/lua/pending/config.lua b/lua/pending/config.lua index 153c71f..dfc3052 100644 --- a/lua/pending/config.lua +++ b/lua/pending/config.lua @@ -82,12 +82,12 @@ local defaults = { }, sync = {}, icons = { - pending = '○', - done = '✓', - priority = '●', - header = '▸', - due = '·', - recur = '↺', + pending = '-', + done = 'x', + priority = '!', + header = '>', + due = '.', + recur = '~', category = '#', }, } diff --git a/scripts/demo-init.lua b/scripts/demo-init.lua index f2a6213..57da080 100644 --- a/scripts/demo-init.lua +++ b/scripts/demo-init.lua @@ -4,15 +4,6 @@ vim.fn.mkdir(tmpdir, 'p') vim.g.pending = { data_path = tmpdir .. '/tasks.json', - icons = { - pending = '○', - done = '✓', - priority = '●', - header = '▸', - due = '·', - recur = '↺', - category = '#', - }, } local store = require('pending.store') diff --git a/spec/icons_spec.lua b/spec/icons_spec.lua index fe3288f..d6569cc 100644 --- a/spec/icons_spec.lua +++ b/spec/icons_spec.lua @@ -15,23 +15,23 @@ describe('icons', function() it('has default icon values', function() local icons = config.get().icons - assert.equals('○', icons.pending) - assert.equals('✓', icons.done) - assert.equals('●', icons.priority) - assert.equals('▸', icons.header) - assert.equals('·', icons.due) - assert.equals('↺', icons.recur) + assert.equals('-', icons.pending) + assert.equals('x', icons.done) + assert.equals('!', icons.priority) + assert.equals('>', icons.header) + assert.equals('.', icons.due) + assert.equals('~', icons.recur) assert.equals('#', icons.category) end) it('allows overriding individual icons', function() - vim.g.pending = { icons = { pending = '-', done = 'x' } } + vim.g.pending = { icons = { pending = '○', done = '✓' } } config.reset() local icons = config.get().icons - assert.equals('-', icons.pending) - assert.equals('x', icons.done) - assert.equals('●', icons.priority) - assert.equals('▸', icons.header) + assert.equals('○', icons.pending) + assert.equals('✓', icons.done) + assert.equals('!', icons.priority) + assert.equals('>', icons.header) end) it('allows overriding all icons', function()