mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-20 11:57:36 +00:00
lisp/gnus/eww.el (eww): Prepend urls with http:// if scheme is missing
(eww-mode): Use `define-derived-mode' (eww-parse-headers): Parse headers from beginning of buffer so that file:// links work (eww-detect-charset): Detect charset from the <meta> tag
This commit is contained in:
parent
5755011f76
commit
d652f4d02f
2 changed files with 30 additions and 7 deletions
|
|
@ -1,3 +1,14 @@
|
|||
2013-06-13 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
|
||||
|
||||
* eww.el (eww): Prepend urls with http:// if scheme is missing.
|
||||
(eww-mode): Use `define-derived-mode'.
|
||||
(eww-parse-headers): Parse headers from beginning of buffer so that
|
||||
file:// links work.
|
||||
|
||||
2013-06-13 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
* eww.el (eww-detect-charset): Detect charset from the <meta> tag.
|
||||
|
||||
2013-06-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* shr.el (shr-tag-svg): Ignore SVG elements, because we don't know how
|
||||
|
|
|
|||
|
|
@ -36,8 +36,22 @@
|
|||
(defun eww (url)
|
||||
"Fetch URL and render the page."
|
||||
(interactive "sUrl: ")
|
||||
(unless (string-match-p "\\`[a-zA-Z][-a-zA-Z0-9+.]*://" url)
|
||||
(setq url (concat "http://" url)))
|
||||
(url-retrieve url 'eww-render (list url)))
|
||||
|
||||
(defun eww-detect-charset (html-p)
|
||||
(let ((case-fold-search t)
|
||||
(pt (point)))
|
||||
(or (and html-p
|
||||
(re-search-forward
|
||||
"<meta[\t\n\r ]+[^>]*charset=\\([^\t\n\r \"/>]+\\)" nil t)
|
||||
(goto-char pt)
|
||||
(match-string 1))
|
||||
(and (looking-at
|
||||
"[\t\n\r ]*<\\?xml[\t\n\r ]+[^>]*encoding=\"\\([^\"]+\\)")
|
||||
(match-string 1)))))
|
||||
|
||||
(defun eww-render (status url &optional point)
|
||||
(let* ((headers (eww-parse-headers))
|
||||
(content-type
|
||||
|
|
@ -47,6 +61,8 @@
|
|||
(charset (intern
|
||||
(downcase
|
||||
(or (cdr (assq 'charset (cdr content-type)))
|
||||
(eww-detect-charset (equal (car content-type)
|
||||
"text/html"))
|
||||
"utf8"))))
|
||||
(data-buffer (current-buffer)))
|
||||
(unwind-protect
|
||||
|
|
@ -64,6 +80,7 @@
|
|||
|
||||
(defun eww-parse-headers ()
|
||||
(let ((headers nil))
|
||||
(goto-char (point-min))
|
||||
(while (and (not (eobp))
|
||||
(not (eolp)))
|
||||
(when (looking-at "\\([^:]+\\): *\\(.*\\)")
|
||||
|
|
@ -129,17 +146,12 @@
|
|||
;;(define-key map "n" 'eww-next-url)
|
||||
map))
|
||||
|
||||
(defun eww-mode ()
|
||||
(define-derived-mode eww-mode nil "eww"
|
||||
"Mode for browsing the web.
|
||||
|
||||
\\{eww-mode-map}"
|
||||
(interactive)
|
||||
(setq major-mode 'eww-mode
|
||||
mode-name "eww")
|
||||
(set (make-local-variable 'eww-current-url) 'author)
|
||||
(set (make-local-variable 'browse-url-browser-function) 'eww-browse-url)
|
||||
;;(setq buffer-read-only t)
|
||||
(use-local-map eww-mode-map))
|
||||
(set (make-local-variable 'browse-url-browser-function) 'eww-browse-url))
|
||||
|
||||
(defun eww-browse-url (url &optional new-window)
|
||||
(push (list eww-current-url (point))
|
||||
|
|
|
|||
Loading…
Reference in a new issue