# HG changeset patch # User Stefan Monnier # Date 1154381803 0 # Node ID 23d71f51857b6b0730d5752e40cdccb21a5b2d7c # Parent 70fe6a67ad335b062c980ab923a8b1e6fe3d82a5 (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'. diff -r 70fe6a67ad33 -r 23d71f51857b lisp/url/ChangeLog --- 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 + + * 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 * url-util.el (url-hexify-string): Rewrite. diff -r 70fe6a67ad33 -r 23d71f51857b lisp/url/url-util.el --- 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)