Wie kann ich mit Emacs hier Fragen, Antworten und Kommentare bearbeiten?

58

Emacs als StackExchange-Client?

Wie kann ich mit Emacs Fragen, Antworten und Kommentare hier auf der Emacs Stack Exchange-Site bearbeiten?

Welche möglichen Methoden gibt es?

Töte und reiße

Das funktioniert, aber die Methode ist so umständlich, dass es sich nicht lohnt, kurze oder mittelgroße Beiträge zu schreiben.

Browser-Plugin

Es gibt ein relativ bekanntes Browser-Plugin für Firefox, mit dem Sie den Textinhalt beliebiger <textarea>Elemente zwischen den Editoren Ihrer Wahl verschieben können. Ich vermute, es funktioniert über temporäre Dateien und ich habe es nicht ausgewertet. Die Verwendung des Plugins mit Emacs wurde in StackOverflow erörtert . Ich benutze Chrome nicht mehr.

Stack Exchange API

Es gibt einen sogenannten Stapelaustauschmodus für Emacs . Ich habe es nicht bewertet. Die Quelle ist nicht zu alt, aber das Projekt ist offensichtlich nicht abgeschlossen.

Andere Optionen?

Ich suche Vorschläge!

Motivationen

Unabhängig davon, welche Methode zum Bearbeiten von Fragen, Antworten und Kommentaren in Emacs verwendet wird, können wir auf diese Weise einige allgemeine Aufgaben problemlos ausführen:

  • Konventionen einhalten . So etwas wie M-x record-keystrokes-and-write-them-out-as-markdown RET C-x C-s C-g RET... könnte ergeben:

    C-x C-s C-g

  • Fragen Sie, was eine Fehlermeldung bedeutet: M-x post-region-on-emacs-se-as-question RET...

daveloyall
quelle
Ich habe in meiner Frage bewusst nicht erwähnt, dass ich ein Linux-Benutzer bin. Sollte ich? Natürlich benutze ich SE am häufigsten, wenn ich auf der Arbeit bin, wo ich all mein Surfen im Internet auf einem Windows-Host mache und Emacs auf einer Linux-VM
funktionieren
Chrome Edit-with-Emacs ist nicht
fehlerhaft
Würde der Benutzer, der seine Antwort gelöscht hat, erwägen, sie zurückzusetzen? Dort gab es eine nützliche Elisp-Funktion. Werden nicht akzeptierte Antworten in irgendeiner Weise gegen einen Benutzer gewertet, von dem ich nichts weiß?
Daveloyall
@daveloyall: Mich interessiert, welche Probleme Sie mit der Chrome-Textarea-Lösung hatten ( Offenlegung, dass ich der Maintainer von Edit with Emacs bin). Ich bearbeite recht gerne StackExchange Posts damit und im Markdown-Modus.
Stsquad
@ Stsquad Nun, ich bin nicht sicher. Ich habe es nicht mehr installiert, daher bin ich mir nicht sicher, welche Version ich verwendet habe. Ok, ich habe ein bisschen gegraben (nur ein bisschen) und festgestellt, dass viele der Betreffzeilen hier github.com/stsquad/emacs_chrome/issues so klingen, wie ich es erlebt habe. Grundsätzlich ist es nicht das, wonach ich suche, wenn das Javascript auf einer Website dazu führt, dass es nicht funktioniert ... Trotzdem habe ich die Verwendung von Chrome eingestellt, als ein Update Erweiterungen, die nicht zum Webshop gehören, dauerhaft deaktivierte, wie die kleinen, die ich lokal geschrieben habe.
Daveloyall

Antworten:

33

Siehe das Stack Exchange für Emacs- Projekt. Von ihrer Seite:

SX wird ein voll ausgestatteter Stapelaustauschmodus für GNU Emacs 24+ sein. Mit der offiziellen API möchten wir eine vielseitigere Erfahrung für das Stack Exchange-Netzwerk in Emacs selbst schaffen.

Bildschirmfoto

Dharmatech
quelle
Artur Malabarba hat versprochen, einen Modus dafür zu schreiben, siehe: twitter.com/bruceconnor/status/520692859109117952 Ich würde empfehlen, ihn daran zu halten :)
Lee H
@Malabarba Ich halte dich daran! :) ... Wenn diese Idee von einem Repo unterstützt würde, wäre ich sehr versucht, sie als Antwort zu akzeptieren. Nicht, dass ich die einzige Quelle für Internet Points oder
ähnliches wäre
Ich bleibe dabei. :-) Die aktuelle ETA ist um Weihnachten.
Malabarba
1
Wie habe ich dieses Q nicht gesehen? : D Interessanterweise funktioniert das Paket am 24.3. @dharmatech - würde es Ihnen etwas ausmachen , das als Problem zu veröffentlichen ?
Sean Allred
3
Wow, lies einfach das, installiere sx.el von melpa, starte es und hier schreibe ich einen Kommentar damit. Fantastisch!
Tim X
11

edit-serverkönnte hilfreich sein. Damit können Sie jedes Textfeld in Chrome mit Emacs bearbeiten und den Text dann mit minimalem Aufwand an den Browser zurücksenden. Nicht genau das, was Sie wollten, aber es ist eine Verbesserung.

Jaseem
quelle
wenn du edit-server sagst, meinst du damit das Plugin, das mit Edit with Emacs in Chrom (ium) basierten Browsern funktioniert?
Stsquad
7

Ich verwende w3m, um diese Antwort innerhalb von Emacs einzureichen. Die StackExchange-Sites sehen in w3m nicht besonders gut aus, aber das Senden von Formularen funktioniert einwandfrei. (Ich konnte mit dem neuen ewwBrowser keine Antwort senden .)

Ich empfehle dies nicht wirklich zu tun, da es im Vergleich zur Verwendung eines normalen Browsers mit Emacs-ähnlichen Bindungen (z. B. Keysnail für Firefox) ziemlich schmerzhaft zu sein scheint.

EDIT : Ich musste ein Captcha lösen, um meine Antwort einzureichen. Leider wurde im w3m-Puffer kein Captcha angezeigt, so dass ich die Captcha-URL in einem herkömmlichen Browser aufrufen musste.

rekado
quelle
5

Ich habe immer festgestellt, dass kill und yank ausreichen, aber ich verwende eine Stackoverflow-spezifische Kopierfunktion.

(defun copy-el-for-so (beg end)
  "copy region and format for SO."
  (interactive "r")
  (let ((text (buffer-substring-no-properties beg end)))
    (with-temp-buffer
      (insert "<!--Language: lang-lisp -->\n")
      (replace-string "\n" "\n    " nil (point)
                      (progn
                        (insert "\n" text)
                        (point)))
      (copy-region-as-kill (point-min) (point-max))
      (message "copied"))))

Wofür braucht man Dinge wie:

(defun process-exit-code-and-output (program &rest args)
  "Run PROGRAM with ARGS and return the exit code and output in a list."
  (with-temp-buffer
    (list (apply 'call-process program nil (current-buffer) nil args)
          (buffer-string))))

und verwandle sie in:

<!--Language: lang-lisp -->

    (defun process-exit-code-and-output (program &rest args)
      "Run PROGRAM with ARGS and return the exit code and output in a list."
      (with-temp-buffer
        (list (apply 'call-process program nil (current-buffer) nil args)
              (buffer-string))))

Alternativ finde ich die Chrome-Erweiterungen von Edit With Emacs sehr schön.

Jordon Biondo
quelle
2
Ich würde Edit With Emacs als separate Antwort vorschlagen. Und ich finde es auch schön und nicht buggy.
mankoff
5

Keysnail implementiert Emacs-Tastenkombinationen für Firefox. Es dient auch als Plattform für Plug-Ins und erweitert die Architektur von Firefox auf eine unverwechselbare Weise.

chen bin
quelle
1
Erwähnenswert ist, dass es ein Plugin namens K2Emacs for Keysnail gibt, mit dem Sie Textbereiche in einem externen Programm bearbeiten können (standardmäßig Emacs).
Omar
1

Ich habe Firemacs benutzt und war sehr zufrieden damit. Es ist eine Firefox-Erweiterung, mit der Sie Emacs-Tastenkombinationen erstellen können. Es unterstützt viele Tastenkombinationen, einschließlich Kill und Yank.

Es kann von hier aus installiert werden .

Sibi
quelle
1

Sie können das Firefox- Add-on It's All Text verwenden . Dies fügt eine winzige Schaltfläche "Bearbeiten" am unteren Rand eines beliebigen Textbereichs hinzu. Wenn Sie darauf klicken (oder einen Hotkey verwenden, Standardeinstellung C-S-v), wird Emacs mit dem Inhalt in einem temporären Puffer gestartet. Schreiben Sie den Puffer (wiederholt) und aktualisieren Sie den Textbereich.

Meine Config dafür setzt einfach Editor auf /usr/bin/emacsclient.

Micah Elliott
quelle