From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Leo Newsgroups: gmane.emacs.bugs Subject: bug#11525: 24.0.97; Add icalendar-import-format-uid Date: Sun, 20 May 2012 21:54:34 +0800 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: dough.gmane.org 1337522143 22240 80.91.229.3 (20 May 2012 13:55:43 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 20 May 2012 13:55:43 +0000 (UTC) To: 11525@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun May 20 15:55:42 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SW6bi-0004cE-FJ for geb-bug-gnu-emacs@m.gmane.org; Sun, 20 May 2012 15:55:38 +0200 Original-Received: from localhost ([::1]:38477 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW6bh-00061F-Uh for geb-bug-gnu-emacs@m.gmane.org; Sun, 20 May 2012 09:55:37 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:43298) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW6be-00060t-N8 for bug-gnu-emacs@gnu.org; Sun, 20 May 2012 09:55:36 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SW6bb-0003OX-3P for bug-gnu-emacs@gnu.org; Sun, 20 May 2012 09:55:34 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:54149) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW6ba-0003OG-UK for bug-gnu-emacs@gnu.org; Sun, 20 May 2012 09:55:31 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SW6c6-0003oZ-KJ; Sun, 20 May 2012 09:56:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Leo Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: ulf.jasper@web.de, bug-gnu-emacs@gnu.org Resent-Date: Sun, 20 May 2012 13:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 11525 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org X-Debbugs-Original-Xcc: Ulf Jasper Original-Received: via spool by submit@debbugs.gnu.org id=B.133752215914655 (code B ref -1); Sun, 20 May 2012 13:56:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 20 May 2012 13:55:59 +0000 Original-Received: from localhost ([127.0.0.1]:35461 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SW6c2-0003oK-4J for submit@debbugs.gnu.org; Sun, 20 May 2012 09:55:58 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:53228) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SW6bg-0003nv-4Y for submit@debbugs.gnu.org; Sun, 20 May 2012 09:55:56 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SW6b2-00031K-MN for submit@debbugs.gnu.org; Sun, 20 May 2012 09:54:58 -0400 Original-Received: from lists.gnu.org ([208.118.235.17]:48033) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW6b2-00031C-GD for submit@debbugs.gnu.org; Sun, 20 May 2012 09:54:56 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:42644) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW6b0-0005sx-Id for bug-gnu-emacs@gnu.org; Sun, 20 May 2012 09:54:56 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SW6ay-00030c-Hn for bug-gnu-emacs@gnu.org; Sun, 20 May 2012 09:54:53 -0400 Original-Received: from mail-pz0-f41.google.com ([209.85.210.41]:42465) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SW6ay-00030L-1F for bug-gnu-emacs@gnu.org; Sun, 20 May 2012 09:54:52 -0400 Original-Received: by dakp5 with SMTP id p5so6102892dak.0 for ; Sun, 20 May 2012 06:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:x-debbugs-cc:date:message-id:mime-version :content-type; bh=TxfvVMFMKfxeU7XsgncLds2mFxwIX8wSScoOu9D2CzQ=; b=ifREUiygygXAPV36GXZEYuyflN52lD5Llpn+J4DOlnKVqkIre5HfpMb1qyIhAdSqkE n+Z+RaWr0yb5TmoMVFadruk4sototir0HIOhAPEUL0NCBZJ6opRkmZclGXas0T4KxnyM 3AgF+VAHwgoMxAHSIWYQ00TPmYDUW6q97v60jz+NrxmK7aTttYo6c+Ll1xmTKGyTPh36 Zys6aQr2wsNBhLvYrfK1T2v5PhRAqzrkKRo6hWbC9xYyeZwWZRJZmn3LC4hpvtUpgqDz Zvp8dMK3GyJuHLre+RzZGN6irWs7Jn6/XLGLXjQHNaStJ77LYxFfNWZe4EH2FanU0uMQ WThw== Original-Received: by 10.68.232.129 with SMTP id to1mr37864945pbc.27.1337522089121; Sun, 20 May 2012 06:54:49 -0700 (PDT) Original-Received: from Victoria.local ([222.130.133.18]) by mx.google.com with ESMTPS id u5sm19646333pbu.76.2012.05.20.06.54.44 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 20 May 2012 06:54:48 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:60232 Archived-At: --=-=-= Content-Type: text/plain Hello Ulf, I am teaching Gnus to add invitation/events to diary and so I have found UID in icalendar useful to identify events. Does it make sense to apply the following patch, which I have been using since may 2011? Thanks. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=ical.diff Content-Description: ical.diff === modified file 'lisp/calendar/icalendar.el' --- lisp/calendar/icalendar.el 2012-03-13 06:54:37 +0000 +++ lisp/calendar/icalendar.el 2012-05-20 13:45:46 +0000 @@ -130,6 +130,7 @@ %s Summary, see `icalendar-import-format-summary' %t Status, see `icalendar-import-format-status' %u URL, see `icalendar-import-format-url' +%U UID, see `icalendar-import-format-uid' A formatting FUNCTION will be called with a VEVENT as its only argument. It must return a string. See @@ -179,6 +180,14 @@ :type 'string :group 'icalendar) +(defcustom icalendar-import-format-uid + "\n UID: %s" + "Format string defining how the UID element is formatted. +This applies only if the UID is not empty! `%s' is replaced by +the UID." + :type 'string + :group 'icalendar) + (defcustom icalendar-import-format-status "\n Status: %s" "Format string defining how the status element is formatted. @@ -1098,7 +1107,8 @@ ;; can't do anything nil ;; split summary-and-rest - (let* ((s icalendar-import-format) + (let* ((case-fold-search nil) + (s icalendar-import-format) (p-cla (or (string-match "%c" icalendar-import-format) -1)) (p-des (or (string-match "%d" icalendar-import-format) -1)) (p-loc (or (string-match "%l" icalendar-import-format) -1)) @@ -1106,9 +1116,10 @@ (p-sum (or (string-match "%s" icalendar-import-format) -1)) (p-sta (or (string-match "%t" icalendar-import-format) -1)) (p-url (or (string-match "%u" icalendar-import-format) -1)) - (p-list (sort (list p-cla p-des p-loc p-org p-sta p-sum p-url) '<)) + (p-uid (or (string-match "%U" icalendar-import-format) -1)) + (p-list (sort (list p-cla p-des p-loc p-org p-sta p-sum p-url p-uid) '<)) (ct 0) - pos-cla pos-des pos-loc pos-org pos-sta pos-sum pos-url) + pos-cla pos-des pos-loc pos-org pos-sta pos-sum pos-url pos-uid) (dotimes (i (length p-list)) ;; Use 'ct' to keep track of current position in list (cond ((and (>= p-cla 0) (= (nth i p-list) p-cla)) @@ -1131,7 +1142,10 @@ (setq pos-sum (* 2 ct))) ((and (>= p-url 0) (= (nth i p-list) p-url)) (setq ct (+ ct 1)) - (setq pos-url (* 2 ct)))) ) + (setq pos-url (* 2 ct))) + ((and (>= p-uid 0) (= (nth i p-list) p-uid)) + (setq ct (+ ct 1)) + (setq pos-uid (* 2 ct)))) ) (mapc (lambda (ij) (setq s (icalendar--rris (car ij) (cadr ij) s t t))) (list @@ -1149,13 +1163,15 @@ (list "%t" (concat "\\(" icalendar-import-format-status "\\)??")) (list "%u" - (concat "\\(" icalendar-import-format-url "\\)??")))) + (concat "\\(" icalendar-import-format-url "\\)??")) + (list "%U" + (concat "\\(" icalendar-import-format-uid "\\)??")))) ;; Need the \' regexp in order to detect multi-line items (setq s (concat "\\`" (icalendar--rris "%s" "\\(.*?\\)" s nil t) "\\'")) (if (string-match s summary-and-rest) - (let (cla des loc org sta sum url) + (let (cla des loc org sta sum url uid) (if (and pos-sum (match-beginning pos-sum)) (setq sum (substring summary-and-rest (match-beginning pos-sum) @@ -1184,13 +1200,18 @@ (setq url (substring summary-and-rest (match-beginning pos-url) (match-end pos-url)))) + (if (and pos-uid (match-beginning pos-uid)) + (setq uid (substring summary-and-rest + (match-beginning pos-uid) + (match-end pos-uid)))) (list (if cla (cons 'cla cla) nil) (if des (cons 'des des) nil) (if loc (cons 'loc loc) nil) (if org (cons 'org org) nil) (if sta (cons 'sta sta) nil) ;;(if sum (cons 'sum sum) nil) - (if url (cons 'url url) nil)))))))) + (if url (cons 'url url) nil) + (if uid (cons 'uid uid) nil)))))))) ;; subroutines for icalendar-export-region (defun icalendar--convert-ordinary-to-ical (nonmarker entry-main) @@ -1864,6 +1885,7 @@ (if (functionp icalendar-import-format) (funcall icalendar-import-format event) (let ((string icalendar-import-format) + (case-fold-search nil) (conversion-list '(("%c" CLASS icalendar-import-format-class) ("%d" DESCRIPTION icalendar-import-format-description) @@ -1871,7 +1893,8 @@ ("%o" ORGANIZER icalendar-import-format-organizer) ("%s" SUMMARY icalendar-import-format-summary) ("%t" STATUS icalendar-import-format-status) - ("%u" URL icalendar-import-format-url)))) + ("%u" URL icalendar-import-format-url) + ("%U" UID icalendar-import-format-uid)))) ;; convert the specifiers in the format string (mapc (lambda (i) (let* ((spec (car i)) --=-=-=--