emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH 0/5] Various patches
@ 2008-03-16 16:27 James TD Smith
  2008-03-16 16:28 ` [PATCH 1/5] Hide drawers after displaying an entry using org-clock-goto James TD Smith
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: James TD Smith @ 2008-03-16 16:27 UTC (permalink / raw)
  To: emacs-orgmode

The following series implements...

---

James TD Smith (5):
      Fix the X clipboard handling so it works properly, and so it works in
      XEmacs. Add some new % expansions for remember templates for inserting
      clipboard values, and for inserting links using the clipboard contents.

      Add a new sort option, which sorts items by todo keyword in the order of
      the keyword sequence.

      Make org-table-export use the orgtbl export functions. Add support for
      reading the export format and file to export to from properties.

      Add a way to set a user-defined function to generate descriptions for links.

      Hide drawers after displaying an entry using org-clock-goto.


 org.el |  186 ++++++++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 135 insertions(+), 51 deletions(-)

-- 
James

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/5] Hide drawers after displaying an entry using org-clock-goto.
  2008-03-16 16:27 [PATCH 0/5] Various patches James TD Smith
@ 2008-03-16 16:28 ` James TD Smith
  2008-03-16 16:29 ` [PATCH 2/5] Add a way to set a user-defined function to generate descriptions for links James TD Smith
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: James TD Smith @ 2008-03-16 16:28 UTC (permalink / raw)
  To: emacs-orgmode

From: James TD Smith <ahktenzero@usa.net>

---

 org.el |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)


diff --git a/org.el b/org.el
index 4fe79d7..8fe8edd 100644
--- a/org.el
+++ b/org.el
@@ -18715,6 +18715,7 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
   (goto-char org-clock-marker)
   (org-show-entry)
   (org-back-to-heading)
+  (org-cycle-hide-drawers 'children)
   (recenter))
 
 (defvar org-clock-file-total-minutes nil

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/5] Add a way to set a user-defined function to generate descriptions for links.
  2008-03-16 16:27 [PATCH 0/5] Various patches James TD Smith
  2008-03-16 16:28 ` [PATCH 1/5] Hide drawers after displaying an entry using org-clock-goto James TD Smith
@ 2008-03-16 16:29 ` James TD Smith
  2008-04-09 15:15   ` Carsten Dominik
  2008-03-16 16:29 ` [PATCH 3/5] Some improvements to org-table-export James TD Smith
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: James TD Smith @ 2008-03-16 16:29 UTC (permalink / raw)
  To: emacs-orgmode

From: James TD Smith <ahktenzero@usa.net>

Below is an example which uses w3m to retrieve the titles of web pages to use as
link descriptions.

(require 'w3m)

(defun make-link-description (link desc)
  "Link description generator for orgmode"
  (cond ((string-match "https?:" link)
	 (with-temp-buffer
	   (w3m-retrieve link)
	   (goto-char (point-min))
	   (if (search-forward-regexp "<title>\\([^<]*\\)</title>" (point-max) t)
	       (url-unhex-string (match-string 1)))))
	(t (or desc link))))

(setq org-make-link-description 'make-link-description)

---

 org.el |   37 +++++++++++++++++++++++++++----------
 1 files changed, 27 insertions(+), 10 deletions(-)


diff --git a/org.el b/org.el
index 8fe8edd..021bd59 100644
--- a/org.el
+++ b/org.el
@@ -1209,6 +1209,15 @@ Changing this variable requires a restart of Emacs to become effective."
 	      (const :tag "Tags" tag)
 	      (const :tag "Timestamps" date)))
 
+(defcustom org-make-link-description nil
+  "Function to use to generate link descriptions from links. If
+nil the link location will be used. This function must take two
+parameters; the first is the link and the second the description
+org-insert-link has generated, and should return the description
+to use."
+  :group 'org-link
+  :type 'function)
+
 (defgroup org-link-store nil
   "Options concerning storing links in Org-mode"
   :tag "Org Store Link"
@@ -12475,16 +12484,21 @@ be displayed in the buffer instead of the link.
 If there is already a link at point, this command will allow you to edit link
 and description parts.
 
-With a \\[universal-argument] prefix, prompts for a file to link to.  The file name can be
-selected using completion.  The path to the file will be relative to
-the current directory if the file is in the current directory or a
-subdirectory.  Otherwise, the link will be the absolute path as
-completed in the minibuffer (i.e. normally ~/path/to/file).
-
-With two \\[universal-argument] prefixes, enforce an absolute path even if the file
-is in the current directory or below.
-With three \\[universal-argument] prefixes, negate the meaning of
-`org-keep-stored-link-after-insertion'."
+With a \\[universal-argument] prefix, prompts for a file to link
+to. The file name can be selected using completion. The path to
+the file will be relative to the current directory if the file is
+in the current directory or a subdirectory. Otherwise, the link
+will be the absolute path as completed in the minibuffer (i.e.
+normally ~/path/to/file).
+
+With two \\[universal-argument] prefixes, enforce an absolute
+path even if the file is in the current directory or below. With
+three \\[universal-argument] prefixes, negate the meaning of
+`org-keep-stored-link-after-insertion'.
+
+If `org-make-link-description' is non-nil, this function will be
+called with the link target, and the result will be the default
+link description."
   (interactive "P")
   (let* ((wcf (current-window-configuration))
 	 (region (if (org-region-active-p)
@@ -12605,6 +12619,9 @@ With three \\[universal-argument] prefixes, negate the meaning of
 	(if (equal desc origpath)
 	    (setq desc path))))
 
+    (if org-make-link-description
+	(setq desc (funcall org-make-link-description link desc)))
+
     (setq desc (read-string "Description: " desc))
     (unless (string-match "\\S-" desc) (setq desc nil))
     (if remove (apply 'delete-region remove))

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/5] Some improvements to org-table-export
  2008-03-16 16:27 [PATCH 0/5] Various patches James TD Smith
  2008-03-16 16:28 ` [PATCH 1/5] Hide drawers after displaying an entry using org-clock-goto James TD Smith
  2008-03-16 16:29 ` [PATCH 2/5] Add a way to set a user-defined function to generate descriptions for links James TD Smith
@ 2008-03-16 16:29 ` James TD Smith
  2008-04-09 15:59   ` Carsten Dominik
  2008-03-16 16:30 ` [PATCH 4/5] Add a new sort option, which sorts items by todo keyword James TD Smith, James TD Smith
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: James TD Smith @ 2008-03-16 16:29 UTC (permalink / raw)
  To: emacs-orgmode

From: James TD Smith <ahktenzero@usa.net>

Specify the file to export to as parameter or property
Use the export mechanisms from orgtbl instead of the simple export.
Specify the table output format in property.

---

 org.el |   91 +++++++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 64 insertions(+), 27 deletions(-)


diff --git a/org.el b/org.el
index 021bd59..dee8471 100644
--- a/org.el
+++ b/org.el
@@ -965,6 +965,13 @@ table, obtained by prompting the user."
 	  (list (symbol :tag "Major mode")
 		(string :tag "Format"))))
 
+(defcustom org-table-export-default "orgtbl-to-generic :splice t :sep \"\t\""
+  "Default export parameters for org-table-export. These can be
+  overridden on for a specific table by setting the
+  TABLE_EXPORT_FORMAT parameter. See orgtbl-export for the
+  different export transforms and available parameters."
+  :group 'org-table)
+
 (defgroup org-table-settings nil
   "Settings for tables in Org-mode."
   :tag "Org Table Settings"
@@ -975,6 +982,7 @@ table, obtained by prompting the user."
   :group 'org-table-settings
    :type 'string)
 
+
 (defcustom org-table-number-regexp
   "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\|nan\\)$"
   "Regular expression for recognizing numbers in table columns.
@@ -8568,41 +8576,70 @@ are found, lines will be split on whitespace into fields."
     (insert-file-contents file)
     (org-table-convert-region beg (+ (point) (- (point-max) pm)) arg)))
 
-(defun org-table-export ()
+(defun org-table-export (&optional target)
   "Export table as a tab-separated file.
-Such a file can be imported into a spreadsheet program like Excel."
+Such a file can be imported into a spreadsheet program like
+Excel. If TARGET is set, the table is exported to that file. If
+the property TABLE_EXPORT_FILE is set on the entry the table is
+in, the table will be exported to that file. Otherwise the user
+is prompted for a file to write the table to.
+
+If the TABLE_EXPORT_FORMAT property is set, the contents of this
+property will control export format in the same way as radio
+tables in OrgTbl mode.
+"
   (interactive)
   (let* ((beg (org-table-begin))
 	 (end (org-table-end))
-	 (table (buffer-substring beg end))
-	 (file (read-file-name "Export table to: "))
+	 (txt (buffer-substring-no-properties beg end))
+	 (file (or target (org-entry-get beg "TABLE_EXPORT_FILE")
+		   (read-file-name "Export table to: ")))
+	 (format (or (org-entry-get beg "TABLE_EXPORT_FORMAT")
+		     org-table-export-default))
 	 buf)
     (unless (or (not (file-exists-p file))
 		(y-or-n-p (format "Overwrite file %s? " file)))
       (error "Abort"))
-    (with-current-buffer (find-file-noselect file)
-      (setq buf (current-buffer))
-      (erase-buffer)
-      (fundamental-mode)
-      (insert table)
-      (goto-char (point-min))
-      (while (re-search-forward "^[ \t]*|[ \t]*" nil t)
-	(replace-match "" t t)
-	(end-of-line 1))
-      (goto-char (point-min))
-      (while (re-search-forward "[ \t]*|[ \t]*$" nil t)
-	(replace-match "" t t)
-	(goto-char (min (1+ (point)) (point-max))))
-      (goto-char (point-min))
-      (while (re-search-forward "^-[-+]*$" nil t)
-	(replace-match "")
-	(if (looking-at "\n")
-	    (delete-char 1)))
-      (goto-char (point-min))
-      (while (re-search-forward "[ \t]*|[ \t]*" nil t)
-	(replace-match "\t" t t))
-      (save-buffer))
-    (kill-buffer buf)))
+    (message format)
+
+    (if (string-match "\\([^ \t\r\n]+\\)\\( +.*\\)?" format)
+	(let* ((transform (intern (match-string 1 format)))
+	       (params (if (match-end 2)
+			   (read (concat "(" (match-string 2 format) ")"))))
+	       (skip (plist-get params :skip))
+	       (skipcols (plist-get params :skipcols))
+	       (lines (nthcdr (or skip 0) (org-split-string txt "[ \t]*\n[ \t]*")))
+	       (lines (org-table-clean-before-export lines))
+	       (i0 (if org-table-clean-did-remove-column 2 1))
+	       (table (mapcar
+		       (lambda (x)
+			 (if (string-match org-table-hline-regexp x)
+			     'hline
+			   (org-remove-by-index
+			    (org-split-string (org-trim x) "\\s-*|\\s-*")
+			    skipcols i0)))
+		       lines))
+	       (fun (if (= i0 2) 'cdr 'identity))
+	       (org-table-last-alignment
+		(org-remove-by-index (funcall fun org-table-last-alignment)
+				     skipcols i0))
+	       (org-table-last-column-widths
+		(org-remove-by-index (funcall fun org-table-last-column-widths)
+				 skipcols i0)))
+
+	  (unless (fboundp transform)
+	    (error "No such transformation function %s" transform))
+	  (setq txt (funcall transform table params))
+
+	  (with-current-buffer (find-file-noselect file)
+	    (setq buf (current-buffer))
+	    (erase-buffer)
+	    (fundamental-mode)
+	    (insert txt "\n")
+	    (save-buffer))
+	  (kill-buffer buf)
+	  (message "Export done."))
+      (error "TABLE_EXPORT_FORMAT invalid"))))
 
 (defvar org-table-aligned-begin-marker (make-marker)
   "Marker at the beginning of the table last aligned.

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/5] Add a new sort option, which sorts items by todo keyword
  2008-03-16 16:27 [PATCH 0/5] Various patches James TD Smith
                   ` (2 preceding siblings ...)
  2008-03-16 16:29 ` [PATCH 3/5] Some improvements to org-table-export James TD Smith
@ 2008-03-16 16:30 ` James TD Smith, James TD Smith
  2008-04-09 15:40   ` Carsten Dominik
  2008-03-16 16:31 ` [PATCH 5/5] clipboard handling in remember templats James TD Smith
  2008-03-16 18:29 ` [PATCH 4/5] Various patches James TD Smith
  5 siblings, 1 reply; 12+ messages in thread
From: James TD Smith, James TD Smith @ 2008-03-16 16:30 UTC (permalink / raw)
  To: emacs-orgmode

This is a somewhat simple implementation which just uses the position of the
keyword in org-todo-keywords-1, so if you have multiple sequences containing the
same todo keyword you may not get the ordering you expect.
---

 org.el |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)


diff --git a/org.el b/org.el
index dee8471..d67024f 100644
--- a/org.el
+++ b/org.el
@@ -982,7 +982,6 @@ table, obtained by prompting the user."
   :group 'org-table-settings
    :type 'string)
 
-
 (defcustom org-table-number-regexp
   "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\|nan\\)$"
   "Regular expression for recognizing numbers in table columns.
@@ -6993,7 +6992,7 @@ WITH-CASE, the sorting considers case as well."
       (message
        (if plain-list-p
 	   "Sort %s: [a]lpha [n]umeric [t]ime [f]unc  A/N/T/F means reversed:"
-	 "Sort %s: [a]lpha [n]umeric [t]ime [p]riority p[r]operty [f]unc  A/N/T/P/F means reversed:")
+	 "Sort %s: [a]lpha [n]umeric [t]ime [p]riority p[r]operty [f]unc keyword [o]rder  A/N/T/P/F/O means reversed:")
        what)
       (setq sorting-type (read-char-exclusive))
 
@@ -7084,6 +7083,10 @@ WITH-CASE, the sorting considers case as well."
 		 org-default-priority))
 	      ((= dcst ?r)
 	       (or (org-entry-get nil property) ""))
+	      ((= dcst ?o)
+	       (if (looking-at org-complex-heading-regexp)
+		   (or (position (match-string 2) org-todo-keywords-1 :test 'string=)
+					9999)))
 	      ((= dcst ?f)
 	       (if getkey-func
 		   (progn

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 5/5] clipboard handling in remember templats
  2008-03-16 16:27 [PATCH 0/5] Various patches James TD Smith
                   ` (3 preceding siblings ...)
  2008-03-16 16:30 ` [PATCH 4/5] Add a new sort option, which sorts items by todo keyword James TD Smith, James TD Smith
@ 2008-03-16 16:31 ` James TD Smith
  2008-04-09 15:32   ` Carsten Dominik
  2008-03-16 18:29 ` [PATCH 4/5] Various patches James TD Smith
  5 siblings, 1 reply; 12+ messages in thread
From: James TD Smith @ 2008-03-16 16:31 UTC (permalink / raw)
  To: emacs-orgmode

From: James TD Smith <ahktenzero@usa.net>

Fix the X clipboard handling so it works properly, and so it works in XEmacs,and
add a new % expansion for adding links.

This patch reverts the %c expansion to its original function (head of kill
ring), and adds three new % expansions as follows:

%x - Contents of the X clipboard. This is the first non-empty value from the
PRIMARY, SECONDARY and CLIPBOARD X clipboards.

%^C - This allows the user to choose between any of the clipboard values
available, the kill ring head, and the initial region if set.

%^L - Like %^C, but this inserts an org link using the selected value.
---

 org.el |   56 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 41 insertions(+), 15 deletions(-)


diff --git a/org.el b/org.el
index d67024f..0e5fa6a 100644
--- a/org.el
+++ b/org.el
@@ -12509,7 +12509,7 @@ This command can be called in any mode to insert a link in Org-mode syntax."
   (org-load-modules-maybe)
   (org-run-like-in-org-mode 'org-insert-link))
 
-(defun org-insert-link (&optional complete-file)
+(defun org-insert-link (&optional complete-file link-location)
   "Insert a link.  At the prompt, enter the link.
 
 Completion can be used to select a link previously stored with
@@ -12538,7 +12538,10 @@ three \\[universal-argument] prefixes, negate the meaning of
 
 If `org-make-link-description' is non-nil, this function will be
 called with the link target, and the result will be the default
-link description."
+link description.
+
+If the `link-location' parameter is non-nil, this value will be
+used as the link location instead of reading one interactively"
   (interactive "P")
   (let* ((wcf (current-window-configuration))
 	 (region (if (org-region-active-p)
@@ -12546,7 +12549,8 @@ link description."
 	 (remove (and region (list (region-beginning) (region-end))))
 	 (desc region)
 	 tmphist ; byte-compile incorrectly complains about this
-	 link entry file)
+	 (link link-location)
+	 entry file)
     (cond
      ((org-in-regexp org-bracket-link-regexp 1)
       ;; We do have a link at point, and we are going to edit it.
@@ -12579,7 +12583,7 @@ link description."
 	  (setq link  (org-make-link
 		       "file:" (match-string 1 (expand-file-name file)))))
 	 (t (setq link (org-make-link "file:" file))))))
-     (t
+     ((not link)
       ;; Read link, with completion for stored links.
       (with-output-to-temp-buffer "*Org Links*"
 	(princ "Insert a link.  Use TAB to complete valid link prefixes.\n")
@@ -13399,8 +13403,12 @@ RET at beg-of-buf -> Append to file as level 2 headline
 			 char0))))))
       (cddr (assoc char templates)))))
 
-(defvar x-last-selected-text)
-(defvar x-last-selected-text-primary)
+(defun org-get-x-clipboard (value)
+  (if (eq window-system 'x)
+      (let ((x (if org-xemacs-p
+		   (get-selection-no-error value)
+		 (x-selection-value value))))
+	(and (> (length x) 0) (set-text-properties 0 (length x) nil x) x))))
 
 ;;;###autoload
 (defun org-remember-apply-template (&optional use-char skip-interactive)
@@ -13416,12 +13424,10 @@ to be run from that hook to function properly."
 		       (nth 1 entry)
 		     org-default-notes-file))
 	     (headline (nth 2 entry))
-	     (v-c (or (and (eq window-system 'x)
-			   (fboundp 'x-cut-buffer-or-selection-value)
-			   (x-cut-buffer-or-selection-value))
-		      (org-bound-and-true-p x-last-selected-text)
-		      (org-bound-and-true-p x-last-selected-text-primary)
-		      (and (> (length kill-ring) 0) (current-kill 0))))
+	     (v-c (and (> (length kill-ring) 0) (current-kill 0)))
+	     (v-x (or (org-get-x-clipboard 'PRIMARY)
+		      (org-get-x-clipboard 'CLIPBOARD)
+		      (org-get-x-clipboard 'SECONDARY)))
 	     (v-t (format-time-string (car org-time-stamp-formats) (org-current-time)))
 	     (v-T (format-time-string (cdr org-time-stamp-formats) (org-current-time)))
 	     (v-u (concat "[" (substring v-t 1 -1) "]"))
@@ -13431,6 +13437,11 @@ to be run from that hook to function properly."
 	     (v-a (if (and (boundp 'annotation) annotation)
 		      (if (equal annotation "[[]]") "" annotation)
 		    ""))
+	     (clipboards (remove nil (list v-i
+					   (org-get-x-clipboard 'PRIMARY)
+					   (org-get-x-clipboard 'CLIPBOARD)
+					   (org-get-x-clipboard 'SECONDARY)
+					   v-c)))
 	     (v-A (if (and v-a
 			   (string-match "\\[\\(\\[.*?\\]\\)\\(\\[.*?\\]\\)?\\]" v-a))
 		      (replace-match "[\\1[%^{Link description}]]" nil nil v-a)
@@ -13459,7 +13470,7 @@ to be run from that hook to function properly."
 		  (or (cdr org-remember-previous-location) "???"))))
 	(insert tpl) (goto-char (point-min))
 	;; Simple %-escapes
-	(while (re-search-forward "%\\([tTuUaiAc]\\)" nil t)
+	(while (re-search-forward "%\\([tTuUaiAcx]\\)" nil t)
 	  (when (and initial (equal (match-string 0) "%i"))
 	    (save-match-data
 	      (let* ((lead (buffer-substring
@@ -13513,7 +13524,7 @@ to be run from that hook to function properly."
 	    (org-set-local 'org-remember-default-headline headline))
 	;; Interactive template entries
 	(goto-char (point-min))
-	(while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGuUtT]\\)?" nil t)
+	(while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGuUtTCL]\\)?" nil t)
 	  (setq char (if (match-end 3) (match-string 3))
 		prompt (if (match-end 2) (match-string 2)))
 	  (goto-char (match-beginning 0))
@@ -13544,7 +13555,22 @@ to be run from that hook to function properly."
 		(or (equal (char-before) ?:) (insert ":"))
 		(insert ins)
 		(or (equal (char-after) ?:) (insert ":")))))
-	   (char
+	   ((equal char "C")
+	    (cond ((= (length clipboards) 1) (insert (car clipboards)))
+		  ((> (length clipboards) 1)
+		   (insert (read-string "Clipboard/kill value: "
+					(car clipboards) '(clipboards . 1)
+					(car clipboards))))))
+	   ((equal char "L")
+	    (cond ((= (length clipboards) 1)
+		   (org-insert-link 0 (car clipboards)))
+		  ((> (length clipboards) 1)
+		   (org-insert-link 0 (read-string "Clipboard/kill value: "
+						   (car clipboards)
+						   '(clipboards . 1)
+						   (car clipboards))))))
+
+	  (char
 	    (setq org-time-was-given (equal (upcase char) char))
 	    (setq time (org-read-date (equal (upcase char) "U") t nil
 				      prompt))

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/5] Various patches
  2008-03-16 16:27 [PATCH 0/5] Various patches James TD Smith
                   ` (4 preceding siblings ...)
  2008-03-16 16:31 ` [PATCH 5/5] clipboard handling in remember templats James TD Smith
@ 2008-03-16 18:29 ` James TD Smith
  5 siblings, 0 replies; 12+ messages in thread
From: James TD Smith @ 2008-03-16 18:29 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 95 bytes --]

One of my patches [4/5] appears to have gone missing.

I've attatched it to this email.

James

[-- Attachment #2: sort-todo-by-state --]
[-- Type: text/plain, Size: 1663 bytes --]

Add a new sort option, which sorts items by todo keyword in the order of the

From: James TD Smith <ahktenzero@usa.net>

todo sequence.

This is a somewhat simple implementation which just uses the position of the
keyword in org-todo-keywords-1, so if you have multiple sequences containing the
same todo keyword you may not get the ordering you expect.
---

 org.el |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)


diff --git a/org.el b/org.el
index dee8471..d67024f 100644
--- a/org.el
+++ b/org.el
@@ -982,7 +982,6 @@ table, obtained by prompting the user."
   :group 'org-table-settings
    :type 'string)
 
-
 (defcustom org-table-number-regexp
   "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA-F]+\\|nan\\)$"
   "Regular expression for recognizing numbers in table columns.
@@ -6993,7 +6992,7 @@ WITH-CASE, the sorting considers case as well."
       (message
        (if plain-list-p
 	   "Sort %s: [a]lpha [n]umeric [t]ime [f]unc  A/N/T/F means reversed:"
-	 "Sort %s: [a]lpha [n]umeric [t]ime [p]riority p[r]operty [f]unc  A/N/T/P/F means reversed:")
+	 "Sort %s: [a]lpha [n]umeric [t]ime [p]riority p[r]operty [f]unc keyword [o]rder  A/N/T/P/F/O means reversed:")
        what)
       (setq sorting-type (read-char-exclusive))
 
@@ -7084,6 +7083,10 @@ WITH-CASE, the sorting considers case as well."
 		 org-default-priority))
 	      ((= dcst ?r)
 	       (or (org-entry-get nil property) ""))
+	      ((= dcst ?o)
+	       (if (looking-at org-complex-heading-regexp)
+		   (or (position (match-string 2) org-todo-keywords-1 :test 'string=)
+					9999)))
 	      ((= dcst ?f)
 	       (if getkey-func
 		   (progn

[-- Attachment #3: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/5] Add a way to set a user-defined function to generate descriptions for links.
  2008-03-16 16:29 ` [PATCH 2/5] Add a way to set a user-defined function to generate descriptions for links James TD Smith
@ 2008-04-09 15:15   ` Carsten Dominik
  0 siblings, 0 replies; 12+ messages in thread
From: Carsten Dominik @ 2008-04-09 15:15 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

Applied, but with renaming org-make-link-description to org-make-link- 
description-function.

Thanks.

- Carsten

On Mar 16, 2008, at 5:29 PM, James TD Smith wrote:

> From: James TD Smith <ahktenzero@usa.net>
>
> Below is an example which uses w3m to retrieve the titles of web  
> pages to use as
> link descriptions.
>
> (require 'w3m)
>
> (defun make-link-description (link desc)
>  "Link description generator for orgmode"
>  (cond ((string-match "https?:" link)
> 	 (with-temp-buffer
> 	   (w3m-retrieve link)
> 	   (goto-char (point-min))
> 	   (if (search-forward-regexp "<title>\\([^<]*\\)</title>" (point- 
> max) t)
> 	       (url-unhex-string (match-string 1)))))
> 	(t (or desc link))))
>
> (setq org-make-link-description 'make-link-description)
>
> ---
>
> org.el |   37 +++++++++++++++++++++++++++----------
> 1 files changed, 27 insertions(+), 10 deletions(-)
>
>
> diff --git a/org.el b/org.el
> index 8fe8edd..021bd59 100644
> --- a/org.el
> +++ b/org.el
> @@ -1209,6 +1209,15 @@ Changing this variable requires a restart of  
> Emacs to become effective."
> 	      (const :tag "Tags" tag)
> 	      (const :tag "Timestamps" date)))
>
> +(defcustom org-make-link-description nil
> +  "Function to use to generate link descriptions from links. If
> +nil the link location will be used. This function must take two
> +parameters; the first is the link and the second the description
> +org-insert-link has generated, and should return the description
> +to use."
> +  :group 'org-link
> +  :type 'function)
> +
> (defgroup org-link-store nil
>   "Options concerning storing links in Org-mode"
>   :tag "Org Store Link"
> @@ -12475,16 +12484,21 @@ be displayed in the buffer instead of the  
> link.
> If there is already a link at point, this command will allow you to  
> edit link
> and description parts.
>
> -With a \\[universal-argument] prefix, prompts for a file to link  
> to.  The file name can be
> -selected using completion.  The path to the file will be relative to
> -the current directory if the file is in the current directory or a
> -subdirectory.  Otherwise, the link will be the absolute path as
> -completed in the minibuffer (i.e. normally ~/path/to/file).
> -
> -With two \\[universal-argument] prefixes, enforce an absolute path  
> even if the file
> -is in the current directory or below.
> -With three \\[universal-argument] prefixes, negate the meaning of
> -`org-keep-stored-link-after-insertion'."
> +With a \\[universal-argument] prefix, prompts for a file to link
> +to. The file name can be selected using completion. The path to
> +the file will be relative to the current directory if the file is
> +in the current directory or a subdirectory. Otherwise, the link
> +will be the absolute path as completed in the minibuffer (i.e.
> +normally ~/path/to/file).
> +
> +With two \\[universal-argument] prefixes, enforce an absolute
> +path even if the file is in the current directory or below. With
> +three \\[universal-argument] prefixes, negate the meaning of
> +`org-keep-stored-link-after-insertion'.
> +
> +If `org-make-link-description' is non-nil, this function will be
> +called with the link target, and the result will be the default
> +link description."
>   (interactive "P")
>   (let* ((wcf (current-window-configuration))
> 	 (region (if (org-region-active-p)
> @@ -12605,6 +12619,9 @@ With three \\[universal-argument] prefixes,  
> negate the meaning of
> 	(if (equal desc origpath)
> 	    (setq desc path))))
>
> +    (if org-make-link-description
> +	(setq desc (funcall org-make-link-description link desc)))
> +
>     (setq desc (read-string "Description: " desc))
>     (unless (string-match "\\S-" desc) (setq desc nil))
>     (if remove (apply 'delete-region remove))
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 5/5] clipboard handling in remember templats
  2008-03-16 16:31 ` [PATCH 5/5] clipboard handling in remember templats James TD Smith
@ 2008-04-09 15:32   ` Carsten Dominik
  2008-04-09 17:35     ` James TD Smith
  0 siblings, 1 reply; 12+ messages in thread
From: Carsten Dominik @ 2008-04-09 15:32 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

Hi James,

I am going to accept this patch, but I do have a question about it:

On Mar 16, 2008, at 5:31 PM, James TD Smith wrote:

> From: James TD Smith <ahktenzero@usa.net>
>
> Fix the X clipboard handling so it works properly, and so it works  
> in XEmacs,and
> add a new % expansion for adding links.
>
> This patch reverts the %c expansion to its original function (head  
> of kill
> ring), and adds three new % expansions as follows:
>
> %x - Contents of the X clipboard. This is the first non-empty value  
> from the
> PRIMARY, SECONDARY and CLIPBOARD X clipboards.
>
> %^C - This allows the user to choose between any of the clipboard  
> values
> available, the kill ring head, and the initial region if set.
>
> %^L - Like %^C, but this inserts an org link using the selected value.
> ---
>
> org.el |   56 +++++++++++++++++++++++++++++++++++++++++---------------
> 1 files changed, 41 insertions(+), 15 deletions(-)

[...]

>     (cond
>      ((org-in-regexp org-bracket-link-regexp 1)
>       ;; We do have a link at point, and we are going to edit it.
> @@ -12579,7 +12583,7 @@ link description."
> 	  (setq link  (org-make-link
> 		       "file:" (match-string 1 (expand-file-name file)))))
> 	 (t (setq link (org-make-link "file:" file))))))
> -     (t
> +     ((not link)
>       ;; Read link, with completion for stored links.


If you set it up like this, `link' will be overwritten be any link  
found at point.
Is you intention not to make the new argument link-location *overrule*  
anything
that might be at point?
So maybe the first alternative in the cond should be just (link), to  
bypass any parsing....

- Carsten

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 4/5] Add a new sort option, which sorts items by todo keyword
  2008-03-16 16:30 ` [PATCH 4/5] Add a new sort option, which sorts items by todo keyword James TD Smith, James TD Smith
@ 2008-04-09 15:40   ` Carsten Dominik
  0 siblings, 0 replies; 12+ messages in thread
From: Carsten Dominik @ 2008-04-09 15:40 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

Cool.  I like this on a lot.  And I don't have a good idea how to fix  
the problem
with equal keywords in different sequences.

Accepted, thanks.

- Carsten

On Mar 16, 2008, at 5:30 PM, James TD Smith wrote:

> This is a somewhat simple implementation which just uses the  
> position of the
> keyword in org-todo-keywords-1, so if you have multiple sequences  
> containing the
> same todo keyword you may not get the ordering you expect.
> ---
>
> org.el |    7 +++++--
> 1 files changed, 5 insertions(+), 2 deletions(-)
>
>
> diff --git a/org.el b/org.el
> index dee8471..d67024f 100644
> --- a/org.el
> +++ b/org.el
> @@ -982,7 +982,6 @@ table, obtained by prompting the user."
>   :group 'org-table-settings
>    :type 'string)
>
> -
> (defcustom org-table-number-regexp
>   "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA- 
> F]+\\|nan\\)$"
>   "Regular expression for recognizing numbers in table columns.
> @@ -6993,7 +6992,7 @@ WITH-CASE, the sorting considers case as well."
>       (message
>        (if plain-list-p
> 	   "Sort %s: [a]lpha [n]umeric [t]ime [f]unc  A/N/T/F means  
> reversed:"
> -	 "Sort %s: [a]lpha [n]umeric [t]ime [p]riority p[r]operty [f]unc   
> A/N/T/P/F means reversed:")
> +	 "Sort %s: [a]lpha [n]umeric [t]ime [p]riority p[r]operty [f]unc  
> keyword [o]rder  A/N/T/P/F/O means reversed:")
>        what)
>       (setq sorting-type (read-char-exclusive))
>
> @@ -7084,6 +7083,10 @@ WITH-CASE, the sorting considers case as well."
> 		 org-default-priority))
> 	      ((= dcst ?r)
> 	       (or (org-entry-get nil property) ""))
> +	      ((= dcst ?o)
> +	       (if (looking-at org-complex-heading-regexp)
> +		   (or (position (match-string 2) org-todo-keywords-1 :test  
> 'string=)
> +					9999)))
> 	      ((= dcst ?f)
> 	       (if getkey-func
> 		   (progn
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/5] Some improvements to org-table-export
  2008-03-16 16:29 ` [PATCH 3/5] Some improvements to org-table-export James TD Smith
@ 2008-04-09 15:59   ` Carsten Dominik
  0 siblings, 0 replies; 12+ messages in thread
From: Carsten Dominik @ 2008-04-09 15:59 UTC (permalink / raw)
  To: James TD Smith; +Cc: emacs-orgmode

Also this is a fine addition, thank you very much.

- Carsten

On Mar 16, 2008, at 5:29 PM, James TD Smith wrote:

> From: James TD Smith <ahktenzero@usa.net>
>
> Specify the file to export to as parameter or property
> Use the export mechanisms from orgtbl instead of the simple export.
> Specify the table output format in property.
>
> ---
>
> org.el |   91 ++++++++++++++++++++++++++++++++++++++++++++ 
> +-------------------
> 1 files changed, 64 insertions(+), 27 deletions(-)
>
>
> diff --git a/org.el b/org.el
> index 021bd59..dee8471 100644
> --- a/org.el
> +++ b/org.el
> @@ -965,6 +965,13 @@ table, obtained by prompting the user."
> 	  (list (symbol :tag "Major mode")
> 		(string :tag "Format"))))
>
> +(defcustom org-table-export-default "orgtbl-to-generic :splice  
> t :sep \"\t\""
> +  "Default export parameters for org-table-export. These can be
> +  overridden on for a specific table by setting the
> +  TABLE_EXPORT_FORMAT parameter. See orgtbl-export for the
> +  different export transforms and available parameters."
> +  :group 'org-table)
> +
> (defgroup org-table-settings nil
>   "Settings for tables in Org-mode."
>   :tag "Org Table Settings"
> @@ -975,6 +982,7 @@ table, obtained by prompting the user."
>   :group 'org-table-settings
>    :type 'string)
>
> +
> (defcustom org-table-number-regexp
>   "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|\\(0[xX]\\)[0-9a-fA- 
> F]+\\|nan\\)$"
>   "Regular expression for recognizing numbers in table columns.
> @@ -8568,41 +8576,70 @@ are found, lines will be split on whitespace  
> into fields."
>     (insert-file-contents file)
>     (org-table-convert-region beg (+ (point) (- (point-max) pm))  
> arg)))
>
> -(defun org-table-export ()
> +(defun org-table-export (&optional target)
>   "Export table as a tab-separated file.
> -Such a file can be imported into a spreadsheet program like Excel."
> +Such a file can be imported into a spreadsheet program like
> +Excel. If TARGET is set, the table is exported to that file. If
> +the property TABLE_EXPORT_FILE is set on the entry the table is
> +in, the table will be exported to that file. Otherwise the user
> +is prompted for a file to write the table to.
> +
> +If the TABLE_EXPORT_FORMAT property is set, the contents of this
> +property will control export format in the same way as radio
> +tables in OrgTbl mode.
> +"
>   (interactive)
>   (let* ((beg (org-table-begin))
> 	 (end (org-table-end))
> -	 (table (buffer-substring beg end))
> -	 (file (read-file-name "Export table to: "))
> +	 (txt (buffer-substring-no-properties beg end))
> +	 (file (or target (org-entry-get beg "TABLE_EXPORT_FILE")
> +		   (read-file-name "Export table to: ")))
> +	 (format (or (org-entry-get beg "TABLE_EXPORT_FORMAT")
> +		     org-table-export-default))
> 	 buf)
>     (unless (or (not (file-exists-p file))
> 		(y-or-n-p (format "Overwrite file %s? " file)))
>       (error "Abort"))
> -    (with-current-buffer (find-file-noselect file)
> -      (setq buf (current-buffer))
> -      (erase-buffer)
> -      (fundamental-mode)
> -      (insert table)
> -      (goto-char (point-min))
> -      (while (re-search-forward "^[ \t]*|[ \t]*" nil t)
> -	(replace-match "" t t)
> -	(end-of-line 1))
> -      (goto-char (point-min))
> -      (while (re-search-forward "[ \t]*|[ \t]*$" nil t)
> -	(replace-match "" t t)
> -	(goto-char (min (1+ (point)) (point-max))))
> -      (goto-char (point-min))
> -      (while (re-search-forward "^-[-+]*$" nil t)
> -	(replace-match "")
> -	(if (looking-at "\n")
> -	    (delete-char 1)))
> -      (goto-char (point-min))
> -      (while (re-search-forward "[ \t]*|[ \t]*" nil t)
> -	(replace-match "\t" t t))
> -      (save-buffer))
> -    (kill-buffer buf)))
> +    (message format)
> +
> +    (if (string-match "\\([^ \t\r\n]+\\)\\( +.*\\)?" format)
> +	(let* ((transform (intern (match-string 1 format)))
> +	       (params (if (match-end 2)
> +			   (read (concat "(" (match-string 2 format) ")"))))
> +	       (skip (plist-get params :skip))
> +	       (skipcols (plist-get params :skipcols))
> +	       (lines (nthcdr (or skip 0) (org-split-string txt "[ \t]* 
> \n[ \t]*")))
> +	       (lines (org-table-clean-before-export lines))
> +	       (i0 (if org-table-clean-did-remove-column 2 1))
> +	       (table (mapcar
> +		       (lambda (x)
> +			 (if (string-match org-table-hline-regexp x)
> +			     'hline
> +			   (org-remove-by-index
> +			    (org-split-string (org-trim x) "\\s-*|\\s-*")
> +			    skipcols i0)))
> +		       lines))
> +	       (fun (if (= i0 2) 'cdr 'identity))
> +	       (org-table-last-alignment
> +		(org-remove-by-index (funcall fun org-table-last-alignment)
> +				     skipcols i0))
> +	       (org-table-last-column-widths
> +		(org-remove-by-index (funcall fun org-table-last-column-widths)
> +				 skipcols i0)))
> +
> +	  (unless (fboundp transform)
> +	    (error "No such transformation function %s" transform))
> +	  (setq txt (funcall transform table params))
> +
> +	  (with-current-buffer (find-file-noselect file)
> +	    (setq buf (current-buffer))
> +	    (erase-buffer)
> +	    (fundamental-mode)
> +	    (insert txt "\n")
> +	    (save-buffer))
> +	  (kill-buffer buf)
> +	  (message "Export done."))
> +      (error "TABLE_EXPORT_FORMAT invalid"))))
>
> (defvar org-table-aligned-begin-marker (make-marker)
>   "Marker at the beginning of the table last aligned.
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 5/5] clipboard handling in remember templats
  2008-04-09 15:32   ` Carsten Dominik
@ 2008-04-09 17:35     ` James TD Smith
  0 siblings, 0 replies; 12+ messages in thread
From: James TD Smith @ 2008-04-09 17:35 UTC (permalink / raw)
  To: Carsten Dominik; +Cc: emacs-orgmode

On 2008-04-09 17:32:22(+0200), Carsten Dominik wrote:
> Hi James,
> 
> I am going to accept this patch, but I do have a question about it:
> 
> On Mar 16, 2008, at 5:31 PM, James TD Smith wrote:
> 
> >From: James TD Smith <ahktenzero@usa.net>
> >
> >org.el |   56 +++++++++++++++++++++++++++++++++++++++++---------------
> >1 files changed, 41 insertions(+), 15 deletions(-)
> 
> [...]
> 
> >    (cond
> >     ((org-in-regexp org-bracket-link-regexp 1)
> >      ;; We do have a link at point, and we are going to edit it.
> >@@ -12579,7 +12583,7 @@ link description."
> >	  (setq link  (org-make-link
> >		       "file:" (match-string 1 (expand-file-name file)))))
> >	 (t (setq link (org-make-link "file:" file))))))
> >-     (t
> >+     ((not link)
> >      ;; Read link, with completion for stored links.
> 
> If you set it up like this, `link' will be overwritten be any link found at point.
> Is you intention not to make the new argument link-location *overrule* anything
> that might be at point?
No, it should override any links at point. 
> So maybe the first alternative in the cond should be just (link), to bypass any parsing....
Yes.

James

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2008-04-09 18:00 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-16 16:27 [PATCH 0/5] Various patches James TD Smith
2008-03-16 16:28 ` [PATCH 1/5] Hide drawers after displaying an entry using org-clock-goto James TD Smith
2008-03-16 16:29 ` [PATCH 2/5] Add a way to set a user-defined function to generate descriptions for links James TD Smith
2008-04-09 15:15   ` Carsten Dominik
2008-03-16 16:29 ` [PATCH 3/5] Some improvements to org-table-export James TD Smith
2008-04-09 15:59   ` Carsten Dominik
2008-03-16 16:30 ` [PATCH 4/5] Add a new sort option, which sorts items by todo keyword James TD Smith, James TD Smith
2008-04-09 15:40   ` Carsten Dominik
2008-03-16 16:31 ` [PATCH 5/5] clipboard handling in remember templats James TD Smith
2008-04-09 15:32   ` Carsten Dominik
2008-04-09 17:35     ` James TD Smith
2008-03-16 18:29 ` [PATCH 4/5] Various patches James TD Smith

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).