Настройка Org-Gcal для включения подзаголовков в Spacemacs

это немного сложный случай, поэтому я постараюсь быть максимально кратким.

Я хотел бы использовать подзаголовки (уровень 2+) в org-gcal в Spacemacs. Однако в настоящее время синхронизация допускает только синхронизацию уровня 1. Тем не менее, я вручную протестировал замену заголовков lvl 2 ** и заменил их -- (начало в начале строки или ^). Это позволяет org-gcal синхронизировать подзаголовки с разделом заметок Календаря Google, а мне позволяет делать быстрые заметки, пока я вне дома. Моя цель состояла бы в том, чтобы автоматизировать процедуру замены текста всех файлов *.org с указанным каталогом с помощью одной пользовательской команды и...

(a) преобразовать все ** @ начало строк в -- во всех файлах с указанным каталогом (b) запустить org-gcal-sync для синхронизации измененных файлов (c) после синхронизации файлов выполнить обратный процесс и преобразовать все - - вернуться к ** и разрешить функциональные возможности организационного режима просмотра столбцов и т. д.

В частности, я использую следующие пакеты... 1) https://github.com/sineer/spacemacs-calendar-layer (реализация org-gcal в Spacemacs) 2) http://melpa.org/#/xah -find (для замены текста)

Я сузил код до использования либо xah-find-replace-text, либо (предпочтительнее) xah-find-replace-text-regex. Однако я почти уверен, что у меня проблемы с регулярными выражениями, областью действия и командами lisp в целом. Подробности ниже. Чтобы было ясно, если следующее слишком сложно или есть гораздо более простое решение, я открыт для любых предложений. Заранее спасибо!!!

(xah-find-replace-text "aaa" "bbb" "~/emacs/org/Test/." ".org\'" "y" "y" "y" "y") 

Используя интерактивный режим (C-x C-e), я протестировал приведенное выше, и он заменит все экземпляры «aaa» на «bbb», но я бы предпочел использовать что-то более похожее на строки (xah-find-replace-text- регулярное выражение "^**" "--" "~/pathToDir" "y" "y" "y"), так как совпадения будут более специфичными для начала строки. Обратите внимание, что версия регулярного выражения принимает 7 параметров (по сравнению с xah-find-replace-text, который принимает 8).

В конце концов, я бы предпочел автоматизировать, поместив что-то подобное в мой файл .init/.Spacemacs...

(defun org-gcal-sync-subchildren ()
  (interactive)
  (xah-find-replace-text-regex "^\*\\*" "--"......etc.)
  (org-gcal-sync)
  (xah-find-replace-text-regex "^--" "**".......etc.))

Для справки: Орг-Гкал: 1) текущий выпуск: https://github.com/myuhe/org-gcal.el/issues/43

xah-find: 1) поиск обычного текста: https://github.com/xahlee/xah-find/blob/master/xah-find.el#L556 2) поиск и замена текста регулярных выражений: https://github.com /xahlee/xah-find/blob/master/xah-find.el#L642

Извините за битые ссылки, но моя репутация не позволяет мне публиковать больше двух.


person siegfried    schedule 02.03.2017    source источник
comment
@XahLee Вау, большое спасибо за ответ о вашей посылке! Я не ожидал, что вы лично ответите.   -  person siegfried    schedule 03.03.2017


Ответы (1)


Похоже, ваши проблемы - это регулярное выражение.

Это должно работать:

(xah-find-replace-text-regex "^\\*\\* " "-- " "~/emacs/org/Test/." "\\.org\\'" nil t t)

(xah-find-replace-text-regex "^-- " "** " "~/emacs/org/Test/." "\\.org\\'" nil t t)

Проверьте их. Если работает, замените nil на t (для записи файла)

Вам нужна двойная косая черта в строке elisp для регулярного выражения.

person Xah Lee    schedule 02.03.2017
comment
(все еще учусь отвечать, не теряя времени) (продолжение). Я признаю, что моего регулярного выражения крайне не хватает, особенно когда речь идет об elisp. Что касается вашего кода, я верю, что он работает, но мне еще нужно немного поработать с ним. Я не знал, что это работает только с заголовками 2-го уровня (например, "** " , "-- " и т. д.). Я попытался полностью удалить пробел, чтобы посмотреть, позволит ли это работать на всех подуровнях, но я получил сообщение об ошибке. Я поиграюсь с этим еще немного, но хотел бы знать, есть ли способ подавить выходной буфер xah-find? Спасибо - person siegfried; 03.03.2017
comment
@siegfried нет, не может подавить вывод, если вы не клонируете его и не закомментируете последнюю строку xah-find--switch-to-output. - person Xah Lee; 04.03.2017