Режим Emacs для разметки Stack Overflow


96

Я использую Org-mode в Emacs для обработки всей моей технической документации. Я хотел бы использовать Emacs для подготовки вопросов, которые у меня есть для Stack Overflow. Есть ли для этого режим Emacs или, что еще лучше, расширение для режима Org для обработки форматирования переполнения стека? В идеале он должен включать все параметры форматирования, поддерживаемые синтаксисом уценки, используемым в буферах вопросов / комментариев Stack Overflow.


Те, кто читает этот вопрос, могут быть заинтересованы в SX - Stack Exchange for Emacs!
Шон Оллред,

Ответы:


144

Интеграция Emacs с Stack Overflow

Как уже упоминалось, вы можете использовать режим уценки . Чтобы интегрировать режим разметки с Stack Overflow, вы можете использовать плагин Firefox It's All Text, который позволяет редактировать текстовые поля с помощью внешнего редактора. Вот как это настроить:

  1. Установите markdown-mode . Если вы используете Debian или Ubuntu, вы можете установить его, выполнив

    sudo apt-get install emacs-goodies-el

    или если вы используете emacs 24 (или у вас есть package.el на emacs 23) и Marmalade или Melpa, вы можете установить его с помощью

    M-x package-install RET markdown-mode
  2. Установить все тексты .

  3. Установите в настройках «Это весь текст» использование Emacs. Вы можете установить его как исполняемый файл (например, / usr / bin / emacs) или emacsclient .
  4. Добавьте следующее в свой .emacs, чтобы включить режим разметки для текстовых полей Stack Overflow и Stack Exchange:

    ;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593
    (add-to-list 'auto-mode-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))

    В качестве альтернативы, если as-external-alistон определен - если M-x describe-variable RET as-external-alistне дает сбоев - он, вероятно, переопределит ваш auto-mode-alist. Он имеет немного другой формат (это список пар вместо списка cons-ячеек), поэтому это будет работать:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
  5. Нажмите синюю кнопку редактирования в правом нижнем углу текстового поля, чтобы отредактировать его через emacs. Синяя кнопка редактирования показана на следующем снимке экрана:

    Снимок экрана синей кнопки редактирования в правом нижнем углу этого текстового поля

    На следующем снимке экрана показан буфер Emacs в режиме уценки, редактирующий этот пост:

    Скриншот буфера Emacs в режиме уценки при редактировании этого сообщения

  6. Когда вы закончите редактирование в Emacs, сохраните буфер, чтобы отправить его в Firefox.

Если вам нужна эта функция для других доменов, вам необходимо изменить регулярное выражение выше. Следующее распознает Stack Exchange, Stack Overflow, Ask Ubuntu и Super User:

;; Integrate Emacs with Stack Exchange https://stackoverflow.com/a/10386560/789593
(add-to-list 'auto-mode-alist '("\\(stack\\(exchange\\|overflow\\)\\|superuser\\|askubuntu\\)\\.com\\.[a-z0-9]+\\.txt" . markdown-mode))

Использование markdown-mode с Org-mode

Чтобы использовать markdow-mode с Org-mode, вы можете использовать его функцию для работы с исходным кодом . С его помощью вы можете включать блоки уценки в свои буферы организационного режима, которые вы можете редактировать в режиме уценки. Вы можете использовать его следующим образом:

  1. Находясь в буфере организационного режима, введите <sновую строку и нажмите Tab. Это приведет к

    #+begin_src 
    
    #+end_src
  2. Введите markdownпосле, #+begin_srcчтобы у вас было

    #+begin_src markdown
    
    #+end_src
  3. Находясь внутри исходного блока (между #+begin_src markdownи #+end_src), нажмите, C-c 'чтобы отредактировать исходный блок в режиме уценки.

  4. Отредактируйте исходный блок в режиме уценки.

  5. Нажмите, C-c 'чтобы вернуться в буфер организационного режима и вставить редактирование. Это может выглядеть так, как показано на следующем снимке экрана:

    Буфер в организационном режиме редактирует блок кода уценки для этого поста


2
Если вы as-externalустановили (или nxhtml-mode, устанавливающие as-external) может полностью игнорировать вашу регулировку auto-mode-alist, переменные вы хотите изменить , то есть as-external-alist.
quodlibetor

@quodlibetor Мог бы я тогда изменить as-external-alistточно так же?
NN

@NN Это почти то же самое, но вам нужно извлечь период из внутренней ячейки, у меня есть это, и он работает для меня:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
quodlibetor

Возможно, вы можете обновить этот ответ, чтобы упомянуть SX - Stack Exchange для Emacs :)
Шон Оллред,

1
Его All Text больше не поддерживается и не будет работать с последними версиями firefox (57+)
Iain

14

Есть режим уценки: http://jblevins.org/projects/markdown-mode/

См. Http://emacswiki.org/emacs/MarkdownMode для некоторых настроек.

И здесь есть бэкэнд уценки для нового механизма экспорта: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb= ГЛАВА

Убедитесь, что вы добавили contrib/lisp/каталог в свой load-path.

Потом (require 'org-export)и (require 'org-md).

M-x org-md-export-to-markdown RET будет экспортировать по уценке.



Я нашел один базовый экспортер org-markdown: github.com/alexhenning/ORGMODE-Markdown
Nate Parsons

4

Ответ @NN применим и к Chrome, с этими изменениями в деталях.

В Chrome есть расширение Edit with Emacs , которое похоже на It's all text. После его установки вы найдете дальнейшие инструкции на странице параметров расширения.

Существует группа настройки emacs edit-serverс параметрами, наиболее важно, что основное изменение режима для каждого сайта настраивается иначе, чем в ответе @NN:

(add-to-list 'edit-server-url-major-mode-alist
             '("^stackoverflow" . markdown-mode))

Кроме того, чтобы сервер редактирования работал в терминале emacs, мне пришлось отключить эту edit-server-new-frameопцию.


1

Pandoc поддерживает чтение подмножества org-mode и может выводить уценку.

Другими словами, вы можете продолжать писать в организационном режиме, в том числе писать курсивом / вот так /, а затем экспортировать в уценку. Из emacs вы можете преобразовать его в уценку, выбрав регион, нажав Cu MS- \ и набрав pandoc -r org -t markdown, получив следующий результат:

In other words, you can keep writing in org-mode, including writing italics *like this*, and then export to markdown.

Или вы можете сохранить файл и преобразовать его в командной строке.


0

С Chrome тоже легко

Это не столько ответ, сколько проверка моего решения с использованием плагина Edit with Emacs chrome и сервера редактирования Emacs, настроенного для использования режима разметки для Stackoverflow (и других сайтов Stackexchange, которые я использую). Все, что мне нужно было сделать после установки расширения и пакетов MELPA, было установлено

(setq edit-server-url-major-mode-alist
             '(("mail.google.com" . org-mode)
               ("stackoverflow\\.com" . markdown-mode)
               (".*\\.stackexchange\\.com" . markdown-mode)
               ("github\\.com" . markdown-mode)))

Поддержка сообщений Gmail

Обратите внимание, что в приведенных выше настройках я использую org-mode для сообщений Gmail. Здесь все еще нужно проделать небольшую работу, но можно с небольшими усилиями составить черновик сообщения Gmail с использованием org-mode, а затем использовать org-mime для создания html из структурированного текста вашей организации. Вы можете просто использовать уценку и преобразование уценки в HTML.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.