Skip to content

Commit a4cbe90

Browse files
authored
Merge pull request #3257 from obsidian-tasks-group/fix-issue-3256
fix: Remove console error when line is deleted by 'Toggle task done' command
2 parents 083fdbd + ccd292b commit a4cbe90

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

β€Žsrc/Commands/ToggleDone.tsβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ export const toggleLine = (line: string, path: string): EditorInsertion => {
7575
});
7676
if (task !== null) {
7777
const lines = task.toggleWithRecurrenceInUsersOrder().map((t) => t.toFileLineString());
78-
return { text: lines.join('\n'), moveTo: { line: lines.length - 1 } };
78+
const newLineNumber = lines.length > 0 ? lines.length - 1 : 0;
79+
return { text: lines.join('\n'), moveTo: { line: newLineNumber } };
7980
} else {
8081
// If the task is null this means that we have one of:
8182
// 1. a regular checklist item

β€Žtests/Commands/ToggleDone.test.tsβ€Ž

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,40 @@ describe('ToggleDone', () => {
182182
);
183183
});
184184

185+
describe('on completion', () => {
186+
it('should delete a self-deleting task - cursor at start of line', () => {
187+
// Issue #3256 - traceback occurred.
188+
testToggleLine(
189+
// Force linebreak
190+
'|- [ ] #task Delete me 🏁 delete',
191+
'|',
192+
);
193+
});
194+
195+
it('should delete a self-deleting task - cursor at end of line', () => {
196+
// Issue #3256 - traceback occurred.
197+
testToggleLine(
198+
// Force linebreak
199+
'- [ ] #task Delete me 🏁 delete|',
200+
'|',
201+
);
202+
});
203+
204+
it('should discard completed recurring task - cursor at start of line', () => {
205+
testToggleLine(
206+
'|- [ ] #task Delete my completed task πŸ” every day 🏁 delete ⏳ 2024-12-31',
207+
'|- [ ] #task Delete my completed task πŸ” every day 🏁 delete ⏳ 2025-01-01',
208+
);
209+
});
210+
211+
it('should discard completed recurring task - cursor at end of line', () => {
212+
testToggleLine(
213+
'- [ ] #task Delete my completed task πŸ” every day 🏁 delete ⏳ 2024-12-31|',
214+
'- [ ] #task Delete my completed task πŸ” every day 🏁 delete ⏳ 2025-01-01|',
215+
);
216+
});
217+
});
218+
185219
describe('should honour next status character', () => {
186220
afterEach(() => {
187221
GlobalFilter.getInstance().reset();

0 commit comments

Comments
Β (0)