лучший способ изменить значение defconst для конкретного сеанса? (Emacs) - PullRequest
0 голосов
/ 20 мая 2010

Я хочу изменить значение

(defconst org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M>")
  "Formats for `format-time-string' which are used for time stamps.
It is not recommended to change this constant.")

до

'("<%Y-%m-%d %a>" . "<%H:%M>")

Не всегда, но для определенных сеансов в режиме org, даже если известно, что значения defconst на самом деле не предназначены для изменения. Интересно, есть ли хороший способ сделать это?

Спасибо ...

Редактировать: Я полагаю, что моя главная цель состоит в том, чтобы иметь возможность вставить отметку времени, содержащую только часы и минуты, что аналогичным образом может быть выполнено с помощью defadvice на отметке времени org или какими-то другими средствами?

1 Ответ

2 голосов
/ 11 октября 2010

Вы можете использовать совет для решения этой проблемы.

(defadvice org-time-stamp (around org-time-stamp-new-format activate)
  "change the org time-stamp when desired"
  (let ((org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%H:%M>")))
    ad-do-it))
;; control whether it is active via
;; M-x ad-activate org-time-stamp
;; M-x ad-deactivate org-time-stamp

Или вы можете установить переменную, которая управляет поведением:

(defvar use-new-org-timestamp t)
(defadvice org-time-stamp (around org-time-stamp-new-format activate)
  "change the org time-stamp when desired"
  (let ((org-time-stamp-formats (if use-new-org-timestamp
                                    '("<%Y-%m-%d %a>" . "<%H:%M>")
                                  org-time-stamp-formats)))
    ad-do-it))
...