[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/capf-autosuggest 07cb937 32/63: Added dwim commands/men
From: |
ELPA Syncer |
Subject: |
[elpa] externals/capf-autosuggest 07cb937 32/63: Added dwim commands/menu-items |
Date: |
Wed, 27 Oct 2021 14:57:59 -0400 (EDT) |
branch: externals/capf-autosuggest
commit 07cb937ff3b1eb4a72132ccafb64e10f23492be5
Author: jakanakaevangeli <jakanakaevangeli@chiru.no>
Commit: jakanakaevangeli <jakanakaevangeli@chiru.no>
Added dwim commands/menu-items
---
capf-autosuggest.el | 122 +++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 117 insertions(+), 5 deletions(-)
diff --git a/capf-autosuggest.el b/capf-autosuggest.el
index 5f4f59a..21f0544 100644
--- a/capf-autosuggest.el
+++ b/capf-autosuggest.el
@@ -101,11 +101,17 @@
(declare-function comint-previous-matching-input-from-input "comint")
(declare-function eshell-previous-matching-input-from-input "em-hist")
+(defgroup capf-autosuggest nil
+ "Show completion-at-point as an overlay."
+ :group 'completion
+ :prefix "capf-autosuggest-"
+ :link
+ '(url-link "https://github.com/jakanakaevangeli/emacs-capf-autosuggest"))
+
;;; Auto-suggestion overlay
(defface capf-autosuggest-face '((t :inherit file-name-shadow))
- "Face used for auto suggestions."
- :group 'completion)
+ "Face used for auto suggestions.")
(defvar capf-autosuggest-capf-functions '(capf-autosuggest-orig-if-at-eol-capf)
"`completion-at-point-functions', used by capf-autosuggest.
@@ -188,7 +194,7 @@ Otherwise, return nil."
;;;###autoload
(define-minor-mode capf-autosuggest-mode
"Auto-suggest first completion at point with an overlay."
- :group 'completion
+ :group 'capf-autosuggest
(if capf-autosuggest-mode
(progn
(setq capf-autosuggest--overlay (make-overlay (point) (point) nil t t))
@@ -281,7 +287,6 @@ inactive."
(interactive)
(goto-char (overlay-start capf-autosuggest--overlay)))))
-
(defun capf-autosuggest-comint-previous-matching-input-from-input (n)
"Like `comint-previous-matching-input-from-input'.
But increase arument N by 1, if positive, but not on command
@@ -306,6 +311,49 @@ repetition."
(eshell-previous-matching-input-from-input n)
(setq this-command #'eshell-previous-matching-input-from-input))
+(defun capf-autosuggest-comint-send-input ()
+ "`capf-autosuggest-accept' and `comint-send-input'."
+ (interactive)
+ (capf-autosuggest-accept)
+ (call-interactively (or (command-remapping #'comint-send-input)
+ #'comint-send-input))
+ (setq this-command #'comint-send-input))
+
+(defun capf-autosuggest-eshell-send-input ()
+ "`capf-autosuggest-accept' and `eshell-send-input'."
+ (interactive)
+ (capf-autosuggest-accept)
+ (call-interactively (or (command-remapping #'eshell-send-input)
+ #'eshell-send-input))
+ (setq this-command #'eshell-send-input))
+
+(defcustom capf-autosuggest-dwim-next-line t
+ "Whether `next-line' can accept and send current suggestion.
+If t and point is on last line, `next-line' will accept the
+current suggestion and send input."
+ :type 'boolean)
+(defcustom capf-autosuggest-dwim-next-prompt nil
+ "Whether next-prompt commands can send current suggestion.
+If t and point is after the last prompt, `comint-next-prompt' and
+`eshell-next-prompt' will accept the current suggestion and send
+input."
+ :type 'boolean)
+(defcustom capf-autosuggest-dwim-next-input nil
+ "Whether next-input commands can send current suggestion.
+If t and previous command wasn't a history command
+(next/previous-input or previous/next-matching-input-from-input),
+`comint-next-input' and `eshell-next-input' will accept the
+current suggestion and send input."
+ :type 'boolean)
+(defcustom capf-autosuggest-dwim-next-matching-input-from-input nil
+ "Whether next-input commands can send current suggestion.
+If t and previous command wasn't a history matching command
+(previous or next-matching-input-from-input),
+`comint-next-matching-input-from-input' and
+`eshell-next-matching-input-from-input' will accept the current
+suggestion and send input."
+ :type 'boolean)
+
(defvar capf-autosuggest-active-mode-map
(let ((map (make-sparse-keymap)))
(define-key map [remap forward-word] #'capf-autosuggest-forward-word)
@@ -330,12 +378,76 @@ repetition."
#'capf-autosuggest-eshell-previous-matching-input-from-input)
(define-key map [remap comint-previous-matching-input-from-input]
#'capf-autosuggest-comint-previous-matching-input-from-input)
+
+ (define-key map [remap next-line]
+ (list 'menu-item "" #'next-line :filter
+ (lambda (cmd)
+ (if (and capf-autosuggest-dwim-next-line
+ (looking-at-p "[^\n]*\n?\\'"))
+ (cond ((derived-mode-p 'comint-mode)
+ #'capf-autosuggest-comint-send-input)
+ ((derived-mode-p 'eshell-mode)
+ #'capf-autosuggest-eshell-send-input)
+ (t cmd))
+ cmd))))
+ (define-key map [remap comint-next-prompt]
+ (list 'menu-item "" #'comint-next-prompt :filter
+ (lambda (cmd)
+ (if (and capf-autosuggest-dwim-next-prompt
+ (comint-after-pmark-p))
+ #'capf-autosuggest-comint-send-input
+ cmd))))
+ (define-key map [remap eshell-next-prompt]
+ (list 'menu-item "" #'eshell-next-prompt :filter
+ (lambda (cmd)
+ (if (and capf-autosuggest-dwim-next-prompt
+ (>= (point) eshell-last-output-end))
+ #'capf-autosuggest-comint-send-input
+ cmd))))
+ (define-key map [remap comint-next-input]
+ (list 'menu-item "" #'comint-next-input :filter
+ (lambda (cmd)
+ (if (or (not capf-autosuggest-dwim-next-input)
+ (memq last-command
+ '(comint-next-matching-input-from-input
+ comint-previous-matching-input-from-input
+ comint-next-input comint-previous-input)))
+ cmd
+ #'capf-autosuggest-comint-send-input))))
+ (define-key map [remap eshell-next-input]
+ (list 'menu-item "" #'eshell-next-input :filter
+ (lambda (cmd)
+ (if (or (not capf-autosuggest-dwim-next-input)
+ (memq last-command
+ '(eshell-next-matching-input-from-input
+ eshell-previous-matching-input-from-input
+ eshell-next-input eshell-previous-input)))
+ cmd
+ #'capf-autosuggest-eshell-send-input))))
+ (define-key map [remap comint-next-matching-input-from-input]
+ (list 'menu-item "" #'comint-next-matching-input-from-input :filter
+ (lambda (cmd)
+ (if (or (not
capf-autosuggest-dwim-next-matching-input-from-input)
+ (memq last-command
+ '(comint-next-matching-input-from-input
+ comint-previous-matching-input-from-input)))
+ cmd
+ #'capf-autosuggest-comint-send-input))))
+ (define-key map [remap eshell-next-matching-input-from-input]
+ (list 'menu-item "" #'eshell-next-matching-input-from-input :filter
+ (lambda (cmd)
+ (if (or (not
capf-autosuggest-dwim-next-matching-input-from-input)
+ (memq last-command
+ '(eshell-previous-matching-input-from-input
+ eshell-next-matching-input-from-input)))
+ cmd
+ #'capf-autosuggest-eshell-send-input))))
map)
"Keymap active when an auto-suggestion is shown.")
(define-minor-mode capf-autosuggest-active-mode
"Active when auto-suggested overlay is shown."
- :group 'completion
+ :group 'capf-autosuggest
(unless capf-autosuggest-active-mode
(delete-overlay capf-autosuggest--overlay)))
- [elpa] externals/capf-autosuggest 7e623f3 04/63: Un-implement must-land-inside, always treat it as t, (continued)
- [elpa] externals/capf-autosuggest 7e623f3 04/63: Un-implement must-land-inside, always treat it as t, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 489974d 06/63: Require subr-x for compilation only, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 0ba985a 14/63: Minor simplification, use pcase-let, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 7085c0a 02/63: Improve, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 6432d5f 09/63: Avoid error if all-completions returns invalid strings, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest f9854fb 03/63: Define partial-accept commands individually, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest d374a0b 21/63: Small rearrangement, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 56796e2 23/63: Minor loop optimization, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 82c6851 25/63: Merge into one file, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest bdc26ec 31/63: Typo, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 07cb937 32/63: Added dwim commands/menu-items,
ELPA Syncer <=
- [elpa] externals/capf-autosuggest d5e1ce2 30/63: Rearrange, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest cf91a30 37/63: Added experimental support for minibuffer history, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest d72b37a 35/63: Added readme, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest f137fcb 39/63: Fix previous-matching-input if point isn't touching overlay, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 8f5d5fa 49/63: Fix last change, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 1333fb9 41/63: Override face text property, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 25ddce8 45/63: Fix compiler warning, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 96394ca 48/63: Simplify accept and send menu-items, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 6e702a7 47/63: Fix programming typo, ELPA Syncer, 2021/10/27
- [elpa] externals/capf-autosuggest 54e9d1f 42/63: Fix cursor display issues if overlay text ends with a newline, ELPA Syncer, 2021/10/27