Browse Source

contrib: move a few libraries to cl-lib in place of compile-time cl.

Specifically ob-julia, ob-stata, org-contacts, ox-bibtex.
Aaron Ecay 10 years ago
parent
commit
ea238b78f8
4 changed files with 183 additions and 185 deletions
  1. 3 3
      contrib/lisp/ob-julia.el
  2. 3 3
      contrib/lisp/ob-stata.el
  3. 175 177
      contrib/lisp/org-contacts.el
  4. 2 2
      contrib/lisp/ox-bibtex.el

+ 3 - 3
contrib/lisp/ob-julia.el

@@ -30,7 +30,7 @@
 
 
 ;;; Code:
 ;;; Code:
 (require 'ob)
 (require 'ob)
-(eval-when-compile (require 'cl))
+(require 'cl-lib)
 
 
 (declare-function orgtbl-to-csv "org-table" (table params))
 (declare-function orgtbl-to-csv "org-table" (table params))
 (declare-function julia "ext:ess-julia" (&optional start-args))
 (declare-function julia "ext:ess-julia" (&optional start-args))
@@ -228,7 +228,7 @@ current code buffer."
 If RESULT-TYPE equals 'output then return standard output as a
 If RESULT-TYPE equals 'output then return standard output as a
 string.  If RESULT-TYPE equals 'value then return the value of the
 string.  If RESULT-TYPE equals 'value then return the value of the
 last statement in BODY, as elisp."
 last statement in BODY, as elisp."
-  (case result-type
+  (cl-case result-type
     (value
     (value
      (let ((tmp-file (org-babel-temp-file "julia-")))
      (let ((tmp-file (org-babel-temp-file "julia-")))
        (org-babel-eval org-babel-julia-command
        (org-babel-eval org-babel-julia-command
@@ -250,7 +250,7 @@ last statement in BODY, as elisp."
 If RESULT-TYPE equals 'output then return standard output as a
 If RESULT-TYPE equals 'output then return standard output as a
 string.  If RESULT-TYPE equals 'value then return the value of the
 string.  If RESULT-TYPE equals 'value then return the value of the
 last statement in BODY, as elisp."
 last statement in BODY, as elisp."
-  (case result-type
+  (cl-case result-type
     (value
     (value
      (with-temp-buffer
      (with-temp-buffer
        (insert (org-babel-chomp body))
        (insert (org-babel-chomp body))

+ 3 - 3
contrib/lisp/ob-stata.el

@@ -42,7 +42,7 @@
 
 
 ;;; Code:
 ;;; Code:
 (require 'ob)
 (require 'ob)
-(eval-when-compile (require 'cl))
+(require 'cl-lib)
 
 
 (declare-function orgtbl-to-csv "org-table" (table params))
 (declare-function orgtbl-to-csv "org-table" (table params))
 (declare-function stata "ext:ess-stata" (&optional start-args))
 (declare-function stata "ext:ess-stata" (&optional start-args))
@@ -239,7 +239,7 @@ current code buffer."
 If RESULT-TYPE equals 'output then return standard output as a
 If RESULT-TYPE equals 'output then return standard output as a
 string.  If RESULT-TYPE equals 'value then return the value of the
 string.  If RESULT-TYPE equals 'value then return the value of the
 last statement in BODY, as elisp."
 last statement in BODY, as elisp."
-  (case result-type
+  (cl-case result-type
     (value
     (value
      (let ((tmp-file (org-babel-temp-file "stata-")))
      (let ((tmp-file (org-babel-temp-file "stata-")))
        (org-babel-eval org-babel-stata-command
        (org-babel-eval org-babel-stata-command
@@ -261,7 +261,7 @@ last statement in BODY, as elisp."
 If RESULT-TYPE equals 'output then return standard output as a
 If RESULT-TYPE equals 'output then return standard output as a
 string.  If RESULT-TYPE equals 'value then return the value of the
 string.  If RESULT-TYPE equals 'value then return the value of the
 last statement in BODY, as elisp."
 last statement in BODY, as elisp."
-  (case result-type
+  (cl-case result-type
     (value
     (value
      (with-temp-buffer
      (with-temp-buffer
        (insert (org-babel-chomp body))
        (insert (org-babel-chomp body))

+ 175 - 177
contrib/lisp/org-contacts.el

@@ -52,9 +52,7 @@
 ;;
 ;;
 ;;; Code:
 ;;; Code:
 
 
-(eval-when-compile
-  (require 'cl))
-
+(require 'cl-lib)
 (require 'org)
 (require 'org)
 (require 'gnus-util)
 (require 'gnus-util)
 (require 'gnus-art)
 (require 'gnus-art)
@@ -316,22 +314,22 @@ cell corresponding to the contact properties.
 	   (null prop-match)
 	   (null prop-match)
 	   (null tags-match))
 	   (null tags-match))
       (org-contacts-db)
       (org-contacts-db)
-    (loop for contact in (org-contacts-db)
-	  if (or
-	      (and name-match
-		   (org-string-match-p name-match
-				       (first contact)))
-	      (and prop-match
-		   (org-find-if (lambda (prop)
-				  (and (string= (car prop-match) (car prop))
-				       (org-string-match-p (cdr prop-match) (cdr prop))))
-				(caddr contact)))
-	      (and tags-match
-		   (org-find-if (lambda (tag)
-				  (org-string-match-p tags-match tag))
-				(org-split-string
-				 (or (cdr (assoc-string "ALLTAGS" (caddr contact))) "") ":"))))
-	  collect contact)))
+    (cl-loop for contact in (org-contacts-db)
+	     if (or
+		 (and name-match
+		      (org-string-match-p name-match
+					  (first contact)))
+		 (and prop-match
+		      (org-find-if (lambda (prop)
+				     (and (string= (car prop-match) (car prop))
+					  (org-string-match-p (cdr prop-match) (cdr prop))))
+				   (caddr contact)))
+		 (and tags-match
+		      (org-find-if (lambda (tag)
+				     (org-string-match-p tags-match tag))
+				   (org-split-string
+				    (or (cdr (assoc-string "ALLTAGS" (caddr contact))) "") ":"))))
+	     collect contact)))
 
 
 (when (not (fboundp 'completion-table-case-fold))
 (when (not (fboundp 'completion-table-case-fold))
   ;; That function is new in Emacs 24...
   ;; That function is new in Emacs 24...
@@ -344,34 +342,34 @@ cell corresponding to the contact properties.
   "Custom implementation of `try-completion'.
   "Custom implementation of `try-completion'.
 This version works only with list and alist and it looks at all
 This version works only with list and alist and it looks at all
 prefixes rather than just the beginning of the string."
 prefixes rather than just the beginning of the string."
-  (loop with regexp = (concat "\\b" (regexp-quote to-match))
-	with ret = nil
-	with ret-start = nil
-	with ret-end = nil
-
-	for el in collection
-	for string = (if (listp el) (car el) el)
-
-	for start = (when (or (null predicate) (funcall predicate string))
-		      (string-match regexp string))
-
-	if start
-	do (let ((end (match-end 0))
-		 (len (length string)))
-	     (if (= end len)
-		 (return t)
-	       (destructuring-bind (string start end)
-		   (if (null ret)
-		       (values string start end)
-		     (org-contacts-common-substring
-		      ret ret-start ret-end
-		      string start end))
-		 (setf ret string
-		       ret-start start
-		       ret-end end))))
-
-	finally (return
-		 (replace-regexp-in-string "\\`[ \t\n]*" "" ret))))
+  (cl-loop with regexp = (concat "\\b" (regexp-quote to-match))
+	   with ret = nil
+	   with ret-start = nil
+	   with ret-end = nil
+
+	   for el in collection
+	   for string = (if (listp el) (car el) el)
+
+	   for start = (when (or (null predicate) (funcall predicate string))
+			 (string-match regexp string))
+
+	   if start
+	   do (let ((end (match-end 0))
+		    (len (length string)))
+		(if (= end len)
+		    (cl-return t)
+		  (cl-destructuring-bind (string start end)
+		      (if (null ret)
+			  (values string start end)
+			(org-contacts-common-substring
+			 ret ret-start ret-end
+			 string start end))
+		    (setf ret string
+			  ret-start start
+			  ret-end end))))
+
+	   finally (cl-return
+		    (replace-regexp-in-string "\\`[ \t\n]*" "" ret))))
 
 
 (defun org-contacts-compare-strings (s1 start1 end1 s2 start2 end2 &optional ignore-case)
 (defun org-contacts-compare-strings (s1 start1 end1 s2 start2 end2 &optional ignore-case)
   "Compare the contents of two strings, using `compare-strings'.
   "Compare the contents of two strings, using `compare-strings'.
@@ -430,22 +428,22 @@ This function returns a list whose contains:
   "Custom version of `all-completions'.
   "Custom version of `all-completions'.
 This version works only with list and alist and it looks at all
 This version works only with list and alist and it looks at all
 prefixes rather than just the beginning of the string."
 prefixes rather than just the beginning of the string."
-  (loop with regexp = (concat "\\b" (regexp-quote to-match))
-	for el in collection
-	for string = (if (listp el) (car el) el)
-	for match? = (when (and (or (null predicate) (funcall predicate string)))
-		       (string-match regexp string))
-	if match?
-	collect (progn
-		  (let ((end (match-end 0)))
-		    (org-no-properties string)
-		    (when (< end (length string))
-		      ;; Here we add a text property that will be used
-		      ;; later to highlight the character right after
-		      ;; the common part between each addresses.
-		      ;; See `org-contacts-display-sort-function'.
-		      (put-text-property end (1+ end) 'org-contacts-prefix 't string)))
-		  string)))
+  (cl-loop with regexp = (concat "\\b" (regexp-quote to-match))
+	   for el in collection
+	   for string = (if (listp el) (car el) el)
+	   for match? = (when (and (or (null predicate) (funcall predicate string)))
+			  (string-match regexp string))
+	   if match?
+	   collect (progn
+		     (let ((end (match-end 0)))
+		       (org-no-properties string)
+		       (when (< end (length string))
+			 ;; Here we add a text property that will be used
+			 ;; later to highlight the character right after
+			 ;; the common part between each addresses.
+			 ;; See `org-contacts-display-sort-function'.
+			 (put-text-property end (1+ end) 'org-contacts-prefix 't string)))
+		     string)))
 
 
 (defun org-contacts-make-collection-prefix (collection)
 (defun org-contacts-make-collection-prefix (collection)
   "Make a collection function from COLLECTION which will match on prefixes."
   "Make a collection function from COLLECTION which will match on prefixes."
@@ -460,7 +458,7 @@ prefixes rather than just the beginning of the string."
 	    ((eq flag 'lambda)
 	    ((eq flag 'lambda)
 	     (org-contacts-test-completion-prefix string collection predicate))
 	     (org-contacts-test-completion-prefix string collection predicate))
 	    ((and (listp flag) (eq (car flag) 'boundaries))
 	    ((and (listp flag) (eq (car flag) 'boundaries))
-	     (destructuring-bind (to-ignore &rest suffix)
+	     (cl-destructuring-bind (to-ignore &rest suffix)
 		 flag
 		 flag
 	       (org-contacts-boundaries-prefix string collection predicate suffix)))
 	       (org-contacts-boundaries-prefix string collection predicate suffix)))
 	    ((eq flag 'metadata)
 	    ((eq flag 'metadata)
@@ -471,21 +469,21 @@ prefixes rather than just the beginning of the string."
 (defun org-contacts-display-sort-function (completions)
 (defun org-contacts-display-sort-function (completions)
   "Sort function for contacts display."
   "Sort function for contacts display."
   (mapcar (lambda (string)
   (mapcar (lambda (string)
-	    (loop with len = (1- (length string))
-		  for i upfrom 0 to len
-		  if (memq 'org-contacts-prefix
-			   (text-properties-at i string))
-		  do (set-text-properties
-		      i (1+ i)
-		      (list 'font-lock-face
-			    (if (char-equal (aref string i)
-					    (string-to-char " "))
-				;; Spaces can't be bold.
-				'underline
-			      'bold)) string)
-		  else
-		  do (set-text-properties i (1+ i) nil string)
-		  finally (return string)))
+	    (cl-loop with len = (1- (length string))
+		     for i upfrom 0 to len
+		     if (memq 'org-contacts-prefix
+			      (text-properties-at i string))
+		     do (set-text-properties
+			 i (1+ i)
+			 (list 'font-lock-face
+			       (if (char-equal (aref string i)
+					       (string-to-char " "))
+				   ;; Spaces can't be bold.
+				   'underline
+				 'bold)) string)
+		     else
+		     do (set-text-properties i (1+ i) nil string)
+		     finally (cl-return string)))
 	  completions))
 	  completions))
 
 
 (defun org-contacts-test-completion-prefix (string collection predicate)
 (defun org-contacts-test-completion-prefix (string collection predicate)
@@ -520,9 +518,9 @@ A group FOO is composed of contacts with the tag FOO."
 			(propertize (concat org-contacts-group-prefix group)
 			(propertize (concat org-contacts-group-prefix group)
 				    'org-contacts-group group))
 				    'org-contacts-group group))
 		      (org-uniquify
 		      (org-uniquify
-		       (loop for contact in (org-contacts-filter)
-			     nconc (org-split-string
-				    (or (cdr (assoc-string "ALLTAGS" (caddr contact))) "") ":")))))))
+		       (cl-loop for contact in (org-contacts-filter)
+				nconc (org-split-string
+				       (or (cdr (assoc-string "ALLTAGS" (caddr contact))) "") ":")))))))
 	(list start end
 	(list start end
 	      (if (= (length completion-list) 1)
 	      (if (= (length completion-list) 1)
 		  ;; We've found the correct group, returns the address
 		  ;; We've found the correct group, returns the address
@@ -530,21 +528,21 @@ A group FOO is composed of contacts with the tag FOO."
 							(car completion-list))))
 							(car completion-list))))
 		    (lambda (string pred &optional to-ignore)
 		    (lambda (string pred &optional to-ignore)
 		      (mapconcat 'identity
 		      (mapconcat 'identity
-				 (loop for contact in (org-contacts-filter
-						       nil
-						       tag)
-				       ;; The contact name is always the car of the assoc-list
-				       ;; returned by `org-contacts-filter'.
-				       for contact-name = (car contact)
-				       ;; Grab the first email of the contact
-				       for email = (org-contacts-strip-link
-						    (or (car (org-contacts-split-property
-							      (or
-							       (cdr (assoc-string org-contacts-email-property
-										  (caddr contact)))
-							       ""))) ""))
-				       ;; If the user has an email address, append USER <EMAIL>.
-				       if email collect (org-contacts-format-email contact-name email))
+				 (cl-loop for contact in (org-contacts-filter
+							  nil
+							  tag)
+					  ;; The contact name is always the car of the assoc-list
+					  ;; returned by `org-contacts-filter'.
+					  for contact-name = (car contact)
+					  ;; Grab the first email of the contact
+					  for email = (org-contacts-strip-link
+						       (or (car (org-contacts-split-property
+								 (or
+								  (cdr (assoc-string org-contacts-email-property
+										     (cl-caddr contact)))
+								  ""))) ""))
+					  ;; If the user has an email address, append USER <EMAIL>.
+					  if email collect (org-contacts-format-email contact-name email))
 				 ", ")))
 				 ", ")))
 		;; We haven't found the correct group
 		;; We haven't found the correct group
 		(completion-table-case-fold completion-list
 		(completion-table-case-fold completion-list
@@ -565,24 +563,24 @@ description."
       (let ((result
       (let ((result
 	     (mapconcat
 	     (mapconcat
 	      'identity
 	      'identity
-	      (loop for contact in (org-contacts-db)
-		    for contact-name = (car contact)
-		    for email = (org-contacts-strip-link (or (car (org-contacts-split-property
-							       (or
-								(cdr (assoc-string org-contacts-email-property
-										   (caddr contact)))
-								""))) ""))
-		    for tags = (cdr (assoc "TAGS" (nth 2 contact)))
-		    for tags-list = (if tags
-					(split-string (substring (cdr (assoc "TAGS" (nth 2 contact))) 1 -1) ":")
-				      '())
-		    for marker = (second contact)
-		    if (with-current-buffer (marker-buffer marker)
-			 (save-excursion
-			   (goto-char marker)
-			   (let (todo-only)
-			     (eval (cdr (org-make-tags-matcher (subseq string 1)))))))
-		    collect (org-contacts-format-email contact-name email))
+	      (cl-loop for contact in (org-contacts-db)
+		       for contact-name = (car contact)
+		       for email = (org-contacts-strip-link (or (car (org-contacts-split-property
+								      (or
+								       (cdr (assoc-string org-contacts-email-property
+											  (cl-caddr contact)))
+								       ""))) ""))
+		       for tags = (cdr (assoc "TAGS" (nth 2 contact)))
+		       for tags-list = (if tags
+					   (split-string (substring (cdr (assoc "TAGS" (nth 2 contact))) 1 -1) ":")
+					 '())
+		       for marker = (nth 1 contact)
+		       if (with-current-buffer (marker-buffer marker)
+			    (save-excursion
+			      (goto-char marker)
+			      (let (todo-only)
+				(eval (cdr (org-make-tags-matcher (cl-subseq string 1)))))))
+		       collect (org-contacts-format-email contact-name email))
 	      ",")))
 	      ",")))
 	(when (not (string= "" result))
 	(when (not (string= "" result))
 	  ;; return (start end function)
 	  ;; return (start end function)
@@ -593,37 +591,37 @@ description."
 (defun org-contacts-remove-ignored-property-values (ignore-list list)
 (defun org-contacts-remove-ignored-property-values (ignore-list list)
   "Remove all ignore-list's elements from list and you can use
   "Remove all ignore-list's elements from list and you can use
    regular expressions in the ignore list."
    regular expressions in the ignore list."
-    (cl-remove-if (lambda (el)
-		     (org-find-if (lambda (x)
-				    (string-match-p x el))
-				  ignore-list))
-		   list))
+  (cl-remove-if (lambda (el)
+		  (org-find-if (lambda (x)
+				 (string-match-p x el))
+			       ignore-list))
+		list))
 
 
 (defun org-contacts-complete-name (start end string)
 (defun org-contacts-complete-name (start end string)
   "Complete text at START with a user name and email."
   "Complete text at START with a user name and email."
   (let* ((completion-ignore-case org-contacts-completion-ignore-case)
   (let* ((completion-ignore-case org-contacts-completion-ignore-case)
          (completion-list
          (completion-list
-	  (loop for contact in (org-contacts-filter)
-		;; The contact name is always the car of the assoc-list
-		;; returned by `org-contacts-filter'.
-		for contact-name = (car contact)
-
-		;; Build the list of the email addresses which has
-		;; been expired
-		for ignore-list = (org-contacts-split-property
-				   (or (cdr (assoc-string org-contacts-ignore-property
-							  (caddr contact))) ""))
-		;; Build the list of the user email addresses.
-		for email-list = (org-contacts-remove-ignored-property-values
-				  ignore-list
-				  (org-contacts-split-property
-				   (or (cdr (assoc-string org-contacts-email-property
-							  (caddr contact))) "")))
-		;; If the user has email addresses…
-		if email-list
-		;; … append a list of USER <EMAIL>.
-		nconc (loop for email in email-list
-			    collect (org-contacts-format-email contact-name (org-contacts-strip-link email)))))
+	  (cl-loop for contact in (org-contacts-filter)
+		   ;; The contact name is always the car of the assoc-list
+		   ;; returned by `org-contacts-filter'.
+		   for contact-name = (car contact)
+
+		   ;; Build the list of the email addresses which has
+		   ;; been expired
+		   for ignore-list = (org-contacts-split-property
+				      (or (cdr (assoc-string org-contacts-ignore-property
+							     (nth 2 contact))) ""))
+		   ;; Build the list of the user email addresses.
+		   for email-list = (org-contacts-remove-ignored-property-values
+				     ignore-list
+				     (org-contacts-split-property
+				      (or (cdr (assoc-string org-contacts-email-property
+							     (nth 2 contact))) "")))
+		   ;; If the user has email addresses…
+		   if email-list
+		   ;; … append a list of USER <EMAIL>.
+		   nconc (cl-loop for email in email-list
+				  collect (org-contacts-format-email contact-name (org-contacts-strip-link email)))))
 	 (completion-list (org-contacts-all-completions-prefix
 	 (completion-list (org-contacts-all-completions-prefix
 			   string
 			   string
 			   (org-uniquify completion-list))))
 			   (org-uniquify completion-list))))
@@ -662,13 +660,13 @@ description."
   (let* ((address (org-contacts-gnus-get-name-email))
   (let* ((address (org-contacts-gnus-get-name-email))
          (name (car address))
          (name (car address))
          (email (cadr address)))
          (email (cadr address)))
-    (cadar (or (org-contacts-filter
-                nil
-		nil
-                (cons org-contacts-email-property (concat "\\b" (regexp-quote email) "\\b")))
-               (when name
-                 (org-contacts-filter
-                  (concat "^" name "$")))))))
+    (cl-cadar (or (org-contacts-filter
+		   nil
+		   nil
+		   (cons org-contacts-email-property (concat "\\b" (regexp-quote email) "\\b")))
+		  (when name
+		    (org-contacts-filter
+		     (concat "^" name "$")))))))
 
 
 (defun org-contacts-gnus-article-from-goto ()
 (defun org-contacts-gnus-article-from-goto ()
   "Go to contact in the From address of current Gnus message."
   "Go to contact in the From address of current Gnus message."
@@ -698,23 +696,23 @@ Format is a string matching the following format specification:
   (let ((calendar-date-style 'american)
   (let ((calendar-date-style 'american)
         (entry ""))
         (entry ""))
     (unless format (setq format org-contacts-birthday-format))
     (unless format (setq format org-contacts-birthday-format))
-    (loop for contact in (org-contacts-filter)
-          for anniv = (let ((anniv (cdr (assoc-string
-                                         (or field org-contacts-birthday-property)
-                                         (caddr contact)))))
-                        (when anniv
-                          (calendar-gregorian-from-absolute
-                           (org-time-string-to-absolute anniv))))
-          ;; Use `diary-anniversary' to compute anniversary.
-          if (and anniv (apply 'diary-anniversary anniv))
-          collect (format-spec format
-                               `((?l . ,(org-with-point-at (cadr contact) (org-store-link nil)))
-                                 (?h . ,(car contact))
-                                 (?y . ,(- (calendar-extract-year date)
-                                           (calendar-extract-year anniv)))
-                                 (?Y . ,(let ((years (- (calendar-extract-year date)
-                                                        (calendar-extract-year anniv))))
-                                          (format "%d%s" years (diary-ordinal-suffix years)))))))))
+    (cl-loop for contact in (org-contacts-filter)
+	     for anniv = (let ((anniv (cdr (assoc-string
+					    (or field org-contacts-birthday-property)
+					    (nth 2 contact)))))
+			   (when anniv
+			     (calendar-gregorian-from-absolute
+			      (org-time-string-to-absolute anniv))))
+	     ;; Use `diary-anniversary' to compute anniversary.
+	     if (and anniv (apply 'diary-anniversary anniv))
+	     collect (format-spec format
+				  `((?l . ,(org-with-point-at (cadr contact) (org-store-link nil)))
+				    (?h . ,(car contact))
+				    (?y . ,(- (calendar-extract-year date)
+					      (calendar-extract-year anniv)))
+				    (?Y . ,(let ((years (- (calendar-extract-year date)
+							   (calendar-extract-year anniv))))
+					     (format "%d%s" years (diary-ordinal-suffix years)))))))))
 
 
 (defun org-completing-read-date (prompt collection
 (defun org-completing-read-date (prompt collection
                                         &optional predicate require-match initial-input
                                         &optional predicate require-match initial-input
@@ -995,7 +993,7 @@ to do our best."
 
 
 (defun org-contacts-vcard-format (contact)
 (defun org-contacts-vcard-format (contact)
   "Formats CONTACT in VCard 3.0 format."
   "Formats CONTACT in VCard 3.0 format."
-  (let* ((properties (caddr contact))
+  (let* ((properties (nth 2 contact))
 	 (name (org-contacts-vcard-escape (car contact)))
 	 (name (org-contacts-vcard-escape (car contact)))
 	 (n (org-contacts-vcard-encode-name name))
 	 (n (org-contacts-vcard-encode-name name))
 	 (email (cdr (assoc-string org-contacts-email-property properties)))
 	 (email (cdr (assoc-string org-contacts-email-property properties)))
@@ -1054,15 +1052,15 @@ passed to `org-contacts-export-as-vcard-internal'."
   (interactive "P")
   (interactive "P")
   (when (called-interactively-p 'any)
   (when (called-interactively-p 'any)
     (cl-psetf name
     (cl-psetf name
-	     (when name
-	       (read-string "Contact name: "
-			    (first (org-contacts-at-point))))
-	     file
-	     (when (equal name '(16))
-	       (read-file-name "File: " nil org-contacts-vcard-file))
-	     to-buffer
-	     (when (equal name '(64))
-	       (read-buffer "Buffer: "))))
+	      (when name
+		(read-string "Contact name: "
+			     (nth 0 (org-contacts-at-point))))
+	      file
+	      (when (equal name '(16))
+		(read-file-name "File: " nil org-contacts-vcard-file))
+	      to-buffer
+	      (when (equal name '(64))
+		(read-buffer "Buffer: "))))
   (org-contacts-export-as-vcard-internal name file to-buffer))
   (org-contacts-export-as-vcard-internal name file to-buffer))
 
 
 (defun org-contacts-export-as-vcard-internal (&optional name file to-buffer)
 (defun org-contacts-export-as-vcard-internal (&optional name file to-buffer)
@@ -1094,9 +1092,9 @@ Requires google-maps-el."
     (error "`org-contacts-show-map' requires `google-maps-el'"))
     (error "`org-contacts-show-map' requires `google-maps-el'"))
   (google-maps-static-show
   (google-maps-static-show
    :markers
    :markers
-   (loop
+   (cl-loop
     for contact in (org-contacts-filter name)
     for contact in (org-contacts-filter name)
-    for addr = (cdr (assoc-string org-contacts-address-property (caddr contact)))
+    for addr = (cdr (assoc-string org-contacts-address-property (nth 2 contact)))
     if addr
     if addr
     collect (cons (list addr) (list :label (string-to-char (car contact)))))))
     collect (cons (list addr) (list :label (string-to-char (car contact)))))))
 
 

+ 2 - 2
contrib/lisp/ox-bibtex.el

@@ -92,7 +92,7 @@
 
 
 ;; Initialization
 ;; Initialization
 
 
-(eval-when-compile (require 'cl))
+(require 'cl-lib)
 
 
 ;;; Internal Functions
 ;;; Internal Functions
 
 
@@ -136,7 +136,7 @@ contains a list of strings to be passed as options to
 
 
 (defun org-bibtex-citation-p (object)
 (defun org-bibtex-citation-p (object)
   "Non-nil when OBJECT is a citation."
   "Non-nil when OBJECT is a citation."
-  (case (org-element-type object)
+  (cl-case (org-element-type object)
     (link (equal (org-element-property :type object) "cite"))
     (link (equal (org-element-property :type object) "cite"))
     (latex-fragment
     (latex-fragment
      (string-match "\\`\\\\cite{" (org-element-property :value object)))))
      (string-match "\\`\\\\cite{" (org-element-property :value object)))))