resource creation command, `kubed-create-RESROURCE'. ARGLIST,
DOCSTRING, INTERACTIVE and BODY have the same meaning as in `defun'.
- `:prefix (KEY DEFINITION...)': additional keybinding for the prefix
- keymap `kubed-RESOURCE-prefix-map'."
+ keymap `kubed-RESOURCE-prefix-map'.
+- `:plural PLURAL': specify plural form of RESOURCE, as a symbol. If
+ you omit this keyword argument, the plural form defaults to RESOURCE
+ followed by \"s\"."
(declare (indent 2))
- (let ((hist-var (intern (format "kubed-%S-history" resource)))
- (list-var (intern (format "kubed-%Ss" resource)))
- (ents-var (intern (format "kubed--%Ss-entries" resource)))
- (hook-var (intern (format "kubed-update-%Ss-hook" resource)))
- (proc-var (intern (format "kubed-%Ss-process" resource)))
- (frmt-var (intern (format "kubed-%Ss-columns" resource)))
- (plrl-var (intern (format "%Ss" resource)))
- (read-fun (intern (format "kubed-read-%S" resource)))
- (read-crm (intern (format "kubed-read-%Ss" resource)))
- (read-nms (intern (format "kubed-read-namespaced-%S" resource)))
- (sure-fun (intern (format "kubed-ensure-%Ss" resource)))
- (ents-fun (intern (format "kubed-%Ss-entries" resource)))
- (buff-fun (intern (format "kubed-%Ss-buffer" resource)))
- (frmt-fun (intern (format "kubed-%Ss-format" resource)))
+ (let ((hist-var (intern (format "kubed-%S-history" resource)))
+ (plrl-var (intern (format "%Ss" resource)))
+ (read-fun (intern (format "kubed-read-%S" resource)))
+ (read-nms (intern (format "kubed-read-namespaced-%S" resource)))
(desc-fun (intern (format "kubed-%S-description-buffer" resource)))
- (affx-fun (intern (format "kubed-%Ss-affixation" resource)))
- (updt-cmd (intern (format "kubed-update-%Ss" resource)))
- (list-cmd (intern (format "kubed-list-%Ss" resource)))
- (expl-cmd (intern (format "kubed-explain-%Ss" resource)))
- (mark-cmd (intern (format "kubed-%Ss-mark-for-deletion" resource)))
- (umrk-cmd (intern (format "kubed-%Ss-unmark" resource)))
- (exec-cmd (intern (format "kubed-%Ss-execute" resource)))
- (list-buf (format "*kubed-%Ss*" resource))
- (buf-name (format "*kubed-%S*" resource))
- (out-name (format " *kubed-get-%Ss*" resource))
- (err-name (format " *kubed-get-%Ss-stderr*" resource))
- (dlt-errb (format " *kubed-%Ss-execute-stderr*" resource))
- (dsp-name (intern (format "kubed-display-%S" resource)))
- (edt-name (intern (format "kubed-edit-%S" resource)))
- (dlt-name (intern (format "kubed-delete-%Ss" resource)))
- (mod-name (intern (format "kubed-%Ss-mode" resource)))
- (crt-name (intern (format "kubed-create-%S" resource)))
- (map-name (intern (format "kubed-%S-prefix-map" resource)))
- (crt-spec nil)
- (prf-keys nil)
+ (buf-name (format "*kubed-%S*" resource))
+ (dsp-name (intern (format "kubed-display-%S" resource)))
+ (edt-name (intern (format "kubed-edit-%S" resource)))
+ (crt-name (intern (format "kubed-create-%S" resource)))
+ (map-name (intern (format "kubed-%S-prefix-map" resource)))
(namespaced t)
- (keyword nil))
+ (keyword nil)
+ list-var ents-var hook-var proc-var frmt-var read-crm sure-fun
+ ents-fun buff-fun frmt-fun affx-fun updt-cmd list-cmd expl-cmd
+ mark-cmd umrk-cmd exec-cmd list-buf out-name err-name dlt-errb
+ dlt-name mod-name crt-spec prf-keys)
;; Process keyword arguments.
(while (keywordp (car commands))
((eq keyword :namespaced) (setq namespaced (pop commands)))
((eq keyword :create) (setq crt-spec (pop commands)))
((eq keyword :prefix) (setq prf-keys (pop commands)))
+ ((eq keyword :plural) (setq plrl-var (pop commands)))
;; FIXME: Add error for unknown keywords.
(t (pop commands))))
+ (setq list-var (intern (format "kubed-%S" plrl-var))
+ ents-var (intern (format "kubed--%S-entries" plrl-var))
+ hook-var (intern (format "kubed-update-%S-hook" plrl-var))
+ proc-var (intern (format "kubed-%S-process" plrl-var))
+ frmt-var (intern (format "kubed-%S-columns" plrl-var))
+ read-crm (intern (format "kubed-read-%S" plrl-var))
+ sure-fun (intern (format "kubed-ensure-%S" plrl-var))
+ ents-fun (intern (format "kubed-%S-entries" plrl-var))
+ buff-fun (intern (format "kubed-%S-buffer" plrl-var))
+ frmt-fun (intern (format "kubed-%S-format" plrl-var))
+ affx-fun (intern (format "kubed-%S-affixation" plrl-var))
+ updt-cmd (intern (format "kubed-update-%S" plrl-var))
+ list-cmd (intern (format "kubed-list-%S" plrl-var))
+ expl-cmd (intern (format "kubed-explain-%S" plrl-var))
+ mark-cmd (intern (format "kubed-%S-mark-for-deletion" plrl-var))
+ umrk-cmd (intern (format "kubed-%S-unmark" plrl-var))
+ exec-cmd (intern (format "kubed-%S-execute" plrl-var))
+ list-buf (format "*kubed-%S*" plrl-var)
+ out-name (format " *kubed-get-%S*" plrl-var)
+ err-name (format " *kubed-get-%S-stderr*" plrl-var)
+ dlt-errb (format " *kubed-%S-execute-stderr*" plrl-var)
+ dlt-name (intern (format "kubed-delete-%S" plrl-var))
+ mod-name (intern (format "kubed-%S-mode" plrl-var)))
+
;; Extend `commands' with standard commands.
(dolist (c `((get "RET" "Switch to buffer showing description of"
(switch-to-buffer
(erase-buffer))
(setq ,proc-var
(make-process
- :name ,(format "*kubed-get-%Ss*" resource)
+ :name ,(format "*kubed-get-%S*" plrl-var)
:buffer ,out-name
:stderr ,err-name
:command (list
kubed-kubectl-program
- "get" ,(format "%Ss" resource)
+ "get" ,(format "%S" plrl-var)
,@(when namespaced
`((concat "--all-namespaces="
(if kubed-all-namespaces-mode "true" "false"))))
(setq ,list-var new
,proc-var nil)
(run-hooks ',hook-var)
- (message ,(format "Updated Kubernetes %Ss." resource))))
+ (message ,(format "Updated Kubernetes %S." plrl-var))))
((string= status "exited abnormally with code 1\n")
(with-current-buffer ,err-name
(goto-char (point-max))
(insert "\n" status))
(display-buffer ,err-name))))))
- (minibuffer-message ,(format "Updating Kubernetes %Ss..." resource)))
+ (minibuffer-message ,(format "Updating Kubernetes %S..." plrl-var)))
(defun ,affx-fun (,plrl-var)
,(format "Return Kubernetes %s with completion affixations."
Non-nil optional argument MULTI says to read and return a list
of %S, instead of just one." resource plrl-var)
(minibuffer-with-setup-hook
- #',(intern (format "kubed-ensure-%Ss" resource))
+ #',sure-fun
(funcall
(if multi #'completing-read-multiple #'completing-read)
(format-prompt prompt default)
(tabulated-list-put-tag " " t))
(defun ,exec-cmd ()
- ,(format "Delete marked Kubernetes %Ss." resource)
+ ,(format "Delete marked Kubernetes %S." plrl-var)
(interactive "" ,mod-name)
(let (delete-list)
(save-excursion
(name (aref k8sent 0))
(space (aref k8sent 1)))
(make-process
- :name ,(format "*kubed-%Ss-execute*" resource)
+ :name ,(format "*kubed-%S-execute*" plrl-var)
:stderr ,dlt-errb
:command (list kubed-kubectl-program
"delete"
(propertize "K" 'help-echo "Deletion in progress")))
(forward-line)))
(make-process
- :name ,(format "*kubed-%Ss-execute*" resource)
+ :name ,(format "*kubed-%S-execute*" plrl-var)
:stderr ,dlt-errb
:command (append
(list kubed-kubectl-program
(propertize "K" 'help-echo "Deletion in progress")))
(forward-line)))
(make-process
- :name ,(format "*kubed-%Ss-execute*" resource)
+ :name ,(format "*kubed-%S-execute*" plrl-var)
:stderr ,dlt-errb
:command (append
(list kubed-kubectl-program
,@(mapcar
(pcase-lambda (`(,suffix ,_key ,desc . ,body))
- `(defun ,(intern (format "kubed-%Ss-%S" resource suffix)) ()
+ `(defun ,(intern (format "kubed-%S-%S" plrl-var suffix)) ()
,(format "%s Kubernetes %S at point." desc resource)
(interactive "" ,mod-name)
(if-let ,(if namespaced
(user-error ,(format "No Kubernetes %S at point" resource)))))
commands)
- (defvar-keymap ,(intern (format "kubed-%Ss-mode-map" resource))
+ (defvar-keymap ,(intern (format "kubed-%S-mode-map" plrl-var))
:doc ,(format "Keymap for `%S" mod-name)
"A" #'kubed-all-namespaces-mode
"G" #',updt-cmd
,@(mapcan
(pcase-lambda (`(,suffix ,key ,_desc . ,_body))
(when key
- (list key `#',(intern (format "kubed-%Ss-%S" resource suffix)))))
+ (list key `#',(intern (format "kubed-%S-%S" plrl-var suffix)))))
commands))
(defvar ,frmt-var
(list ,(format "Kubernetes %ss" (capitalize (symbol-name resource)))
(list ',proc-var
(list :propertize "[...]" 'help-echo "Updating...")))
- ,(format "Major mode for listing Kubernetes %Ss." resource)
+ ,(format "Major mode for listing Kubernetes %S." plrl-var)
:interactive nil
(add-hook 'revert-buffer-restore-functions
(lambda ()
(current-buffer)))
(defun ,list-cmd ()
- ,(format "List Kubernetes %Ss." resource)
+ ,(format "List Kubernetes %S." plrl-var)
(interactive)
(,sure-fun)
(pop-to-buffer (,buff-fun ,list-var)))
(defun ,expl-cmd ()
- ,(format "Show help buffer with explanation about Kubernetes %Ss." resource)
+ ,(format "Show help buffer with explanation about Kubernetes %S." plrl-var)
(interactive)
(kubed-explain ,(symbol-name plrl-var)))