emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Converting paragraph to plain lis


From: John Kitchin
Subject: Re: [O] Converting paragraph to plain lis
Date: Wed, 16 Dec 2015 06:38:51 -0500
User-agent: mu4e 0.9.13; emacs 25.0.50.1

Here is a solution that works on your paragraph.

#+BEGIN_SRC emacs-lisp
(defun explode-paragraph ()
  (interactive)
  (let (start end)
    ;; narrow to paragraph
    (backward-paragraph) (forward-line)
    (setq start (point))
    (forward-paragraph) (previous-line)
    (setq end (point))

    ;; now move by sentence, insert number and \n. at the end go to beginning
    ;; insert a number and use C-cC-c to renumber the list.
    (save-restriction
      (narrow-to-region start end)
      (goto-char (point-min))
      (while (< (point) (point-max))
        (forward-sentence)
        (insert "\n1. "))
      (goto-char (point-min))
      (insert "1. ")
      (org-ctrl-c-ctrl-c))))

(defun unfill-paragraph ()
  "Unfill paragraph at or after point."
  (interactive "*")
  (let ((fill-column most-positive-fixnum))
    (fill-paragraph nil (region-active-p))))

(defun list-to-paragraph ()
  "Convert list at point to a paragraph."
  (interactive)
  ;; make sure we are at the beginning of the list
  (beginning-of-line)
  (let ((element (org-element-context))
        contents)
    (when (eq 'item (car element))
      (setq element (org-element-property :parent (org-element-context)))
      (goto-char
       (org-element-property
        :begin
        element)))
    ;; collect each sentence, minus the numbers.
    (setq contents (loop for node in
                         (org-element-property :structure element)
                         collect
                         ;; remove number and space
                         (replace-regexp-in-string
                          (regexp-quote (nth 2 node)) ""
                          (buffer-substring (nth 0 node)
                                            (nth 6 node)))))
    ;; replace the list, and then unfill the paragraph.
    (setf (buffer-substring (org-element-property :begin element)
                            (- (org-element-property :end element) 1))
          (mapconcat 'identity contents ""))
    (goto-char (org-element-property :begin element))
    (unfill-paragraph)))
#+END_SRC

marvin doyley writes:

> Hi there,
>
> Does anybody know how to convert a paragraph to a plain list, and vice versa. 
> For example, I would like to convert
>
> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse viverra 
> consectetur euismod. Donec non tempor turpis.
>
> to
>
> 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
>  2.  Suspendisse viverra consectetur euismod.
> 3.  Donec non tempor turpis.
>
> In one key stroke, this would speed up my brain storming process.
>
> Thanks,
> M

--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu



reply via email to

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