>From 30b8328292fc09b3f1ae84b469d1c574c19bfa58 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 1 Apr 2013 16:08:37 +0200 Subject: [PATCH] ox-taskjuggler: Use task_id property when specified * contrib/lisp/ox-taskjuggler.el (org-taskjuggler--build-unique-id): Use specified id (TASK_ID property) when possible. --- contrib/lisp/ox-taskjuggler.el | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/contrib/lisp/ox-taskjuggler.el b/contrib/lisp/ox-taskjuggler.el index cdc9195..5b2e5cc 100644 --- a/contrib/lisp/ox-taskjuggler.el +++ b/contrib/lisp/ox-taskjuggler.el @@ -411,16 +411,19 @@ resource. Its id is derived from its name and made unique against UNIQUE-IDS. If the (downcased) first token of the headline is not unique try to add more (downcased) tokens of the headline or finally add more underscore characters (\"_\")." - (let* ((parts (org-split-string (org-element-property :raw-value item))) - (id (org-taskjuggler--clean-id (downcase (pop parts))))) - ;; Try to add more parts of the headline to make it unique. - (while (and (car parts) (member id unique-ids)) - (setq id (concat id "_" - (org-taskjuggler--clean-id (downcase (pop parts)))))) - ;; If it's still not unique, add "_". - (while (member id unique-ids) - (setq id (concat id "_"))) - id)) + (let ((id (org-string-nw-p (org-element-property :TASK_ID item)))) + ;; If an id is specified, use it, as long as it's unique. + (if (not (member id unique-ids)) id + (let* ((parts (org-split-string (org-element-property :raw-value item))) + (id (org-taskjuggler--clean-id (downcase (pop parts))))) + ;; Try to add more parts of the headline to make it unique. + (while (and (car parts) (member id unique-ids)) + (setq id (concat id "_" + (org-taskjuggler--clean-id (downcase (pop parts)))))) + ;; If it's still not unique, add "_". + (while (member id unique-ids) + (setq id (concat id "_"))) + id)))) (defun org-taskjuggler--clean-id (id) "Clean and return ID to make it acceptable for TaskJuggler. -- 1.8.2