Emacs 如何对不同的主模式使用相同的文件扩展名

Emacs 如何对不同的主模式使用相同的文件扩展名,emacs,elisp,org-mode,Emacs,Elisp,Org Mode,我使用了一个名为lawlist org mode的org mode自定义版本——每个函数和变量都有前缀lawlist-,并且修改后的版本有许多定制功能,这些功能在库存版本中不可用。偶尔,我喜欢使用stockorg模式版本——但是,这需要手动修改auto模式,然后重新启动Emacs。这是必要的,因为函数和变量org agenda files以及检查org mode以验证是否存在正确的主模式。是否有一种有效的方法可以根据调用的函数以编程方式修改此函数 库存组织模式需要此项: (add-to-list

我使用了一个名为
lawlist org mode
org mode
自定义版本——每个函数和变量都有前缀
lawlist-
,并且修改后的版本有许多定制功能,这些功能在库存版本中不可用。偶尔,我喜欢使用stock
org模式
版本——但是,这需要手动修改
auto模式
,然后重新启动Emacs。这是必要的,因为函数和变量
org agenda files
以及检查
org mode
以验证是否存在正确的主模式。是否有一种有效的方法可以根据调用的函数以编程方式修改此函数

库存
组织模式
需要此项:

(add-to-list 'auto-mode-alist '("\\.todo\\'" . org-mode))
(add-to-list 'auto-mode-alist '("\\.todo\\'" . lawlist-org-mode))
名为
lawlist-org-mode
的自定义版本需要以下条目:

(add-to-list 'auto-mode-alist '("\\.todo\\'" . org-mode))
(add-to-list 'auto-mode-alist '("\\.todo\\'" . lawlist-org-mode))
示例

  • 如果我调用
    M-x组织议程
    ,则
    .todo
    文件需要处于
    组织模式

  • 如果我调用
    M-x法律列表组织议程
    ,则
    .todo
    文件需要处于
    lawlist组织模式



一些想法:组织议程文件通常由组织议程功能使用以下代码行访问--
(组织议程文件nil'ifmode)。(while(setq file(pop files))
。也许可以选择修改函数
组织议程文件

自动模式列表(即cdr)的
函数
部分只是一个函数。原则上,调用它是为了设置主模式。但它可以做任何事情

特别是,您可以有一个条目
(“\\.todo\\\”.foo)
,其中函数
foo
有条件地调用
lawlist-org-mode
org-mode

例如,当月亮满月时,它可以使用
lawlist组织模式
,否则它可以使用
org模式
。或者它可以测试一个全局变量,当你想从一个切换到另一个时,你可以设置它。等等


至少这是我对
自动模式列表
文档字符串的理解。我从未尝试过它。

完全是OT,但我很好奇:你的
组织模式
版本提供了哪些不在股票版本中的功能?有一个指向托管你代码的在线回购的链接吗?我很想看看:)@itsjeyd--第一个链接与
org toodledo.el
代码兼容,该链接显示一个带有标题+截止日期/日程安排+备注的自定义日程缓冲区:--第二个链接提供与3个月和12个月日历的兼容性,其中某些todo条目在日历上自动标记(例如生日、约会、法庭假期)等等:我的自定义版本的组织模式/日历模式提供了一些额外的内容,但这两个链接是主要的组成部分。@itsjeyd--I自定义
*组织议程*
缓冲区的术语,我有三种主要的搜索类型,它们都显示标题+截止日期/计划+注释:基于
组织的截止日期/计划搜索-议程列表
组织标签视图
用于标签,以及
组织搜索视图
用于关键字搜索。我为
*组织议程*
缓冲区提供了额外的排序标准,用于组织未注明日期和日期的待办事项、字母和分组,例如任务、事件、未注明日期、完成和联系人。我具有相同的一般编辑类型t可从
*Org Agenda*
缓冲区获得,例如,时间戳、todo、内容。太棒了,感谢您提供的信息+链接,我将查看它们!