[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r113726: calendar.el: Add new faces, and day-header-
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] trunk r113726: calendar.el: Add new faces, and day-header-array |
Date: |
Tue, 06 Aug 2013 23:53:54 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 113726
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/15007
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Tue 2013-08-06 19:53:49 -0400
message:
calendar.el: Add new faces, and day-header-array
* lisp/calendar/calendar.el (calendar-weekday-header)
(calendar-weekend-header, calendar-month-header): New faces.
(calendar-day-header-construct): New function.
(calendar-day-header-width): Also :set calendar-day-header-array.
(calendar-american-month-header, calendar-european-month-header)
(calendar-iso-month-header): Use calendar- faces.
(calendar-generate-month):
Use calendar-day-header-array for day headers; apply faces to them.
(calendar-mode): Check calendar-font-lock-keywords non-nil.
(calendar-abbrev-construct): Add optional maxlen argument.
(calendar-day-name-array): Doc fix.
(calendar-day-name-array, calendar-abbrev-length)
(calendar-day-abbrev-array):
Also :set calendar-day-header-array, and maybe redraw.
(calendar-day-header-array): New option.
(calendar-font-lock-keywords): Use calendar-day-header-array,
and calendar- faces. Make obsolete.
(calendar-day-name): Add option to use header array.
* etc/NEWS: Mention this.
modified:
etc/NEWS news-20100311060928-aoit31wvzf25yr1z-1
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/calendar/calendar.el calendar.el-20091113204419-o5vbwnq5f7feedwu-478
=== modified file 'etc/NEWS'
--- a/etc/NEWS 2013-08-06 20:28:23 +0000
+++ b/etc/NEWS 2013-08-06 23:53:49 +0000
@@ -233,6 +233,13 @@
** Calendar and Diary
+*** New faces: `calendar-weekday-header', `calendar-weekend-header',
+`calendar-month-header'.
+
+*** New option `calendar-day-header-array'.
+
+*** The variable `calendar-font-lock-keywords' is obsolete.
+
+++
*** New variable `diary-from-outlook-function', used by the command
`diary-from-outlook'.
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-08-06 22:05:33 +0000
+++ b/lisp/ChangeLog 2013-08-06 23:53:49 +0000
@@ -1,3 +1,25 @@
+2013-08-06 Glenn Morris <address@hidden>
+
+ * calendar/calendar.el: Add new faces, and day-header-array.
+ (calendar-weekday-header, calendar-weekend-header)
+ (calendar-month-header): New faces.
+ (calendar-day-header-construct): New function.
+ (calendar-day-header-width): Also :set calendar-day-header-array.
+ (calendar-american-month-header, calendar-european-month-header)
+ (calendar-iso-month-header): Use calendar- faces.
+ (calendar-generate-month):
+ Use calendar-day-header-array for day headers; apply faces to them.
+ (calendar-mode): Check calendar-font-lock-keywords non-nil.
+ (calendar-abbrev-construct): Add optional maxlen argument.
+ (calendar-day-name-array): Doc fix.
+ (calendar-day-name-array, calendar-abbrev-length)
+ (calendar-day-abbrev-array):
+ Also :set calendar-day-header-array, and maybe redraw.
+ (calendar-day-header-array): New option. (Bug#15007)
+ (calendar-font-lock-keywords): Use calendar-day-header-array,
+ and calendar- faces. Make obsolete.
+ (calendar-day-name): Add option to use header array.
+
2013-08-06 Lars Magne Ingebrigtsen <address@hidden>
* net/shr.el (shr-render-td): Remove debugging.
=== modified file 'lisp/calendar/calendar.el'
--- a/lisp/calendar/calendar.el 2013-08-05 14:26:57 +0000
+++ b/lisp/calendar/calendar.el 2013-08-06 23:53:49 +0000
@@ -259,6 +259,23 @@
(define-obsolete-face-alias 'holiday-face 'holiday "22.1")
+(defface calendar-weekday-header '((t :inherit font-lock-constant-face))
+ "Face used for weekday column headers in the calendar.
+See also the face `calendar-weekend-header'."
+ :version "24.4"
+ :group 'calendar-faces)
+
+(defface calendar-weekend-header '((t :inherit font-lock-comment-face))
+ "Face used for weekend column headers in the calendar.
+See also the face `calendar-weekday-header'."
+ :version "24.4"
+ :group 'calendar-faces)
+
+(defface calendar-month-header '((t :inherit font-lock-function-name-face))
+ "Face used for month headers in the calendar."
+ :version "24.4"
+ :group 'calendar-faces)
+
;; These briefly checked font-lock-mode, but that is broken, since it
;; is a buffer-local variable, and which buffer happens to be current
;; when this file is loaded shouldn't make a difference. One could
@@ -447,7 +464,6 @@
(push (cons i (calendar-month-edges i)) calendar-month-edges))
(setq calendar-month-edges (reverse calendar-month-edges)))
-;; FIXME add font-lock-keywords.
(defun calendar-set-layout-variable (symbol value &optional minmax)
"Set SYMBOL's value to VALUE, an integer.
A positive/negative MINMAX enforces a minimum/maximum value.
@@ -491,12 +507,25 @@
:type 'integer
:version "23.1")
+(defun calendar-day-header-construct (&optional width)
+ "Return the default value for `calendar-day-header-array'.
+WIDTH defaults to `calendar-day-header-width'."
+ (or width (setq width calendar-day-header-width))
+ (calendar-abbrev-construct (if (<= width calendar-abbrev-length)
+ calendar-day-abbrev-array
+ calendar-day-name-array)
+ width))
+
+;; FIXME better to use a format spec?
(defcustom calendar-day-header-width 2
"Width of the day column headers in the calendar.
Must be at least one less than `calendar-column-width'."
:group 'calendar
:initialize 'custom-initialize-default
:set (lambda (sym val)
+ (or (calendar-customized-p 'calendar-day-header-array)
+ (setq calendar-day-header-array
+ (calendar-day-header-construct val)))
(calendar-set-layout-variable sym val (- 1 calendar-column-width)))
:type 'integer
:version "23.1")
@@ -924,33 +953,33 @@
(defcustom calendar-american-month-header
'(propertize (format "%s %d" (calendar-month-name month) year)
- 'font-lock-face 'font-lock-function-name-face)
+ 'font-lock-face 'calendar-month-header)
"Default format for calendar month headings with the American date style.
Normally you should not customize this, but `calender-month-header'."
:group 'calendar
:risky t
:type 'sexp
- :version "24.3")
+ :version "24.4") ; font-lock-function-name-face -> calendar-month-header
(defcustom calendar-european-month-header
'(propertize (format "%s %d" (calendar-month-name month) year)
- 'font-lock-face 'font-lock-function-name-face)
+ 'font-lock-face 'calendar-month-header)
"Default format for calendar month headings with the European date style.
Normally you should not customize this, but `calender-month-header'."
:group 'calendar
:risky t
:type 'sexp
- :version "24.3")
+ :version "24.4") ; font-lock-function-name-face -> calendar-month-header
(defcustom calendar-iso-month-header
'(propertize (format "%d %s" year (calendar-month-name month))
- 'font-lock-face 'font-lock-function-name-face)
+ 'font-lock-face 'calendar-month-header)
"Default format for calendar month headings with the ISO date style.
Normally you should not customize this, but `calender-month-header'."
:group 'calendar
:risky t
:type 'sexp
- :version "24.3")
+ :version "24.4") ; font-lock-function-name-face -> calendar-month-header
(defcustom calendar-month-header
(cond ((eq calendar-date-style 'iso)
@@ -1517,8 +1546,7 @@
(last (calendar-last-day-of-month month year))
(trunc (min calendar-intermonth-spacing
(1- calendar-left-margin)))
- (day 1)
- string)
+ (day 1))
(goto-char (point-min))
(calendar-move-to-column indent)
(insert
@@ -1526,13 +1554,16 @@
?\s calendar-month-digit-width))
(calendar-ensure-newline)
(calendar-insert-at-column indent calendar-intermonth-header trunc)
- ;; Use the first two characters of each day to head the columns.
+ ;; Use the first N characters of each day to head the columns.
(dotimes (i 7)
(insert
- (progn
- (setq string
- (calendar-day-name (mod (+ calendar-week-start-day i) 7) nil t))
- (truncate-string-to-width string calendar-day-header-width nil ?\s))
+ (truncate-string-to-width
+ (propertize (calendar-day-name (mod (+ calendar-week-start-day i) 7)
+ 'header t)
+ 'font-lock-face (if (memq i '(0 6))
+ 'calendar-weekend-header
+ 'calendar-weekday-header))
+ calendar-day-header-width nil ?\s)
(make-string (- calendar-column-width calendar-day-header-width) ?\s)))
(calendar-ensure-newline)
(calendar-insert-at-column indent calendar-intermonth-text trunc)
@@ -1808,8 +1839,9 @@
;; soon in calendar-generate, but better safe than sorry.
(unless (boundp 'displayed-month) (setq displayed-month 1))
(unless (boundp 'displayed-year) (setq displayed-year 2001))
- (set (make-local-variable 'font-lock-defaults)
- '(calendar-font-lock-keywords t)))
+ (if (bound-and-true-p calendar-font-lock-keywords)
+ (set (make-local-variable 'font-lock-defaults)
+ '(calendar-font-lock-keywords t))))
(defun calendar-string-spread (strings char length)
"Concatenate list of STRINGS separated with copies of CHAR to fill LENGTH.
@@ -2079,33 +2111,41 @@
(and standard
(not (equal (eval (car standard)) (default-value symbol)))))))
-(defun calendar-abbrev-construct (full)
+(defun calendar-abbrev-construct (full &optional maxlen)
"From sequence FULL, return a vector of abbreviations.
-Each abbreviation is no longer than `calendar-abbrev-length' characters."
+Each abbreviation is no longer than MAXLEN (default `calendar-abbrev-length')
+characters."
+ (or maxlen (setq maxlen calendar-abbrev-length))
(apply 'vector (mapcar
(lambda (f)
- (substring f 0 (min calendar-abbrev-length (length f))))
+ ;; TODO? truncate-string-to-width?
+ (substring f 0 (min maxlen (length f))))
full)))
(defcustom calendar-day-name-array
["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"]
"Array of capitalized strings giving, in order from Sunday, the day names.
-The first two characters of each string will be used to head the
-day columns in the calendar.
If you change this without using customize after the calendar has loaded,
-then you may also want to change `calendar-day-abbrev-array'."
+then you may also want to change `calendar-day-abbrev-array'
+and `calendar-day-header-array'."
:group 'calendar
:initialize 'custom-initialize-default
:set (lambda (symbol value)
(let ((dcustomized (calendar-customized-p 'calendar-day-abbrev-array))
- (hcustomized (calendar-customized-p
'cal-html-day-abbrev-array)))
+ (hcustomized (calendar-customized-p 'cal-html-day-abbrev-array))
+ (ccustomized (calendar-customized-p
'calendar-day-header-array)))
(set symbol value)
(or dcustomized
(setq calendar-day-abbrev-array
(calendar-abbrev-construct calendar-day-name-array)))
(and (not hcustomized)
(boundp 'cal-html-day-abbrev-array)
- (setq cal-html-day-abbrev-array calendar-day-abbrev-array))))
+ (setq cal-html-day-abbrev-array calendar-day-abbrev-array))
+ (or ccustomized
+ (equal calendar-day-header-array
+ (setq calendar-day-header-array
+ (calendar-day-header-construct)))
+ (calendar-redraw))))
:type '(vector (string :tag "Sunday")
(string :tag "Monday")
(string :tag "Tuesday")
@@ -2125,7 +2165,8 @@
(let ((dcustomized (calendar-customized-p 'calendar-day-abbrev-array))
(mcustomized (calendar-customized-p
'calendar-month-abbrev-array))
- (hcustomized (calendar-customized-p
'cal-html-day-abbrev-array)))
+ (hcustomized (calendar-customized-p 'cal-html-day-abbrev-array))
+ (ccustomized (calendar-customized-p
'calendar-day-header-array)))
(set symbol value)
(or dcustomized
(setq calendar-day-abbrev-array
@@ -2135,7 +2176,12 @@
(calendar-abbrev-construct calendar-month-name-array)))
(and (not hcustomized)
(boundp 'cal-html-day-abbrev-array)
- (setq cal-html-day-abbrev-array calendar-day-abbrev-array))))
+ (setq cal-html-day-abbrev-array calendar-day-abbrev-array))
+ (or ccustomized
+ (equal calendar-day-header-array
+ (setq calendar-day-header-array
+ (calendar-day-header-construct)))
+ (calendar-redraw))))
:type 'integer)
(defcustom calendar-day-abbrev-array
@@ -2152,11 +2198,17 @@
:initialize 'custom-initialize-default
:set-after '(calendar-abbrev-length calendar-day-name-array)
:set (lambda (symbol value)
- (let ((hcustomized (calendar-customized-p
'cal-html-day-abbrev-array)))
+ (let ((hcustomized (calendar-customized-p 'cal-html-day-abbrev-array))
+ (ccustomized (calendar-customized-p
'calendar-day-header-array)))
(set symbol value)
(and (not hcustomized)
(boundp 'cal-html-day-abbrev-array)
- (setq cal-html-day-abbrev-array calendar-day-abbrev-array))))
+ (setq cal-html-day-abbrev-array calendar-day-abbrev-array))
+ (or ccustomized
+ (equal calendar-day-header-array
+ (setq calendar-day-header-array
+ (calendar-day-header-construct)))
+ (calendar-redraw))))
:type '(vector (string :tag "Sun")
(string :tag "Mon")
(string :tag "Tue")
@@ -2167,6 +2219,33 @@
;; Made defcustom, changed defaults from nil nil...
:version "24.1")
+(defcustom calendar-day-header-array (calendar-day-header-construct)
+ "Array of strings to use for the headers of the calendar's day columns.
+The order should be the same as in `calendar-day-name-array'.
+In use, the calendar truncates elements to no more than
+`calendar-day-header-width' columns wide.
+Emacs constructs the default from either `calendar-day-name-array'
+\(if `calendar-day-header-width' is more than `calendar-abbrev-length'),
+or from `calendar-day-abbrev-array' (assuming that the abbreviated
+name are more likely to be unique when truncated)."
+ :group 'calendar
+ :initialize 'custom-initialize-default
+ :set-after '(calendar-day-header-width
+ calendar-abbrev-length calendar-day-name-array
+ calendar-day-abbrev-array)
+ :set (lambda (symbol value)
+ (or (equal calendar-day-header-array
+ (set symbol value))
+ (calendar-redraw)))
+ :type '(vector (string :tag "Su")
+ (string :tag "Mo")
+ (string :tag "Tu")
+ (string :tag "We")
+ (string :tag "Th")
+ (string :tag "Fr")
+ (string :tag "Sa"))
+ :version "24.4")
+
(defcustom calendar-month-name-array
["January" "February" "March" "April" "May" "June"
"July" "August" "September" "October" "November" "December"]
@@ -2287,30 +2366,38 @@
;; of that variable.
`((,(concat (regexp-opt (mapcar 'identity calendar-month-name-array) t)
" -?[0-9]+")
- . font-lock-function-name-face)
+ . 'calendar-month-header)
+ ;; Day headers.
+ ;; Also not needed now that calendar-generate-month uses propertize.
(,(regexp-opt
- (list (truncate-string-to-width (aref calendar-day-name-array 6)
+ (list (truncate-string-to-width (aref calendar-day-header-array 6)
calendar-day-header-width)
- (truncate-string-to-width (aref calendar-day-name-array 0)
+ (truncate-string-to-width (aref calendar-day-header-array 0)
calendar-day-header-width)))
;; Saturdays and Sundays are highlighted differently.
- . font-lock-comment-face)
- ;; First two chars of each day are used in the calendar.
- (,(regexp-opt (mapcar (lambda (x) (truncate-string-to-width
- x calendar-day-header-width))
- calendar-day-name-array))
- . font-lock-constant-face))
+ . 'calendar-weekend-header)
+ (,(regexp-opt (mapcar (lambda (x) (truncate-string-to-width
+ x calendar-day-header-width))
+ calendar-day-header-array))
+ . 'calendar-day-header))
"Default keywords to highlight in Calendar mode.")
+(make-obsolete-variable 'calendar-font-lock-keywords
+ "set font-lock keywords in `calendar-mode-hook', \
+or customize calendar faces." "24.4")
+
(defun calendar-day-name (date &optional abbrev absolute)
"Return a string with the name of the day of the week of DATE.
DATE should be a list in the format (MONTH DAY YEAR), unless the
optional argument ABSOLUTE is non-nil, in which case DATE should
be an integer in the range 0 to 6 corresponding to the day of the
week. Day names are taken from the variable `calendar-day-name-array',
-unless the optional argument ABBREV is non-nil, in which case
-the variable `calendar-day-abbrev-array' is used."
- (aref (if abbrev calendar-day-abbrev-array calendar-day-name-array)
+unless the optional argument ABBREV is non-nil:
+`header' means to use `calendar-day-header-array';
+t to use `calendar-day-abbrev-array'."
+ (aref (cond ((eq abbrev 'header) calendar-day-header-array)
+ (abbrev calendar-day-abbrev-array)
+ (t calendar-day-name-array))
(if absolute date (calendar-day-of-week date))))
(defun calendar-month-name (month &optional abbrev)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r113726: calendar.el: Add new faces, and day-header-array,
Glenn Morris <=