src/fish.lisp @ 4bc03604aa39 default tip
Add experimental fish completions, add hidden options
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Fri, 20 Mar 2026 12:59:41 -0400 |
| parents | (none) |
| children | (none) |
(in-package :adopt) (defun escape/shell (string) (if (zerop (length string)) "" (with-output-to-string (s) (loop :for char :across string :do (when (find char "'") (write-char #\\ s)) (write-char char s))))) (defun print-fish-completions (interface &key (stream *standard-output*) (program-name (name interface))) (labels ((f (&rest args) (write-string " " stream) (apply #'format stream args))) (dolist (o (options interface)) (format stream "complete -c ~A" program-name) (let ((long (long o)) (short (short o)) (param (parameter o)) (help (or (terse o) (help o)))) (when long (f "-l ~A" long)) (when short (f "-s ~A" short)) (when param (f "-ra ~A" param)) (when help (f "-d '~A'" (escape/shell help))) (terpri stream)))))