[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-womb] addressbook ChangeLog addressbook.el
From: |
Jose E. Marchesi |
Subject: |
[Commit-womb] addressbook ChangeLog addressbook.el |
Date: |
Mon, 07 May 2007 22:54:19 +0000 |
CVSROOT: /cvsroot/womb
Module name: addressbook
Changes by: Jose E. Marchesi <jemarch> 07/05/07 22:54:19
Modified files:
. : ChangeLog addressbook.el
Log message:
Fixed `addrbook-quit'
Sort function.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/addressbook/ChangeLog?cvsroot=womb&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/addressbook/addressbook.el?cvsroot=womb&r1=1.12&r2=1.13
Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/womb/addressbook/ChangeLog,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- ChangeLog 7 May 2007 19:28:25 -0000 1.12
+++ ChangeLog 7 May 2007 22:54:19 -0000 1.13
@@ -5,6 +5,7 @@
Sources reestructured.
(addrbook-summary-display): renamed from `addrbook-summary-redisplay'
(addrbook-quit): Fixed.
+ (addrbook-get-prop-index): New function.
2007-05-06 Jose E. Marchesi <address@hidden>
Index: addressbook.el
===================================================================
RCS file: /cvsroot/womb/addressbook/addressbook.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- addressbook.el 7 May 2007 19:28:25 -0000 1.12
+++ addressbook.el 7 May 2007 22:54:19 -0000 1.13
@@ -5,7 +5,7 @@
;; Maintainer: Jose E. Marchesi
;; Keywords: contacts, applications
-;; $Id: addressbook.el,v 1.12 2007/05/07 19:28:25 jemarch Exp $
+;; $Id: addressbook.el,v 1.13 2007/05/07 22:54:19 jemarch Exp $
;; This file is NOT part of GNU Emacs.
@@ -85,8 +85,6 @@
;;;; Customization
-;;; General settings
-
(defgroup addrbook nil
"Addressbook subsytem"
:group 'applications)
@@ -136,6 +134,14 @@
:type 'boolean
:group 'addrbook)
+(defcustom addrbook-field-for-sort
+ "First name"
+ "Field to use when sorting contacts.
+
+It may be \"Surname\", \"First Name\", \"AKA\", \"Name prefix\" or \"Name
suffix\"."
+ :type 'string
+ :group 'addrbook)
+
(defface addrbook-summary-card-number
'((((min-colors 88) (class color) (background light))
:foreground "red1")
@@ -509,6 +515,12 @@
(defun addrbook-get-prop-field-letter (field)
(nth 1 field))
+(defun addrbook-get-prop-index (prop-fields field-name)
+ (let ((index 0) result)
+ (dotimes (index (length prop-fields) result)
+ (if (equal (nth index prop-fields) field-name)
+ (setq result index)))))
+
(defun addrbook-get-prop-field-description (fields field-name)
(cadr (assoc field-name fields)))
@@ -1799,7 +1811,8 @@
(defun addrbook-open ()
"Open the addressbook"
(or (addrbook-read-cards)
- (addrbook-create-card-2)))
+ (addrbook-create-card-2))
+ (addrbook-sort-cards))
(defun addrbook-get-text-property-line (prop)
"Return the value of text property PROP in the nearest position on current
line
@@ -1835,6 +1848,28 @@
((and (not begin-pos) end-pos)
(delete-region (point-min) end-pos)))))
+(defun addrbook-sort-cards ()
+ "Sort `addrbook-cards' using the `addrbook-field-for-sort' field"
+ (setq addrbook-cards
+ (sort addrbook-cards
+ (lambda (card1 card2)
+ (let* ((card1-n (vcard-get-named-attribute card1 "n"))
+ (card2-n (vcard-get-named-attribute card2 "n"))
+ (n-prop (addrbook-get-property "n"))
+ (n-fields (addrbook-get-prop-fields n-prop))
+ (field-index (addrbook-get-prop-index n-fields
addrbook-field-for-sort))
+ (card1-n-field (nth field-index (vcard-attr-get-values
card1-n)))
+ (card2-n-field (nth field-index (vcard-attr-get-values
card2-n))))
+ (cond
+ ((and (null card1-n-field) (not (null card2-n-field)))
+ t)
+ ((and (not (null card1-n-field)) (null card2-n-field))
+ nil)
+ ((and (null card1-n-field) (null card2-n-field))
+ t)
+ (t
+ (string-lessp card1-n-field card2-n-field))))))))
+
;;; Fast selection
(defun addrbook-fast-selection (names prompt)
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/04
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/05
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/05
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/06
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/06
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/06
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/06
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/07
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/07
- [Commit-womb] addressbook ChangeLog addressbook.el,
Jose E. Marchesi <=
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/08
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/08
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/08
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/08
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/08
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/08
- [Commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/08
- [Commit-womb] addressbook ChangeLog addressbook.el, Xavier Maillard, 2007/05/08
- [commit-womb] addressbook ChangeLog addressbook.el, Jose E. Marchesi, 2007/05/09