Re: [O] [Prelim. patch] extend org-meta-return to keywords

2014-11-22 Thread Thierry Banel
M-RET working as expected is appealing.
Your patch makes M-RET moreuseful than it is now.
I vote +1.

There are a few issues thought.
I guess they can be worked out.

For instance:
   #+HEA|DER: :var v=hello (cursor is the pipe |)
ischanged into
   #+HEA
   #+HEADER: |DER: :var v=hello
which is pretty useless

Also if #+HEADER: is immediately followed by a #+BEGIN_SRC,
the patch (for an unknown reason) is ignored,
and the old behavior applies.

Thanks for this
Thierry


Le 19/11/2014 15:41, Rasmus a écrit :
 Hi,

 Something I have wanted for a while is to have M-RET work as
 expected(?)  on keyword lines such as #+LATEX_HEADER, #+CAPTION etc.

 An animation to illustrate, where '|' is point:

 #+CAPTION: this is a |long caption

 #   click M-RET ⇒ 

 #+CAPTION: this is a 
 #+CAPTION: |long caption

 Would anyone else like this?

 Attached is a quick patch that works surprisingly well.  I would work
 more on it if you guys agree this would be useful.  It probably need
 much more work for corner-cases (any ideas what these are)?

 Thanks,
 Rasmus





Re: [O] [Prelim. patch] extend org-meta-return to keywords

2014-11-22 Thread Rasmus
Hi Thierry,

Thanks for the feedback.
I posted an updated patch under the subject:

  [patch] extend org-meta-return to keywords

where Nicolas commented.

Thierry Banel tbanelweb...@free.fr writes:

 M-RET working as expected is appealing.
 Your patch makes M-RET moreuseful than it is now.
 I vote +1.

 There are a few issues thought.
 I guess they can be worked out.

 For instance:
#+HEA|DER: :var v=hello (cursor is the pipe |)
 ischanged into
#+HEA
#+HEADER: |DER: :var v=hello
 which is pretty useless

Thanks.  I'm pretty sure it's fixed in the version from last night.

 Also if #+HEADER: is immediately followed by a #+BEGIN_SRC,
 the patch (for an unknown reason) is ignored,
 and the old behavior applies.

OK, that's a good test case.  I will look into it.

Thanks,
Rasmus

-- 
Enough with the bla bla!




Re: [O] [Prelim. patch] extend org-meta-return to keywords

2014-11-22 Thread Thierry Banel
Le 22/11/2014 15:31, Rasmus a écrit :

 There are a few issues thought.
 I guess they can be worked out.

 For instance:
#+HEA|DER: :var v=hello (cursor is the pipe |)
 ischanged into
#+HEA
#+HEADER: |DER: :var v=hello
 which is pretty useless
 Thanks.  I'm pretty sure it's fixed in the version from last night.
Sorry, Rasmus, I should have noticed your second patch.
First issue fixed!
Regard, Thierry




[O] [Prelim. patch] extend org-meta-return to keywords

2014-11-19 Thread Rasmus
Hi,

Something I have wanted for a while is to have M-RET work as
expected(?)  on keyword lines such as #+LATEX_HEADER, #+CAPTION etc.

An animation to illustrate, where '|' is point:

#+CAPTION: this is a |long caption

#   click M-RET ⇒ 

#+CAPTION: this is a 
#+CAPTION: |long caption

Would anyone else like this?

Attached is a quick patch that works surprisingly well.  I would work
more on it if you guys agree this would be useful.  It probably need
much more work for corner-cases (any ideas what these are)?

Thanks,
Rasmus

-- 
When the facts change, I change my mind. What do you do, sir?
From 60a9cefcc2997cc53a448d1c57ca71935ea6426f Mon Sep 17 00:00:00 2001
From: rasmus ras...@gmx.us
Date: Wed, 19 Nov 2014 15:39:19 +0100
Subject: [PATCH] org.el: Add keyword-support to M-RET

* org.el (org-insert-keyword): New function.
(org-meta-return): May call `org-insert-keyword'.
---
 lisp/org.el | 25 +++--
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index dbd2cb7..627c409 100755
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -21286,6 +21286,18 @@ number of stars to add.
 	   (forward-line)))
 (unless toggled (message Cannot toggle heading from here
 
+(defun org-insert-keyword (optional arg)
+  Insert a new keyword at point.
+
+ARG may be used to specify a keyword.  Otherwise the keyword is determined from the context.
+
+Mainly used for `org-meta-return'.
+  (interactive P)
+  (let* ((elm (org-element-at-point))
+	 (key (or arg (and (eq 'keyword (org-element-type elm))
+			   (org-element-property :key elm)
+(and key (insert (format \n#+%s:  key)
+
 (defun org-meta-return (optional arg)
   Insert a new heading or wrap a region in a table.
 Calls `org-insert-heading' or `org-table-wrap-region', depending
@@ -21298,12 +21310,13 @@ on context.  See the individual commands for more information.
 (when (eq type 'table-row)
   (setq element (org-element-property :parent element))
   (setq type 'table))
-(if (and (eq type 'table)
- (eq (org-element-property :type element) 'org)
- (= (point) (org-element-property :contents-begin element))
- ( (point) (org-element-property :contents-end element)))
-(call-interactively 'org-table-wrap-region)
-  (call-interactively 'org-insert-heading)
+(cond  ((and (eq type 'table)
+		  (eq (org-element-property :type element) 'org)
+		  (= (point) (org-element-property :contents-begin element))
+		  ( (point) (org-element-property :contents-end element)))
+		(call-interactively 'org-table-wrap-region))
+	   ((eq type 'keyword) (call-interactively 'org-insert-keyword))
+	   (t (call-interactively 'org-insert-heading))
 
 ;;; Menu entries
 
-- 
2.1.3