From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: [ANN] Changes to lists Date: Mon, 24 Jan 2011 08:50:47 +0100 Message-ID: <5090609E-4B3E-49F5-9C69-B40C4C6CF16D@gmail.com> References: <87k4hve0y7.wl%n.goaziou@gmail.com> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Return-path: Received: from [140.186.70.92] (port=40618 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PhHCO-0003hv-HW for emacs-orgmode@gnu.org; Mon, 24 Jan 2011 02:50:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PhHCM-0003RB-Ne for emacs-orgmode@gnu.org; Mon, 24 Jan 2011 02:50:52 -0500 Received: from mail-ww0-f49.google.com ([74.125.82.49]:58288) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PhHCM-0003Qw-FL for emacs-orgmode@gnu.org; Mon, 24 Jan 2011 02:50:50 -0500 Received: by wwb17 with SMTP id 17so4134186wwb.30 for ; Sun, 23 Jan 2011 23:50:49 -0800 (PST) In-Reply-To: <87k4hve0y7.wl%n.goaziou@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Nicolas Goaziou Cc: Org Mode List Hi Nicolas, this is very impressive. Thanks so much for bringing back sublists with intersected text. > In original patch, bullet type was passed to HTML and DocBook > exporters. I removed that part of the code for various reasons: I am not sure if I understand this. What was passed through in the original patch, and what have you changed? Also a first little thing I have found: 1. a list - a sub-list - shslkjg kj - dsjkg kajhg Some text belonging to main list. - and even another sub-list - aksjdf alkjshf aslkdjf lkjasdflkj aklsjdfh klasj If I go to the end of the last line and press M-RET it fails with the backtrace below. Not sure what it should do in this case, but my preferred result would be to create the "2." item for the first list. Thanks! - Carsten Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p =20= nil) goto-char(nil) (let* ((item ...) (item-end ...) (item-end-no-blank ...) =20 (beforep ...) (split-line-p ...) (blank-nb ...) (ind ...) (bullet ...) =20= (box ...) (text-cut ...) (body ...) (item-sep ...) (item-size ...) =20 (size-offset ...)) (goto-char item) (org-indent-to-column ind) (insert =20= body) (insert item-sep) (mapc (lambda ... ...) struct) (push (list =20 item ind bullet nil box nil ...) struct) (setq struct (sort =20 struct ...)) (if beforep (goto-char item) (setq struct ...) (goto-=20 char ...)) struct) (let ((case-fold-search t)) (let* =20 (... ... ... ... ... ... ... ... ... ... ... ... ... ...) (goto-char =20 item) (org-indent-to-column ind) (insert body) (insert item-sep) =20 (mapc ... struct) (push ... struct) (setq struct ...) (if =20 beforep ... ... ...) struct)) org-list-insert-item(215 ((15 2 "1. " nil nil nil 216) (27 5 "- " =20 nil nil nil 45) (45 5 "- " nil nil nil 63) (63 5 "- " nil nil nil 82) =20= (121 5 "- " nil nil nil 154) (154 5 "- " nil nil nil 177)) ((15) (27) =20= (45 . 27) (63 . 45) (121) (154 . 121)) nil nil) (setq struct (org-list-insert-item pos struct prevs checkp desc)) (let* ((struct ...) (prevs ...) (desc ...) (checkp ...)) (setq =20 struct (org-list-insert-item pos struct prevs checkp desc)) (org-list-=20= write-struct struct (org-list-parents-alist struct)) (when checkp (org-=20= update-checkbox-count-maybe)) (looking-at org-list-full-item-re) (goto-=20= char (match-end 0)) t) (if (save-excursion (goto-char itemp) (org-at-item-timer-p)) (progn =20= (org-timer-item) t) (goto-char itemp) (let* (... ... ... ...) (setq =20 struct ...) (org-list-write-struct struct ...) (when checkp ...) =20 (looking-at org-list-full-item-re) (goto-char ...) t)) (if (or (not itemp) (save-excursion ... ...)) nil (if (save-=20 excursion ... ...) (progn ... t) (goto-char itemp) =20 (let* ... ... ... ... ... ... t))) (unless (or (not itemp) (save-excursion ... ...)) (if (save-=20 excursion ... ...) (progn ... t) (goto-char itemp) =20 (let* ... ... ... ... ... ... t))) (let ((itemp ...) (pos ...)) (unless (or ... ...) =20 (if ... ... ... ...))) org-insert-item() (not (org-insert-item)) (or force-heading (not (org-insert-item))) (if (or force-heading (not ...)) (progn =20 (let* ... ... ... ... ... ... ... ... ...))) (when (or force-heading (not ...)) (let* (... ... ... ... ... ... =20 pos hide-previous previous-pos) (cond ... ... ...) (insert head) (just-=20= one-space) (setq pos ...) (end-of-line 1) (unless ... ... ...) =20 (when ... ...) (run-hooks ...))) (if (or (=3D ... 0) (and ... ...)) (progn (insert "\n* ") (run-=20 hooks ...)) (when (or force-heading ...) =20 (let* ... ... ... ... ... ... ... ... ...))) org-insert-heading(nil) call-interactively(org-insert-heading) (cond ((run-hook-with-args-until-success ...)) ((org-at-table-p) =20 (call-interactively ...)) (t (call-interactively ...))) org-meta-return(nil) call-interactively(org-meta-return nil On Jan 23, 2011, at 10:59 PM, Nicolas Goaziou wrote: > Hello, > > I would like to announce, and submit to discussion, some list code > upgrades. So, let me introduce the changes done in development branch: > > * Major changes > > 1) It is possible (again) to have indentation of text determine the > current level of the list. But this time, the 3 main exporters > handle it. In other words, you can have: > > - a list > - a sub-list > Some text belonging to main list. > - and even another sub-list > > This is on by default (with org-list-ending-method set to 'both). > > 2) There is now support for finite alphabetical lists, thanks to > Nathaniel Naff. This is off by default and activated by the > variable `org-alphabetical-lists'. > > This also recognizes counters like [@c] in addition to normal > counters (i.e. [@3]). For now, counters only affect matching > bullets, so [@c] have no effect on a numbered list. Though, they > will during export, where [@c] is the same as [@3]. > > In original patch, bullet type was passed to HTML and DocBook > exporters. I removed that part of the code for various reasons: > > - It wasn't consistent across every exporter ; > - While it sounds nice in HTML and, maybe, DocBook, it is, > usually, a bad idea to enforce bullet types in LaTeX ; > - It should be the job of style files ; > - Org should otherwise provide, at least, roman numbering, in > order to give a real choice to the user, as alphabetical and > numbered ordered lists are somewhat limited with regards to > what exporters standardly offer. > > Thus, setting a list to alphabetical bullets will not ensure > export will have them too. To sum it up, alphabetical lists are > some cosmetics applied to lists in an Org buffer only. Here > comes: > > a. Some list with an alphabetical bullet > W. [@W] Upper case letters are also allowed. > > 3) As announced before, lists can now contain drawers, inline tasks, > and blocks, themselves containing lists. Two variables (one for > the Org buffer, and one for exporters) are controlling this: > `org-list-forbidden-blocks' (by default no list can live in > example, verse, and src blocks), and `org-list-export-context' > (lists in valid blocks and in inline tasks will be exported by > default). > > + an example of a list > #+begin_center > 1. with another list > 2. in a block > #+end_center > + and now another item > > As a special case, inline tasks, though starting at column 0, are > always considered part of the first item above in the list. > Consider the following example, with (require 'org-inlinetask), > and try moving first sub-item, or exporting: > > - A list with > + A sub-list > *************** TODO Stuff waiting > 1. First good reason to delay the task > 2. Second good reason to delay it > *************** END > + Another sub-item > > 4) Improve `newline-and-indent' (C-j): used in an item, it will keep > text from moving at column 0. This allows to split text and make > paragraphs while not breaking list. For example, type C-j twice > at =A6, then M-q: > > + I have this quite long item. Now I'd like to start a new > paragraph there. =A6This should be the beginning of the new > paragraph. > > 5) Improve `org-toggle-item' (C-c -): used on a region, it will > change the region into *one* item. With a prefix argument, it > will fallback to previous behavior and make every line in region > an item. It permits to easily add paragraphs inside a close list. > For example, if you mark the paragraph below, and use C-c -, it > will be added to the list above it: > > #+begin_quote > 1. A list strolling around > > A paragraph that should be included in the list. Just select it > and use C-c -. > #+end_quote > > > * Bug fixes > > There are also some bug fixes. To name the visible ones: > > - Fix for checkboxes and cookies handling. > > - Export correctly sub-lists counters in LaTeX. > > - List are sturdier with regards to Babel printing output inside > them. > > - Fix list to subtree transformation (with C-c C-*), as much as > possible. Indeed, there is no equivalency between these > constructs, mainly due to major change #1. > > > * What now? > > While Bernt Hansen helped me a lot already, some more testing would > be appreciated. The repository is at: > > git://github.com/ngz/org-mode-lists.git new-struct > > It supersedes "recursive-lists" branch, submitted to the ML a few > weeks ago. > > I'm open to ideas, suggestions, and criticism. > > Regards, > > --=20 > Nicolas > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten