;;; eww.el --- Emacs Web Wowser -*- lexical-binding:t -*-
-;; Copyright (C) 2013-2015 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: html
(source (and (null document)
(buffer-substring (point) (point-max)))))
(with-current-buffer buffer
+ (setq bidi-paragraph-direction 'left-to-right)
(plist-put eww-data :source source)
(plist-put eww-data :dom document)
(let ((inhibit-read-only t)
(inhibit-modification-hooks t)
(shr-target-id (url-target (url-generic-parse-url url)))
(shr-external-rendering-functions
- '((title . eww-tag-title)
- (form . eww-tag-form)
- (input . eww-tag-input)
- (textarea . eww-tag-textarea)
- (select . eww-tag-select)
- (link . eww-tag-link)
- (a . eww-tag-a))))
+ (append
+ '((title . eww-tag-title)
+ (form . eww-tag-form)
+ (input . eww-tag-input)
+ (textarea . eww-tag-textarea)
+ (select . eww-tag-select)
+ (link . eww-tag-link)
+ (meta . eww-tag-meta)
+ (a . eww-tag-a)))))
(erase-buffer)
(shr-insert-document document)
(cond
where
(plist-put eww-data (cdr where) href))))
+(defvar eww-redirect-level 1)
+
+(defun eww-tag-meta (dom)
+ (when (and (cl-equalp (dom-attr dom 'http-equiv) "refresh")
+ (< eww-redirect-level 5))
+ (when-let (refresh (dom-attr dom 'content))
+ (when (or (string-match "^\\([0-9]+\\) *;.*url=\"\\([^\"]+\\)\"" refresh)
+ (string-match "^\\([0-9]+\\) *;.*url=\\([^ ]+\\)" refresh))
+ (let ((timeout (match-string 1 refresh))
+ (url (match-string 2 refresh))
+ (eww-redirect-level (1+ eww-redirect-level)))
+ (if (equal timeout "0")
+ (eww (shr-expand-url url))
+ (eww-tag-a
+ (dom-node 'a `((href . ,(shr-expand-url url)))
+ (format "Auto refresh in %s second%s disabled"
+ timeout
+ (if (equal timeout "1")
+ ""
+ "s"))))))))))
+
(defun eww-tag-link (dom)
(eww-handle-link dom)
(shr-generic dom))
(let ((inhibit-read-only t))
(remove-overlays)
(erase-buffer))
+ (setq bidi-paragraph-direction 'left-to-right)
(unless (eq major-mode 'eww-mode)
(eww-mode)))
(setq-local desktop-save-buffer #'eww-desktop-misc-data)
;; multi-page isearch support
(setq-local multi-isearch-next-buffer-function #'eww-isearch-next-buffer)
- (setq truncate-lines t
- bidi-paragraph-direction 'left-to-right)
+ (setq truncate-lines t)
(buffer-disable-undo)
(setq buffer-read-only t))