emacs-orgmode
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]