如何使用Emacs日历在Lisp中实现24节气
我试图学习Emacs源代码中cal-china.el中的代码,发现以下代码:如何使用Emacs日历在Lisp中实现24节气,emacs,calendar,lisp,elisp,Emacs,Calendar,Lisp,Elisp,我试图学习Emacs源代码中cal-china.el中的代码,发现以下代码: ;;;###holiday-autoload (defun holiday-chinese-winter-solstice () "Date of Chinese winter solstice, if visible in calendar. Returns (((MONTH DAY YEAR) TEXT)), where the date is Gregorian." (when (memq display
;;;###holiday-autoload
(defun holiday-chinese-winter-solstice ()
"Date of Chinese winter solstice, if visible in calendar.
Returns (((MONTH DAY YEAR) TEXT)), where the date is Gregorian."
(when (memq displayed-month '(11 12 1)) ; is December visible?
(list (list (calendar-gregorian-from-absolute
(calendar-chinese-zodiac-sign-on-or-after
(calendar-absolute-from-gregorian
(list 12 15 (if (eq displayed-month 1)
(1- displayed-year)
displayed-year)))))
"Winter Solstice Festival"))))
此代码用于计算该值。我也知道这24个是计算所需要的。所以我想知道如何用Lisp计算所有24个节气
谢谢。任何对中国日历感兴趣的人,请参阅本回购协议了解详细信息 安装
cal-china-x
###自动加载
(德芬假日节气)
节气日的假日。
有关节气名称列表,请参见“cal-china-x-solar-term-name”
(cal-china-x-sync-solar-term显示年份)
(let)((术语cal-china-x-solar-term-alist)
(日期)
(而
(setq i(汽车术语)
条款(cdr条款))
(当(字符串=(cdr i)节气)
(让((m(caar i))
(y(cl caddar i)))
;;显示年份、显示月份对于中心月份是准确的
;仅限。跨年度视图:“(11 12 1),”(12 12)
(何时(或(和)(cal-china-x-cross-year-view-p)
(或)(和(=第12个月显示)
(=m1)
(=y(1+显示年份)))
(和(=第1个月显示)
(=m 12)
(=y(1-显示年份()))
(=y显示年份))
(setq术语“()
日期(第一辆车(()())))
(假日固定(汽车日期)(cadr日期)str)