Optional argument DEFAULT is the minibuffer default argument." resource)
(,read-fun prompt default t))
- ,(if namespaced
- `(defun ,desc-fun (,resource &optional k8sns)
- ,(format "Return buffer describing Kubernetes %S %s"
- resource (upcase (symbol-name resource)))
- (let ((buf (get-buffer-create ,buf-name)))
- (with-current-buffer buf
- (let ((inhibit-read-only t))
- (erase-buffer)
- (unless (zerop
- (call-process
- kubed-kubectl-program nil ,buf-name t "get"
- (if k8sns
- (concat "--namespace=" k8sns)
- "--all-namespaces=false")
- ,(symbol-name resource) "--output=yaml" ,resource))
- (error ,(format "`kubectl get %S' failed" resource))))
- (goto-char (point-min))
- (run-hooks 'kubed-yaml-setup-hook))
- buf))
- `(defun ,desc-fun (,resource)
- ,(format "Return buffer with description of Kubernetes %S %s"
- resource (upcase (symbol-name resource)))
- (let ((buf (get-buffer-create ,buf-name)))
- (with-current-buffer buf
- (let ((inhibit-read-only t))
- (erase-buffer)
- (unless (zerop
- (call-process
- kubed-kubectl-program nil ,buf-name t "get"
- ,(symbol-name resource) "--output=yaml" ,resource))
- (error ,(format "`kubectl get %S' failed" resource))))
- (goto-char (point-min))
- (run-hooks 'kubed-yaml-setup-hook))
- buf)))
+ (defun ,desc-fun (,resource . ,(when namespaced '(&optional k8sns)))
+ ,(format "Return buffer describing Kubernetes %S %s"
+ resource (upcase (symbol-name resource)))
+ (let* ((buf (get-buffer-create ,buf-name))
+ (fun (lambda (&optional _ _)
+ (let ((inhibit-read-only t)
+ (target (current-buffer)))
+ (buffer-disable-undo)
+ (with-temp-buffer
+ (unless (zerop
+ (call-process
+ kubed-kubectl-program nil t nil "get"
+ ,(symbol-name resource) "--output=yaml" ,resource
+ . ,(when namespaced
+ '((if k8sns
+ (concat "--namespace=" k8sns)
+ "--all-namespaces=false")))))
+ (error ,(format "`kubectl get %S' failed" resource)))
+ (let ((source (current-buffer)))
+ (with-current-buffer target
+ (replace-buffer-contents source)
+ (set-buffer-modified-p nil)
+ (buffer-enable-undo))))))))
+ (with-current-buffer buf
+ (funcall fun)
+ (goto-char (point-min))
+ (run-hooks 'kubed-yaml-setup-hook)
+ (setq-local revert-buffer-function fun))
+ buf))
,(when namespaced
`(defun ,read-nms (prompt &optional default multi)
(ensure-list choice))))
(if multi split (car split)))))
- ,(if namespaced
- `(defun ,dsp-name (,resource &optional k8sns)
- ,(format "Display Kubernetes %S %s."
- resource (upcase (symbol-name resource)))
- (interactive (if kubed-all-namespaces-mode
+ (defun ,dsp-name (,resource . ,(when namespaced '(&optional k8sns)))
+ ,(format "Display Kubernetes %S %s."
+ resource (upcase (symbol-name resource)))
+ (interactive ,(if namespaced
+ `(if kubed-all-namespaces-mode
(,read-nms "Display")
- (list (,read-fun "Display"))))
- (display-buffer (,desc-fun ,resource k8sns)))
- `(defun ,dsp-name (,resource)
- ,(format "Display Kubernetes %S %s."
- resource (upcase (symbol-name resource)))
- (interactive (list (,read-fun "Display")))
- (display-buffer (,desc-fun ,resource))))
+ (list (,read-fun "Display")))
+ `(list (,read-fun "Display"))))
+ (display-buffer (,desc-fun ,resource . ,(when namespaced '(k8sns)))))
(add-hook 'kubed-update-hook #',updt-cmd)
(setq ,list-var nil)
(,updt-cmd))))
- ,(if namespaced
- `(defun ,edt-name (,resource &optional k8sns)
- ,(format "Edit Kubernetes %S %s."
- resource (upcase (symbol-name resource)))
- (interactive (if kubed-all-namespaces-mode
+ (defun ,edt-name (,resource . ,(when namespaced '(&optional k8sns)))
+ ,(format "Edit Kubernetes %S %s."
+ resource (upcase (symbol-name resource)))
+ (interactive ,(if namespaced
+ `(if kubed-all-namespaces-mode
(,read-nms "Edit")
- (list (,read-fun "Edit"))))
- (unless (bound-and-true-p server-process) (server-start))
- (let ((process-environment
- (cons (concat "KUBE_EDITOR=" emacsclient-program-name)
- process-environment)))
- (start-process ,(format "*kubed-%S-edit*" plrl-var) nil
- kubed-kubectl-program "edit"
- (if k8sns
- (concat "--namespace=" k8sns)
- "-o=yaml")
- ,(symbol-name resource) ,resource)))
- `(defun ,edt-name (,resource)
- ,(format "Edit Kubernetes %S %s." resource (upcase (symbol-name resource)))
- (interactive (list (,read-fun "Edit")))
- (unless (bound-and-true-p server-process) (server-start))
- (let ((process-environment
- (cons (concat "KUBE_EDITOR=" emacsclient-program-name)
- process-environment)))
- (start-process ,(format "*kubed-%S-edit*" plrl-var) nil
- kubed-kubectl-program "edit"
- ,(symbol-name resource) ,resource))))
+ (list (,read-fun "Edit")))
+ `(list (,read-fun "Edit"))))
+ (unless (bound-and-true-p server-process) (server-start))
+ (let ((process-environment
+ (cons (concat "KUBE_EDITOR=" emacsclient-program-name)
+ process-environment)))
+ (start-process ,(format "*kubed-%S-edit*" plrl-var) nil
+ kubed-kubectl-program "edit"
+ ,(symbol-name resource) ,resource
+ . ,(when namespaced
+ `((if k8sns
+ (concat "--namespace=" k8sns)
+ "-o=yaml"))))))
,(if namespaced
`(defun ,dlt-name (,plrl-var)