mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 21:31:19 +08:00 
			
		
		
		
	Add a completion plugin for dnote (#7885)
This commit is contained in:
		
							parent
							
								
									36e13f4803
								
							
						
					
					
						commit
						5f18dbf895
					
				
							
								
								
									
										51
									
								
								plugins/dnote/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								plugins/dnote/README.md
									
									
									
									
									
										Normal file
									
								
							@ -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
									
								
								plugins/dnote/_dnote
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								plugins/dnote/_dnote
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user