aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2012-09-28 11:17:08 -0400
committerStefan Monnier2012-09-28 11:17:08 -0400
commit3df749b0f8a97c8b8f18a34bce494fd9d4fe987f (patch)
tree89db15fa0b0ffb3de4784816ae92d3ae2d324239
parent404043ea8821e8902190e2e7d1140224c3ae33ea (diff)
downloademacs-3df749b0f8a97c8b8f18a34bce494fd9d4fe987f.tar.gz
emacs-3df749b0f8a97c8b8f18a34bce494fd9d4fe987f.zip
* lisp/type-break.el: Use lexical-binding.
(type-break-mode): Use define-minor-mode.
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/type-break.el140
2 files changed, 61 insertions, 82 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 21a412f7424..b25a921219e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,8 @@
12012-09-28 Stefan Monnier <monnier@iro.umontreal.ca> 12012-09-28 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * type-break.el: Use lexical-binding.
4 (type-break-mode): Use define-minor-mode.
5
3 * emacs-lisp/pcase.el (pcase--mark-used): New. 6 * emacs-lisp/pcase.el (pcase--mark-used): New.
4 (pcase--u1): Use it (bug#12512). 7 (pcase--u1): Use it (bug#12512).
5 8
diff --git a/lisp/type-break.el b/lisp/type-break.el
index b3749853b77..949b3b720a0 100644
--- a/lisp/type-break.el
+++ b/lisp/type-break.el
@@ -1,4 +1,4 @@
1;;; type-break.el --- encourage rests from typing at appropriate intervals 1;;; type-break.el --- encourage rests from typing at appropriate intervals -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 1994-1995, 1997, 2000-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1994-1995, 1997, 2000-2012 Free Software Foundation, Inc.
4 4
@@ -69,18 +69,6 @@
69 :prefix "type-break" 69 :prefix "type-break"
70 :group 'keyboard) 70 :group 'keyboard)
71 71
72(defcustom type-break-mode nil
73 "Toggle typing break mode.
74See the docstring for the `type-break-mode' command for more information.
75Setting this variable directly does not take effect;
76use either \\[customize] or the function `type-break-mode'."
77 :set (lambda (_symbol value)
78 (type-break-mode (if value 1 -1)))
79 :initialize 'custom-initialize-default
80 :type 'boolean
81 :group 'type-break
82 :require 'type-break)
83
84(defcustom type-break-interval (* 60 60) 72(defcustom type-break-interval (* 60 60)
85 "Number of seconds between scheduled typing breaks." 73 "Number of seconds between scheduled typing breaks."
86 :type 'integer 74 :type 'integer
@@ -285,7 +273,7 @@ It will be either \"seconds\" or \"keystrokes\".")
285 273
286 274
287;;;###autoload 275;;;###autoload
288(defun type-break-mode (&optional prefix) 276(define-minor-mode type-break-mode
289 "Enable or disable typing-break mode. 277 "Enable or disable typing-break mode.
290This is a minor mode, but it is global to all buffers by default. 278This is a minor mode, but it is global to all buffers by default.
291 279
@@ -358,74 +346,61 @@ Finally, a file (named `type-break-file-name') is used to store information
358across Emacs sessions. This provides recovery of the break status between 346across Emacs sessions. This provides recovery of the break status between
359sessions and after a crash. Manual changes to the file may result in 347sessions and after a crash. Manual changes to the file may result in
360problems." 348problems."
361 (interactive "P") 349 :lighter type-break-mode-line-format
362 (type-break-check-post-command-hook) 350 :global t
363 351
364 (let ((already-enabled type-break-mode)) 352 (type-break-check-post-command-hook)
365 (setq type-break-mode (>= (prefix-numeric-value prefix) 0))
366 353
367 (cond 354 (cond
368 ((and already-enabled type-break-mode) 355 ;; ((and already-enabled type-break-mode)
369 (and (called-interactively-p 'interactive) 356 ;; (and (called-interactively-p 'interactive)
370 (message "Type Break mode is already enabled"))) 357 ;; (message "Type Break mode is already enabled")))
371 (type-break-mode 358 (type-break-mode
372 (when type-break-file-name 359 (when type-break-file-name
373 (with-current-buffer (find-file-noselect type-break-file-name 'nowarn) 360 (with-current-buffer (find-file-noselect type-break-file-name 'nowarn)
374 (setq buffer-save-without-query t))) 361 (setq buffer-save-without-query t)))
375 362
376 (or global-mode-string 363 (or global-mode-string (setq global-mode-string '(""))) ;FIXME: Why?
377 (setq global-mode-string '(""))) 364 (type-break-keystroke-reset)
378 (or (assq 'type-break-mode-line-message-mode 365 (type-break-mode-line-countdown-or-break nil)
379 minor-mode-alist) 366
380 (setq minor-mode-alist 367 (setq type-break-time-last-break
381 (cons type-break-mode-line-format 368 (or (type-break-get-previous-time)
382 minor-mode-alist))) 369 (current-time)))
383 (type-break-keystroke-reset) 370
384 (type-break-mode-line-countdown-or-break nil) 371 ;; Schedule according to break time from session file.
385 372 (type-break-schedule
386 (setq type-break-time-last-break 373 (let (diff)
387 (or (type-break-get-previous-time) 374 (if (and type-break-time-last-break
388 (current-time))) 375 (< (setq diff (type-break-time-difference
389 376 type-break-time-last-break
390 ;; schedule according to break time from session file 377 (current-time)))
391 (type-break-schedule 378 type-break-interval))
392 (let (diff) 379 ;; Use the file's value.
393 (if (and type-break-time-last-break 380 (progn
394 (< (setq diff (type-break-time-difference 381 (setq type-break-keystroke-count
395 type-break-time-last-break 382 (type-break-get-previous-count))
396 (current-time))) 383 ;; File the time, in case it was read from the auto-save file.
397 type-break-interval)) 384 (type-break-file-time type-break-interval-start)
398 ;; use the file's value 385 (setq type-break-interval-start type-break-time-last-break)
399 (progn 386 (- type-break-interval diff))
400 (setq type-break-keystroke-count 387 ;; Schedule from now.
401 (type-break-get-previous-count)) 388 (setq type-break-interval-start (current-time))
402 ;; file the time, in case it was read from the auto-save file 389 (type-break-file-time type-break-interval-start)
403 (type-break-file-time type-break-interval-start) 390 type-break-interval))
404 (setq type-break-interval-start type-break-time-last-break) 391 type-break-interval-start
405 (- type-break-interval diff)) 392 type-break-interval))
406 ;; schedule from now 393 (t
407 (setq type-break-interval-start (current-time)) 394 (type-break-keystroke-reset)
408 (type-break-file-time type-break-interval-start) 395 (type-break-mode-line-countdown-or-break nil)
409 type-break-interval)) 396 (type-break-cancel-schedule)
410 type-break-interval-start 397 (do-auto-save)
411 type-break-interval) 398 (when type-break-file-name
412 399 (with-current-buffer (find-file-noselect type-break-file-name
413 (and (called-interactively-p 'interactive) 400 'nowarn)
414 (message "Type Break mode is enabled and set"))) 401 (set-buffer-modified-p nil)
415 (t 402 (unlock-buffer)
416 (type-break-keystroke-reset) 403 (kill-this-buffer))))))
417 (type-break-mode-line-countdown-or-break nil)
418 (type-break-cancel-schedule)
419 (do-auto-save)
420 (when type-break-file-name
421 (with-current-buffer (find-file-noselect type-break-file-name
422 'nowarn)
423 (set-buffer-modified-p nil)
424 (unlock-buffer)
425 (kill-this-buffer)))
426 (and (called-interactively-p 'interactive)
427 (message "Type Break mode is disabled")))))
428 type-break-mode)
429 404
430(define-minor-mode type-break-mode-line-message-mode 405(define-minor-mode type-break-mode-line-message-mode
431 "Toggle warnings about typing breaks in the mode line. 406 "Toggle warnings about typing breaks in the mode line.
@@ -994,10 +969,11 @@ FRAC should be the inverse of the fractional value; for example, a value of
994;; "low" bits and format the time incorrectly. 969;; "low" bits and format the time incorrectly.
995(defun type-break-time-sum (&rest tmlist) 970(defun type-break-time-sum (&rest tmlist)
996 (let ((sum '(0 0 0))) 971 (let ((sum '(0 0 0)))
997 (dolist (tem tmlist sum) 972 (dolist (tem tmlist)
998 (setq sum (time-add sum (if (integerp tem) 973 (setq sum (time-add sum (if (integerp tem)
999 (list (floor tem 65536) (mod tem 65536)) 974 (list (floor tem 65536) (mod tem 65536))
1000 tem)))))) 975 tem))))
976 sum))
1001 977
1002(defun type-break-time-stamp (&optional when) 978(defun type-break-time-stamp (&optional when)
1003 (if (fboundp 'format-time-string) 979 (if (fboundp 'format-time-string)