Как ускорить генерацию повестки дня в режиме орг

11

Emacs org-mode занимает несколько секунд для генерации моей повестки дня. Как я могу сделать это быстрее? Я уже использую архивные файлы, и у меня менее 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%
Мэтью Пизиак
источник
Похоже, что режим орг тратит много времени на открытие файлов. Вы можете увидеть улучшения, если просто держать эти буферы всегда открытыми.
Малабарба

Ответы:

9

Я создал этот обходной путь, который создает буфер повестки дня всякий раз, когда Emacs простаивает более 5 секунд. При следующем запуске команды повестки дня генерация займет меньше секунды, поскольку буферы org уже загружены.

(run-with-idle-timer 5 nil (lambda () (org-agenda-list) (delete-window)))
Мэтью Пизиак
источник
6

Не совсем ответ на ваш вопрос, но подумайте (setq org-agenda-sticky t). Это заставляет qкоманду скрывать буфер повестки дня, когда вы закончите с ним, а не закрывать его.

Результатом этого является то, что повестка дня вновь появится сразу, когда вы в следующий раз попросите ее, но она не будет обновлена ​​с тех пор, как вы в последний раз ее видели. Если вы хотите обновить его, вы всегда можете нажать gв повестке дня, чтобы восстановить его должным образом.

Стюарт Хикинботтом
источник