Режим Emacs для зменшення розміру стека


96

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


Тих, хто читає це запитання, може зацікавити SX - Stack Exchange для Emacs!
Шон Олред

Відповіді:


144

Інтеграція Emacs із переповненням стеку

Як вже згадувалося, ви можете використовувати режим знижки . Для інтеграції режиму розмітки із Stack Overflow ви можете використовувати плагін Firefox Це весь текст, який дозволяє редагувати текстові області за допомогою зовнішнього редактора. Ось як це налаштувати:

  1. Встановіть режим знижки . Якщо ви використовуєте 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. Він має дещо інший формат (це список пар замість списку комірок мінусів), тому це буде працювати:

    (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))

Використання режиму знижки з організаційним режимом

Для використання режиму розмітки з організаційним режимом ви можете використовувати його функцію для роботи з вихідним кодом . За допомогою нього ви можете включати блоки націнки всередині буферів організаційного режиму, які ви можете редагувати за допомогою режиму розмітки. Ви можете використовувати його наступним чином:

  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 for Emacs :)
Шон Олред

1
Весь його текст більше не підтримується і не працюватиме з останніми версіями 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 експортуватиме до знижки.



Я знайшов одного основного експортера організаційних націнок
Нейт Парсонс,

4

Відповідь @ NN стосується і Chrome, з урахуванням детальних змін.

Chrome має редагування з розширенням Emacs , схоже на Це все текст. Після його встановлення ви знайдете подальші вказівки на сторінці опцій розширення.

Існує група налаштувань emacs edit-serverз опціями, головне, основна зміна режиму для кожного сайту налаштована інакше, ніж у відповіді @ NN:

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

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


1

Pandoc має підтримку для читання підмножини організаційного режиму і може виводити націнку.

Іншими словами, ви можете продовжувати писати в організаційному режимі, включаючи курсив / подібний до цього /, а потім експортувати до націнки. З 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 з 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

Зауважте, у наведеному вище налаштуванні я використовую режим організації для повідомлень gmail. Потрібно ще трохи попрацювати тут, але можна, доклавши трохи зусиль, скласти своє повідомлення gmail за допомогою org-режиму, а потім використовувати org-mime для створення html із вашого структурованого тексту організації. Ви можете просто скористатися знижкою та конвертацією в HTML.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.