Commit 924d6997 authored by Gnus developers's avatar Gnus developers Committed by Katsumi Yamaoka
Browse files

Merge changes made in Gnus master

2013-06-18 Teodor Zlatanov <tzz@lifelogs.com>
* auth-source.el (auth-source-netrc-parse-entries): Remove debugging.

2013-06-18 Lars Magne Ingebrigtsen <larsi@gnus.org>
* net/shr.el (shr-make-table-1): Implement <td rowspan>.
(shr-table-horizontal-line): Allow nil as a value, and change the default.
(shr-insert-table-ruler): Respect the nil value.

2013-06-18 Tom Tromey <tromey@barimba>
* net/eww.el (eww-next-url, eww-previous-url, eww-up-url, eww-top-url):
  New defvars.
(eww-open-file): New defun.
(eww-render): Initialize new variables.
(eww-display-html): Handle "link" and "a".
(eww-handle-link, eww-tag-link, eww-tag-a): New defuns.
(eww-mode-map): Move "p" to "l".  Bind "p", "n", "t", and "u".
(eww-back-url): Rename from eww-previous-url.
(eww-next-url, eww-previous-url, eww-up-url, eww-top-url): New defuns.
parent d1bbba4f
2013-06-18 Lars Magne Ingebrigtsen <larsi@gnus.org>
* net/shr.el (shr-make-table-1): Implement <td rowspan>.
(shr-table-horizontal-line): Allow nil as a value, and change the
default.
(shr-insert-table-ruler): Respect the nil value.
2013-06-18 Tom Tromey <tromey@barimba>
* net/eww.el (eww-next-url, eww-previous-url, eww-up-url, eww-top-url):
New defvars.
(eww-open-file): New defun.
(eww-render): Initialize new variables.
(eww-display-html): Handle "link" and "a".
(eww-handle-link, eww-tag-link, eww-tag-a): New defuns.
(eww-mode-map): Move "p" to "l". Bind "p", "n", "t", and "u".
(eww-back-url): Rename from eww-previous-url.
(eww-next-url, eww-previous-url, eww-up-url, eww-top-url): New
defuns.
2013-06-18 Dmitry Gutov <dgutov@yandex.ru> 2013-06-18 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-syntax-before-regexp-re): * progmodes/ruby-mode.el (ruby-syntax-before-regexp-re):
......
2013-06-18 Teodor Zlatanov <tzz@lifelogs.com>
* auth-source.el (auth-source-netrc-parse-entries): Remove debugging.
2013-06-18 Glenn Morris <rgm@gnu.org> 2013-06-18 Glenn Morris <rgm@gnu.org>
   
* eww.el, shr.el, shr-color.el: Move to ../net. * eww.el, shr.el, shr-color.el: Move to ../net.
......
...@@ -1078,8 +1078,8 @@ Note that the MAX parameter is used so we can exit the parse early." ...@@ -1078,8 +1078,8 @@ Note that the MAX parameter is used so we can exit the parse early."
(when (and alist (when (and alist
(or default (or default
(equal item "machine"))) (equal item "machine")))
(auth-source-do-trivia ;; (auth-source-do-trivia
"auth-source-netrc-parse-entries: got entry %S" alist) ;; "auth-source-netrc-parse-entries: got entry %S" alist)
(setq all (funcall adder check alist all) (setq all (funcall adder check alist all)
alist nil)) alist nil))
;; In default entries, we don't have a next token. ;; In default entries, we don't have a next token.
...@@ -1101,8 +1101,9 @@ Note that the MAX parameter is used so we can exit the parse early." ...@@ -1101,8 +1101,9 @@ Note that the MAX parameter is used so we can exit the parse early."
;; Clean up: if there's an entry left over, use it. ;; Clean up: if there's an entry left over, use it.
(when alist (when alist
(setq all (funcall adder check alist all)) (setq all (funcall adder check alist all))
(auth-source-do-trivia ;; (auth-source-do-trivia
"auth-source-netrc-parse-entries: got2 entry %S" alist)) ;; "auth-source-netrc-parse-entries: got2 entry %S" alist)
)
(nreverse all))) (nreverse all)))
(defvar auth-source-passphrase-alist nil) (defvar auth-source-passphrase-alist nil)
......
...@@ -56,6 +56,11 @@ ...@@ -56,6 +56,11 @@
"Title of current page.") "Title of current page.")
(defvar eww-history nil) (defvar eww-history nil)
(defvar eww-next-url nil)
(defvar eww-previous-url nil)
(defvar eww-up-url nil)
(defvar eww-top-url nil)
;;;###autoload ;;;###autoload
(defun eww (url) (defun eww (url)
"Fetch URL and render the page." "Fetch URL and render the page."
...@@ -64,10 +69,20 @@ ...@@ -64,10 +69,20 @@
(setq url (concat "http://" url))) (setq url (concat "http://" url)))
(url-retrieve url 'eww-render (list url))) (url-retrieve url 'eww-render (list url)))
;;;###autoload
(defun eww-open-file (file)
"Render a file using EWW."
(interactive "fFile: ")
(eww (concat "file://" (expand-file-name file))))
(defun eww-render (status url &optional point) (defun eww-render (status url &optional point)
(let ((redirect (plist-get status :redirect))) (let ((redirect (plist-get status :redirect)))
(when redirect (when redirect
(setq url redirect))) (setq url redirect)))
(set (make-local-variable 'eww-next-url) nil)
(set (make-local-variable 'eww-previous-url) nil)
(set (make-local-variable 'eww-up-url) nil)
(set (make-local-variable 'eww-top-url) nil)
(let* ((headers (eww-parse-headers)) (let* ((headers (eww-parse-headers))
(shr-target-id (shr-target-id
(and (string-match "#\\(.*\\)" url) (and (string-match "#\\(.*\\)" url)
...@@ -146,11 +161,33 @@ ...@@ -146,11 +161,33 @@
(input . eww-tag-input) (input . eww-tag-input)
(textarea . eww-tag-textarea) (textarea . eww-tag-textarea)
(body . eww-tag-body) (body . eww-tag-body)
(select . eww-tag-select)))) (select . eww-tag-select)
(link . eww-tag-link)
(a . eww-tag-a))))
(shr-insert-document document) (shr-insert-document document)
(eww-convert-widgets)) (eww-convert-widgets))
(goto-char (point-min)))) (goto-char (point-min))))
(defun eww-handle-link (cont)
(let* ((rel (assq :rel cont))
(href (assq :href cont))
(where (assoc (cdr rel)
'(("next" . eww-next-url)
("previous" . eww-previous-url)
("start" . eww-top-url)
("up" . eww-up-url)))))
(and href
where
(set (cdr where) (cdr href)))))
(defun eww-tag-link (cont)
(eww-handle-link cont)
(shr-generic cont))
(defun eww-tag-a (cont)
(eww-handle-link cont)
(shr-tag-a cont))
(defun eww-update-header-line-format () (defun eww-update-header-line-format ()
(if eww-header-line-format (if eww-header-line-format
(setq header-line-format (format-spec eww-header-line-format (setq header-line-format (format-spec eww-header-line-format
...@@ -218,8 +255,11 @@ ...@@ -218,8 +255,11 @@
(define-key map [delete] 'scroll-down-command) (define-key map [delete] 'scroll-down-command)
(define-key map "\177" 'scroll-down-command) (define-key map "\177" 'scroll-down-command)
(define-key map " " 'scroll-up-command) (define-key map " " 'scroll-up-command)
(define-key map "l" 'eww-back-url)
(define-key map "n" 'eww-next-url)
(define-key map "p" 'eww-previous-url) (define-key map "p" 'eww-previous-url)
;;(define-key map "n" 'eww-next-url) (define-key map "u" 'eww-up-url)
(define-key map "t" 'eww-top-url)
map)) map))
(define-derived-mode eww-mode nil "eww" (define-derived-mode eww-mode nil "eww"
...@@ -240,7 +280,7 @@ ...@@ -240,7 +280,7 @@
(setq eww-history nil) (setq eww-history nil)
(kill-buffer (current-buffer))) (kill-buffer (current-buffer)))
(defun eww-previous-url () (defun eww-back-url ()
"Go to the previously displayed page." "Go to the previously displayed page."
(interactive) (interactive)
(when (zerop (length eww-history)) (when (zerop (length eww-history))
...@@ -248,6 +288,42 @@ ...@@ -248,6 +288,42 @@
(let ((prev (pop eww-history))) (let ((prev (pop eww-history)))
(url-retrieve (car prev) 'eww-render (list (car prev) (cadr prev))))) (url-retrieve (car prev) 'eww-render (list (car prev) (cadr prev)))))
(defun eww-next-url ()
"Go to the page marked `next'.
A page is marked `next' if rel=\"next\" appears in a <link>
or <a> tag."
(interactive)
(if eww-next-url
(eww-browse-url (shr-expand-url eww-next-url eww-current-url))
(error "No `next' on this page")))
(defun eww-previous-url ()
"Go to the page marked `previous'.
A page is marked `previous' if rel=\"previous\" appears in a <link>
or <a> tag."
(interactive)
(if eww-previous-url
(eww-browse-url (shr-expand-url eww-previous-url eww-current-url))
(error "No `previous' on this page")))
(defun eww-up-url ()
"Go to the page marked `up'.
A page is marked `up' if rel=\"up\" appears in a <link>
or <a> tag."
(interactive)
(if eww-up-url
(eww-browse-url (shr-expand-url eww-up-url eww-current-url))
(error "No `up' on this page")))
(defun eww-top-url ()
"Go to the page marked `top'.
A page is marked `top' if rel=\"start\" appears in a <link>
or <a> tag."
(interactive)
(if eww-top-url
(eww-browse-url (shr-expand-url eww-top-url eww-current-url))
(error "No `top' on this page")))
(defun eww-reload () (defun eww-reload ()
"Reload the current page." "Reload the current page."
(interactive) (interactive)
......
...@@ -55,8 +55,9 @@ fit these criteria." ...@@ -55,8 +55,9 @@ fit these criteria."
:group 'shr :group 'shr
:type '(choice (const nil) regexp)) :type '(choice (const nil) regexp))
(defcustom shr-table-horizontal-line ?\s (defcustom shr-table-horizontal-line nil
"Character used to draw horizontal table lines." "Character used to draw horizontal table lines.
If nil, don't draw horizontal table lines."
:group 'shr :group 'shr
:type 'character) :type 'character)
...@@ -126,6 +127,7 @@ cid: URL as the argument.") ...@@ -126,6 +127,7 @@ cid: URL as the argument.")
(defvar shr-external-rendering-functions nil) (defvar shr-external-rendering-functions nil)
(defvar shr-target-id nil) (defvar shr-target-id nil)
(defvar shr-inhibit-decoration nil) (defvar shr-inhibit-decoration nil)
(defvar shr-table-separator-length 1)
(defvar shr-map (defvar shr-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
...@@ -175,7 +177,7 @@ DOM should be a parse tree as generated by ...@@ -175,7 +177,7 @@ DOM should be a parse tree as generated by
(shr-start nil) (shr-start nil)
(shr-base nil) (shr-base nil)
(shr-preliminary-table-render 0) (shr-preliminary-table-render 0)
(shr-width (or shr-width (window-width)))) (shr-width (or shr-width (1- (window-width)))))
(shr-descend (shr-transform-dom dom)) (shr-descend (shr-transform-dom dom))
(shr-remove-trailing-whitespace start (point)))) (shr-remove-trailing-whitespace start (point))))
...@@ -1347,6 +1349,7 @@ ones, in case fg and bg are nil." ...@@ -1347,6 +1349,7 @@ ones, in case fg and bg are nil."
(defun shr-insert-table (table widths) (defun shr-insert-table (table widths)
(let* ((collapse (equal (cdr (assq 'border-collapse shr-stylesheet)) (let* ((collapse (equal (cdr (assq 'border-collapse shr-stylesheet))
"collapse")) "collapse"))
(shr-table-separator-length (if collapse 0 1))
(shr-table-vertical-line (if collapse "" shr-table-vertical-line))) (shr-table-vertical-line (if collapse "" shr-table-vertical-line)))
(unless collapse (unless collapse
(shr-insert-table-ruler widths)) (shr-insert-table-ruler widths))
...@@ -1381,14 +1384,15 @@ ones, in case fg and bg are nil." ...@@ -1381,14 +1384,15 @@ ones, in case fg and bg are nil."
(shr-insert-table-ruler widths))))) (shr-insert-table-ruler widths)))))
(defun shr-insert-table-ruler (widths) (defun shr-insert-table-ruler (widths)
(when (and (bolp) (when shr-table-horizontal-line
(> shr-indentation 0)) (when (and (bolp)
(shr-indent)) (> shr-indentation 0))
(insert shr-table-corner) (shr-indent))
(dotimes (i (length widths)) (insert shr-table-corner)
(insert (make-string (aref widths i) shr-table-horizontal-line) (dotimes (i (length widths))
shr-table-corner)) (insert (make-string (aref widths i) shr-table-horizontal-line)
(insert "\n")) shr-table-corner))
(insert "\n")))
(defun shr-table-widths (table natural-table suggested-widths) (defun shr-table-widths (table natural-table suggested-widths)
(let* ((length (length suggested-widths)) (let* ((length (length suggested-widths))
...@@ -1432,20 +1436,52 @@ ones, in case fg and bg are nil." ...@@ -1432,20 +1436,52 @@ ones, in case fg and bg are nil."
(defun shr-make-table-1 (cont widths &optional fill) (defun shr-make-table-1 (cont widths &optional fill)
(let ((trs nil) (let ((trs nil)
(shr-inhibit-decoration (not fill))) (shr-inhibit-decoration (not fill))
(rowspans (make-vector (length widths) 0))
width colspan)
(dolist (row cont) (dolist (row cont)
(when (eq (car row) 'tr) (when (eq (car row) 'tr)
(let ((tds nil) (let ((tds nil)
(columns (cdr row)) (columns (cdr row))
(i 0) (i 0)
(width-column 0)
column) column)
(while (< i (length widths)) (while (< i (length widths))
(setq column (pop columns)) ;; If we previously had a rowspan definition, then that
;; means that we now have a "missing" td/th element here.
;; So just insert a dummy, empty one to (sort of) emulate
;; rowspan.
(setq column
(if (zerop (aref rowspans i))
(pop columns)
(aset rowspans i (1- (aref rowspans i)))
'(td)))
(when (or (memq (car column) '(td th)) (when (or (memq (car column) '(td th))
(null column)) (not column))
(push (shr-render-td (cdr column) (aref widths i) fill) (when (cdr (assq :rowspan (cdr column)))
tds) (aset rowspans i (+ (aref rowspans i)
(setq i (1+ i)))) (1- (string-to-number
(cdr (assq :rowspan (cdr column))))))))
(setq width
(if column
(aref widths width-column)
0))
(when (and fill
(setq colspan (cdr (assq :colspan (cdr column)))))
(setq colspan (string-to-number colspan))
(dotimes (j (1- colspan))
(if (> (+ i 1 j) (1- (length widths)))
(setq width (aref widths (1- (length widths))))
(setq width (+ width
shr-table-separator-length
(aref widths (+ i 1 j))))))
(setq width-column (+ width-column (1- colspan))))
(when (or column
(not fill))
(push (shr-render-td (cdr column) width fill)
tds))
(setq i (1+ i)
width-column (1+ width-column))))
(push (nreverse tds) trs)))) (push (nreverse tds) trs))))
(nreverse trs))) (nreverse trs)))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment