Tryb Emacsa dla przeceny Stack Overflow

96

Używam trybu organizacji w Emacsie do obsługi całej mojej dokumentacji technicznej. Chciałbym użyć Emacsa do przygotowania pytań, które mam dla Stack Overflow. Czy jest do tego tryb Emacsa, czy nawet lepiej, rozszerzenie trybu organizacji do obsługi formatowania przepełnienia stosu? Najlepiej byłoby, gdyby zawierał wszystkie opcje formatowania obsługiwane przez składnię przecen używaną w buforach pytań / komentarzy przepełnienia stosu.

blueFast
źródło
Osoby czytające to pytanie mogą być zainteresowane SX - Stack Exchange for Emacs!
Sean Allred

Odpowiedzi:

144

Integracja Emacsa z przepełnieniem stosu

Jak wspomniano , możesz użyć trybu przeceny . Aby zintegrować tryb markdown ze Stack Overflow, możesz użyć wtyczki do Firefoksa It's All Text, która umożliwia edycję obszarów tekstu za pomocą zewnętrznego edytora. Oto jak to skonfigurować:

  1. Zainstaluj tryb markdown . Jeśli używasz Debiana lub Ubuntu, możesz go zainstalować, wydając

    sudo apt-get install emacs-goodies-el

    lub jeśli jesteś na emacsie 24 (lub masz package.el na emacs 23) i Marmalade lub Melpa , możesz zainstalować go z

    M-x package-install RET markdown-mode
  2. Zainstaluj to wszystko tekst .

  3. Ustaw preferencje To wszystko, aby używać Emacsa. Możesz albo ustawić go na plik wykonywalny (np. / Usr / bin / emacs), albo na emacsclient .
  4. Dodaj następujące elementy do swojego .emacs, aby włączyć tryb przeceny dla obszarów tekstowych Stack Overflow i 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))

    Alternatywnie, jeśli as-external-alistjest zdefiniowane - jeśli M-x describe-variable RET as-external-alistnie zawiedzie - prawdopodobnie zastąpi twoje auto-mode-alist. Ma nieco inny format (jest to lista par zamiast listy komórek wad), więc zadziała:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
  5. Naciśnij niebieski przycisk edycji w prawym dolnym rogu obszaru tekstowego, aby edytować go przez emacs. Na poniższym zrzucie ekranu pokazano niebieski przycisk edycji:

    Zrzut ekranu z niebieskim przyciskiem edycji w prawym dolnym rogu tego obszaru tekstowego

    Na poniższym zrzucie ekranu jest bufor Emacsa w trybie markdown edytując ten post:

    Zrzut ekranu bufora Emacsa w trybie przeceny, edytując ten post

  6. Po zakończeniu edycji w Emacsie zapisz bufor, aby wysłać go do przeglądarki Firefox.

Jeśli chcesz korzystać z tej funkcji w innych domenach, musisz zmienić powyższe wyrażenie regularne. Poniższe rozpoznaje wymianę stosu, przepełnienie stosu, zapytaj Ubuntu i 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))

Używanie trybu markdown z trybem organizacyjnym

Aby użyć trybu markdow z trybem organizacji, możesz użyć jego funkcji do pracy z kodem źródłowym . Dzięki niemu możesz umieszczać bloki przecen w buforach trybu organizacji, które możesz edytować w trybie przeceny. Możesz go użyć w następujący sposób:

  1. Będąc w buforze w trybie organizacyjnym, wprowadź <snowy wiersz i naciśnij Tab. Spowoduje to

    #+begin_src 
    
    #+end_src
  2. Wejdź markdownpo #+begin_src, aby mieć

    #+begin_src markdown
    
    #+end_src
  3. Wewnątrz bloku źródłowego (pomiędzy #+begin_src markdowni #+end_src) naciśnij, C-c 'aby edytować blok źródłowy w trybie przeceny.

  4. Edytuj blok źródłowy w trybie przeceny.

  5. Naciśnij, C-c 'aby powrócić do bufora trybu organizacyjnego i wstawić zmianę. Może to wyglądać tak, jak przedstawia poniższy zrzut ekranu:

    Bufor w trybie organizacyjnym edytujący blok kodu przeceny dla tego posta

NN
źródło
2
Jeśli masz as-externalzainstalowany (lub nxhtml-modektóre instaluje as-external) może całkowicie zignorować regulację auto-mode-alist, zmienna chcesz zmodyfikować , a następnie jest as-external-alist.
quodlibetor
@quodlibetor Czy w takim razie zmieniłbym as-external-alistdokładnie w ten sam sposób?
NN
@NN To prawie dokładnie to samo, ale musisz wyjąć okres z wewnętrznej komórki, mam to i działa dla mnie:(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
quodlibetor
Być może możesz zaktualizować tę odpowiedź, aby wspomnieć o SX - Stack Exchange for Emacs :)
Sean Allred
1
Cały tekst nie jest już obsługiwany i nie będzie działać z najnowszymi wersjami przeglądarki Firefox (57+)
Iain
14

Istnieje tryb przeceny: http://jblevins.org/projects/markdown-mode/

Zobacz http://emacswiki.org/emacs/MarkdownMode dla pewnych dostosowań.

I istnieje zaplecze Markdown dla nowego silnika eksportu tutaj: http://orgmode.org/w/?p=org-mode.git;a=blob_plain;f=contrib/lisp/org-md.el;hb= GŁOWA

Upewnij się, że dodajesz contrib/lisp/katalog do swojego load-path.

Wtedy (require 'org-export)i (require 'org-md).

M-x org-md-export-to-markdown RET będzie eksportować do przeceny.

bzg
źródło
4

Odpowiedź @ NN dotyczy również Chrome, z tymi zmianami w szczegółach.

Chrome ma Edycję z Emacsem rozszerzenie , które jest podobne do It all text. Po zainstalowaniu znajdziesz dalsze instrukcje na stronie opcji rozszerzenia.

Istnieje grupa dostosowywania emacsa edit-serverz opcjami, co najważniejsze, główna zmiana trybu dla każdej witryny jest skonfigurowana inaczej niż w odpowiedzi @ NN:

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

Ponadto, aby serwer edycji działał w terminalu emacs, musiałem wyłączyć tę edit-server-new-frameopcję.

ristohietal
źródło
1

Pandoc obsługuje odczytywanie podzbioru trybu org i może wyświetlać przeceny.

Innymi słowy, możesz pisać dalej w trybie org, włączając w to pisanie kursywy / w ten sposób /, a następnie eksportować do markdown. Z emacsa możesz przekonwertować na markdown, wybierając region, naciskając Cu MS- \ i wpisując pandoc -r org -t markdown, uzyskując wynik w następujący sposób:

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

Możesz też zapisać plik i przekonwertować go w wierszu poleceń.

Sandra
źródło
0

Z Chrome też jest to łatwe

To mniej odpowiedź niż test mojego rozwiązania przy użyciu wtyczki Edit with Emacs chrome i serwera edycji Emacs skonfigurowanego do używania trybu markdown dla Stackoverflow (i innych stron Stackexchange, których używam). Wszystko, co musiałem zrobić po zainstalowaniu rozszerzenia i pakietach MELPA było ustawione

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

Obsługa wiadomości Gmail

Uwaga w powyższym ustawieniu używam trybu organizacji dla wiadomości w Gmailu. Nadal trzeba tu trochę popracować, ale przy odrobinie wysiłku można sporządzić szkic wiadomości Gmail w trybie org, a następnie użyć funkcji org-mime do wygenerowania kodu HTML z tekstu strukturalnego organizacji. Możesz po prostu użyć przeceny i konwersji na HTML.

Tim X
źródło