diff --git a/tools/emacs.d/init.el b/tools/emacs.d/init.el index b245f6b..553f4bc 100644 --- a/tools/emacs.d/init.el +++ b/tools/emacs.d/init.el @@ -37,6 +37,7 @@ (require 'init-counsel) (require 'init-file) (require 'init-edit) +(require 'init-calendar) (require 'init-org) (require 'init-lang) (require 'init-treesitter) diff --git a/tools/emacs.d/lisp/init-calendar.el b/tools/emacs.d/lisp/init-calendar.el new file mode 100644 index 0000000..f3ac6bd --- /dev/null +++ b/tools/emacs.d/lisp/init-calendar.el @@ -0,0 +1,99 @@ +;;; init-calendar.el + +(setq calendar-date-style 'iso) +(setq diary-date-forms '((year "年" month "月" day "日" " 星期[" "日一二三四五六" "]") ;; Chinese + (year "-" month "-" day) ;; ISO + (month "[-/]" day "[^-/0-9]") (year "[-/]" month "[-/]" day "[^0-9]") + (monthname " *" day "[^-0-9]") (year " *" monthname " *" day "[^0-9]") + (dayname "\\W"))) + +(setq calendar-mark-holidays-flag t + calendar-week-start-day 1) + + +(use-package cal-china-x + :ensure t + :custom + (cal-china-x-important-holidays '((holiday-chinese-new-year) + (holiday-lunar 12 23 "小年(北)" 1) + (holiday-lunar 12 24 "小年(南)" 1) + (holiday-lunar 12 30 "除夕" 1) + (holiday-lunar 1 1 "春节" 0) + (holiday-lunar 1 2 "春节" 0) + (holiday-lunar 1 3 "春节" 0) + (holiday-lunar 1 4 "春节" 0) + (holiday-lunar 1 5 "春节(破五)" 0) + (holiday-lunar 1 15 "元宵节" 0) + (holiday-lunar 2 2 "龙抬头" 0) + (holiday-solar-term "清明" "清明节") + (holiday-fixed 5 1 "劳动节") + (holiday-lunar 5 5 "端午节" 0) + (holiday-lunar 7 7 "七夕节" 0) + (holiday-lunar 7 15 "中元节" 0) + (holiday-lunar 8 15 "中秋节" 0) + (holiday-fixed 10 1 "国庆节") + (holiday-fixed 10 2 "国庆节") + (holiday-fixed 10 3 "国庆节") + (holiday-lunar 9 9 "重阳节" 0) + (holiday-lunar 10 1 "寒衣节" 0) + (holiday-lunar 12 8 "腊八" 1) + (holiday-solar-term "立春" "立春") + (holiday-solar-term "立夏" "立夏") + (holiday-solar-term "立秋" "立秋") + (holiday-solar-term "立冬" "立冬") + (holiday-solar-term "春分" "春分") + (holiday-solar-term "夏至" "夏至") + (holiday-solar-term "秋分" "秋分") + (holiday-solar-term "冬至" "冬至"))) + (cal-china-x-general-holidays '((holiday-fixed 1 1 "元旦") + (holiday-fixed 2 14 "情人节") + (holiday-fixed 3 8 "妇女节") + (holiday-fixed 4 1 "愚人节") + (holiday-fixed 5 4 "青年节") + (holiday-float 5 0 2 "母亲节") + (holiday-fixed 6 1 "儿童节") + (holiday-float 6 0 3 "父亲节") + (holiday-fixed 9 10 "教师节") + (holiday-float 11 4 4 "感恩节") + (holiday-fixed 12 25 "圣诞节"))) + :config + (setq calendar-holidays (append cal-china-x-important-holidays + cal-china-x-general-holidays))) + +;; https://github.com/AbstProcDo/Master-Emacs-From-Scratch-with-Solid-Procedures/blob/master/06.Emacs-as-Agenda-by-Org.org +;;Sunrise and Sunset +;;日出而作, 日落而息 +(defun js0ny/diary-sunrise () + (let ((dss (diary-sunrise-sunset))) + (with-temp-buffer + (insert dss) + (goto-char (point-min)) + (while (re-search-forward " ([^)]*)" nil t) + (replace-match "" nil nil)) + (goto-char (point-min)) + (search-forward ",") + (buffer-substring (point-min) (match-beginning 0))))) + +(defun js0ny/diary-sunset () + (let ((dss (diary-sunrise-sunset)) + start end) + (with-temp-buffer + (insert dss) + (goto-char (point-min)) + (while (re-search-forward " ([^)]*)" nil t) + (replace-match "" nil nil)) + (goto-char (point-min)) + (search-forward ", ") + (setq start (match-end 0)) + (search-forward " at") + (setq end (match-beginning 0)) + (goto-char start) + (capitalize-word 1) + (buffer-substring start end)))) + + + +(setq diary-file "~/.local/js0ny/diary") + + +(provide 'init-calendar)