Commit f7421039 authored by Matthew Bauer's avatar Matthew Bauer Committed by Lars Ingebrigtsen

Add zsh extended_history handling for comint.el input ring

* lisp/comint.el (comint-input-ring-file-prefix): New variable
(comint-read-input-ring): Use it.

* lisp/shell.el (shell-mode): Set it.
parent b8233007
Pipeline #6333 failed with stage
in 25 seconds
......@@ -249,6 +249,10 @@ to set this in a mode hook, rather than customize the default value."
:group 'comint)
(defvar comint-input-ring-file-prefix nil
"The prefix to skip when parsing the input ring file.
This is useful in Zsh when the extended_history option is on.")
(defcustom comint-scroll-to-bottom-on-input nil
"Controls whether input to interpreter causes window to scroll.
If nil, then do not scroll. If t or `all', scroll all windows showing buffer.
......@@ -987,8 +991,20 @@ See also `comint-input-ignoredups' and `comint-write-input-ring'."
(setq end (match-beginning 0)))
(setq start
(if (re-search-backward ring-separator nil t)
(match-end 0)
(when (and comint-input-ring-file-prefix
;; Skip zsh extended_history stamps
(goto-char (match-end 0)))
(match-end 0))
(goto-char (point-min))
(when (and comint-input-ring-file-prefix
(goto-char (match-end 0)))
(setq history (buffer-substring start end))
(goto-char start)
(when (and (not (string-match history-ignore history))
......@@ -619,7 +619,12 @@ buffer."
;; Bypass a bug in certain versions of bash.
(when (string-equal shell "bash")
(add-hook 'comint-preoutput-filter-functions
#'shell-filter-ctrl-a-ctrl-b nil t)))
#'shell-filter-ctrl-a-ctrl-b nil t))
;; Skip extended history for zsh.
(when (string-equal shell "zsh")
(setq-local comint-input-ring-file-prefix
": [[:digit:]]+:[[:digit:]]+;")))
(comint-read-input-ring t)))
(defun shell-apply-ansi-color (beg end face)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment