emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/textmodes/org.el


From: Carsten Dominik
Subject: [Emacs-diffs] Changes to emacs/lisp/textmodes/org.el
Date: Thu, 24 Nov 2005 09:45:21 -0500

Index: emacs/lisp/textmodes/org.el
diff -c emacs/lisp/textmodes/org.el:1.47 emacs/lisp/textmodes/org.el:1.48
*** emacs/lisp/textmodes/org.el:1.47    Fri Nov 18 16:08:29 2005
--- emacs/lisp/textmodes/org.el Thu Nov 24 14:45:21 2005
***************
*** 5,11 ****
  ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
  ;; Keywords: outlines, hypermedia, calendar
  ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
! ;; Version: 3.20
  ;;
  ;; This file is part of GNU Emacs.
  ;;
--- 5,11 ----
  ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
  ;; Keywords: outlines, hypermedia, calendar
  ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
! ;; Version: 3.21
  ;;
  ;; This file is part of GNU Emacs.
  ;;
***************
*** 76,85 ****
  ;; The documentation of Org-mode can be found in the TeXInfo file.  The
  ;; distribution also contains a PDF version of it.  At the homepage of
  ;; Org-mode, you can read the same text online as HTML.  There is also an
! ;; excellent reference card made by Philip Rooke.
  ;;
  ;; Changes:
  ;; -------
  ;; Version 3.20
  ;;    - There is finally an option to make TAB jump over horizontal lines
  ;;      in tables instead of creating a new line before that line.
--- 76,92 ----
  ;; The documentation of Org-mode can be found in the TeXInfo file.  The
  ;; distribution also contains a PDF version of it.  At the homepage of
  ;; Org-mode, you can read the same text online as HTML.  There is also an
! ;; excellent reference card made by Philip Rooke.  This card can be found
! ;; in the etc/ directory of Emacs 22.
  ;;
  ;; Changes:
  ;; -------
+ ;; Version 3.21
+ ;;    - Improved CSS support for the HTML export.  Thanks to Christian Egli.
+ ;;    - Editing support for hand-formatted lists
+ ;;      - M-S-cursor keys handle plain list items
+ ;;      - C-c C-c renumbers ordered plain lists
+ ;;
  ;; Version 3.20
  ;;    - There is finally an option to make TAB jump over horizontal lines
  ;;      in tables instead of creating a new line before that line.
***************
*** 88,94 ****
  ;;    - Changes to the HTML exporter
  ;;      - hand-formatted lists are exported correctly, similar to
  ;;        markdown lists.  Nested lists are possible.  See the docstring
! ;;        of the variable `org-export-local-list-max-depth'.
  ;;      - cleaned up to produce valid HTML 4.0 (transitional).
  ;;      - support for cascading style sheets.
  ;;    - New command to cycle through all agenda files, on C-,
--- 95,101 ----
  ;;    - Changes to the HTML exporter
  ;;      - hand-formatted lists are exported correctly, similar to
  ;;        markdown lists.  Nested lists are possible.  See the docstring
! ;;        of the variable `org-export-plain-list-max-depth'.
  ;;      - cleaned up to produce valid HTML 4.0 (transitional).
  ;;      - support for cascading style sheets.
  ;;    - New command to cycle through all agenda files, on C-,
***************
*** 234,240 ****
  
  ;;; Customization variables
  
! (defvar org-version "3.20"
    "The version number of the file org.el.")
  (defun org-version ()
    (interactive)
--- 241,247 ----
  
  ;;; Customization variables
  
! (defvar org-version "3.21"
    "The version number of the file org.el.")
  (defun org-version ()
    (interactive)
***************
*** 889,894 ****
--- 896,920 ----
    :group 'org-structure
    :type 'boolean)
  
+ (defcustom org-plain-list-ordered-item-terminator t
+   "The character that makes a line with leading number an ordered list item.
+ Valid values are ?. and ?\).  To get both terminators, use t.  While
+ ?. may look nicer, it creates the danger that a line with leading
+ number may be incorrectly interpreted as an item.  ?\) therefore is
+ the safe choice."
+   :group 'org-structure
+   :type '(choice (const :tag "dot like in \"2.\"" ?.)
+                (const :tag "paren like in \"2)\"" ?\))
+                (const :tab "both" t)))
+ 
+ (defcustom org-auto-renumber-ordered-lists t
+   "Non-nil means, automatically renumber ordered plain lists.
+ Renumbering happens when the sequence have been changed with
+ \\[org-shiftmetaup] or \\[org-shiftmetadown].  After other editing commands,
+ use \\[org-ctrl-c-ctrl-c] to trigger renumbering."
+   :group 'org-structure
+   :type 'boolean)
+ 
  (defgroup org-link nil
    "Options concerning links in Org-mode."
    :tag "Org Link"
***************
*** 1342,1365 ****
    :group 'org-export
    :type 'string)
  
! (defcustom org-export-html-style ""
    "The default style specification for exported HTML files.
  Since there are different ways of setting style information, this variable
  needs to contain the full HTML structure to provide a style, including the
! surrounding HTML tags.  For example, legal values would be
  
     <style type=\"text/css\">
         p {font-weight: normal; color: gray; }
         h1 {color: black; }
     </style>
  
! or
  
     <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">
  
  As the value of this option simply gets inserted into the HTML <head> header,
! you can \"misuse\" it to add arbitrary text to the header.
! "
    :group 'org-export
    :type 'string)
  
--- 1368,1415 ----
    :group 'org-export
    :type 'string)
  
! (defcustom org-export-html-style 
! "<style type=\"text/css\">
!   html {
!       font-family: Times, serif;
!       font-size: 12pt;
!   }
!   .title { text-align: center; }
!   .todo, .deadline { color: red; }
!   .done { color: green; }
!   pre {
!       border: 1pt solid #AEBDCC;
!       background-color: #F3F5F7;
!       padding: 5pt;
!       font-family: courier, monospace;
!   }
!   table { border-collapse: collapse; }
!   td, th {
!       vertical-align: top;
!       border: 1pt solid #ADB9CC;
!   }
! </style>"
    "The default style specification for exported HTML files.
  Since there are different ways of setting style information, this variable
  needs to contain the full HTML structure to provide a style, including the
! surrounding HTML tags.  The style specifications should include definiitons
! for new classes todo, done, title, and deadline.  For example, legal values
! would be.
  
     <style type=\"text/css\">
         p {font-weight: normal; color: gray; }
         h1 {color: black; }
+       .title { text-align: center; }
+       .todo, .deadline { color: red; }
+       .done { color: green; }
     </style>
  
! or, if you want to keep the style in a file,
  
     <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">
  
  As the value of this option simply gets inserted into the HTML <head> header,
! you can \"misuse\" it to add arbitrary text to the header."
    :group 'org-export
    :type 'string)
  
***************
*** 1393,1410 ****
    :group 'org-export
    :type 'boolean)
  
! (defcustom org-export-local-list-max-depth 1
    "Maximum depth of hand-formatted lists in HTML export.
  Org-mode parses hand-formatted enumeration and bullet lists and
! transforms them to HTML open export.  Different indentation of the bullet
! or number indicates different list nesting levels.  To avoid confusion,
! only a single level is allowed by default.  This means that a list is started
! with an item, and that all further items are consitered as long as the
! indentation is larger or equal to the indentation of the first item.  When 
this
! is larger than 1, deeper indentation leads to deeper list nesting.
! If you are careful with hand formatting, you can increase this limit and
! get lists of arbitrary depth.  For example, by setting this option to 3, the
! following list would look correct in HTML:
  
    * Fruit
      - Apple
--- 1443,1458 ----
    :group 'org-export
    :type 'boolean)
  
! (defcustom org-export-plain-list-max-depth 3
    "Maximum depth of hand-formatted lists in HTML export.
+ 
  Org-mode parses hand-formatted enumeration and bullet lists and
! transforms them to HTML open export.  Different indentation of the
! bullet or number indicates different list nesting levels.  To avoid
! confusion, only a single level is allowed by default.  When this is
! larger than 1, deeper indentation leads to deeper list nesting.  For
! example, the default value of 3 allows the following list to be
! formatted correctly in HTML:
  
    * Fruit
      - Apple
***************
*** 2757,2762 ****
--- 2805,3038 ----
              (throw 'exit nil)))
        t))))
  
+ ;;; Plain list item
+ 
+ (defun org-at-item-p ()
+   "Is point in a line starting a hand-formatted item?"
+   (let ((llt org-plain-list-ordered-item-terminator))
+     (save-excursion
+       (goto-char (point-at-bol))
+       (looking-at 
+        (cond
+       ((eq llt t)  "\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( 
\\|$\\)")
+       ((= llt ?.)  "\\([ \t]*\\([-+]\\|\\([0-9]+\\.\\)\\)\\|[ \t]+\\*\\)\\( 
\\|$\\)")
+       ((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+)\\)\\)\\|[ \t]+\\*\\)\\( 
\\|$\\)")
+       (t (error "Invalid value of 
`org-plain-list-ordered-item-terminator'")))))))
+ 
+ (defun org-get-indentation ()
+   "Get the indentation of the current line, ionterpreting tabs."
+   (save-excursion
+     (beginning-of-line 1)
+     (skip-chars-forward " \t")
+     (current-column)))
+ 
+ (defun org-beginning-of-item ()
+   "Go to the beginning of the current hand-formatted item.
+ If the cursor is not in an item, throw an error."
+   (let ((pos (point))
+       (limit (save-excursion (org-back-to-heading) 
+                              (beginning-of-line 2) (point)))
+       ind ind1)
+     (if (org-at-item-p)
+       (beginning-of-line 1)
+       (beginning-of-line 1)
+       (skip-chars-forward " \t")
+       (setq ind (current-column))
+       (if (catch 'exit
+           (while t
+             (beginning-of-line 0)
+             (if (< (point) limit) (throw 'exit nil))
+             (unless (looking-at " \t]*$")
+               (skip-chars-forward " \t")
+               (setq ind1 (current-column))
+               (if (< ind1 ind)
+                   (throw 'exit (org-at-item-p))))))
+         nil
+       (goto-char pos)
+       (error "Not in an item")))))
+ 
+ (defun org-end-of-item ()
+   "Go to the beginning of the current hand-formatted item.
+ If the cursor is not in an item, throw an error."
+   (let ((pos (point))
+       (limit (save-excursion (outline-next-heading) (point)))
+       (ind (save-excursion
+              (org-beginning-of-item)
+              (skip-chars-forward " \t")
+              (current-column)))
+       ind1)
+     (if (catch 'exit
+         (while t
+           (beginning-of-line 2)
+           (if (>= (point) limit) (throw 'exit t))
+           (unless (looking-at "[ \t]*$")
+             (skip-chars-forward " \t")
+             (setq ind1 (current-column))
+             (if (<= ind1 ind) (throw 'exit t)))))
+       (beginning-of-line 1)
+       (goto-char pos)
+       (error "Not in an item"))))
+       
+ (defun org-move-item-down (arg)
+   "Move the plain list item at point down, i.e. swap with following item.
+ Subitems (items with larger indentation are considered part of the item,
+ so this really moves item trees."
+   (interactive "p")
+   (let (beg end ind ind1 (pos (point)) txt)
+     (org-beginning-of-item)
+     (setq beg (point))
+     (setq ind (org-get-indentation))
+     (org-end-of-item)
+     (setq end (point))
+     (setq ind1 (org-get-indentation))
+     (if (and (org-at-item-p) (= ind ind1))
+       (progn
+         (org-end-of-item)
+         (setq txt (buffer-substring beg end))
+         (save-excursion
+           (delete-region beg end))
+         (setq pos (point))
+         (insert txt)
+         (goto-char pos)
+         (org-maybe-renumber-ordered-list))
+       (goto-char pos)
+       (error "Cannot move this item further down"))))
+     
+ (defun org-move-item-up (arg)
+   "Move the plain list item at point up, i.e. swap with previous item.
+ Subitems (items with larger indentation are considered part of the item,
+ so this really moves item trees."
+   (interactive "p")
+   (let (beg end ind ind1 (pos (point)) txt)
+     (org-beginning-of-item)
+     (setq beg (point))
+     (setq ind (org-get-indentation))
+     (org-end-of-item)
+     (setq end (point))
+     (goto-char beg)
+     (catch 'exit
+       (while t
+       (beginning-of-line 0)
+       (if (looking-at "[ \t]*$")
+           nil
+         (if (<= (setq ind1 (org-get-indentation)) ind)
+             (throw 'exit t)))))
+     (condition-case nil
+       (org-beginning-of-item)
+       (error (goto-char beg)
+            (error "Cannot move this item further up")))
+     (setq ind1 (org-get-indentation))
+     (if (and (org-at-item-p) (= ind ind1))
+       (progn
+         (setq txt (buffer-substring beg end))
+         (save-excursion
+           (delete-region beg end))
+         (setq pos (point))
+         (insert txt)
+         (goto-char pos)
+         (org-maybe-renumber-ordered-list))
+       (goto-char pos)
+       (error "Cannot move this item further up"))))
+     
+ (defun org-maybe-renumber-ordered-list ()
+   "Renumber the ordered list at point if setup allows it.
+ This tests the user option `org-auto-renumber-ordered-lists' before
+ doing the renumbering."
+   (and org-auto-renumber-ordered-lists
+        (org-at-item-p)
+        (match-beginning 3)
+        (org-renumber-ordered-list 1)))
+ 
+ (defun org-get-string-indentation (s)
+   "What indentation has S due to SPACE and TAB at the beginning of the 
string?"
+   (let ((n -1) (i 0) (w tab-width) c)
+     (catch 'exit
+       (while (< (setq n (1+ n)) (length s))
+       (setq c (aref s n))
+       (cond ((= c ?\ ) (setq i (1+ i)))
+             ((= c ?\t) (setq i (* (/ (+ w i) w) w)))
+             (t (throw 'exit t)))))
+     i))
+ 
+ (defun org-renumber-ordered-list (arg)
+   "Renumber an ordered plain list.
+ Cursor neext to be in the first line of an item, the line that starts
+ with something like \"1.\" or \"2)\"."
+   (interactive "p")
+   (unless (and (org-at-item-p)
+              (match-beginning 3))
+     (error "This is not an ordered list"))
+   (let ((line (org-current-line))
+       (col (current-column))
+       (ind (org-get-string-indentation
+             (buffer-substring (point-at-bol) (match-beginning 3))))
+       (term (substring (match-string 3) -1))
+       ind1 (n (1- arg)))
+     ;; find where this list begins
+     (catch 'exit
+       (while t
+       (catch 'next
+         (beginning-of-line 0)
+         (if (looking-at "[ \t]*$") (throw 'next t))
+         (skip-chars-forward " \t") (setq ind1 (current-column))
+         (if (and (<= ind1 ind)
+                  (not (org-at-item-p)))
+             (throw 'exit t)))))
+     ;; Walk forward and replace these numbers
+     (catch 'exit
+       (while t
+       (catch 'next
+         (beginning-of-line 2)
+         (if (eobp) (throw 'exit nil))
+         (if (looking-at "[ \t]*$") (throw 'next nil))
+         (skip-chars-forward " \t") (setq ind1 (current-column))
+         (if (> ind1 ind) (throw 'next t))
+         (if (< ind1 ind) (throw 'exit t))
+         (if (not (org-at-item-p)) (throw 'exit nil))
+         (if (not (match-beginning 3))
+             (error "unordered bullet in ordered list.  Press \\[undo] to 
recover"))
+         (delete-region (match-beginning 3) (1- (match-end 3)))
+         (goto-char (match-beginning 3))
+         (insert (format "%d" (setq n (1+ n)))))))
+     (goto-line line)
+     (move-to-column col)))
+     
+ (defvar org-last-indent-begin-marker (make-marker))
+ (defvar org-last-indent-end-marker (make-marker))
+ 
+ 
+ (defun org-outdent-item (arg)
+   "Outdent a local list item."
+   (interactive "p")
+   (org-indent-item (- arg)))
+ 
+ (defun org-indent-item (arg)
+   "Indent a local list item."
+   (interactive "p")
+   (unless (org-at-item-p)
+     (error "Not on an item"))
+   (let (beg end ind ind1)
+     (if (memq last-command '(org-shiftmetaright org-shiftmetaleft))
+         (setq beg org-last-indent-begin-marker
+               end org-last-indent-end-marker)
+       (org-beginning-of-item)
+       (setq beg (move-marker org-last-indent-begin-marker (point)))
+       (org-end-of-item)
+       (setq end (move-marker org-last-indent-end-marker (point))))
+     (goto-char beg)
+     (skip-chars-forward " \t") (setq ind (current-column))
+     (if (< (+ arg ind) 0) (error "Cannot outdent beyond margin"))
+     (while (< (point) end)
+       (beginning-of-line 1)
+       (skip-chars-forward " \t") (setq ind1 (current-column))
+       (delete-region (point-at-bol) (point))
+       (indent-to-column (+ ind1 arg))
+       (beginning-of-line 2))
+     (goto-char beg)))
+ 
+ 
+ ;;; Archiving
+ 
  (defun org-archive-subtree ()
    "Move the current subtree to the archive.
  The archive can be a certain top-level heading in the current file, or in
***************
*** 8985,8990 ****
--- 9261,9267 ----
         (in-local-list nil)
         (local-list-num nil)
         (local-list-indent nil)
+        (llt org-plain-list-ordered-item-terminator)
         (email       user-mail-address)
           (language    org-export-default-language)
         (text        nil)
***************
*** 9039,9045 ****
  "
               language (org-html-expand title) (or charset "iso-8859-1")
               date time author style))
!       (if title     (insert (concat "<H1 align=\"center\">"
                                    (org-html-expand title) "</H1>\n")))
        (if author    (insert (concat (nth 1 lang-words) ": " author "\n")))
        (if email         (insert (concat "<a href=\"mailto:"; email "\">&lt;"
--- 9316,9322 ----
  "
               language (org-html-expand title) (or charset "iso-8859-1")
               date time author style))
!       (if title     (insert (concat "<H1 class=\"title\">"
                                    (org-html-expand title) "</H1>\n")))
        (if author    (insert (concat (nth 1 lang-words) ": " author "\n")))
        (if email         (insert (concat "<a href=\"mailto:"; email "\">&lt;"
***************
*** 9089,9095 ****
                                   (insert
                                    (format
                                     (if todo
!                                        "<li><a href=\"#sec-%d\"><span 
style='color:red'>%s</span></a>\n"
                                       "<li><a href=\"#sec-%d\">%s</a>\n")
                                     head-count txt))
                                   (setq org-last-level level))
--- 9366,9372 ----
                                   (insert
                                    (format
                                     (if todo
!                                        "<li><a href=\"#sec-%d\"><span 
class=\"todo\">%s</span></a>\n"
                                       "<li><a href=\"#sec-%d\">%s</a>\n")
                                     head-count txt))
                                   (setq org-last-level level))
***************
*** 9122,9128 ****
              (insert "<pre>\n"))
            (insert (org-html-protect (match-string 1 line)) "\n")
            (when (and lines
!                      (not (string-match "^[ \t]+\\(:.*\\)"
                                          (car lines))))
              (setq infixed nil)
              (insert "</pre>\n"))
--- 9399,9405 ----
              (insert "<pre>\n"))
            (insert (org-html-protect (match-string 1 line)) "\n")
            (when (and lines
!                      (not (string-match "^[ \t]*\\(:.*\\)"
                                          (car lines))))
              (setq infixed nil)
              (insert "</pre>\n"))
***************
*** 9180,9188 ****
                   (match-beginning 2))
              (if (equal (match-string 2 line) org-done-string)
                  (setq line (replace-match
!                             "<span style='color:green'>\\2</span>"
                              nil nil line 2))
!               (setq line (replace-match "<span style='color:red'>\\2</span>"
                                          nil nil line 2))))
  
          ;; DEADLINES
--- 9457,9465 ----
                   (match-beginning 2))
              (if (equal (match-string 2 line) org-done-string)
                  (setq line (replace-match
!                             "<span class=\"done\">\\2</span>"
                              nil nil line 2))
!               (setq line (replace-match "<span class=\"todo\">\\2</span>"
                                          nil nil line 2))))
  
          ;; DEADLINES
***************
*** 9192,9200 ****
                      (string-match "<a href"
                                    (substring line 0 (match-beginning 0))))
                    nil     ; Don't do the replacement - it is inside a link
!                 (setq line (replace-match "<span style='color:red'>\\&</span>"
                                            nil nil line 1)))))
- 
          (cond
           ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
            ;; This is a headline
--- 9469,9476 ----
                      (string-match "<a href"
                                    (substring line 0 (match-beginning 0))))
                    nil     ; Don't do the replacement - it is inside a link
!                 (setq line (replace-match "<span 
class=\"deadline\">\\&</span>"
                                            nil nil line 1)))))
          (cond
           ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
            ;; This is a headline
***************
*** 9233,9245 ****
              (insert (org-format-table-html table-buffer table-orig-buffer))))
           (t
            ;; Normal lines
!           (when (and (> org-export-local-list-max-depth 0)
                       (string-match
!                       "^\\( *\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\)\\)? *\\([^ 
\t\n\r]\\)"
                        line))
!             (setq ind (- (match-end 1) (match-beginning 1))
                    start-is-num (match-beginning 4)
!                   starter (if (match-beginning 2) (match-string 2 line)))
              (while (and in-local-list
                          (or (and (= ind (car local-list-indent))
                                   (not starter))
--- 9509,9529 ----
              (insert (org-format-table-html table-buffer table-orig-buffer))))
           (t
            ;; Normal lines
!           (when (and (> org-export-plain-list-max-depth 0)
                       (string-match
!                       (cond
!                        ((eq llt t) "^\\([ 
\t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+[.)]\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
!                        ((= llt ?.) "^\\([ 
\t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
!                        ((= llt ?\)) "^\\( 
\t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+)\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
!                        (t (error "Invalid value of 
`org-plain-list-ordered-item-terminator'")))
                        line))
!             (setq ind (org-get-string-indentation line)
                    start-is-num (match-beginning 4)
!                   starter (if (match-beginning 2) (match-string 2 line))
!                   line (substring line (match-beginning 5)))
!             (unless (string-match "[^ \t]" line) 
!               ;; empty line.  Pretend indentation is large.
!               (setq ind (1+ (or (car local-list-indent) 1))))
              (while (and in-local-list
                          (or (and (= ind (car local-list-indent))
                                   (not starter))
***************
*** 9247,9259 ****
                (insert (if (car local-list-num) "</ol>\n" "</ul>"))
                (pop local-list-num) (pop local-list-indent)
                (setq in-local-list local-list-indent))
- 
              (cond
               ((and starter
                     (or (not in-local-list)
                         (> ind (car local-list-indent)))
                     (< (length local-list-indent)
!                       org-export-local-list-max-depth))
                ;; Start new (level of ) list
                (insert (if start-is-num "<ol>\n<li>\n" "<ul>\n<li>\n"))
                (push start-is-num local-list-num)
--- 9531,9542 ----
                (insert (if (car local-list-num) "</ol>\n" "</ul>"))
                (pop local-list-num) (pop local-list-indent)
                (setq in-local-list local-list-indent))
              (cond
               ((and starter
                     (or (not in-local-list)
                         (> ind (car local-list-indent)))
                     (< (length local-list-indent)
!                       org-export-plain-list-max-depth))
                ;; Start new (level of ) list
                (insert (if start-is-num "<ol>\n<li>\n" "<ul>\n<li>\n"))
                (push start-is-num local-list-num)
***************
*** 9261,9268 ****
                (setq in-local-list t))
               (starter
                ;; continue current list
!               (insert "<li>\n")))
!             (setq line (substring line (match-beginning 5))))
            ;; Empty lines start a new paragraph.  If hand-formatted lists
            ;; are not fully interpreted, lines starting with "-", "+", "*"
            ;; also start a new paragraph.
--- 9544,9550 ----
                (setq in-local-list t))
               (starter
                ;; continue current list
!               (insert "<li>\n"))))
            ;; Empty lines start a new paragraph.  If hand-formatted lists
            ;; are not fully interpreted, lines starting with "-", "+", "*"
            ;; also start a new paragraph.
***************
*** 9327,9333 ****
                    (mapconcat (lambda (x)
                                 (if head
                                     (concat "<th>" x "</th>")
!                                  (concat "<td valign=\"top\">" x "</td>")))
                               fields "")
                    "</tr>\n"))))
      (setq html (concat html "</table>\n"))
--- 9609,9615 ----
                    (mapconcat (lambda (x)
                                 (if head
                                     (concat "<th>" x "</th>")
!                                  (concat "<td>" x "</td>")))
                               fields "")
                    "</tr>\n"))))
      (setq html (concat html "</table>\n"))
***************
*** 9366,9375 ****
                                 (lambda (x)
                                   (if (equal x "") (setq x empty))
                                   (if head
!                                      (concat "<th valign=\"top\">" x
!                                              "</th>\n")
!                                    (concat "<td valign=\"top\">" x
!                                            "</td>\n")))
                                 field-buffer "\n")
                                "</tr>\n"))
                    (setq head nil)
--- 9648,9655 ----
                                 (lambda (x)
                                   (if (equal x "") (setq x empty))
                                   (if head
!                                      (concat "<th>" x "</th>\n")
!                                    (concat "<td>" x "</td>\n")))
                                 field-buffer "\n")
                                "</tr>\n"))
                    (setq head nil)
***************
*** 10016,10021 ****
--- 10296,10302 ----
    (cond
     ((org-at-table-p) (org-table-delete-column))
     ((org-on-heading-p) (org-promote-subtree))
+    ((org-at-item-p) (call-interactively 'org-outdent-item))
     (t (org-shiftcursor-error))))
  
  (defun org-shiftmetaright ()
***************
*** 10026,10055 ****
    (cond
     ((org-at-table-p) (org-table-insert-column))
     ((org-on-heading-p) (org-demote-subtree))
     (t (org-shiftcursor-error))))
  
  (defun org-shiftmetaup (&optional arg)
    "Move subtree up or kill table row.
! Calls `org-move-subtree-up' or `org-table-kill-row', depending on context.
! See the individual commands for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-kill-row))
     ((org-on-heading-p) (org-move-subtree-up arg))
     (t (org-shiftcursor-error))))
  (defun org-shiftmetadown (&optional arg)
    "Move subtree down or insert table row.
! Calls `org-move-subtree-down' or `org-table-insert-row', depending on context.
! See the individual commands for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-insert-row arg))
     ((org-on-heading-p) (org-move-subtree-down arg))
     (t (org-shiftcursor-error))))
  
  (defun org-metaleft (&optional arg)
    "Promote heading or move table column to left.
  Calls `org-do-promote' or `org-table-move-column', depending on context.
  See the individual commands for more information."
    (interactive "P")
    (cond
--- 10307,10342 ----
    (cond
     ((org-at-table-p) (org-table-insert-column))
     ((org-on-heading-p) (org-demote-subtree))
+    ((org-at-item-p) (call-interactively 'org-indent-item))
     (t (org-shiftcursor-error))))
  
  (defun org-shiftmetaup (&optional arg)
    "Move subtree up or kill table row.
! Calls `org-move-subtree-up' or `org-table-kill-row' or
! `org-move-item-up' depending on context.  See the individual commands
! for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-kill-row))
     ((org-on-heading-p) (org-move-subtree-up arg))
+    ((org-at-item-p) (org-move-item-up arg))
     (t (org-shiftcursor-error))))
  (defun org-shiftmetadown (&optional arg)
    "Move subtree down or insert table row.
! Calls `org-move-subtree-down' or `org-table-insert-row' or
! `org-move-item-down', depending on context.  See the individual
! commands for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-insert-row arg))
     ((org-on-heading-p) (org-move-subtree-down arg))
+    ((org-at-item-p) (org-move-item-down arg))
     (t (org-shiftcursor-error))))
  
  (defun org-metaleft (&optional arg)
    "Promote heading or move table column to left.
  Calls `org-do-promote' or `org-table-move-column', depending on context.
+ With no specific context, calls the Emacs default `backward-word'.
  See the individual commands for more information."
    (interactive "P")
    (cond
***************
*** 10060,10065 ****
--- 10347,10353 ----
  (defun org-metaright (&optional arg)
    "Demote subtree or move table column to right.
  Calls `org-do-demote' or `org-table-move-column', depending on context.
+ With no specific context, calls the Emacs default `forward-word'.
  See the individual commands for more information."
    (interactive "P")
    (cond
***************
*** 10069,10090 ****
  
  (defun org-metaup (&optional arg)
    "Move subtree up or move table row up.
! Calls `org-move-subtree-up' or `org-table-move-row', depending on context.
! See the individual commands for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-move-row 'up))
     ((org-on-heading-p) (org-move-subtree-up arg))
     (t (org-shiftcursor-error))))
  
  (defun org-metadown (&optional arg)
    "Move subtree down or move table row down.
! Calls `org-move-subtree-down' or `org-table-move-row', depending on context.
! See the individual commands for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-move-row nil))
     ((org-on-heading-p) (org-move-subtree-down arg))
     (t (org-shiftcursor-error))))
  
  (defun org-shiftup (&optional arg)
--- 10357,10382 ----
  
  (defun org-metaup (&optional arg)
    "Move subtree up or move table row up.
! Calls `org-move-subtree-up' or `org-table-move-row' or
! `org-move-item-up', depending on context.  See the individual commands
! for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-move-row 'up))
     ((org-on-heading-p) (org-move-subtree-up arg))
+    ((org-at-item-p) (org-move-item-up arg))
     (t (org-shiftcursor-error))))
  
  (defun org-metadown (&optional arg)
    "Move subtree down or move table row down.
! Calls `org-move-subtree-down' or `org-table-move-row' or
! `org-move-item-down', depending on context.  See the individual
! commands for more information."
    (interactive "P")
    (cond
     ((org-at-table-p) (org-table-move-row nil))
     ((org-on-heading-p) (org-move-subtree-down arg))
+    ((org-at-item-p) (org-move-item-down arg))
     (t (org-shiftcursor-error))))
  
  (defun org-shiftup (&optional arg)
***************
*** 10153,10158 ****
--- 10445,10452 ----
          (org-table-recalculate t)
        (org-table-maybe-recalculate-line))
        (org-table-align))
+      ((org-at-item-p)
+       (org-renumber-ordered-list (prefix-numeric-value arg)))
       ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
        (cond
         ((equal (match-string 1) "TBLFM")
***************
*** 10165,10175 ****
        (org-mode-restart))))
       ((org-region-active-p)
        (org-table-convert-region (region-beginning) (region-end) arg))
!      ((and (region-beginning) (region-end))
        (if (y-or-n-p "Convert inactive region to table? ")
          (org-table-convert-region (region-beginning) (region-end) arg)
        (error "Abort")))
!      (t (error "No table at point, and no region to make one")))))
  
  (defun org-mode-restart ()
    "Restart Org-mode, to scan again for special lines.
--- 10459,10471 ----
        (org-mode-restart))))
       ((org-region-active-p)
        (org-table-convert-region (region-beginning) (region-end) arg))
!      ((condition-case nil
!         (and (region-beginning) (region-end))
!       (error nil))
        (if (y-or-n-p "Convert inactive region to table? ")
          (org-table-convert-region (region-beginning) (region-end) arg)
        (error "Abort")))
!      (t (error "C-c C-c can do nothing useful at this location.")))))
  
  (defun org-mode-restart ()
    "Restart Org-mode, to scan again for special lines.
***************
*** 10436,10442 ****
    (set (make-local-variable 'paragraph-separate) "\f\\|\\*\\|[        ]*$\\|[ 
\t]*[:|]")
    ;; The paragraph starter includes hand-formatted lists.
    (set (make-local-variable 'paragraph-start)
!        "\f\\|[        ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*]\\|[0-9]+\\.[ 
\t]+\\)\\|[ \t]*[:|]")
    ;; Inhibit auto-fill for headers, tables and fixed-width lines.
    ;; But only if the user has not turned off tables or fixed-width regions
    (set (make-local-variable 'auto-fill-inhibit-regexp)
--- 10732,10738 ----
    (set (make-local-variable 'paragraph-separate) "\f\\|\\*\\|[        ]*$\\|[ 
\t]*[:|]")
    ;; The paragraph starter includes hand-formatted lists.
    (set (make-local-variable 'paragraph-start)
!        "\f\\|[        ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*]\\|[0-9]+[.)][ 
\t]+\\)\\|[ \t]*[:|]")
    ;; Inhibit auto-fill for headers, tables and fixed-width lines.
    ;; But only if the user has not turned off tables or fixed-width regions
    (set (make-local-variable 'auto-fill-inhibit-regexp)
***************
*** 10472,10478 ****
    "Return a fill prefix for org-mode files.
  In particular, this makes sure hanging paragraphs for hand-formatted lists
  work correctly."
!   (if (looking-at " *\\([-*+] \\|[0-9]+\\. \\)?")
        (make-string (- (match-end 0) (match-beginning 0)) ?\ )))
  
  ;; Functions needed for Emacs/XEmacs region compatibility
--- 10768,10774 ----
    "Return a fill prefix for org-mode files.
  In particular, this makes sure hanging paragraphs for hand-formatted lists
  work correctly."
!   (if (looking-at " *\\([-*+] \\|[0-9]+[.)] \\)?")
        (make-string (- (match-end 0) (match-beginning 0)) ?\ )))
  
  ;; Functions needed for Emacs/XEmacs region compatibility
***************
*** 10706,10709 ****
--- 11002,11006 ----
  
  ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
  ;;; org.el ends here
+ 
  




reply via email to

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