From 33bda5899bb4847fbf2b95c4273cc3117e6c8386 Mon Sep 17 00:00:00 2001 From: Duane Johnson Date: Thu, 15 Oct 2020 11:18:58 -0600 Subject: [PATCH 1/2] Add note severity hashtags #low, #medium, #high Fixes #7 --- images/gutter-high.png | Bin 0 -> 4076 bytes images/gutter-low.png | Bin 0 -> 4116 bytes images/gutter-medium.png | Bin 0 -> 2990 bytes src/decorator.ts | 84 ++++++++++++++++++++++++++++++--------- src/note.ts | 24 +++++++++++ 5 files changed, 90 insertions(+), 18 deletions(-) create mode 100644 images/gutter-high.png create mode 100644 images/gutter-low.png create mode 100644 images/gutter-medium.png diff --git a/images/gutter-high.png b/images/gutter-high.png new file mode 100644 index 0000000000000000000000000000000000000000..963d0b68c0fcccd0fab4337239ad04b6044300b4 GIT binary patch literal 4076 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 newSeverity) { + newSeverity = noteSeverity; + } + return [ { range: new vscode.Range( @@ -111,6 +156,9 @@ export class Decorator { return; } + // reset gutter icon, if necessary + this.maybeReloadGutterDecorator(newSeverity); + editor.setDecorations(this.lineDecorator!, lineProps); editor.setDecorations(this.gutterDecorator!, gutterProps); } diff --git a/src/note.ts b/src/note.ts index 2b6bd68..41cb169 100644 --- a/src/note.ts +++ b/src/note.ts @@ -10,6 +10,13 @@ export interface Props { notePath: string; } +export enum Severity { + Default = 0, + Low = 1, + Medium = 2, + High = 3 +} + export class Note implements Props { fsPath: string; from: number; @@ -26,6 +33,10 @@ export class Note implements Props { // "[" or "]" or [match, file, from] static lineLinkMatcher = /\[|\]|(?:([^\s#]*)#L?(\d+)(?:-L?(\d+))?)/g; + // extract note severity from note body + // e.g. #high #medium #low + static severityMatcher = /#(high|medium|low)/i; + constructor(props: Props) { // e.g. $PROJECT_ROOT/path/to/file.js this.fsPath = props.fsPath; @@ -122,6 +133,19 @@ export class Note implements Props { return buffer.toString(); } + async readSeverity(): Promise { + const found = (await this.read()).match(Note.severityMatcher); + if (found) { + console.log('found', found) + switch (found[0].toLowerCase()) { + case '#low': return Severity.Low; + case '#medium': return Severity.Medium; + case '#high': return Severity.High; + } + } + return Severity.Default; + } + async readAsMarkdown(): Promise { const [projectRoot] = await getRootFolders(this.fsPath); From c29c65dadd1f3484e8c32242fa45e12820a5da3e Mon Sep 17 00:00:00 2001 From: Duane Johnson Date: Thu, 15 Oct 2020 11:21:06 -0600 Subject: [PATCH 2/2] Add tip for note severity tags --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d8edd6..80cb46c 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,7 @@ Notes are saved in `$PROJECT_ROOT/.vscode/linenote` like `.vscode/linenote/path/ ![example](https://i.imgur.com/KlQtCsL.gif) -Tips: You can put hyperlinks in notes by writing `#L42` or `../foo.js#L12-L15`. +## Tips + +- You can put hyperlinks in notes by writing `#L42` or `../foo.js#L12-L15`. +- You can change the severity/color of the note with #low, #medium, #high tags