branch: elpa/with-editor
commit 5bfc94c219cff3d96e8bf978e9a89b611c43fefe
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
Improve indentation of cond and interactive
Emacs 31.1 adds variable `lisp-indent-local-overrides'.
---
lisp/with-editor.el | 227 ++++++++++++++++++++++++++--------------------------
1 file changed, 114 insertions(+), 113 deletions(-)
diff --git a/lisp/with-editor.el b/lisp/with-editor.el
index de021dfde72..1ed7784def5 100644
--- a/lisp/with-editor.el
+++ b/lisp/with-editor.el
@@ -159,14 +159,14 @@ please see
https://github.com/magit/magit/wiki/Emacsclient."))))
(when (file-directory-p dir)
(push dir path)))
(cond
- ((string-search "Cellar" invocation-directory)
- (let ((dir (expand-file-name "../../../bin" invocation-directory)))
- (when (file-directory-p dir)
- (push dir path))))
- ((string-search "Emacs.app" invocation-directory)
- (let ((dir (expand-file-name "../../../../bin"
invocation-directory)))
- (when (file-directory-p dir)
- (push dir path)))))))
+ ((string-search "Cellar" invocation-directory)
+ (let ((dir (expand-file-name "../../../bin" invocation-directory)))
+ (when (file-directory-p dir)
+ (push dir path))))
+ ((string-search "Emacs.app" invocation-directory)
+ (let ((dir (expand-file-name "../../../../bin"
invocation-directory)))
+ (when (file-directory-p dir)
+ (push dir path)))))))
(cl-remove-duplicates path :test #'equal)))
(defcustom with-editor-emacsclient-executable (with-editor-locate-emacsclient)
@@ -665,56 +665,56 @@ OPEN \\([^]+?\\)\
(setq string (concat incomplete string)))
(save-match-data
(cond
- ((and process (not (string-suffix-p "\n" string)))
- (let ((length (length string)))
- (when (> length with-editor--max-incomplete-length)
- (setq string
- (substring string
- (- length with-editor--max-incomplete-length)))))
- (process-put process 'incomplete string)
- nil)
- ((string-match with-editor-sleeping-editor-regexp string)
- (when process
- (process-put process 'incomplete nil))
- (let ((pid (match-string 1 string))
- (arg0 (match-string 2 string))
- (arg1 (match-string 3 string))
- (dir (match-string 4 string))
- file line column)
- (cond ((string-match "\\`\\+\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?\\'"
arg0)
- (setq file arg1)
- (setq line (string-to-number (match-string 1 arg0)))
- (setq column (match-string 2 arg0))
- (setq column (and column (string-to-number column))))
- ((setq file arg0)))
- (unless (file-name-absolute-p file)
- (setq file (expand-file-name file dir)))
- (when default-directory
- (setq file (concat (file-remote-p default-directory) file)))
- (with-current-buffer (find-file-noselect file)
- (with-editor-mode 1)
- (setq with-editor--pid pid)
- (setq with-editor-previous-winconf
- (current-window-configuration))
- (when line
- (let ((pos (save-excursion
- (save-restriction
- (goto-char (point-min))
- (forward-line (1- line))
- (when column
- (move-to-column column))
- (point)))))
- (when (and (buffer-narrowed-p)
- widen-automatically
- (not (<= (point-min) pos (point-max))))
- (widen))
- (goto-char pos)))
- (run-hooks 'with-editor-filter-visit-hook)
- (funcall (or (with-editor-server-window) #'switch-to-buffer)
- (current-buffer))
- (kill-local-variable 'server-window)))
- nil)
- (t string))))
+ ((and process (not (string-suffix-p "\n" string)))
+ (let ((length (length string)))
+ (when (> length with-editor--max-incomplete-length)
+ (setq string
+ (substring string
+ (- length with-editor--max-incomplete-length)))))
+ (process-put process 'incomplete string)
+ nil)
+ ((string-match with-editor-sleeping-editor-regexp string)
+ (when process
+ (process-put process 'incomplete nil))
+ (let ((pid (match-string 1 string))
+ (arg0 (match-string 2 string))
+ (arg1 (match-string 3 string))
+ (dir (match-string 4 string))
+ file line column)
+ (cond ((string-match "\\`\\+\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?\\'"
arg0)
+ (setq file arg1)
+ (setq line (string-to-number (match-string 1 arg0)))
+ (setq column (match-string 2 arg0))
+ (setq column (and column (string-to-number column))))
+ ((setq file arg0)))
+ (unless (file-name-absolute-p file)
+ (setq file (expand-file-name file dir)))
+ (when default-directory
+ (setq file (concat (file-remote-p default-directory) file)))
+ (with-current-buffer (find-file-noselect file)
+ (with-editor-mode 1)
+ (setq with-editor--pid pid)
+ (setq with-editor-previous-winconf
+ (current-window-configuration))
+ (when line
+ (let ((pos (save-excursion
+ (save-restriction
+ (goto-char (point-min))
+ (forward-line (1- line))
+ (when column
+ (move-to-column column))
+ (point)))))
+ (when (and (buffer-narrowed-p)
+ widen-automatically
+ (not (<= (point-min) pos (point-max))))
+ (widen))
+ (goto-char pos)))
+ (run-hooks 'with-editor-filter-visit-hook)
+ (funcall (or (with-editor-server-window) #'switch-to-buffer)
+ (current-buffer))
+ (kill-local-variable 'server-window)))
+ nil)
+ (t string))))
(defun with-editor-process-filter
(process string &optional no-default-filter)
@@ -751,40 +751,40 @@ This works in `shell-mode', `term-mode', `eshell-mode' and
`vterm'."
(interactive (list (with-editor-read-envvar)))
(cond
- ((derived-mode-p 'comint-mode 'term-mode)
- (when-let ((process (get-buffer-process (current-buffer))))
- (goto-char (process-mark process))
- (process-send-string
- process (format " export %s=%s\n" envvar
- (shell-quote-argument with-editor-sleeping-editor)))
- (while (accept-process-output process 1 nil t))
- (if (derived-mode-p 'term-mode)
- (with-editor-set-process-filter process
#'with-editor-emulate-terminal)
- (add-hook 'comint-output-filter-functions #'with-editor-output-filter
- nil t))))
- ((derived-mode-p 'eshell-mode)
- (add-to-list 'eshell-preoutput-filter-functions
- #'with-editor-output-filter)
- (setenv envvar with-editor-sleeping-editor))
- ((and (derived-mode-p 'vterm-mode)
- (fboundp 'vterm-send-return)
- (fboundp 'vterm-send-string))
- (if with-editor-emacsclient-executable
- (let ((with-editor--envvar envvar)
- (process-environment process-environment))
- (with-editor--setup)
- (while (accept-process-output vterm--process 1 nil t))
- (when-let ((v (getenv envvar)))
- (vterm-send-string (format " export %s=%S" envvar v))
- (vterm-send-return))
- (when-let ((v (getenv "EMACS_SERVER_FILE")))
- (vterm-send-string (format " export EMACS_SERVER_FILE=%S" v))
- (vterm-send-return))
- (vterm-send-string " clear")
- (vterm-send-return))
- (error "Cannot use sleeping editor in this buffer")))
- (t
- (error "Cannot export environment variables in this buffer")))
+ ((derived-mode-p 'comint-mode 'term-mode)
+ (when-let ((process (get-buffer-process (current-buffer))))
+ (goto-char (process-mark process))
+ (process-send-string
+ process (format " export %s=%s\n" envvar
+ (shell-quote-argument with-editor-sleeping-editor)))
+ (while (accept-process-output process 1 nil t))
+ (if (derived-mode-p 'term-mode)
+ (with-editor-set-process-filter process
#'with-editor-emulate-terminal)
+ (add-hook 'comint-output-filter-functions #'with-editor-output-filter
+ nil t))))
+ ((derived-mode-p 'eshell-mode)
+ (add-to-list 'eshell-preoutput-filter-functions
+ #'with-editor-output-filter)
+ (setenv envvar with-editor-sleeping-editor))
+ ((and (derived-mode-p 'vterm-mode)
+ (fboundp 'vterm-send-return)
+ (fboundp 'vterm-send-string))
+ (if with-editor-emacsclient-executable
+ (let ((with-editor--envvar envvar)
+ (process-environment process-environment))
+ (with-editor--setup)
+ (while (accept-process-output vterm--process 1 nil t))
+ (when-let ((v (getenv envvar)))
+ (vterm-send-string (format " export %s=%S" envvar v))
+ (vterm-send-return))
+ (when-let ((v (getenv "EMACS_SERVER_FILE")))
+ (vterm-send-string (format " export EMACS_SERVER_FILE=%S" v))
+ (vterm-send-return))
+ (vterm-send-string " clear")
+ (vterm-send-return))
+ (error "Cannot use sleeping editor in this buffer")))
+ (t
+ (error "Cannot export environment variables in this buffer")))
(message "Successfully exported %s" envvar))
;;;###autoload
@@ -902,27 +902,27 @@ Also take care of that for
`with-editor-[async-]shell-command'."
;; running, so it has to be removed here.
(let ((shell-mode-hook (remove 'with-editor-export-editor shell-mode-hook)))
(cond
- ;; If `with-editor-async-shell-command' was used, then `with-editor'
- ;; was used, and `with-editor--envvar'. `with-editor-shell-command'
- ;; only goes down that path if the command ends with "&". We might
- ;; still have to use `with-editor' here, for `async-shell-command'
- ;; or `shell-command', if the mode is enabled.
- ((and (string-suffix-p "&" command)
- (or with-editor--envvar
- shell-command-with-editor-mode))
- (if with-editor--envvar
- (funcall fn command output-buffer error-buffer)
- (with-editor (funcall fn command output-buffer error-buffer)))
- ;; The comint filter was overridden with our filter. Use both.
- (and-let* ((process (get-buffer-process
- (or output-buffer
- (get-buffer "*Async Shell Command*")))))
- (prog1 process
- (set-process-filter process
- (lambda (proc str)
- (comint-output-filter proc str)
- (with-editor-process-filter proc str t))))))
- ((funcall fn command output-buffer error-buffer)))))
+ ;; If `with-editor-async-shell-command' was used, then `with-editor'
+ ;; was used, and `with-editor--envvar'. `with-editor-shell-command'
+ ;; only goes down that path if the command ends with "&". We might
+ ;; still have to use `with-editor' here, for `async-shell-command'
+ ;; or `shell-command', if the mode is enabled.
+ ((and (string-suffix-p "&" command)
+ (or with-editor--envvar
+ shell-command-with-editor-mode))
+ (if with-editor--envvar
+ (funcall fn command output-buffer error-buffer)
+ (with-editor (funcall fn command output-buffer error-buffer)))
+ ;; The comint filter was overridden with our filter. Use both.
+ (and-let* ((process (get-buffer-process
+ (or output-buffer
+ (get-buffer "*Async Shell Command*")))))
+ (prog1 process
+ (set-process-filter process
+ (lambda (proc str)
+ (comint-output-filter proc str)
+ (with-editor-process-filter proc str t))))))
+ ((funcall fn command output-buffer error-buffer)))))
;;; _
@@ -993,5 +993,6 @@ See info node `(with-editor)Debugging' for instructions."
;; Local Variables:
;; byte-compile-warnings: (not docstrings-control-chars)
;; indent-tabs-mode: nil
+;; lisp-indent-local-overrides: ((cond . 0) (interactive . 0))
;; End:
;;; with-editor.el ends here