diff options
| author | Martin Rudalics | 2015-02-01 12:00:14 -0800 |
|---|---|---|
| committer | Paul Eggert | 2015-02-01 12:06:32 -0800 |
| commit | 92a8dec54ed3314ca06f40cd0c226c4267a160e8 (patch) | |
| tree | 2849adeaa9595366b537997ed06243816dba01d3 | |
| parent | 241260cc2819e5df254ad85953588b06388ade61 (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | doc/lispref/display.texi | 9 | ||||
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/xdisp.c | 44 |
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 @@ | |||
| 1 | 2015-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 | |||
| 1 | 2015-01-28 Eli Zaretskii <eliz@gnu.org> | 6 | 2015-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 |
| 1881 | exactly as large as the text it contains. | 1881 | exactly 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 |
| 1884 | This function returns the size of the text of @var{window}'s buffer in | 1884 | This function returns the size of the text of @var{window}'s buffer in |
| 1885 | pixels. @var{window} must be a live window and defaults to the selected | 1885 | pixels. @var{window} must be a live window and defaults to the selected |
| 1886 | one. The return value is a cons of the maximum pixel-width of any text | 1886 | one. 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 |
| 1920 | line, if present, in the return value. If it is @code{t}, include the | 1920 | line, if present, in the return value. If it is @code{t}, include the |
| 1921 | height of both, if present, in the return value. | 1921 | height of both, if present, in the return value. |
| 1922 | |||
| 1923 | The optional argument @var{buffer} allows to specify an alternate buffer | ||
| 1924 | whose text size will be calculated. If @var{buffer} is @code{nil} or | ||
| 1925 | omitted, then operate on the buffer of @var{window}. If it is @code{t}, | ||
| 1926 | then operate on the current buffer as if it were displayed in | ||
| 1927 | @var{window}. If it specifies a live buffer, then operate on that | ||
| 1928 | buffer 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 @@ | |||
| 1 | 2015-02-01 Martin Rudalics <rudalics@gmx.at> | ||
| 2 | |||
| 3 | * xdisp.c (Fwindow_text_pixel_size): Add optional argument BUFFER. | ||
| 4 | |||
| 1 | 2015-01-31 Eli Zaretskii <eliz@gnu.org> | 5 | 2015-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 | ||
| 9653 | DEFUN ("window-text-pixel-size", Fwindow_text_pixel_size, Swindow_text_pixel_size, 0, 6, 0, | 9653 | DEFUN ("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. |
| 9655 | WINDOW must be a live window and defaults to the selected one. The | 9655 | WINDOW must be a live window and defaults to the selected one. The |
| 9656 | return value is a cons of the maximum pixel-width of any text line and | 9656 | return 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 | |||
| 9683 | include the height of the mode- or header-line of WINDOW in the return | 9683 | include the height of the mode- or header-line of WINDOW in the return |
| 9684 | value. If it is either the symbol `mode-line' or `header-line', include | 9684 | value. If it is either the symbol `mode-line' or `header-line', include |
| 9685 | only the height of that line, if present, in the return value. If t, | 9685 | only the height of that line, if present, in the return value. If t, |
| 9686 | include the height of both, if present, in the return value. */) | 9686 | include 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) | 9688 | Optional argument BUFFER nil means to return the size of the text of |
| 9689 | WINDOW's buffer. BUFFER t means to return the size of the text of the | ||
| 9690 | current buffer as if it were displayed in WINDOW. Else BUFFER has to | ||
| 9691 | specify a live buffer and this function returns the size of the text of | ||
| 9692 | BUFFER 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 | } |