From 91f00f2e796d9352bc749a87d710039c4673cd07 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sat, 6 Jan 2024 18:04:34 -0500 Subject: fix history --- emacs/.config/emacs-kj/lisp/kj-history.el | 94 ++++++++++++++++--------------- 1 file changed, 48 insertions(+), 46 deletions(-) (limited to 'emacs') diff --git a/emacs/.config/emacs-kj/lisp/kj-history.el b/emacs/.config/emacs-kj/lisp/kj-history.el index 2e90e81..debd23c 100644 --- a/emacs/.config/emacs-kj/lisp/kj-history.el +++ b/emacs/.config/emacs-kj/lisp/kj-history.el @@ -9,53 +9,55 @@ ;; Command (group (1+ (not "\n"))))) -(defun kj/get-shell-history () - (with-temp-buffer - (unless (process-file - "zsh" - nil - (current-buffer) - nil - "-c" - kj/history-command) - (error "Getting history failed: %s" (buffer-string))) - (goto-char (point-min)) - (let ((result)) - (save-match-data - (while (re-search-forward kj/history-regexp nil t) - (let ((command - ;; Fix up multi-line commands. - (string-replace "\\\\n" "\\\n" (match-string-no-properties 1)))) - (push command result)))) - result))) +(use-package consult + :config + (defun kj/get-shell-history () + (with-temp-buffer + (unless (process-file + "zsh" + nil + (current-buffer) + nil + "-c" + kj/history-command) + (error "Getting history failed: %s" (buffer-string))) + (goto-char (point-min)) + (let ((result)) + (save-match-data + (while (re-search-forward kj/history-regexp nil t) + (let ((command + ;; Fix up multi-line commands. + (string-replace "\\\\n" "\\\n" (match-string-no-properties 1)))) + (push command result)))) + result))) -(defun kj/consult-history () - (interactive) - (if (not - (or (and (minibufferp) - (eq minibuffer-history-variable 'shell-command-history)) - (derived-mode-p '(term-mode shell-mode)) - )) - (call-interactively 'consult-history) - (pcase-let* ((bol - (cond ((derived-mode-p 'eshell-mode) 'eshell-bol) - ((derived-mode-p 'term-mode) 'term-bol) - ((derived-mode-p 'comint-mode) 'comint-bol))) - (`(,beg . ,end) - (cond ((minibufferp) + (defun kj/consult-history () + (interactive) + (if (not + (or (and (minibufferp) + (eq minibuffer-history-variable 'shell-command-history)) + (derived-mode-p '(term-mode shell-mode)) + )) + (call-interactively 'consult-history) + (pcase-let* ((bol + (cond ((derived-mode-p 'eshell-mode) 'eshell-bol) + ((derived-mode-p 'term-mode) 'term-bol) + ((derived-mode-p 'comint-mode) 'comint-bol))) + (`(,beg . ,end) + (cond ((minibufferp) (cons (minibuffer-prompt-end) (point-max))) - (bol (save-excursion - (funcall bol) - (cons (point) (pos-eol)))) - (t (cons (point) (point))))) - (str (consult--read - (kj/get-shell-history) - :prompt "Shell history: " - :history t - :sort nil - :initial (buffer-substring-no-properties beg end) - :state (consult--insertion-preview beg end)))) - (delete-region beg end) - (insert (substring-no-properties str))))) + (bol (save-excursion + (funcall bol) + (cons (point) (pos-eol)))) + (t (cons (point) (point))))) + (str (consult--read + (kj/get-shell-history) + :prompt "Shell history: " + :history t + :sort nil + :initial (buffer-substring-no-properties beg end) + :state (consult--insertion-preview beg end)))) + (delete-region beg end) + (insert (substring-no-properties str)))))) (provide 'kj-history) -- cgit v1.2.3