From: Juri Linkov <juri@jurta.org>
Cc: bug-gnu-emacs@gnu.org
Subject: Re: Setting cursor-type does not trigger redisplay of cursor
Date: Tue, 01 Nov 2005 11:18:16 +0200 [thread overview]
Message-ID: <874q6wn313.fsf@jurta.org> (raw)
In-Reply-To: <87mzkpbs9v.fsf@xemacs.org> (Hrvoje Niksic's message of "Mon, 31 Oct 2005 16:49:48 +0100")
> (defun set-cursor-adaptive ()
> (setq cursor-type (if (eq (char-after (point)) ?\n) '(bar . 5) t)))
> (add-hook 'post-command-hook 'set-cursor-adaptive)
>
> However, it turns out that this doesn't work as well as it should --
> apparently changing `cursor-type' does not affect the shape of the
> cursor until after it is redrawn, either by changing the position of
> point, or by redrawing the frame.
As I see, this works correctly in the CVS version.
BTW, I use this code to change cursor type and color:
(defun my-change-cursor ()
"Change cursor color and type depending on insertion mode and input method."
(set-cursor-color
(cond (current-input-method "OrangeRed4")
(t "black")))
(set-cursor-type
(cond (overwrite-mode 'box)
(t 'bar))))
(add-hook 'post-command-hook 'my-change-cursor)
There is no function `set-cursor-type' in CVS. I use the patch below.
Note that it changes frame parameters instead of the buffer-local
variable `cursor-type'. I think this causes less trouble. Perhaps
this patch could be installed in CVS.
Index: lisp/frame.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/frame.el,v
retrieving revision 1.230
diff -c -r1.230 frame.el
*** lisp/frame.el 21 Oct 2005 08:27:04 -0000 1.230
--- lisp/frame.el 1 Nov 2005 09:17:22 -0000
***************
*** 903,917 ****
--- 903,928 ----
(modify-frame-parameters (selected-frame)
(list (cons 'cursor-color color-name))))
+ (defun set-cursor-type (cursor-type)
+ "Set the text cursor type of the selected frame to CURSOR-TYPE.
+ When called interactively, prompt for the name of the type to use.
+ To get the frame's current cursor type, use `frame-parameters'."
+ (interactive (list (intern (completing-read
+ "Cursor type: "
+ '("box" "hollow" "bar" "hbar" nil)))))
+ (modify-frame-parameters (selected-frame)
+ (list (cons 'cursor-type cursor-type))))
+
(defun set-mouse-color (color-name)
"Set the color of the mouse pointer of the selected frame to COLOR-NAME.
When called interactively, prompt for the name of the color to use.
--
Juri Linkov
http://www.jurta.org/emacs/
next prev parent reply other threads:[~2005-11-01 9:18 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-31 15:49 Setting cursor-type does not trigger redisplay of cursor Hrvoje Niksic
2005-11-01 9:18 ` Juri Linkov [this message]
2005-11-01 13:51 ` Hrvoje Niksic
2005-11-01 20:03 ` Juri Linkov
2005-11-01 21:07 ` Hrvoje Niksic
2005-11-01 22:08 ` Juri Linkov
2005-11-02 10:27 ` Richard M. Stallman
2005-11-02 14:18 ` Hrvoje Niksic
2005-11-03 7:54 ` Juri Linkov
2005-11-03 13:50 ` Richard M. Stallman
2005-11-03 18:04 ` Hrvoje Niksic
2005-11-03 7:54 ` Juri Linkov
2005-11-03 21:41 ` Richard M. Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874q6wn313.fsf@jurta.org \
--to=juri@jurta.org \
--cc=bug-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).