根据现有的Emacs代码diary-sunrise-sunset
,我尝试创建两个新功能diary-sunrise
和diary-sunset
。
我的理由包括在下面的“XY描述”标题下。
我有下面的代码似乎工作,除非我重新启动新的Emacs。我可以通过暂时使用原始的内置diary-sunrise-sunset
来解决这个问题。从那时起,我的功能表现得非常出色。
换句话说,我必须在我的%%(diary-sunrise-sunset)
和%%(diary-sunrise)
工作之前使用内置%%(diary-sunset)
一次。
你能帮助我修复我对这些函数的使用吗?这样我就不必采取第一个获得内置函数调用的尴尬步骤了吗?
对我来说似乎可疑的代码行是
;;;###diary-autoload
虽然我对加载程序的必要性有所了解,但我不确定这里发生了什么,或者这是问题所在。 (我从未见过那种特殊的语法。)
我尝试了M-: (require 'solar)
和M-: (require 'diary)
,但都没有工作(现在只是calendar
)。我已经尝试将我的代码放在.emacs
和内置.../lisp/calendar/solar.el
(以及字节重新编译)中,但两者都没有用。
(它们都是对solar-sunrise-sunset-string
和diary-sunrise-sunset
的轻微修改,它们都在.../lisp/calendar/solar.el
中定义。
日出:
(defun solar-sunrise-string (date &optional nolocation)
"String of *local* time of sunrise and daylight on Gregorian DATE."
(let ((l (solar-sunrise-sunset date)))
(format
"%s (%s hours daylight)"
(if (car l)
(concat "Sunset " (apply 'solar-time-string (car l)))
"no sunset")
(nth 2 l)
)))
;; To be called from diary-list-sexp-entries, where DATE is bound.
;;;###diary-autoload
(defun diary-sunrise ()
"Local time of sunrise as a diary entry.
Accurate to a few seconds."
(or (and calendar-latitude calendar-longitude calendar-time-zone)
(solar-setup))
(solar-sunrise-string date))
日落:
(defun solar-sunset-string (date &optional nolocation)
"String of *local* time of sunset and daylight on Gregorian DATE."
(let ((l (solar-sunrise-sunset date)))
(format
"%s (%s hours daylight)"
(if (cadr l)
(concat "Sunset " (apply 'solar-time-string (cadr l)))
"no sunset")
(nth 2 l)
)))
;; To be called from diary-list-sexp-entries, where DATE is bound.
;;;###diary-autoload
(defun diary-sunset ()
"Local time of sunset as a diary entry.
Accurate to a few seconds."
(or (and calendar-latitude calendar-longitude calendar-time-zone)
(solar-setup))
(solar-sunset-string date))
我正在使用Emacs的组织模式,并开始使用议程视图。我喜欢内置的diary-sunrise-sunset
函数,但是想进行一些小的调整以使其更符合我的喜好。
基本上,Org-mode的议程视图将首次从日记性别%%(diary-sunrise-sunset)
中提取,例如
Sat, Apr 5, 2014
Sunrise 6:43am (PDT), sunset 7:42pm (PDT) at Springfield, OH (12:59 hours daylight)
然后输入
6:43am........ Sunrise (PDT), sunset 7:42pm (PDT) at Springfield, OH (12:59 hours daylight)
在议程视图中。
我希望它能做的更像是,
6:43am........ Sunrise (PDT) (12:59 hours daylight)
8:00am........ ----------------
10:00am........ ----------------
12:00pm........ ----------------
2:00pm........ ----------------
4:00pm........ ----------------
5:51pm........ now - - - - - - - - - - - - - - - - - - - - - - - - -
6:00pm........ ----------------
7:42pm........ Sunset (PDT) (12:59 hours daylight)
数据被分成两次,而不是全部只在日出时写入。
一个片段,以便C-c a d
为您提供美好的一天议程视图:
(setq org-agenda-custom-commands
'(("d" "day's agenda"
agenda ""
(
(org-agenda-files '("/e/org/agendatest.org"))
(org-agenda-prefix-format "%t %s")
(org-agenda-span 'day)
(org-agenda-timegrid-use-ampm t)
)
)
))
答案 0 :(得分:0)
在我的问题的最后一段(第八段?)中,我撒谎,(require 'solar)
是答案......我没有努力,因为它没有回应自动完成。
通往答案的风景路线让我想到了这些分心:
C-h i g (elisp) Autoload
lisp
目录中搜索任何update-file-autoloads
我做了一些Edebugging想知道我使用的是否有自动加载cookie(还没有完全理解它),但后来注意到(provide 'solar)
末尾有一个solar.el
,所以我想(require 'solar)
必须工作。它确实就是这样。
从我的问题中的代码中,我删除了自动加载Cookie(不确定是否有必要),然后添加(require 'solar)
,它就可以了!请享用!