如何加快组织模式议程的生成


11

Emacs组织模式生成我的议程需要花费几秒钟。我怎样才能使其更快?我已经在使用存档文件,并且我的文件少于30个.org,它们都相当短。

org-agenda命令的部分探查器输出:

+ ...                                                              93  50%
- command-execute                                                  90  49%
 - call-interactively                                              85  46%
  - org-agenda                                                     80  43%
   - byte-code                                                     80  43%
    - call-interactively                                           79  43%
     - org-agenda-list                                             79  43%
      - byte-code                                                  79  43%
       - org-agenda-prepare                                        68  37%
        - org-agenda-prepare-buffers                               67  36%
         - byte-code                                               67  36%
          - org-get-agenda-file-buffer                             67  36%
           - find-file-noselect                                    67  36%
            - find-file-noselect-1                                 67  36%
             - after-find-file                                     66  36%
              + run-hooks                                          35  19%
              + normal-mode                                        30  16%
              + auto-save-mode                                      1   0%
             + normal-backup-enable-predicate                       1   0%
        + org-agenda-files                                          1   0%
       + byte-code                                                 10   5%
         org-days-to-iso-week                                       1   0%
    + org-agenda-get-restriction-and-command                        1   0%   
  + byte-code                                                       4   2%   
  + minibuffer-complete                                             1   0%

似乎组织模式浪费大量时间打开文件。如果仅将这些缓冲区始终保持打开状态,则可能会看到改进。
马拉巴巴

Answers:


9

我创建了这种解决方法,每当Emacs空闲5秒钟以上时,它都会预先生成一个议程缓冲区。下次运行议程命令时,生成将花费不到一秒钟的时间,因为组织缓冲区已经加载。

(run-with-idle-timer 5 nil (lambda () (org-agenda-list) (delete-window)))

6

没有相当的回答你的问题,但考虑(setq org-agenda-sticky t)。这样,q当您完成议程缓冲区时,该命令将掩埋该议程缓冲区,而不是将其关闭。

这样的结果是,该议程将在您下次要求时立即重新出现,但是自从您上次看到该议程以来,它就不会被更新。如果您希望更新它,可以随时按g议程适当地重建它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.