From: taylanbayirli@gmail.com (Taylan Ulrich Bayırlı/Kammer)
To: emacs-devel@gnu.org
Subject: [PATCH] Add idle-cursor-morph.
Date: Sun, 18 Oct 2015 17:19:56 +0200 [thread overview]
Message-ID: <876124ryoz.fsf@T420.taylan> (raw)
[-- Attachment #1: Type: text/plain, Size: 341 bytes --]
This is for ELPA.
Admittedly this is pretty hacky, but it has worked for me since ages.
It also has a bug I have no idea how to chase: every once in a blue moon
it will fail to restore the cursor color. I'm guessing it's probably a
bug in Emacs since the implementation is so simple and restoring the
style works, but don't know really.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Add-idle-cursor-morph.patch --]
[-- Type: text/x-diff, Size: 4500 bytes --]
From 64d1d46fd3a393cea8922661bc809012f50da301 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
<taylanbayirli@gmail.com>
Date: Sun, 18 Oct 2015 17:12:12 +0200
Subject: [PATCH] Add idle-cursor-morph.
---
packages/idle-cursor-morph/idle-cursor-morph.el | 115 ++++++++++++++++++++++++
1 file changed, 115 insertions(+)
create mode 100644 packages/idle-cursor-morph/idle-cursor-morph.el
diff --git a/packages/idle-cursor-morph/idle-cursor-morph.el b/packages/idle-cursor-morph/idle-cursor-morph.el
new file mode 100644
index 0000000..a1deb5e
--- /dev/null
+++ b/packages/idle-cursor-morph/idle-cursor-morph.el
@@ -0,0 +1,115 @@
+;;; idle-cursor-morph.el --- Morph cursor when idle.
+
+;; Copyright (C) 2015 Free Software Foundation, Inc.
+
+;; Author: Taylan Ulrich B. <taylanbayirli@gmail.com>
+;; Keywords: convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Change the cursor appearance after a certain time of inactivity, so it is
+;; easier to find after a pause or distraction.
+;;
+;; You can configure the parameters via the Customize system.
+
+;;; Code:
+
+(defgroup idle-cursor-morph nil
+ "Morph cursor when idle."
+ :group 'convenience)
+
+(defcustom idle-cursor-timeout 20
+ "Seconds to wait before morphing the cursor.
+
+After setting this, run `idle-cursor-activate' to apply the new
+value."
+ :type 'number
+ :group 'idle-cursor-morph)
+
+(defcustom idle-cursor-color "red"
+ "Color of cursor when idle."
+ :type 'string
+ :group 'idle-cursor-morph)
+
+(defcustom idle-cursor-non-idle-color "white"
+ "Color of cursor when not idle."
+ :type 'string
+ :group 'idle-cursor-morph)
+
+(defcustom idle-cursor-type 'box
+ "Type of cursor when idle."
+ :type '(choice (const t)
+ (const nil)
+ (const box)
+ (cons (const bar) number)
+ (const hbar)
+ (cons (const hbar) number))
+ :group 'idle-cursor-morph)
+
+(defcustom idle-cursor-non-idle-type cursor-type
+ "Type of cursor when not idle."
+ :type '(choice (const t)
+ (const nil)
+ (const box)
+ (cons (const bar) number)
+ (const hbar)
+ (cons (const hbar) number))
+ :group 'idle-cursor-morph)
+
+(defcustom idle-cursor-blinking (not no-blinking-cursor)
+ "Whether the cursor should blink when idle."
+ :type 'boolean
+ :group 'idle-cursor-morph)
+
+(defcustom idle-cursor-non-idle-blinking (not no-blinking-cursor)
+ "Whether the cursor should blink when not idle.")
+
+(defun idle-cursor-morph ()
+ "Set the cursor color and type to `idle-cursor-color' and
+`idle-cursor-type', respectively."
+ (set-cursor-color idle-cursor-color)
+ (setq-default cursor-type idle-cursor-type)
+ (setq no-blinking-cursor (not idle-cursor-blinking))
+ (add-hook 'post-command-hook 'idle-cursor-restore))
+
+(defun idle-cursor-restore ()
+ "Restore the cursor color and type to the values they had
+before `idle-cursor-morph' changed them."
+ (set-cursor-color idle-cursor-non-idle-color)
+ (setq-default cursor-type idle-cursor-non-idle-type)
+ (setq no-blinking-cursor (not idle-cursor-non-idle-blinking))
+ (remove-hook 'post-command-hook 'idle-cursor-restore))
+
+(defvar idle-cursor-morph-timer nil)
+
+(defun idle-cursor-activate ()
+ "Activate the idle-cursor-morphing functionality."
+ (interactive)
+ (if idle-cursor-morph-timer
+ (idle-cursor-deactivate))
+ (setq idle-cursor-morph-timer
+ (run-with-idle-timer idle-cursor-timeout t 'idle-cursor-morph)))
+
+(defun idle-cursor-deactivate ()
+ "Deactivate the idle-cursor-morphing functionality."
+ (interactive)
+ (if idle-cursor-morph-timer
+ (cancel-timer idle-cursor-morph-timer)))
+
+(idle-cursor-activate)
+
+(provide 'idle-cursor-morph)
+;;; idle-cursor-morph.el ends here
--
2.5.0
next reply other threads:[~2015-10-18 15:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-18 15:19 Taylan Ulrich Bayırlı/Kammer [this message]
2015-10-18 16:00 ` [PATCH] Add idle-cursor-morph Drew Adams
2015-10-18 16:39 ` Taylan Ulrich Bayırlı/Kammer
2015-10-18 16:17 ` John Wiegley
2015-10-19 1:47 ` Drew Adams
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=876124ryoz.fsf@T420.taylan \
--to=taylanbayirli@gmail.com \
--cc=emacs-devel@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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.