summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa <handa@gnu.org>2012-10-30 20:14:15 +0900
committerKenichi Handa <handa@gnu.org>2012-10-30 20:14:15 +0900
commitaee5b18ec3c7844ca125249914113eeaef04342c (patch)
treefc23a336c177f6c8a730041792e17a89e5a93139 /src
parent6a8f8193298e05931baeebb1bd3aba6f8f5a7b5e (diff)
downloademacs-aee5b18ec3c7844ca125249914113eeaef04342c.tar.gz
font.c (Ffont_at): If WINDOW is specified and it is not displaying the current buffer, signal an error.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/font.c14
2 files changed, 14 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e59a286110d..a5f76b22def 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2012-10-30 Kenichi Handa <handa@gnu.org>
+
+ * font.c (Ffont_at): If WINDOW is specified and it is not
+ displaying the current buffer, signal an error.
+
2012-10-23 Kenichi Handa <handa@gnu.org>
The following change is to make face-font-rescale-alist work
diff --git a/src/font.c b/src/font.c
index bff2356d6ca..e79ce5d80bc 100644
--- a/src/font.c
+++ b/src/font.c
@@ -4760,14 +4760,22 @@ FONT is a font-spec, font-entity, or font-object. */)
DEFUN ("font-at", Ffont_at, Sfont_at, 1, 3, 0,
doc: /* Return a font-object for displaying a character at POSITION.
Optional second arg WINDOW, if non-nil, is a window displaying
-the current buffer. It defaults to the currently selected window. */)
+the current buffer. It defaults to the currently selected window.
+Optional third arg STRING, if non-nil, is a string containing the target
+character at index specified by POSITION. */)
(Lisp_Object position, Lisp_Object window, Lisp_Object string)
{
struct window *w;
ptrdiff_t pos;
+ if (NILP (window))
+ window = selected_window;
+ CHECK_LIVE_WINDOW (window);
+ w = XWINDOW (window);
if (NILP (string))
{
+ if (XBUFFER (w->buffer) != current_buffer)
+ error ("Specified window is not displaying the current buffer.");
CHECK_NUMBER_COERCE_MARKER (position);
if (! (BEGV <= XINT (position) && XINT (position) < ZV))
args_out_of_range_3 (position, make_number (BEGV), make_number (ZV));
@@ -4781,10 +4789,6 @@ the current buffer. It defaults to the currently selected window. */)
args_out_of_range (string, position);
pos = XINT (position);
}
- if (NILP (window))
- window = selected_window;
- CHECK_LIVE_WINDOW (window);
- w = XWINDOW (window);
return font_at (-1, pos, NULL, w, string);
}