]> git.eshelyaron.com Git - emacs.git/commitdiff
font.c (Ffont_at): If WINDOW is specified and it is not displaying the current buffer...
authorKenichi Handa <handa@gnu.org>
Tue, 30 Oct 2012 11:14:15 +0000 (20:14 +0900)
committerKenichi Handa <handa@gnu.org>
Tue, 30 Oct 2012 11:14:15 +0000 (20:14 +0900)
src/ChangeLog
src/font.c

index e59a286110d5f67cf5c9c3e304f44dd960434867..a5f76b22def180bb2f45704c17124e4575ad846f 100644 (file)
@@ -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
index bff2356d6cacb302c3283b1018f9a51eb5dd388b..e79ce5d80bc589a27045f1abf75294ab9d94eea0 100644 (file)
@@ -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);
 }