unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
@ 2013-03-16 19:23 Leo Liu
  2013-03-16 21:55 ` Stefan Monnier
  0 siblings, 1 reply; 13+ messages in thread
From: Leo Liu @ 2013-03-16 19:23 UTC (permalink / raw)
  To: 13978

[-- Attachment #1: Type: text/plain, Size: 264 bytes --]

The attached patch adds a new minor mode eldoc-post-insert-mode to
eldoc.el; the new mode can also be used by eval-expression (screenshot
attached). The feature supersedes eldoc-eval in GNU ELPA.

See discussion: http://article.gmane.org/gmane.emacs.devel/144524


[-- Attachment #2: eldoc-post-insert-mode.png --]
[-- Type: image/png, Size: 16079 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: eldoc-post-insert-mode.diff --]
[-- Type: text/x-patch, Size: 7697 bytes --]

From e3aff878ebed7e4f5b67f539b9caaf5a0309a9c3 Mon Sep 17 00:00:00 2001
From: Leo Liu <sdl.web@gmail.com>
Date: Sun, 17 Mar 2013 02:44:58 +0800
Subject: [PATCH 1/3] New variable eval-expression-minibuffer-hook

---
 lisp/simple.el | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lisp/simple.el b/lisp/simple.el
index 526cc64c..0c366db3 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1235,6 +1235,9 @@ (defun eval-expression-print-format (value)
             (format " (#o%o, #x%x, %s)" value value char-string)
           (format " (#o%o, #x%x)" value value)))))
 
+(defvar eval-expression-minibuffer-hook nil
+  "Hook run by `eval-expression' when entering the minibuffer.")
+
 ;; We define this, rather than making `eval' interactive,
 ;; for the sake of completion of names like eval-region, eval-buffer.
 (defun eval-expression (eval-expression-arg
@@ -1253,9 +1256,11 @@ (defun eval-expression (eval-expression-arg
 this command arranges for all errors to enter the debugger."
   (interactive
    (list (let ((minibuffer-completing-symbol t))
-	   (read-from-minibuffer "Eval: "
-				 nil read-expression-map t
-				 'read-expression-history))
+	   (minibuffer-with-setup-hook
+	       (lambda () (run-hooks 'eval-expression-minibuffer-hook))
+	     (read-from-minibuffer "Eval: "
+				   nil read-expression-map t
+				   'read-expression-history)))
 	 current-prefix-arg))
 
   (if (null eval-expression-debug-on-error)
-- 
1.8.2


From d816ede71aa79999cfbaa3951b1d378b4cde361c Mon Sep 17 00:00:00 2001
From: Leo <sdl.web@gmail.com>
Date: Wed, 5 Oct 2011 17:33:58 +0800
Subject: [PATCH 2/3] Allow eldoc to post messages to the mode-line

---
 lisp/emacs-lisp/eldoc.el | 43 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 0f018573..8bce26c0 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -146,6 +146,11 @@ (defvar eldoc-current-idle-delay eldoc-idle-delay
   "Idle time delay currently in use by timer.
 This is used to determine if `eldoc-idle-delay' is changed by the user.")
 
+(defvar eldoc-message-function nil
+  "The function used by `eldoc-message' to display messages.
+It should receive the same arguments as `message'. If this is
+nil, `eldoc-minibuffer-message' is used.")
+
 \f
 ;;;###autoload
 (define-minor-mode eldoc-mode
@@ -188,8 +193,40 @@ (defun eldoc-schedule-timer ()
          (setq eldoc-current-idle-delay eldoc-idle-delay)
          (timer-set-idle-time eldoc-timer eldoc-idle-delay t))))
 
+(defvar eldoc-mode-line-string nil)
+(put 'eldoc-mode-line-string 'risky-local-variable t)
+
+(defun eldoc-minibuffer-message (format-string &rest args)
+  "Show messages in the mode-line when in the minibuffer.
+Otherwise, behave like function `message'."
+  (if (minibufferp)
+      (progn
+	(with-current-buffer
+	    (window-buffer
+	     (or (window-in-direction 'above (minibuffer-window))
+		 (minibuffer-selected-window)
+		 (get-largest-window)))
+	  (unless (and (listp mode-line-format)
+		       (assq 'eldoc-mode-line-string mode-line-format))
+	    (setq mode-line-format
+		  (list "" '(eldoc-mode-line-string
+			     (" " eldoc-mode-line-string " "))
+			mode-line-format))))
+	(add-hook 'minibuffer-exit-hook
+		  (lambda () (setq eldoc-mode-line-string nil))
+		  nil t)
+	(cond
+	 ((null format-string)
+	  (setq eldoc-mode-line-string nil))
+	 ((stringp format-string)
+	  (setq eldoc-mode-line-string
+		(apply 'format format-string args))))
+	(force-mode-line-update))
+    (apply 'message format-string args)))
+
 (defun eldoc-message (&rest args)
-  (let ((omessage eldoc-last-message))
+  (let ((omessage eldoc-last-message)
+        (msgfunc (or eldoc-message-function #'eldoc-minibuffer-message)))
     (setq eldoc-last-message
 	  (cond ((eq (car args) eldoc-last-message) eldoc-last-message)
 		((null (car args)) nil)
@@ -203,8 +240,8 @@ (defun eldoc-message (&rest args)
     ;; they are Legion.
     ;; Emacs way of preventing log messages.
     (let ((message-log-max nil))
-      (cond (eldoc-last-message (message "%s" eldoc-last-message))
-	    (omessage (message nil)))))
+      (cond (eldoc-last-message (funcall msgfunc "%s" eldoc-last-message))
+	    (omessage (funcall msgfunc nil)))))
   eldoc-last-message)
 
 ;; This function goes on pre-command-hook for XEmacs or when using idle
-- 
1.8.2


From e0bbc2b6ea1745f8383a7ad8313031c5b6e3dc1e Mon Sep 17 00:00:00 2001
From: Leo Liu <sdl.web@gmail.com>
Date: Sun, 17 Mar 2013 03:03:11 +0800
Subject: [PATCH 3/3] Implement eldoc-post-insert-mode

---
 lisp/emacs-lisp/eldoc.el | 50 +++++++++++++++++++++++++++++++-----------------
 1 file changed, 32 insertions(+), 18 deletions(-)

diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 8bce26c0..2f3e1644 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -174,6 +174,18 @@ (define-minor-mode eldoc-mode
    (remove-hook 'post-command-hook 'eldoc-schedule-timer)
    (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area)))
 
+(define-minor-mode eldoc-post-insert-mode nil
+  :group 'eldoc :lighter ""
+  (setq eldoc-last-message nil)
+  (let ((prn-info (lambda ()
+		    (unless eldoc-mode
+		      (eldoc-print-current-symbol-info-1)))))
+    (if eldoc-post-insert-mode
+	(add-hook 'post-self-insert-hook prn-info nil t)
+      (remove-hook 'post-self-insert-hook prn-info t))))
+
+(add-hook 'eval-expression-minibuffer-hook 'eldoc-post-insert-mode)
+
 ;;;###autoload
 (defun turn-on-eldoc-mode ()
   "Unequivocally turn on ElDoc mode (see command `eldoc-mode')."
@@ -297,29 +309,31 @@ (defvar eldoc-documentation-function nil
 This variable is expected to be made buffer-local by modes (other than
 Emacs Lisp mode) that support ElDoc.")
 
-(defun eldoc-print-current-symbol-info ()
+(defun eldoc-print-current-symbol-info-1 ()
   (condition-case err
-      (and (eldoc-display-message-p)
-	   (if eldoc-documentation-function
-	       (eldoc-message (funcall eldoc-documentation-function))
-	     (let* ((current-symbol (eldoc-current-symbol))
-		    (current-fnsym  (eldoc-fnsym-in-current-sexp))
-		    (doc (cond
-			  ((null current-fnsym)
-			   nil)
-			  ((eq current-symbol (car current-fnsym))
-			   (or (apply 'eldoc-get-fnsym-args-string
-				      current-fnsym)
-			       (eldoc-get-var-docstring current-symbol)))
-			  (t
-			   (or (eldoc-get-var-docstring current-symbol)
-			       (apply 'eldoc-get-fnsym-args-string
-				      current-fnsym))))))
-	       (eldoc-message doc))))
+      (if eldoc-documentation-function
+	  (eldoc-message (funcall eldoc-documentation-function))
+	(let* ((current-symbol (eldoc-current-symbol))
+	       (current-fnsym  (eldoc-fnsym-in-current-sexp))
+	       (doc (cond
+		     ((null current-fnsym)
+		      nil)
+		     ((eq current-symbol (car current-fnsym))
+		      (or (apply 'eldoc-get-fnsym-args-string
+				 current-fnsym)
+			  (eldoc-get-var-docstring current-symbol)))
+		     (t
+		      (or (eldoc-get-var-docstring current-symbol)
+			  (apply 'eldoc-get-fnsym-args-string
+				 current-fnsym))))))
+	  (eldoc-message doc)))
     ;; This is run from post-command-hook or some idle timer thing,
     ;; so we need to be careful that errors aren't ignored.
     (error (message "eldoc error: %s" err))))
 
+(defun eldoc-print-current-symbol-info ()
+  (and (eldoc-display-message-p) (eldoc-print-current-symbol-info-1)))
+
 (defun eldoc-get-fnsym-args-string (sym &optional index)
   "Return a string containing the parameter list of the function SYM.
 If SYM is a subr and no arglist is obtainable from the docstring
-- 
1.8.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-16 19:23 bug#13978: 24.3; New minor mode eldoc-post-insert-mode Leo Liu
@ 2013-03-16 21:55 ` Stefan Monnier
  2013-03-17  2:56   ` Leo Liu
  0 siblings, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2013-03-16 21:55 UTC (permalink / raw)
  To: Leo Liu; +Cc: 13978

> The attached patch adds a new minor mode eldoc-post-insert-mode to
> eldoc.el; the new mode can also be used by eval-expression (screenshot
> attached). The feature supersedes eldoc-eval in GNU ELPA.

It's looking fairly good.  Questions and comments inline below.

> +(defvar eval-expression-minibuffer-hook nil
> +  "Hook run by `eval-expression' when entering the minibuffer.")

I'd call it eval-expression-minibuffer-setup-hook or maybe I'd just call
an emacs-lisp-minibuffer-mode (which might need to not be an actual
major-mode for technical reasons, but could try to be close to one).

I'd like to move towards using major modes in the minibuffer, so we
might as well plan for that future.

> +(defvar eldoc-message-function nil
> +  "The function used by `eldoc-message' to display messages.
> +It should receive the same arguments as `message'. If this is
> +nil, `eldoc-minibuffer-message' is used.")

Please give it `eldoc-minibuffer-message' as default value rather
than nil.  Better yet give it `message' as default value and set it to
a different value for in-minibuffer use.

> +(define-minor-mode eldoc-post-insert-mode nil
> +  :group 'eldoc :lighter ""
> +  (setq eldoc-last-message nil)
> +  (let ((prn-info (lambda ()
> +		    (unless eldoc-mode
> +		      (eldoc-print-current-symbol-info-1)))))
> +    (if eldoc-post-insert-mode
> +	(add-hook 'post-self-insert-hook prn-info nil t)
> +      (remove-hook 'post-self-insert-hook prn-info t))))

Shouldn't that be called `eldoc-minibuffer-mode'?
And why not just use eldoc-mode?

> -(defun eldoc-print-current-symbol-info ()
> +(defun eldoc-print-current-symbol-info-1 ()
[...] 
> +(defun eldoc-print-current-symbol-info ()
> +  (and (eldoc-display-message-p) (eldoc-print-current-symbol-info-1)))

I removed (not (eq (selected-window) (minibuffer-window)) and (not
cursor-in-echo-area) from my eldoc-display-message-no-interference-p
and haven't noticed any downside, so maybe we can just do that and avoid
creating eldoc-print-current-symbol-info-1 and eldoc-minibuffer-mode.


        Stefan





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-16 21:55 ` Stefan Monnier
@ 2013-03-17  2:56   ` Leo Liu
  2013-03-17  3:39     ` Dmitry Gutov
  0 siblings, 1 reply; 13+ messages in thread
From: Leo Liu @ 2013-03-17  2:56 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 13978

[-- Attachment #1: Type: text/plain, Size: 1592 bytes --]

On 2013-03-17 05:55 +0800, Stefan Monnier wrote:
> It's looking fairly good.  Questions and comments inline below.

Thanks for the time.

> I'd call it eval-expression-minibuffer-setup-hook or maybe I'd just call
> an emacs-lisp-minibuffer-mode (which might need to not be an actual
> major-mode for technical reasons, but could try to be close to one).
>
> I'd like to move towards using major modes in the minibuffer, so we
> might as well plan for that future.

I renamed it to eval-expression-minibuffer-setup-hook for now. The major
mode is a nice idea which I'll find another time to do it. I want the
font-locking to work as well. For the moment font-lock-mode ignores all
invisible buffers.

> Please give it `eldoc-minibuffer-message' as default value rather
> than nil.  Better yet give it `message' as default value and set it to
> a different value for in-minibuffer use.

Done!

> Shouldn't that be called `eldoc-minibuffer-mode'?
> And why not just use eldoc-mode?

eldoc-post-insert-mode can work everywhere not just in the minibuffer.
The idea is from me finding eldoc-mode too distracting by printing
'constantly' to the echo area. Thus eldoc-post-insert-mode only shows
the info when you are typing. (For me it shows the info at the moment I
need it ;)).

> I removed (not (eq (selected-window) (minibuffer-window)) and (not
> cursor-in-echo-area) from my eldoc-display-message-no-interference-p
> and haven't noticed any downside, so maybe we can just do that and avoid
> creating eldoc-print-current-symbol-info-1 and eldoc-minibuffer-mode.

Done.

>         Stefan

Leo


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Implement-eldoc-post-insert-mode.patch --]
[-- Type: text/x-patch, Size: 6463 bytes --]

From 4e4335d3cd3ee8f5e5f9d426e399f39b0aff05c5 Mon Sep 17 00:00:00 2001
From: Leo Liu <sdl.web@gmail.com>
Date: Sun, 17 Mar 2013 10:44:21 +0800
Subject: [PATCH] Implement eldoc-post-insert-mode

http://debbugs.gnu.org/13978
---
 lisp/emacs-lisp/eldoc.el | 79 ++++++++++++++++++++++++++++++++++++++----------
 lisp/simple.el           | 11 +++++--
 2 files changed, 71 insertions(+), 19 deletions(-)

diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 0f018573..0b78530c 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -146,6 +146,10 @@ (defvar eldoc-current-idle-delay eldoc-idle-delay
   "Idle time delay currently in use by timer.
 This is used to determine if `eldoc-idle-delay' is changed by the user.")
 
+(defvar eldoc-message-function 'eldoc-minibuffer-message
+  "The function used by `eldoc-message' to display messages.
+It should receive the same arguments as `message'.")
+
 \f
 ;;;###autoload
 (define-minor-mode eldoc-mode
@@ -169,6 +173,19 @@ (define-minor-mode eldoc-mode
    (remove-hook 'post-command-hook 'eldoc-schedule-timer)
    (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area)))
 
+(define-minor-mode eldoc-post-insert-mode nil
+  :group 'eldoc :lighter (:eval (if eldoc-mode ""
+				  (concat eldoc-minor-mode-string "|i")))
+  (setq eldoc-last-message nil)
+  (let ((prn-info (lambda ()
+		    (unless eldoc-mode
+		      (eldoc-print-current-symbol-info)))))
+    (if eldoc-post-insert-mode
+	(add-hook 'post-self-insert-hook prn-info nil t)
+      (remove-hook 'post-self-insert-hook prn-info t))))
+
+(add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-post-insert-mode)
+
 ;;;###autoload
 (defun turn-on-eldoc-mode ()
   "Unequivocally turn on ElDoc mode (see command `eldoc-mode')."
@@ -188,6 +205,37 @@ (defun eldoc-schedule-timer ()
          (setq eldoc-current-idle-delay eldoc-idle-delay)
          (timer-set-idle-time eldoc-timer eldoc-idle-delay t))))
 
+(defvar eldoc-mode-line-string nil)
+(put 'eldoc-mode-line-string 'risky-local-variable t)
+
+(defun eldoc-minibuffer-message (format-string &rest args)
+  "Display messages in the mode-line when in the minibuffer.
+Otherwise work like `message'."
+  (if (minibufferp)
+      (progn
+	(with-current-buffer
+	    (window-buffer
+	     (or (window-in-direction 'above (minibuffer-window))
+		 (minibuffer-selected-window)
+		 (get-largest-window)))
+	  (unless (and (listp mode-line-format)
+		       (assq 'eldoc-mode-line-string mode-line-format))
+	    (setq mode-line-format
+		  (list "" '(eldoc-mode-line-string
+			     (" " eldoc-mode-line-string " "))
+			mode-line-format))))
+	(add-hook 'minibuffer-exit-hook
+		  (lambda () (setq eldoc-mode-line-string nil))
+		  nil t)
+	(cond
+	 ((null format-string)
+	  (setq eldoc-mode-line-string nil))
+	 ((stringp format-string)
+	  (setq eldoc-mode-line-string
+		(apply 'format format-string args))))
+	(force-mode-line-update))
+    (apply 'message format-string args)))
+
 (defun eldoc-message (&rest args)
   (let ((omessage eldoc-last-message))
     (setq eldoc-last-message
@@ -203,8 +251,9 @@ (defun eldoc-message (&rest args)
     ;; they are Legion.
     ;; Emacs way of preventing log messages.
     (let ((message-log-max nil))
-      (cond (eldoc-last-message (message "%s" eldoc-last-message))
-	    (omessage (message nil)))))
+      (cond (eldoc-last-message
+	     (funcall eldoc-message-function "%s" eldoc-last-message))
+	    (omessage (funcall eldoc-message-function nil)))))
   eldoc-last-message)
 
 ;; This function goes on pre-command-hook for XEmacs or when using idle
@@ -222,25 +271,23 @@ (defun eldoc-pre-command-refresh-echo-area ()
 ;; Decide whether now is a good time to display a message.
 (defun eldoc-display-message-p ()
   (and (eldoc-display-message-no-interference-p)
-       ;; If this-command is non-nil while running via an idle
-       ;; timer, we're still in the middle of executing a command,
-       ;; e.g. a query-replace where it would be annoying to
-       ;; overwrite the echo area.
-       (and (not this-command)
-	    (symbolp last-command)
-	    (intern-soft (symbol-name last-command)
-			 eldoc-message-commands))))
+       ;; `eldoc-post-insert-mode' use no timers.
+       (or (not eldoc-mode)
+	   ;; If this-command is non-nil while running via an idle
+	   ;; timer, we're still in the middle of executing a command,
+	   ;; e.g. a query-replace where it would be annoying to
+	   ;; overwrite the echo area.
+	   (and (not this-command)
+		(symbolp last-command)
+		(intern-soft (symbol-name last-command)
+			     eldoc-message-commands)))))
 
 ;; Check various conditions about the current environment that might make
 ;; it undesirable to print eldoc messages right this instant.
 (defun eldoc-display-message-no-interference-p ()
-  (and eldoc-mode
+  (and (or eldoc-mode eldoc-post-insert-mode)
        (not executing-kbd-macro)
-       (not (and (boundp 'edebug-active) edebug-active))
-       ;; Having this mode operate in an active minibuffer/echo area causes
-       ;; interference with what's going on there.
-       (not cursor-in-echo-area)
-       (not (eq (selected-window) (minibuffer-window)))))
+       (not (and (boundp 'edebug-active) edebug-active))))
 
 \f
 ;;;###autoload
diff --git a/lisp/simple.el b/lisp/simple.el
index 526cc64c..42253645 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1235,6 +1235,9 @@ (defun eval-expression-print-format (value)
             (format " (#o%o, #x%x, %s)" value value char-string)
           (format " (#o%o, #x%x)" value value)))))
 
+(defvar eval-expression-minibuffer-setup-hook nil
+  "Hook run by `eval-expression' when entering the minibuffer.")
+
 ;; We define this, rather than making `eval' interactive,
 ;; for the sake of completion of names like eval-region, eval-buffer.
 (defun eval-expression (eval-expression-arg
@@ -1253,9 +1256,11 @@ (defun eval-expression (eval-expression-arg
 this command arranges for all errors to enter the debugger."
   (interactive
    (list (let ((minibuffer-completing-symbol t))
-	   (read-from-minibuffer "Eval: "
-				 nil read-expression-map t
-				 'read-expression-history))
+	   (minibuffer-with-setup-hook
+	       (lambda () (run-hooks 'eval-expression-minibuffer-setup-hook))
+	     (read-from-minibuffer "Eval: "
+				   nil read-expression-map t
+				   'read-expression-history)))
 	 current-prefix-arg))
 
   (if (null eval-expression-debug-on-error)
-- 
1.8.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17  2:56   ` Leo Liu
@ 2013-03-17  3:39     ` Dmitry Gutov
  2013-03-17  3:57       ` Leo Liu
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Gutov @ 2013-03-17  3:39 UTC (permalink / raw)
  To: Leo Liu; +Cc: 13978

Leo Liu <sdl.web@gmail.com> writes:
>> Shouldn't that be called `eldoc-minibuffer-mode'?
>> And why not just use eldoc-mode?
>
> eldoc-post-insert-mode can work everywhere not just in the minibuffer.
> The idea is from me finding eldoc-mode too distracting by printing
> 'constantly' to the echo area. Thus eldoc-post-insert-mode only shows
> the info when you are typing. (For me it shows the info at the moment I
> need it ;)).

I think you might want to make this configurable. Personally, I like
that I can move point inside a function call in existing code, and it
will show the argument names and which argument I'm on.

It should be as useful when editing an expression to be evaluated.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17  3:39     ` Dmitry Gutov
@ 2013-03-17  3:57       ` Leo Liu
  2013-03-17  4:01         ` Dmitry Gutov
  0 siblings, 1 reply; 13+ messages in thread
From: Leo Liu @ 2013-03-17  3:57 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 13978

On 2013-03-17 11:39 +0800, Dmitry Gutov wrote:
> I think you might want to make this configurable. Personally, I like
> that I can move point inside a function call in existing code, and it
> will show the argument names and which argument I'm on.
>
> It should be as useful when editing an expression to be evaluated.

Certainly. No feature is removed. we have eldoc-mode to do what you
want. eldoc-post-insert-mode does nothing when eldoc-mode is enabled.

Leo





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17  3:57       ` Leo Liu
@ 2013-03-17  4:01         ` Dmitry Gutov
  2013-03-17  4:09           ` Leo Liu
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Gutov @ 2013-03-17  4:01 UTC (permalink / raw)
  To: Leo Liu; +Cc: 13978

On 17.03.2013 7:57, Leo Liu wrote:
> On 2013-03-17 11:39 +0800, Dmitry Gutov wrote:
>> I think you might want to make this configurable. Personally, I like
>> that I can move point inside a function call in existing code, and it
>> will show the argument names and which argument I'm on.
>>
>> It should be as useful when editing an expression to be evaluated.
>
> Certainly. No feature is removed. we have eldoc-mode to do what you
> want. eldoc-post-insert-mode does nothing when eldoc-mode is enabled.

Will I be able to use eldoc-mode during eval-expression, then?





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17  4:01         ` Dmitry Gutov
@ 2013-03-17  4:09           ` Leo Liu
  2013-03-17 12:10             ` Dmitry Gutov
  2013-03-17 13:04             ` Stefan Monnier
  0 siblings, 2 replies; 13+ messages in thread
From: Leo Liu @ 2013-03-17  4:09 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 13978

On 2013-03-17 12:01 +0800, Dmitry Gutov wrote:
> Will I be able to use eldoc-mode during eval-expression, then?

Yes, of course, eldoc-mode works just as well as eldoc-post-insert-mode
in the minibuffer.

(add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode)

Leo





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17  4:09           ` Leo Liu
@ 2013-03-17 12:10             ` Dmitry Gutov
  2013-03-17 13:04             ` Stefan Monnier
  1 sibling, 0 replies; 13+ messages in thread
From: Dmitry Gutov @ 2013-03-17 12:10 UTC (permalink / raw)
  To: Leo Liu; +Cc: 13978

Leo Liu <sdl.web@gmail.com> writes:

> On 2013-03-17 12:01 +0800, Dmitry Gutov wrote:
>> Will I be able to use eldoc-mode during eval-expression, then?
>
> Yes, of course, eldoc-mode works just as well as eldoc-post-insert-mode
> in the minibuffer.
>
> (add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode)

Got it. Sorry for the distraction.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17  4:09           ` Leo Liu
  2013-03-17 12:10             ` Dmitry Gutov
@ 2013-03-17 13:04             ` Stefan Monnier
  2013-03-17 13:51               ` Leo Liu
  1 sibling, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2013-03-17 13:04 UTC (permalink / raw)
  To: Leo Liu; +Cc: 13978, Dmitry Gutov

>> Will I be able to use eldoc-mode during eval-expression, then?
> Yes, of course, eldoc-mode works just as well as eldoc-post-insert-mode
> in the minibuffer.
> (add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode)

Good.  So eldoc-post-insert-mode is an independent feature.
Another option would be to have a boolean eldoc-post-insert variable to
control how eldoc-mode works.


        Stefan





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17 13:04             ` Stefan Monnier
@ 2013-03-17 13:51               ` Leo Liu
  2013-03-17 15:21                 ` Leo Liu
  2013-03-17 15:26                 ` Stefan Monnier
  0 siblings, 2 replies; 13+ messages in thread
From: Leo Liu @ 2013-03-17 13:51 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 13978, Dmitry Gutov

On 2013-03-17 21:04 +0800, Stefan Monnier wrote:
> Another option would be to have a boolean eldoc-post-insert variable to
> control how eldoc-mode works.

It seems two minor modes would still give users more control. We can
think of eldoc-post-insert-mode as a minimal eldoc-mode but still allows
transitioning to a 'full' mode via M-x eldoc-mode.

Leo





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17 13:51               ` Leo Liu
@ 2013-03-17 15:21                 ` Leo Liu
  2013-03-17 15:26                 ` Stefan Monnier
  1 sibling, 0 replies; 13+ messages in thread
From: Leo Liu @ 2013-03-17 15:21 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 13978-done

I put the code in trunk. Feel free to tweak it as you see fit ;) Thanks
for the review and help.

Leo





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17 13:51               ` Leo Liu
  2013-03-17 15:21                 ` Leo Liu
@ 2013-03-17 15:26                 ` Stefan Monnier
  2013-03-17 15:55                   ` Leo Liu
  1 sibling, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2013-03-17 15:26 UTC (permalink / raw)
  To: Leo Liu; +Cc: 13978, Dmitry Gutov

>> Another option would be to have a boolean eldoc-post-insert variable to
>> control how eldoc-mode works.
> It seems two minor modes would still give users more control.

More than what?  They can already do that with enough coding, so the
difference is in how easily they can setup some specific behavior.
I'm not sure it's worth the extra minor mode.


        Stefan





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#13978: 24.3; New minor mode eldoc-post-insert-mode
  2013-03-17 15:26                 ` Stefan Monnier
@ 2013-03-17 15:55                   ` Leo Liu
  0 siblings, 0 replies; 13+ messages in thread
From: Leo Liu @ 2013-03-17 15:55 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 13978

On 2013-03-17 23:26 +0800, Stefan Monnier wrote:
> More than what?  They can already do that with enough coding, so the
> difference is in how easily they can setup some specific behavior.
> I'm not sure it's worth the extra minor mode.

A variable is good for permanent change i.e. setup a permanent way to
use eldoc but it sucks when you need to temporarily change the way it
works. A minor mode is a command so users will be able to M-x to get to
it.

Anyway, I don't mind much one way or the other. Feel free to merge the
two modes.

Leo





^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-03-17 15:55 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-16 19:23 bug#13978: 24.3; New minor mode eldoc-post-insert-mode Leo Liu
2013-03-16 21:55 ` Stefan Monnier
2013-03-17  2:56   ` Leo Liu
2013-03-17  3:39     ` Dmitry Gutov
2013-03-17  3:57       ` Leo Liu
2013-03-17  4:01         ` Dmitry Gutov
2013-03-17  4:09           ` Leo Liu
2013-03-17 12:10             ` Dmitry Gutov
2013-03-17 13:04             ` Stefan Monnier
2013-03-17 13:51               ` Leo Liu
2013-03-17 15:21                 ` Leo Liu
2013-03-17 15:26                 ` Stefan Monnier
2013-03-17 15:55                   ` Leo Liu

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).