« 書籍紹介『生成文法の企て』 | トップページ | USB メモリかなんかに入れて、あっちこっちで、Meadow を使う。 »

emacs の M-x calendar で日本の祝祭日を。

M-x calendar すると 洋物の holidays が出てくる。で、日本の祝祭日をなんとかしたい。
自分で何とかしようと思うと、ハッピーマンデーとか結構大変。で、探すと、やはりすで出回っている。

;;; From: Takashi Hattori
;;; Subject: Japanese holiday
;;; Newsgroups: fj.editor.emacs
;;; Date: 20 Apr 1999 17:17:51 +0900
;;; Message-ID:
;;; Organization: ToM Research Group, Keio SFC

オリジナルは、下から get。
http://suiten.wig.nu/text/diary/2000/japanese-holidays.el

これだと 1999 年以前も成人の日と体育の日が float しちゃう。で、.emacs に下のように書けば、OK。
(下の例だと、japanese-holidays.el を ~/elisp/ の下に置くってこと。)


;; ここから .emacs に転記
(load "~/elisp/japanese-holidays.el")
;; さらに、http://www.ysnb.net/meadow/meadow-users-jp/2001/msg00048.html や
;; その辺りからのリンクの情報により、
;; 変数 general-holidays-JP を下のように再設定。
(setq general-holidays-JP
;; '((holiday-fixed 1 1 "元旦")
'((holiday-fixed 1 1 "元日")
;; (holiday-float 1 1 2 "成人の日")
;; さらに1999年までは、成人の日は float しなかったんで、下の修正。
;; (if (>= displayed-year 2000)
;; さらに...
(if (or (>= displayed-year 2000)
(and (= displayed-year 1999) (> displayed-month 6)))
(holiday-float 1 1 2 "成人の日") ; 1月の第二月曜日
(holiday-fixed 1 15 "成人の日"))
(holiday-fixed 2 11 "建国記念の日")
(holiday-fixed 4 29 "みどりの日")
(holiday-fixed 5 3 "憲法記念日")
;; 国民の休日って、日曜になると単なる日曜。だから、japanese-holidays.elオリジナルの方が良し。
;; (holiday-fixed 5 4 "国民の休日")
(and (> (calendar-day-of-week (list 5 4 displayed-year)) 0)
(holiday-fixed 5 4 "国民の休日"))
(holiday-fixed 5 5 "こどもの日")
(holiday-fixed 7 20 "海の日")
(holiday-fixed 9 15 "敬老の日")
;; (holiday-float 10 1 2 "体育の日")
;; さらに、体育の日も1999年まで float しなかったので、下の修正。
(if (>= displayed-year 2000)
(holiday-float 10 1 2 "体育の日") ; 10 月の第二月曜日
(holiday-fixed 10 10 "体育の日"))
(holiday-fixed 11 3 "文化の日")
(holiday-fixed 11 23 "勤労感謝の日")
(holiday-fixed 12 23 "天皇誕生日")
;; 春分の日と秋分の日
(if (memq displayed-month '(2 3 4 8 9 10))
(solar-equinoxes-solstices))
;; 振替休日
(when (not (boundp 'called-recursively))
(let* (called-recursively
(month displayed-month)
(year displayed-year)
(day (progn
(increment-calendar-month month year -2)
(list month (calendar-last-day-of-month month year) year)))
(calendar-holidays general-holidays-JP) ;; ここ変数名と同じにする
(holiday-list (calendar-holiday-list))
holiday mmday ret)
(if (check-calendar-holidays day)
(setq holiday-list (cons (list day "dummy") holiday-list)))
(while holiday-list
(setq holiday (caar holiday-list))
(and (= (calendar-day-of-week holiday) 0)
(setq mmday (calendar-gregorian-from-absolute
(1+ (calendar-absolute-from-gregorian holiday))))
(null (check-calendar-holidays mmday))
(setq ret (cons (list mmday "振替休日") ret)))
(setq holiday-list (cdr holiday-list)))
ret))))
;; 日曜日だけじゃなく、土曜にも色をつける。
(setq calendar-weekend '(0 6))
;; ここまで .emacs に転記

過去の成人の日や体育の日が、float しちゃうことより、5月4日が日曜のときに、国民の休日にならないって方が重要かも。

こうするとオリジナルの japanese-holidays.el で定義されてる holiday-fixed-furikae という関数を使わないことに。
まあいいけど。

春分の日、秋分の日は、オリジナルの方が、日本語で出るのでよいかも。上だと、春分、秋分の時刻まで分かって楽しいけどね。ちなみに、オリジナルは、下。

    (let ((equinox (solar-equinoxes/solstices 0 displayed-year)))
      (holiday-fixed-furikae (extract-calendar-month equinox)
			     (truncate (extract-calendar-day equinox))
			     "春分の日"))
    (let ((equinox (solar-equinoxes/solstices 2 displayed-year)))
      (holiday-fixed-furikae (extract-calendar-month equinox)
			     (truncate (extract-calendar-day equinox))
			     "秋分の日"))

お好みで、差し替えて使えば良い。

|

« 書籍紹介『生成文法の企て』 | トップページ | USB メモリかなんかに入れて、あっちこっちで、Meadow を使う。 »

emacs 関係」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/11083/126837

この記事へのトラックバック一覧です: emacs の M-x calendar で日本の祝祭日を。:

« 書籍紹介『生成文法の企て』 | トップページ | USB メモリかなんかに入れて、あっちこっちで、Meadow を使う。 »