Re: how to make return follow hyperlink?

2015-08-28 Thread Peter Salazar
Thanks for all the responses! Mark, where could we find the patch you
mentioned? I wouldn't know how to test/update it, but maybe someone else on
the list has the requisite hacking skills...

On Fri, Aug 28, 2015 at 1:55 AM, Tomi Ollila tomi.oll...@iki.fi wrote:

 On Wed, Aug 26 2015, Peter Salazar cycleofs...@gmail.com wrote:

  How do I make it so that hitting RET on a hyperlink follows it? Is there
 a
  setting analogous to org-return-follows-link? I often have links in
  incoming emails, and I'd like to be able to open them in my browser with
  one keystroke.

 BTW: the interesting thing is that in text/plain content id: links already
 do something -- and e.g. https?: do not. in text/html content I get
 'No usable browser found'(*) when pressing RET on top of http: link so it
 must be doing something ;)

 Tomi

 (*) Note to self: hack something to show the link using (message ...) in
 this case.

 
  Thanks!

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client

2015-08-28 Thread Jani Nikula
On Wed, 26 Aug 2015, Tomi Ollila tomi.oll...@iki.fi wrote:
 On Sat, Aug 15 2015, Jani Nikula j...@nikula.org wrote:

 Make the default behaviour for --client the same as emacsclient
 default: do not create a new frame. Add a new option --create-frame,
 passing the same option to emacsclient to create a frame.

 ---

 v2: fix killing frame with --create-frame

 v3: fix --create-frame w/o --client parameter check

 v4: fix kill terminal logic, document behaviour with daemon mode
 ---
  doc/man1/notmuch-emacs-mua.rst |  6 ++
  notmuch-emacs-mua  | 14 ++
  2 files changed, 16 insertions(+), 4 deletions(-)

 diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
 index 89a2fead17b1..c3689eb82c8a 100644
 --- a/doc/man1/notmuch-emacs-mua.rst
 +++ b/doc/man1/notmuch-emacs-mua.rst
 @@ -45,6 +45,12 @@ Supported options for **notmuch-emacs-mua** include
  Automatically start Emacs in daemon mode, if the Emacs server
  is not running. Applicable with ``--client``.
  
 +``--create-frame``
 +Create a new frame instead of trying to use the current Emacs
 +frame. Applicable with ``--client``. This will be required
 +when Emacs is running (or automatically started with
 +``--auto-daemon``) in daemon mode.
 +
  ``--print``
  Output the resulting elisp to stdout instead of evaluating it.
  
 diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
 index ac03a4a60d56..b51d8d0e2c5b 100755
 --- a/notmuch-emacs-mua
 +++ b/notmuch-emacs-mua
 @@ -37,11 +37,10 @@ PRINT_ONLY=
  NO_WINDOW=
  USE_EMACSCLIENT=
  AUTO_DAEMON=
 -CREATE_FRAME=-c
 +CREATE_FRAME=
  
  # The crux of it all: construct an elisp progn and eval it.
  ELISP=(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)
 -ELISP=${ELISP} (setq message-exit-actions (list 
 #'save-buffers-kill-terminal))
  
  # Short options compatible with mutt(1).
  while getopts :s:c:b:i:h opt; do
 @@ -65,7 +64,7 @@ while getopts :s:c:b:i:h opt; do
  opt=${opt%%=*}
  ;;
  # Long options without arguments.
 ---help|--print|--no-window-system|--client|--auto-daemon)
 +
 --help|--print|--no-window-system|--client|--auto-daemon|--create-frame)
  ;;
  *)
  echo $0: unknown long option ${opt}, or argument 
 mismatch. 2
 @@ -103,7 +102,6 @@ while getopts :s:c:b:i:h opt; do
  ;;
  --no-window-system)
  NO_WINDOW=-nw
 -CREATE_FRAME=
  ;;
  --client)
  USE_EMACSCLIENT=yes
 @@ -111,6 +109,9 @@ while getopts :s:c:b:i:h opt; do
  --auto-daemon)
  AUTO_DAEMON=--alternate-editor=
  ;;
 +--create-frame)
 +CREATE_FRAME=-c
 +;;
  *)
  # We should never end up here.
  echo $0: internal error (option ${opt}). 2

 This looks pretty good now; I player quite a bit with --client,
 --create-frame and --auto-daemon 
 (with and without setting EMACSCLIENT='echo emacsclient')

 Based on that I think this check should be added here (after option
 parsing):

 if [ -n $AUTO_DAEMON -a -z $CREATE_FRAME ]; then
 echo $0: --auto-daemon is only applicable with --create-frame. 2
 exit 1   
 fi

 without this one may execute ./notmuch-emacs-mua --client --auto-daemon
 which yields starting emacs in daemon mode (in this example it is expected
 emacs is not running; otherwise --auto-daemon has no use in this example)
 -- but no ui to that newly-running emacs is provided. Similar behaviour
 can be observed by the following

This problem is present with the current code already, right now. I
don't see the need to fix everything in my series.

 $ emacsclient --eval '(kill emacs) ;; but beware! ' 
 $ emacsclient --alternate-editor= --eval '(find-file /etc/passwd)'

 (side note: using this --alternate-editor= is pretty nifty way to get it done)

 emacs --daemon is executed which loaded /etc/passwd but w/o ui

 Note the difference in:

 emacsclient --alternate-editor= /etc/passwd

 now emacs --daemon is executed *and* ui where /etc/passwd is available is
 provided!

 otoh,
 emacsclient --alternate-editor= -c [-nw] --eval '(find-file /etc/passwd)'

 works fine, albeit a bit different than the one where /etc/passwd was given
 as a simple filename argument.

 comparative to ./notmuch-emacs-mua --client --create-frame --auto-daemon 

 @@ -128,6 +129,11 @@ for arg; do
  ELISP=${ELISP} (message-goto-to) (insert \${arg}, \)
  done
  
 +# Kill the terminal/frame if we're creating one.
 +if [ -z $USE_EMACSCLIENT -o -n $CREATE_FRAME -o -n $NO_WINDOW ]; then
 +ELISP=${ELISP} (setq message-exit-actions (list 
 #'save-buffers-kill-terminal))
 +fi

 I am not very happy that message-exit-actions was added to $ELISP when
 not using emacsclient; when emacs is started its sole (initial) purpose is
 to serve mail sending (and not lending a frame in some other emacs) -- in
 this case it would be nice to be 

Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client

2015-08-28 Thread Tomi Ollila
On Fri, Aug 28 2015, Jani Nikula j...@nikula.org wrote:

 On Wed, 26 Aug 2015, Tomi Ollila tomi.oll...@iki.fi wrote:
 On Sat, Aug 15 2015, Jani Nikula j...@nikula.org wrote:

 Make the default behaviour for --client the same as emacsclient
 default: do not create a new frame. Add a new option --create-frame,
 passing the same option to emacsclient to create a frame.

 ---

 v2: fix killing frame with --create-frame

 v3: fix --create-frame w/o --client parameter check

 v4: fix kill terminal logic, document behaviour with daemon mode
 ---
  doc/man1/notmuch-emacs-mua.rst |  6 ++
  notmuch-emacs-mua  | 14 ++
  2 files changed, 16 insertions(+), 4 deletions(-)

 diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
 index 89a2fead17b1..c3689eb82c8a 100644
 --- a/doc/man1/notmuch-emacs-mua.rst
 +++ b/doc/man1/notmuch-emacs-mua.rst
 @@ -45,6 +45,12 @@ Supported options for **notmuch-emacs-mua** include
  Automatically start Emacs in daemon mode, if the Emacs server
  is not running. Applicable with ``--client``.
  
 +``--create-frame``
 +Create a new frame instead of trying to use the current Emacs
 +frame. Applicable with ``--client``. This will be required
 +when Emacs is running (or automatically started with
 +``--auto-daemon``) in daemon mode.
 +
  ``--print``
  Output the resulting elisp to stdout instead of evaluating it.
  
 diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
 index ac03a4a60d56..b51d8d0e2c5b 100755
 --- a/notmuch-emacs-mua
 +++ b/notmuch-emacs-mua
 @@ -37,11 +37,10 @@ PRINT_ONLY=
  NO_WINDOW=
  USE_EMACSCLIENT=
  AUTO_DAEMON=
 -CREATE_FRAME=-c
 +CREATE_FRAME=
  
  # The crux of it all: construct an elisp progn and eval it.
  ELISP=(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)
 -ELISP=${ELISP} (setq message-exit-actions (list 
 #'save-buffers-kill-terminal))
  
  # Short options compatible with mutt(1).
  while getopts :s:c:b:i:h opt; do
 @@ -65,7 +64,7 @@ while getopts :s:c:b:i:h opt; do
 opt=${opt%%=*}
 ;;
 # Long options without arguments.
 -   --help|--print|--no-window-system|--client|--auto-daemon)
 +   
 --help|--print|--no-window-system|--client|--auto-daemon|--create-frame)
 ;;
 *)
 echo $0: unknown long option ${opt}, or argument 
 mismatch. 2
 @@ -103,7 +102,6 @@ while getopts :s:c:b:i:h opt; do
 ;;
 --no-window-system)
 NO_WINDOW=-nw
 -   CREATE_FRAME=
 ;;
 --client)
 USE_EMACSCLIENT=yes
 @@ -111,6 +109,9 @@ while getopts :s:c:b:i:h opt; do
 --auto-daemon)
 AUTO_DAEMON=--alternate-editor=
 ;;
 +   --create-frame)
 +   CREATE_FRAME=-c
 +   ;;
 *)
 # We should never end up here.
 echo $0: internal error (option ${opt}). 2

 This looks pretty good now; I player quite a bit with --client,
 --create-frame and --auto-daemon 
 (with and without setting EMACSCLIENT='echo emacsclient')

 Based on that I think this check should be added here (after option
 parsing):

 if [ -n $AUTO_DAEMON -a -z $CREATE_FRAME ]; then
 echo $0: --auto-daemon is only applicable with --create-frame. 2
 exit 1   
 fi

 without this one may execute ./notmuch-emacs-mua --client --auto-daemon
 which yields starting emacs in daemon mode (in this example it is expected
 emacs is not running; otherwise --auto-daemon has no use in this example)
 -- but no ui to that newly-running emacs is provided. Similar behaviour
 can be observed by the following

 This problem is present with the current code already, right now. I
 don't see the need to fix everything in my series.

Yes, the problem was already present in patch 4/5 (and probably earlier as
you mentioned that there was problem already) -- I just did not want
to pick that also in this discussion... ;/

 $ emacsclient --eval '(kill emacs) ;; but beware! ' 
 $ emacsclient --alternate-editor= --eval '(find-file /etc/passwd)'

 (side note: using this --alternate-editor= is pretty nifty way to get it 
 done)

 emacs --daemon is executed which loaded /etc/passwd but w/o ui

 Note the difference in:

 emacsclient --alternate-editor= /etc/passwd

 now emacs --daemon is executed *and* ui where /etc/passwd is available is
 provided!

 otoh,
 emacsclient --alternate-editor= -c [-nw] --eval '(find-file /etc/passwd)'

 works fine, albeit a bit different than the one where /etc/passwd was given
 as a simple filename argument.

 comparative to ./notmuch-emacs-mua --client --create-frame --auto-daemon 

 @@ -128,6 +129,11 @@ for arg; do
  ELISP=${ELISP} (message-goto-to) (insert \${arg}, \)
  done
  
 +# Kill the terminal/frame if we're creating one.
 +if [ -z $USE_EMACSCLIENT -o -n $CREATE_FRAME -o -n $NO_WINDOW ]; then
 +ELISP=${ELISP} (setq message-exit-actions (list 
 #'save-buffers-kill-terminal))
 +fi

 I am not very happy that