unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
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/

  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).