[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] M-RET and C-RET
From: |
Nicolas Goaziou |
Subject: |
Re: [O] M-RET and C-RET |
Date: |
Sat, 03 Dec 2011 11:24:49 +0100 |
Hello,
Michael Brand <address@hidden> writes:
> With
>
> #+begin_src org
> ,*** abc
> ,*** def
> , - ghi
> , - jkl
> #+end_src
>
> M-RET on "j" inserts a line above but I expected it below. If I
> want a line above I would move the point to "-" before doing M-RET
> like I do on a heading where I move to the first "*" to get the insert
> above.
Point isn't on "j". It's either before or after it. In your case, point
is before "j". And using M-RET on an item before its body start will
result in creating an item before it.
This is done so to avoid splitting counters or check-boxes.
You shouldn't compare lists and headlines behaviour, they don't have the
same constraints.
> Changing to the behavior expected by me would make it possible to add
> a new list item below the last one in a list (a very frequent task)
Go to the end of the last item, and use M-RET.
If it is really frequent, the following function will do what you want:
#+begin_src emacs-lisp
(defun org-insert-item-at-end (&optional arg)
"Insert a new list item at the end of the current list.
When optional argument ARG is non-nil, add a check-box to the
item."
(interactive "P")
(let ((itemp (org-in-item-p)))
(unless itemp (error "Not in an item"))
(goto-char (org-in-item-p))
(let* ((struct (org-list-struct))
(prevs (org-list-prevs-alist struct)))
;; Move to the end of the last item in list, before any white
;; space, and insert item there.
(goto-char
(org-list-get-item-end
(org-list-get-last-item itemp struct prevs) struct))
(skip-chars-backward " \r\t\n")
;; Repair list.
(setq struct (org-list-insert-item (point) struct prevs arg))
(org-list-write-struct struct (org-list-parents-alist struct))
;; Take care of check-boxes count, if needed.
(when arg (org-update-checkbox-count-maybe))
;; Position point at body's start.
(looking-at org-list-full-item-re)
(goto-char (match-end 0)))))
#+end_src
> I configured it to nil for headline and item only to be able to insert
> a new list item below the current with M-RET where I am forced to be
> on or at right of "k" which by default splits which I want only in
> very rare cases.
If you want to split lines only on very rare occasions, why is it
a problem to set `org-M-RET-may-split-line' to nil?
> And one should not be invited to avoid M-RET and edit lists with "-"
> and TAB as illustrated in the thread "org-list-indent-offset only
> works partially": http://thread.gmane.org/gmane.emacs.orgmode/47954
Which part of the thread are you referring to? I see no suggestion about
avoiding usage of M-RET.
Regards,
--
Nicolas Goaziou