changeset 72218:23d71f51857b

(url-hexify-string): Only utf-8 encode if it's a multibyte string. (url-normalize-url): Remove unused var `grok'. (url-truncate-url-for-viewing): Remove unused var `tail'.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 31 Jul 2006 21:36:43 +0000
parents 70fe6a67ad33
children efb471b59acc
files lisp/url/ChangeLog lisp/url/url-util.el
diffstat 2 files changed, 27 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/url/ChangeLog	Mon Jul 31 20:33:33 2006 +0000
+++ b/lisp/url/ChangeLog	Mon Jul 31 21:36:43 2006 +0000
@@ -1,3 +1,10 @@
+2006-07-31  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* url-util.el (url-hexify-string): Only utf-8 encode if it's
+	a multibyte string.
+	(url-normalize-url): Remove unused var `grok'.
+	(url-truncate-url-for-viewing): Remove unused var `tail'.
+
 2006-07-30  Thien-Thi Nguyen  <ttn@gnu.org>
 
 	* url-util.el (url-hexify-string): Rewrite.
--- a/lisp/url/url-util.el	Mon Jul 31 20:33:33 2006 +0000
+++ b/lisp/url/url-util.el	Mon Jul 31 21:36:43 2006 +0000
@@ -163,7 +163,7 @@
 (defun url-normalize-url (url)
   "Return a 'normalized' version of URL.
 Strips out default port numbers, etc."
-  (let (type data grok retval)
+  (let (type data retval)
     (setq data (url-generic-parse-url url)
 	  type (url-type data))
     (if (member type '("www" "about" "mailto" "info"))
@@ -358,11 +358,24 @@
 character in the utf-8 string, those found in `url-unreserved-chars'
 are left as-is, all others are represented as a three-character
 string: \"%\" followed by two lowercase hex digits."
-  (mapconcat (lambda (char)
-               (if (memq char url-unreserved-chars)
-                   (char-to-string char)
-                 (format "%%%02x" char)))
-             (encode-coding-string string 'utf-8 t)
+  ;; To go faster and avoid a lot of consing, we could do:
+  ;; 
+  ;; (defconst url-hexify-table
+  ;;   (let ((map (make-vector 256 nil)))
+  ;;     (dotimes (byte 256) (aset map byte
+  ;;                               (if (memq byte url-unreserved-chars)
+  ;;                                   (char-to-string byte)
+  ;;                                 (format "%%%02x" byte))))
+  ;;     map))
+  ;;
+  ;; (mapconcat (curry 'aref url-hexify-table) ...)
+  (mapconcat (lambda (byte)
+               (if (memq byte url-unreserved-chars)
+                   (char-to-string byte)
+                 (format "%%%02x" byte)))
+             (if (multibyte-string-p string)
+                 (encode-coding-string string 'utf-8)
+               string)
              ""))
 
 ;;;###autoload
@@ -390,7 +403,6 @@
 WIDTH defaults to the current frame width."
   (let* ((fr-width (or width (frame-width)))
 	 (str-width (length url))
-	 (tail (file-name-nondirectory url))
 	 (fname nil)
 	 (modified 0)
 	 (urlobj nil))
@@ -398,8 +410,7 @@
     (if (and (>= str-width fr-width)
 	     (string-match "?" url))
 	(setq url (concat (substring url 0 (match-beginning 0)) "?...")
-	      str-width (length url)
-	      tail (file-name-nondirectory url)))
+	      str-width (length url)))
     (if (< str-width fr-width)
 	nil				; Hey, we are done!
       (setq urlobj (url-generic-parse-url url)