Refactor 'eat--eshell-adjust-make-process-args'
* eat.el (eat--eshell-adjust-make-process-args): Avoid unnecessary function overrides. Overriding functions with 'cl-letf*' is not well documented, and self-overriding a function (override a function with its own definition) may not a nop.
This commit is contained in:
parent
fc195410e4
commit
35df1bc2a4
1 changed files with 48 additions and 47 deletions
95
eat.el
95
eat.el
|
@ -5527,53 +5527,54 @@ Disable terminal emulation?")))
|
|||
((and (pred functionp) function)
|
||||
(apply function command args)))))
|
||||
(funcall fn command args)
|
||||
(cl-letf*
|
||||
(;; For Emacs 29 and above.
|
||||
(make-process (symbol-function #'make-process))
|
||||
((symbol-function #'make-process)
|
||||
(if (< emacs-major-version 29)
|
||||
make-process
|
||||
(lambda (&rest plist)
|
||||
;; Make sure we don't attack wrong process.
|
||||
(if (not (equal (plist-get plist :command)
|
||||
(cons (file-local-name
|
||||
(expand-file-name command))
|
||||
args)))
|
||||
(apply make-process plist)
|
||||
(setf (plist-get plist :command)
|
||||
`("/usr/bin/env" "sh" "-c"
|
||||
,(format "stty -nl echo rows %d columns %d \
|
||||
sane 2>%s ; if [ $1 = .. ]; then shift; fi; exec \"$@\""
|
||||
(floor (window-screen-lines))
|
||||
(window-max-chars-per-line)
|
||||
null-device)
|
||||
".." ,@(plist-get plist :command)))
|
||||
(apply make-process plist)))))
|
||||
;; For Emacs 28.
|
||||
(start-file-process (symbol-function #'start-file-process))
|
||||
((symbol-function #'start-file-process)
|
||||
(if (< emacs-major-version 29)
|
||||
(lambda (name buffer &rest command)
|
||||
(apply start-file-process name buffer
|
||||
`("/usr/bin/env" "sh" "-c"
|
||||
,(format "stty -nl echo rows %d columns %d \
|
||||
sane 2>%s ; if [ $1 = .. ]; then shift; fi; exec \"$@\""
|
||||
(floor (window-screen-lines))
|
||||
(window-max-chars-per-line)
|
||||
null-device)
|
||||
".." ,@command)))
|
||||
;; Don't override on Emacs 28.
|
||||
start-file-process)))
|
||||
(let ((hook
|
||||
(lambda (proc)
|
||||
(set-process-filter proc #'eat--eshell-filter)
|
||||
(set-process-sentinel proc #'eat--eshell-sentinel)
|
||||
(eat--eshell-setup-proc-and-term proc))))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(add-hook 'eshell-exec-hook hook 99)
|
||||
(funcall fn command args))
|
||||
(remove-hook 'eshell-exec-hook hook))))))
|
||||
(let ((hook (lambda (proc)
|
||||
(set-process-filter proc #'eat--eshell-filter)
|
||||
(set-process-sentinel proc #'eat--eshell-sentinel)
|
||||
(eat--eshell-setup-proc-and-term proc))))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(add-hook 'eshell-exec-hook hook 99)
|
||||
(cond
|
||||
;; Emacs 29 and above.
|
||||
((>= emacs-major-version 29)
|
||||
(cl-letf*
|
||||
((make-process (symbol-function #'make-process))
|
||||
((symbol-function #'make-process)
|
||||
(lambda (&rest plist)
|
||||
;; Make sure we don't attack wrong process.
|
||||
(if (not (equal
|
||||
(plist-get plist :command)
|
||||
(cons (file-local-name
|
||||
(expand-file-name command))
|
||||
args)))
|
||||
(apply make-process plist)
|
||||
(setf (plist-get plist :command)
|
||||
`("/usr/bin/env" "sh" "-c"
|
||||
,(format "stty -nl echo rows %d \
|
||||
columns %d sane 2>%s ; if [ $1 = .. ]; then shift; fi; exec \"$@\""
|
||||
(floor (window-screen-lines))
|
||||
(window-max-chars-per-line)
|
||||
null-device)
|
||||
".." ,@(plist-get plist :command)))
|
||||
(apply make-process plist)))))
|
||||
(funcall fn command args)))
|
||||
;; Emacs 28.
|
||||
(t
|
||||
(cl-letf*
|
||||
((start-file-process
|
||||
(symbol-function #'start-file-process))
|
||||
((symbol-function #'start-file-process)
|
||||
(lambda (name buffer &rest command)
|
||||
(apply start-file-process name buffer
|
||||
"/usr/bin/env" "sh" "-c"
|
||||
(format "stty -nl echo rows %d columns \
|
||||
%d sane 2>%s ; if [ $1 = .. ]; then shift; fi; exec \"$@\""
|
||||
(floor (window-screen-lines))
|
||||
(window-max-chars-per-line)
|
||||
null-device)
|
||||
".." command))))
|
||||
(funcall fn command args)))))
|
||||
(remove-hook 'eshell-exec-hook hook)))))
|
||||
|
||||
|
||||
;;;;; Minor Modes.
|
||||
|
|
Loading…
Add table
Reference in a new issue