Mercurial > emacs
changeset 47097:398a8f34fb26
(x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and
FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist.
(Vblink_cursor_alist): New variable.
(syms_of_w32fns): Initialize and defvar it.
(x_specified_cursor_type): Recognize Qbox for filled box.
Exceptions are hollow boxes.
(Qbox, Qhollow): New variables.
(syms_of_w32fns): Initialize and staticpro them.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 29 Aug 2002 14:37:33 +0000 |
parents | f0b41fba2995 |
children | 7746b52cf1c9 |
files | src/w32fns.c |
diffstat | 1 files changed, 43 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32fns.c Thu Aug 29 13:12:05 2002 +0000 +++ b/src/w32fns.c Thu Aug 29 14:37:33 2002 +0000 @@ -202,9 +202,12 @@ #define VIETNAMESE_CHARSET 163 #endif +/* How to blink the cursor off. */ +Lisp_Object Vblink_cursor_alist; + Lisp_Object Qauto_raise; Lisp_Object Qauto_lower; -Lisp_Object Qbar, Qhbar; +Lisp_Object Qbar, Qhbar, Qbox, Qhollow; Lisp_Object Qborder_color; Lisp_Object Qborder_width; Lisp_Object Qbox; @@ -2386,11 +2389,13 @@ } else if (NILP (arg)) type = NO_CURSOR; - else - /* Treat anything unknown as "box cursor". + else if (EQ (arg, Qbox)) + type = FILLED_BOX_CURSOR; + else + /* Treat anything unknown as "hollow box cursor". It was bad to signal an error; people have trouble fixing .Xdefaults with Emacs, when it has something bad in it. */ - type = FILLED_BOX_CURSOR; + type = HOLLOW_BOX_CURSOR; return type; } @@ -2401,13 +2406,34 @@ Lisp_Object arg, oldval; { int width; - + Lisp_Object tem; + FRAME_DESIRED_CURSOR (f) = x_specified_cursor_type (arg, &width); f->output_data.w32->cursor_width = width; /* Make sure the cursor gets redrawn. This is overkill, but how often do people change cursor types? */ update_mode_lines++; + + /* By default, set up the blink-off state depending on the on-state. */ + + if (FRAME_DESIRED_CURSOR (f) == FILLED_BOX_CURSOR) + FRAME_BLINK_OFF_CURSOR (f) = HOLLOW_BOX_CURSOR; + else if (FRAME_DESIRED_CURSOR (f) == BAR_CURSOR && FRAME_CURSOR_WIDTH (f) > 1) + { + FRAME_BLINK_OFF_CURSOR (f) = BAR_CURSOR; + FRAME_BLINK_OFF_CURSOR_WIDTH (f) = 1; + } + else + FRAME_BLINK_OFF_CURSOR (f) = NO_CURSOR; + + tem = Fassoc (arg, Vblink_cursor_alist); + if (!NILP (tem)) + { + FRAME_BLINK_OFF_CURSOR (f) + = x_specified_cursor_type (XCDR (tem), &width); + f->output_data.w32->blink_off_cursor_width = width; + } } void @@ -14870,6 +14896,10 @@ staticpro (&Qbar); Qhbar = intern ("hbar"); staticpro (&Qhbar); + Qbox = intern ("box"); + staticpro (&Qbox); + Qhollow = intern ("hollow"); + staticpro (&Qhollow); Qborder_color = intern ("border-color"); staticpro (&Qborder_color); Qborder_width = intern ("border-width"); @@ -15110,6 +15140,14 @@ init_x_parm_symbols (); + DEFVAR_LISP ("blink-cursor-alist", &Vblink_cursor_alist, + doc: /* Alist specifying how to blink the cursor off. +Each element has the form (ON-STATE . OFF-STATE). Whenever the +`cursor-type' frame-parameter or variable equals ON-STATE, +comparing using `equal', Emacs uses OFF-STATE to specify +how to blink it off. */); + Vblink_cursor_alist = Qnil; + DEFVAR_LISP ("x-bitmap-file-path", &Vx_bitmap_file_path, doc: /* List of directories to search for bitmap files for w32. */); Vx_bitmap_file_path = decode_env_path ((char *) 0, "PATH");