Автоматически переключать язык в Gnus в зависимости от получателя

При использовании моей пользовательской версии словаря th-message-switch-ispell (см. http://lists.gnu.org/archive/html/info-gnus-english/2007-08/msg00062.html):

(defun my-message-switch-ispell-dictionary ()
  (save-excursion
    (message-narrow-to-headers-or-head)
    (let ((newsgroups (message-fetch-field "Newsgroups"))
          (to         (message-fetch-field "To")))
      (message "Newsgroup or To = %s." (or newsgroups to))
      (if newsgroups
          (cond ((string-match (rx bol "fr.") newsgroups)
                 (ispell-change-dictionary "francais"))
                (t
                 (ispell-change-dictionary "american")))
        ;; email
        (ispell-change-dictionary "francais")))))

(add-hook 'message-setup-hook 'my-message-switch-ispell-dictionary)

Я испытываю ошибку:

message-position-on-field: Search failed: "^--text follows this line--$"

при создании почты или поста (и "--текст следует за этой строкой--" больше не присутствует)...

Любая идея о том, что идет не так там?


person user3341592    schedule 04.03.2014    source источник


Ответы (1)


Я не уверен, почему --text follows this line-- не вставляется. В качестве альтернативы попробуйте изменить приведенную выше функцию следующим образом.

(require 'sendmail)
(defun my-message-switch-ispell-dictionary ()
  (save-excursion
    (narrow-to-region (point-min) (mail-header-end))            ;; changed this line
    (let ((newsgroups (message-fetch-field "Newsgroups"))
          (to         (message-fetch-field "To")))
      (message "Newsgroup or To = %s." (or newsgroups to))
      (if newsgroups
          (cond ((string-match (rx bol "fr.") newsgroups)
                 (ispell-change-dictionary "francais"))
                (t
                 (ispell-change-dictionary "american")))
        ;; email
        (ispell-change-dictionary "francais")))))

(add-hook 'message-setup-hook 'my-message-switch-ispell-dictionary)

Добавленная строка делает то же самое, что и (message-narrow-to-headers-or-head), но не полагается на вставку ("--text следует за этой строкой--") mail-header-separator.

person Community    schedule 04.03.2014
comment
Это не помогло. Тем не менее, приведенное выше хорошо работает, если я прокомментирую следующую строку gnus-alias: - person user3341592; 05.03.2014
comment
;; (add-hook 'message-setup-hook' gnus-alias-determine-identity) - person user3341592; 05.03.2014
comment
Я попытался найти gnus-alias-determine-identity, он НЕ включен в vanilla emacs, возможно, вам придется установить его отдельно. Я нашел копию по адресу (github.com/emacsmirror/gnus-alias). Кстати, если комментирование строки работает (и вам это не нужно), рассмотрите возможность его полного удаления. - person ; 05.03.2014
comment
Мне это нужно... так как у меня разные личности (для работы, для друзей и т. д.) и вы можете изменить его на лету, в отличие от стиля gnus-постинга... Спасибо за помощь! - person user3341592; 05.03.2014