Browse Source

Add a completion plugin for dnote (#7885)

Sung Won Cho 4 years ago
parent
commit
5f18dbf895
2 changed files with 90 additions and 0 deletions
  1. 51 0
      plugins/dnote/README.md
  2. 39 0
      plugins/dnote/_dnote

+ 51 - 0
plugins/dnote/README.md

@@ -0,0 +1,51 @@
+# Dnote Plugin
+
+This plugin adds auto-completion for [Dnote](https://dnote.io) project.
+
+To use it, add `dnote` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(dnote)
+```
+
+## Usage
+
+At the basic level, this plugin completes all Dnote commands.
+
+```zsh
+$ dnote a(press <TAB> here)
+```
+
+would result in:
+
+```zsh
+$ dnote add
+```
+
+For some commands, this plugin dynamically suggests matching book names.
+
+For instance, if you have three books that begin with 'j': 'javascript', 'job', 'js',
+
+```zsh
+$ dnote view j(press <TAB> here)
+```
+
+would result in:
+
+```zsh
+$ dnote v j
+javascript  job         js
+```
+
+As another example,
+
+```zsh
+$ dnote edit ja(press <TAB> here)
+```
+
+would result in:
+
+
+```zsh
+$ dnote v javascript
+``````

+ 39 - 0
plugins/dnote/_dnote

@@ -0,0 +1,39 @@
+#compdef dnote
+
+local -a _1st_arguments
+
+_1st_arguments=(
+  'add:add a new note'
+  'view:list books, notes, or view a content'
+  'edit:edit a note or a book'
+  'remove:remove a note or a book'
+  'find:find notes by keywords'
+  'sync:sync data with the server'
+  'login:login to the dnote server'
+  'logout:logout from the dnote server'
+  'version:print the current version'
+  'help:get help about any command'
+)
+
+get_booknames() {
+  local names=$(dnote view --name-only)
+  local -a ret
+
+  while read -r line; do
+    ret+=("${line}")
+  done <<< "$names"
+
+  echo "$ret"
+}
+
+if (( CURRENT == 2 )); then
+  _describe -t commands "dnote subcommand" _1st_arguments
+  return
+elif (( CURRENT == 3 )); then
+  case "$words[2]" in
+    v|view|a|add)
+      _alternative \
+        "names:book names:($(get_booknames))"
+  esac
+fi
+