【问题标题】:How to use the same file extension for different major-modes如何为不同的主要模式使用相同的文件扩展名
【发布时间】:2014-10-09 00:55:39
【问题描述】:

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

股票org-mode需要这个条目:

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

名为lawlist-org-mode 的自定义版本需要此条目:

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

示例

  • 如果我调用M-x org-agenda.todo 文件需要在org-mode 中。

  • 如果我调用M-x lawlist-org-agenda.todo 文件需要在lawlist-org-mode 中。


一些想法org-agenda-files 通常由 org-agenda 函数使用以下代码行访问 - (org-agenda-files nil 'ifmode) . . . (while (setq file (pop files))。也许修改函数org-agenda-files 是一种选择?

【问题讨论】:

  • 完全 OT,但我很好奇:你们的 org-mode 版本提供了哪些库存版本中没有的功能?获得了托管您的代码的在线存储库的链接?我很想看看:)
  • @itsjeyd -- 第一个链接的代码与 org-toodledo.el 兼容,它显示了一个带有标题 + 截止日期/预定 + 注释的自定义议程缓冲区:github.com/lawlist/lawlist-org -- 第二个链接提供了与3 个月和 12 个月的日历,其中某些待办事项条目会自动标记在日历上(例如,生日、约会、法庭假期)等:github.com/lawlist/calendar-yearly-scroll-by-month 我的 org-mode / calendar-mode 自定义版本提供了一些额外的东西,但是这两个链接是主要成分。
  • @itsjeyd -- 自定义*Org Agenda* 缓冲区的术语,我有三种主要类型的搜索,它们都显示标题+截止日期/预定+注释:截止日期/预定搜索基于@987654346 @、org-tags-view 用于标签,org-search-view 用于关键字搜索。我对*Org Agenda* 缓冲区有额外的排序标准,用于组织未注明日期和已注明日期的待办事项、按字母顺序排列和分组——例如,任务、事件、未注明日期、已完成和联系人。我有与*Org Agenda* 缓冲区相同的通用编辑类型——例如时间戳、待办事项、内容。
  • 太棒了,感谢您的信息+链接,我会检查出来!

标签: emacs elisp org-mode


【解决方案1】:

auto-mode-alist 条目(即 cdr)的 FUNCTION 部分只是一个函数。原则上称为设置主模式。但它可以做任何事情。

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

例如,它可以在满月时使用lawlist-org-mode,否则使用org-mode。或者它可以测试一个全局变量,当你想从一个切换到另一个时设置它。以此类推。

至少这是我对auto-mode-alist 文档字符串的阅读。没试过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多