diff options
author | Gnus developers <ding@gnus.org> | 2010-10-07 11:46:01 +0000 |
---|---|---|
committer | Katsumi Yamaoka <yamaoka@jpl.org> | 2010-10-07 11:46:01 +0000 |
commit | a7dcc87b1b2ce2c4d8c4d26a95cbdb3df1b67a20 (patch) | |
tree | ac84596aa1e9ebec399c021664f3d0fb3b8413f4 /lisp | |
parent | b0e0b216e540ffcde8a0ec8f0c572bb90c464eb9 (diff) | |
download | emacs-a7dcc87b1b2ce2c4d8c4d26a95cbdb3df1b67a20.tar.gz |
Merge changes made in Gnus trunk.
nnimap.el (nnimap-request-rename-group): Add this method.
shr.el: Keep track of the natural width of TD elements, so we know which ones to expand.
shr.el: Expand TD elements to fill available space.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/gnus/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/gnus/nnimap.el | 5 | ||||
-rw-r--r-- | lisp/gnus/shr.el | 61 |
3 files changed, 62 insertions, 13 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 65658909153..bb3d1ccacb6 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,12 @@ +2010-10-07 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * shr.el (shr-table-widths): Expand TD elements to fill available + space. + +2010-10-07 Julien Danjou <julien@danjou.info> + + * nnimap.el (nnimap-request-rename-group): Add this method. + 2010-10-07 Katsumi Yamaoka <yamaoka@jpl.org> * gnus-html.el (gnus-html-schedule-image-fetching): Remove function diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 7d935e4ecd1..2fa9d7cb143 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -652,6 +652,11 @@ textual parts.") (with-current-buffer (nnimap-buffer) (car (nnimap-command "DELETE %S" (utf7-encode group t)))))) +(deffoo nnimap-request-rename-group (group new-name &optional server) + (when (nnimap-possibly-change-group nil server) + (with-current-buffer (nnimap-buffer) + (car (nnimap-command "RENAME %S %S" (utf7-encode group t) (utf7-encode new-name t)))))) + (deffoo nnimap-request-expunge-group (group &optional server) (when (nnimap-possibly-change-group group server) (with-current-buffer (nnimap-buffer) diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el index 1c496ced543..ffbb4302924 100644 --- a/lisp/gnus/shr.el +++ b/lisp/gnus/shr.el @@ -184,7 +184,8 @@ redirects somewhere else." ((and (or (not first) (eq shr-state 'space)) (> (+ column (length elem) 1) shr-width)) - (insert "\n")) + (insert "\n") + (put-text-property (1- (point)) (point) 'shr-break t)) ((not first) (insert " ")))) (setq first nil) @@ -459,7 +460,7 @@ Return a string with image data." ;; be smaller (if there's little text) or bigger (if there's ;; unbreakable text). (sketch (shr-make-table cont suggested-widths)) - (sketch-widths (shr-table-widths sketch (length suggested-widths)))) + (sketch-widths (shr-table-widths sketch suggested-widths))) ;; Then render the table again with these new "hard" widths. (shr-insert-table (shr-make-table cont sketch-widths t) sketch-widths)) ;; Finally, insert all the images after the table. The Emacs buffer @@ -490,7 +491,7 @@ Return a string with image data." (insert "|\n")) (dolist (column row) (goto-char start) - (let ((lines (split-string (nth 2 column) "\n")) + (let ((lines (nth 2 column)) (overlay-lines (nth 3 column)) overlay overlay-line) (dolist (line lines) @@ -520,14 +521,33 @@ Return a string with image data." (insert (make-string (aref widths i) ?-) ?+)) (insert "\n")) -(defun shr-table-widths (table length) - (let ((widths (make-vector length 0))) +(defun shr-table-widths (table suggested-widths) + (let* ((length (length suggested-widths)) + (widths (make-vector length 0)) + (natural-widths (make-vector length 0))) (dolist (row table) (let ((i 0)) (dolist (column row) (aset widths i (max (aref widths i) (car column))) - (incf i)))) + (aset natural-widths i (max (aref natural-widths i) + (cadr column))) + (setq i (1+ i))))) + (let ((extra (- (reduce '+ suggested-widths) + (reduce '+ widths))) + (expanded-columns 0)) + (when (> extra 0) + (dotimes (i length) + ;; If the natural width is wider than the rendered width, we + ;; want to allow the column to expand. + (when (> (aref natural-widths i) (aref widths i)) + (setq expanded-columns (1+ expanded-columns)))) + (dotimes (i length) + (when (> (aref natural-widths i) (aref widths i)) + (aset widths i (min + (1+ (aref natural-widths i)) + (+ (/ extra expanded-columns) + (aref widths i)))))))) widths)) (defun shr-make-table (cont widths &optional fill) @@ -575,11 +595,26 @@ Return a string with image data." (when (> (- width (current-column)) 0) (insert (make-string (- width (current-column)) ? ))) (forward-line 1)))) - (list max - (count-lines (point-min) (point-max)) - (buffer-string) - (and fill - (shr-collect-overlays)))))) + (if fill + (list max + (count-lines (point-min) (point-max)) + (split-string (buffer-string) "\n") + (shr-collect-overlays)) + (list max + (shr-natural-width)))))) + +(defun shr-natural-width () + (goto-char (point-min)) + (let ((current 0) + (max 0)) + (while (not (eobp)) + (end-of-line) + (setq current (+ current (current-column))) + (unless (get-text-property (point) 'shr-break) + (setq max (max max current) + current 0)) + (forward-line 1)) + max)) (defun shr-collect-overlays () (save-excursion @@ -608,12 +643,12 @@ Return a string with image data." (let ((total-percentage 0) (widths (make-vector (length columns) 0))) (dotimes (i (length columns)) - (incf total-percentage (aref columns i))) + (setq total-percentage (+ total-percentage (aref columns i)))) (setq total-percentage (/ 1.0 total-percentage)) (dotimes (i (length columns)) (aset widths i (max (truncate (* (aref columns i) total-percentage - shr-width)) + (- shr-width (1+ (length columns))))) 10))) widths)) |