aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Rudalics2015-02-01 12:00:14 -0800
committerPaul Eggert2015-02-01 12:06:32 -0800
commit92a8dec54ed3314ca06f40cd0c226c4267a160e8 (patch)
tree2849adeaa9595366b537997ed06243816dba01d3
parent241260cc2819e5df254ad85953588b06388ade61 (diff)
downloademacs-92a8dec54ed3314ca06f40cd0c226c4267a160e8.tar.gz
emacs-92a8dec54ed3314ca06f40cd0c226c4267a160e8.zip
Give `window-text-pixel-size' optional BUFFER argument.
[This reinstalls commit 1d1162479caf1fdf48564f1486fa84e3cdacaa9b, which I mistakenly reverted. --eggert] * xdisp.c (Fwindow_text_pixel_size): Add optional argument BUFFER. * display.texi (Size of Displayed Text): Describe optional argument BUFFER of `window-text-pixel-size'.
-rw-r--r--doc/lispref/ChangeLog5
-rw-r--r--doc/lispref/display.texi9
-rw-r--r--src/ChangeLog4
-rw-r--r--src/xdisp.c44
4 files changed, 46 insertions, 16 deletions
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 2cde2fb6f48..aa4d3200830 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
12015-02-01 Martin Rudalics <rudalics@gmx.at>
2
3 * display.texi (Size of Displayed Text): Describe optional
4 argument BUFFER of `window-text-pixel-size'.
5
12015-01-28 Eli Zaretskii <eliz@gnu.org> 62015-01-28 Eli Zaretskii <eliz@gnu.org>
2 7
3 * searching.texi (Regexp Search): Add a cross-reference to "Syntax 8 * searching.texi (Regexp Search): Add a cross-reference to "Syntax
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index b09b82a6724..10b17a3f389 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1880,7 +1880,7 @@ displayed in a given window. This function is used by
1880@code{fit-frame-to-buffer} (@pxref{Size and Position}) to make a window 1880@code{fit-frame-to-buffer} (@pxref{Size and Position}) to make a window
1881exactly as large as the text it contains. 1881exactly as large as the text it contains.
1882 1882
1883@defun window-text-pixel-size &optional window from to x-limit y-limit mode-and-header-line 1883@defun window-text-pixel-size &optional window from to x-limit y-limit mode-and-header-line buffer
1884This function returns the size of the text of @var{window}'s buffer in 1884This function returns the size of the text of @var{window}'s buffer in
1885pixels. @var{window} must be a live window and defaults to the selected 1885pixels. @var{window} must be a live window and defaults to the selected
1886one. The return value is a cons of the maximum pixel-width of any text 1886one. The return value is a cons of the maximum pixel-width of any text
@@ -1919,6 +1919,13 @@ means to not include the height of the mode- or header-line of
1919@code{mode-line} or @code{header-line}, include only the height of that 1919@code{mode-line} or @code{header-line}, include only the height of that
1920line, if present, in the return value. If it is @code{t}, include the 1920line, if present, in the return value. If it is @code{t}, include the
1921height of both, if present, in the return value. 1921height of both, if present, in the return value.
1922
1923The optional argument @var{buffer} allows to specify an alternate buffer
1924whose text size will be calculated. If @var{buffer} is @code{nil} or
1925omitted, then operate on the buffer of @var{window}. If it is @code{t},
1926then operate on the current buffer as if it were displayed in
1927@var{window}. If it specifies a live buffer, then operate on that
1928buffer as if it were displayed in @var{window}.
1922@end defun 1929@end defun
1923 1930
1924 1931
diff --git a/src/ChangeLog b/src/ChangeLog
index 9e564ea6414..d3f667e6374 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
12015-02-01 Martin Rudalics <rudalics@gmx.at>
2
3 * xdisp.c (Fwindow_text_pixel_size): Add optional argument BUFFER.
4
12015-01-31 Eli Zaretskii <eliz@gnu.org> 52015-01-31 Eli Zaretskii <eliz@gnu.org>
2 6
3 * coding.c (raw_text_coding_system_p): New function. 7 * coding.c (raw_text_coding_system_p): New function.
diff --git a/src/xdisp.c b/src/xdisp.c
index 68c0fa54572..8f6695ae2b0 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -9650,7 +9650,7 @@ in_display_vector_p (struct it *it)
9650 && it->dpvec + it->current.dpvec_index != it->dpend); 9650 && it->dpvec + it->current.dpvec_index != it->dpend);
9651} 9651}
9652 9652
9653DEFUN ("window-text-pixel-size", Fwindow_text_pixel_size, Swindow_text_pixel_size, 0, 6, 0, 9653DEFUN ("window-text-pixel-size", Fwindow_text_pixel_size, Swindow_text_pixel_size, 0, 7, 0,
9654 doc: /* Return the size of the text of WINDOW's buffer in pixels. 9654 doc: /* Return the size of the text of WINDOW's buffer in pixels.
9655WINDOW must be a live window and defaults to the selected one. The 9655WINDOW must be a live window and defaults to the selected one. The
9656return value is a cons of the maximum pixel-width of any text line and 9656return value is a cons of the maximum pixel-width of any text line and
@@ -9683,28 +9683,42 @@ Optional argument MODE-AND-HEADER-LINE nil or omitted means do not
9683include the height of the mode- or header-line of WINDOW in the return 9683include the height of the mode- or header-line of WINDOW in the return
9684value. If it is either the symbol `mode-line' or `header-line', include 9684value. If it is either the symbol `mode-line' or `header-line', include
9685only the height of that line, if present, in the return value. If t, 9685only the height of that line, if present, in the return value. If t,
9686include the height of both, if present, in the return value. */) 9686include the height of both, if present, in the return value.
9687 (Lisp_Object window, Lisp_Object from, Lisp_Object to, Lisp_Object x_limit, Lisp_Object y_limit, 9687
9688 Lisp_Object mode_and_header_line) 9688Optional argument BUFFER nil means to return the size of the text of
9689WINDOW's buffer. BUFFER t means to return the size of the text of the
9690current buffer as if it were displayed in WINDOW. Else BUFFER has to
9691specify a live buffer and this function returns the size of the text of
9692BUFFER as if it were displayed in WINDOW. */)
9693 (Lisp_Object window, Lisp_Object from, Lisp_Object to, Lisp_Object x_limit,
9694 Lisp_Object y_limit, Lisp_Object mode_and_header_line, Lisp_Object buffer)
9689{ 9695{
9690 struct window *w = decode_live_window (window); 9696 struct window *w = decode_live_window (window);
9691 Lisp_Object buf;
9692 struct buffer *b; 9697 struct buffer *b;
9693 struct it it; 9698 struct it it;
9694 struct buffer *old_buffer = NULL; 9699 struct buffer *old_b = NULL;
9695 ptrdiff_t start, end, pos; 9700 ptrdiff_t start, end, pos;
9696 struct text_pos startp; 9701 struct text_pos startp;
9697 void *itdata = NULL; 9702 void *itdata = NULL;
9698 int c, max_y = -1, x = 0, y = 0; 9703 int c, max_y = -1, x = 0, y = 0;
9699 9704
9700 buf = w->contents; 9705 if (EQ (buffer, Qt))
9701 CHECK_BUFFER (buf); 9706 b = current_buffer;
9702 b = XBUFFER (buf); 9707 else
9703
9704 if (b != current_buffer)
9705 { 9708 {
9706 old_buffer = current_buffer; 9709 if (NILP (buffer))
9707 set_buffer_internal (b); 9710 buffer = w->contents;
9711
9712 CHECK_BUFFER (buffer);
9713 if (!BUFFER_LIVE_P (XBUFFER (buffer)))
9714 error ("Not a live buffer");
9715
9716 b = XBUFFER (buffer);
9717 if (b != current_buffer)
9718 {
9719 old_b = current_buffer;
9720 set_buffer_internal (b);
9721 }
9708 } 9722 }
9709 9723
9710 if (NILP (from)) 9724 if (NILP (from))
@@ -9780,8 +9794,8 @@ include the height of both, if present, in the return value. */)
9780 9794
9781 bidi_unshelve_cache (itdata, 0); 9795 bidi_unshelve_cache (itdata, 0);
9782 9796
9783 if (old_buffer) 9797 if (old_b)
9784 set_buffer_internal (old_buffer); 9798 set_buffer_internal (old_b);
9785 9799
9786 return Fcons (make_number (x), make_number (y)); 9800 return Fcons (make_number (x), make_number (y));
9787} 9801}