comparison lisp/org/org-table.el @ 96975:60149c696033

2008-07-24 Carsten Dominik <dominik@science.uva.nl> * org-exp.el (org-export-region-as-html, org-export-as-html): Make sure that calls from `org-export-region-as-html' do not do the special check for a subtree. * org-agenda.el (org-batch-store-agenda-views): Fix parsing bug. * org.el (org-open-file): Use `org-open-directory-means-index-dot-org'. (org-open-directory-means-index-dot-org): New option. * org.el (org-make-link-string): Remove link attributes from description. (org-open-at-point): Remove link attributes bevore using the path. * org-exp.el (org-export-as-html): Handle link attributes. * org.el (org-extract-attributes, org-attributes-to-string): New functions. * org-table.el (org-table-to-lisp): New function. * org.el (org-narrow-to-subtree): Do not include the final newline into the narrowed region. * org-agenda.el (org-agenda-custom-commands-local-options): Fixed bug with user-define skipping condition. * org-agenda.el (org-agenda-get-restriction-and-command): Fixed typo. * org-exp.el (org-export-html-style-default): Automatic overflow handling for pre fields. (org-export-as-ascii, org-export-as-html): Change default format for time stamp. * org-table.el (org-table-export): Offer completion for translator functions, and do not require a heading above the table. * org.el (org-renumber-ordered-list, org-beginning-of-item-list): Cater for the case of a list starting in the first line of the buffer. * org-publish.el (org-publish-find-title): Bug fix. (org-publish-org-index): Implement new :index-style option. * org-publish.el (org-publish-timestamp-filename): Use SHA1-encoded file names in the timestamp directory. * org-publish.el (org-publish-needed-p): Be verbose about files published and files skipped. * org-exp.el (org-export-preprocess-string): Swap link normalization and inernal link targeting. * org-publish.el (org-publish-needed-p): Create timestamp directory when it does not exist. * org-clock.el (org-clock-out-when-done): Doc fix. * org.el (org-agenda-skip-unavailable-files): Doc fix. * org-exp.el (org-export-remove-comment-blocks-and-subtrees): Ignore case when searching for the COMMENT cookie at export time. * org-exp.el (org-get-file-contents) (org-get-and-remove-property): New functions. (org-export-handle-include-files): Handle the new prefix options. (org-export-as-html): Fix the verse environment. * org.el (org-time=, org-time<, org-time<=, org-time>) (org-time>=, org-time<>, org-2ft): New functions. (org-op-to-function): Also provide for the time testing fucntions. * org-exp.el (org-export-html-style-default): New constant. * org-exp.el (org-export-html-style-extra): New variable. (org-export-splice-style): New function. * org-exp.el (org-export-plist-vars, org-export-as-html): Implement `org-export-creator-info'. (org-export-creator-info): New option. * org.el (org-clock-drawer-start-re, org-clock-drawer-end-re) (org-property-drawer-re, org-clock-drawer-re): New constants. * org-exp.el (org-icalendar-use-deadline) (org-icalendar-use-scheduled): New options. (org-icalendar-include-todo): Default changed to t. (org-print-icalendar-entries): Implement better utilization of scheduling and deadline time stamps. (org-export-target-internal-links, org-export-as-html): Allow file lines without the "file:" prefix if the file path is an absolute path or starts with ".". * org-clock.el (org-clocktable-shift): Also undertand yesterday, lastweek etc. (org-clock-special-range): Also undertand yesterday, lastweek etc. * org.el (org-agenda-skip-archived-trees): Docstring now discourages using this. (org-scan-tags): Check for org-agenda-archives-mode. (org-map-entries): Make sure org-agenda-archives-mode is nil. (org-agenda-files): Functionality of second arg changed. * org-agenda.el (org-agenda-archives-mode): New variable (org-write-agenda, org-prepare-agenda, org-agenda-list) (org-search-view, org-todo-list, org-tags-view) (org-agenda-list-stuck-projects): Call `org-agenda-files' with `ifmode' argument. (org-agenda-quit): Reset the archives mode. (org-agenda-archives-mode): New command. (org-agenda-set-mode-name): Include archives info. * org.el (org-paste-subtree): Make sure the yanked headline is visible if it was yanked at a visible point. (org-move-item-up): Fix the bug with moving white space at the end of the item. (org-show-empty-lines-in-parent): New function.
author Carsten Dominik <dominik@science.uva.nl>
date Thu, 24 Jul 2008 13:59:56 +0000
parents 25423ee77a10
children adc2dffbdfc3
comparison
equal deleted inserted replaced
96974:fa6516860909 96975:60149c696033
3 ;; Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. 3 ;; Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
4 4
5 ;; Author: Carsten Dominik <carsten at orgmode dot org> 5 ;; Author: Carsten Dominik <carsten at orgmode dot org>
6 ;; Keywords: outlines, hypermedia, calendar, wp 6 ;; Keywords: outlines, hypermedia, calendar, wp
7 ;; Homepage: http://orgmode.org 7 ;; Homepage: http://orgmode.org
8 ;; Version: 6.05a 8 ;; Version: 6.06a
9 ;; 9 ;;
10 ;; This file is part of GNU Emacs. 10 ;; This file is part of GNU Emacs.
11 ;; 11 ;;
12 ;; GNU Emacs is free software: you can redistribute it and/or modify 12 ;; GNU Emacs is free software: you can redistribute it and/or modify
13 ;; it under the terms of the GNU General Public License as published by 13 ;; it under the terms of the GNU General Public License as published by
443 (require 'org-exp) 443 (require 'org-exp)
444 (org-table-align) ;; make sure we have everything we need 444 (org-table-align) ;; make sure we have everything we need
445 (let* ((beg (org-table-begin)) 445 (let* ((beg (org-table-begin))
446 (end (org-table-end)) 446 (end (org-table-end))
447 (txt (buffer-substring-no-properties beg end)) 447 (txt (buffer-substring-no-properties beg end))
448 (file (or file (org-entry-get beg "TABLE_EXPORT_FILE" t))) 448 (file (or file
449 (format (or format (org-entry-get beg "TABLE_EXPORT_FORMAT" t))) 449 (condition-case nil
450 (org-entry-get beg "TABLE_EXPORT_FILE" t)
451 (error nil))))
452 (format (or format
453 (condition-case nil
454 (org-entry-get beg "TABLE_EXPORT_FORMAT" t)
455 (error nil))))
450 buf deffmt-readable) 456 buf deffmt-readable)
451 (unless file 457 (unless file
452 (setq file (read-file-name "Export table to: ")) 458 (setq file (read-file-name "Export table to: "))
453 (unless (or (not (file-exists-p file)) 459 (unless (or (not (file-exists-p file))
454 (y-or-n-p (format "Overwrite file %s? " file))) 460 (y-or-n-p (format "Overwrite file %s? " file)))
462 (setq deffmt-readable org-table-export-default-format) 468 (setq deffmt-readable org-table-export-default-format)
463 (while (string-match "\t" deffmt-readable) 469 (while (string-match "\t" deffmt-readable)
464 (setq deffmt-readable (replace-match "\\t" t t deffmt-readable))) 470 (setq deffmt-readable (replace-match "\\t" t t deffmt-readable)))
465 (while (string-match "\n" deffmt-readable) 471 (while (string-match "\n" deffmt-readable)
466 (setq deffmt-readable (replace-match "\\n" t t deffmt-readable))) 472 (setq deffmt-readable (replace-match "\\n" t t deffmt-readable)))
467 (setq format (read-string "Format: " deffmt-readable))) 473 (setq format (org-completing-read
468 474 "Format: "
475 '("orgtbl-to-tsv" "orgtbl-to-csv"
476 "orgtbl-to-latex" "orgtbl-to-html"
477 "orgtbl-to-generic" "orgtbl-to-texinfo"
478 "orgtbl-to-orgtbl") nil nil
479 deffmt-readable)))
469 (if (string-match "\\([^ \t\r\n]+\\)\\( +.*\\)?" format) 480 (if (string-match "\\([^ \t\r\n]+\\)\\( +.*\\)?" format)
470 (let* ((transform (intern (match-string 1 format))) 481 (let* ((transform (intern (match-string 1 format)))
471 (params (if (match-end 2) 482 (params (if (match-end 2)
472 (read (concat "(" (match-string 2 format) ")")))) 483 (read (concat "(" (match-string 2 format) ")"))))
473 (skip (plist-get params :skip)) 484 (skip (plist-get params :skip))
1862 (setq v (pop fields1) col (1+ col)) 1873 (setq v (pop fields1) col (1+ col))
1863 (when (and (stringp field) (stringp v) 1874 (when (and (stringp field) (stringp v)
1864 (string-match "^[a-zA-Z][a-zA-Z0-9]*$" field)) 1875 (string-match "^[a-zA-Z][a-zA-Z0-9]*$" field))
1865 (push (cons field v) org-table-local-parameters) 1876 (push (cons field v) org-table-local-parameters)
1866 (push (list field line col) org-table-named-field-locations)))) 1877 (push (list field line col) org-table-named-field-locations))))
1867 ;; Analyze the line types 1878 ;; Analyse the line types
1868 (goto-char beg) 1879 (goto-char beg)
1869 (setq org-table-current-begin-line (org-current-line) 1880 (setq org-table-current-begin-line (org-current-line)
1870 org-table-current-begin-pos (point) 1881 org-table-current-begin-pos (point)
1871 l org-table-current-begin-line) 1882 l org-table-current-begin-line)
1872 (while (looking-at "[ \t]*|\\(-\\)?") 1883 (while (looking-at "[ \t]*|\\(-\\)?")
3539 (error "Cannot find end of insertion region")) 3550 (error "Cannot find end of insertion region"))
3540 (beginning-of-line 1) 3551 (beginning-of-line 1)
3541 (delete-region beg (point)))) 3552 (delete-region beg (point))))
3542 (insert txt "\n"))) 3553 (insert txt "\n")))
3543 3554
3555 (defun org-table-to-lisp (&optional txt)
3556 "Convert the table at point to a Lisp structure.
3557 The structure will be a list. Each item is either the symbol `hline'
3558 for a horizontal separator line, or a list of field values as strings.
3559 The table is taken from the parameter TXT, or from the buffer at point."
3560 (unless txt
3561 (unless (org-at-table-p)
3562 (error "No table at point")))
3563 (let* ((txt (or txt
3564 (buffer-substring-no-properties (org-table-begin)
3565 (org-table-end))))
3566 (lines (org-split-string txt "[ \t]*\n[ \t]*")))
3567
3568 (mapcar
3569 (lambda (x)
3570 (if (string-match org-table-hline-regexp x)
3571 'hline
3572 (org-split-string (org-trim x) "\\s-*|\\s-*")))
3573 lines)))
3574
3544 (defun orgtbl-send-table (&optional maybe) 3575 (defun orgtbl-send-table (&optional maybe)
3545 "Send a tranformed version of this table to the receiver position. 3576 "Send a tranformed version of this table to the receiver position.
3546 With argument MAYBE, fail quietly if no transformation is defined for 3577 With argument MAYBE, fail quietly if no transformation is defined for
3547 this table." 3578 this table."
3548 (interactive) 3579 (interactive)