]> git.scottworley.com Git - vopamoi/blobdiff - vopamoi.ts
README
[vopamoi] / vopamoi.ts
index f37ce2e787559c6b4ce7e6db72b6c68f115f8a87..17ace05eaf8a79ff22deaa4801291905d6a56d9e 100644 (file)
@@ -1,3 +1,19 @@
+// vopamoi: vi-flavored todo organizer
+// Copyright (C) 2023  Scott Worley <scottworley@scottworley.com>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+
 // Typescript doesn't know about MAX_SAFE_INTEGER??  This was supposed to be
 // fixed in typescript 2.0.1 in 2016, but is not working for me in typescript
 // 4.2.4 in 2022.  :( https://github.com/microsoft/TypeScript/issues/9937
@@ -322,7 +338,7 @@ function BrowserUI() {
     deleted: "Black",
     done: "LawnGreen",
     "someday-maybe": "DeepSkyBlue",
-    todo: "White",
+    todo: "rgb(0 0 0 / 0)",
     waiting: "MediumOrchid",
   };
   var currentTagFilter: TagFilter | null = null;
@@ -692,6 +708,11 @@ function BrowserUI() {
       this.setTagFilter({description: "(untagged)", include: task => task.getElementsByClassName("tag").length === 0});
     },
 
+    toggleDark: function () {
+      document.body.classList.toggle("dark");
+      this.setView(currentViewState);
+    },
+
     undo: function () {
       const ret = ui.undo();
       if (ret && ret instanceof HTMLElement) ret.focus();
@@ -749,7 +770,7 @@ function handleKey(event: any) {
           if (event.key == "G") return browserUI.jumpCursor(inputCount ?? MAX_SAFE_INTEGER);
           if (event.key == "T") return browserUI.makeTopPriority();
           if (event.key == "n") return browserUI.focusTaskNameInput(event);
-          if (event.key == "c") return browserUI.setState("cancelled");
+          if (event.key == "C") return browserUI.setState("cancelled");
           if (event.key == "d") return browserUI.setState("done");
           if (event.key == "q") return browserUI.setState("todo");
           if (event.key == "s") return (inputState = InputState.S);
@@ -772,8 +793,12 @@ function handleKey(event: any) {
     } else if (inputState === InputState.V) {
       inputState = InputState.Root;
       if (event.key == "a") return browserUI.setView("all");
-      if (event.key == "c") return browserUI.setView("cancelled");
+      if (event.key == "C") return browserUI.setView("cancelled");
+      if (event.key == "c") return browserUI.setTagView("comp");
+      if (event.key == "D") return browserUI.toggleDark();
       if (event.key == "d") return browserUI.setView("done");
+      if (event.key == "e") return browserUI.setTagView("errand");
+      if (event.key == "h") return browserUI.setTagView("home");
       if (event.key == "i") return browserUI.setUntaggedView();
       if (event.key == "p") return browserUI.setTagView("Project");
       if (event.key == "q") return browserUI.setView("todo");
@@ -784,6 +809,7 @@ function handleKey(event: any) {
       if (event.key == "v") return browserUI.resetView();
       if (event.key == "w") return browserUI.setView("waiting");
       if (event.key == "x") return browserUI.setView("deleted");
+      if (event.key == "z") return browserUI.setTagView("zombie");
     } else if (inputState === InputState.VS) {
       inputState = InputState.Root;
       if (event.key == "m") return browserUI.setView("someday-maybe");