Comment utiliser Emacs pour modifier des questions, des réponses et des commentaires ici?

58

Emacs en tant que client StackExchange?

Comment utiliser Emacs pour modifier des questions, des réponses et des commentaires ici sur le site Emacs Stack Exchange?

De manière générale, quelles sont les méthodes possibles?

Tuer et tirer

Cela fonctionne, mais la méthode est tellement lourde que cela n'en vaut pas la peine pour les publications courtes ou même les publications de taille moyenne.

Plugin de navigateur

Il existe un plug-in de navigateur relativement bien connu pour Firefox qui vous permet de déplacer le contenu textuel de n’importe quel rapport <textarea>entre l’éditeur de votre choix. Je suppose que cela fonctionne via des fichiers temporaires et je ne l’ai pas évalué. L'utilisation du plugin avec emacs a été discutée sur StackOverflow . Je n'utilise plus Chrome.

API Stack Exchange

Il existe quelque chose appelé Stack Exchange Mode for Emacs . Je ne l'ai pas évalué. La source n'est pas trop obsolète, mais le projet n'est évidemment pas terminé.

Autres options?

Je cherche des suggestions!

Les motivations

Quelle que soit la méthode utilisée pour modifier des questions, des réponses et des commentaires dans emacs, je suis persuadé que cela nous permettra d'effectuer facilement certaines tâches courantes:

  • Adhérer aux conventions . Quelque chose comme M-x record-keystrokes-and-write-them-out-as-markdown RET C-x C-s C-g RET... pourrait céder:

    C-x C-s C-g

  • Demandez ce qu'un message d'erreur signifie: M-x post-region-on-emacs-se-as-question RET...

daveloyall
la source
J'ai délibérément omis de mentionner dans ma question que je suis un utilisateur de Linux. Devrais-je? Bien sûr, j'utilise le plus souvent SE lorsque je suis au travail, où je navigue sur Internet sous un hôte Windows et où emacs fonctionne sous une machine virtuelle Linux ...
daveloyall
Chrome Edit-with-emacs n'est pas un buggy pour moi ...
mankoff
L'utilisateur qui a supprimé sa réponse envisage-t-il de la remettre? Il y avait une fonction elisp utile là-dedans. Les réponses non acceptées comptent-elles contre un utilisateur d'une manière que je ne connais pas?
daveloyall
@daveloyall: Je m'intéresse aux problèmes que vous avez rencontrés avec la solution Chrome textarea ( divulgation: je suis le responsable de l'édition avec Emacs). Je modifie volontiers les publications StackExchange avec elle et le mode Markdown.
Stsquad
@stsquad Eh bien, je ne suis pas sûr. Je ne l'ai plus installé, alors je ne suis pas sûr de la version que j'ai utilisée. Ok, j’ai fait un peu de fouille (seulement un peu) et j’ai trouvé que beaucoup de sujets ici github.com/stsquad/emacs_chrome/issues ressemblaient à ce que j’ai rencontré. Fondamentalement, si le javascript de certains sites peut empêcher le fonctionnement, ce n'est pas ce que je recherche ... Quoi qu'il en soit, j'ai arrêté d'utiliser Chrome lorsqu'une mise à jour désactivait de manière permanente les extensions non-Web-store, comme celles que j'avais écrites localement.
daveloyall

Réponses:

33

Voir le projet Stack Exchange for Emacs . De leur page:

SX sera un mode d’échange de piles complet pour GNU Emacs 24+. En utilisant l'API officielle, nous visons à créer une expérience plus polyvalente pour le réseau Stack Exchange au sein d'Emacs même.

capture d'écran

Dharmatech
la source
Artur Malabarba a promis d'écrire un mode pour elle, voir: twitter.com/bruceconnor/status/520692859109117952 je recommanderais le tenir à elle :)
Lee H
@Malabarba je vous tiens! :) ... En fait, si cette idée était appuyée par un repo, je serais très tenté de l'accepter comme une réponse. Pas que je sois l'unique source de points internet ou quoi que ce soit ...
daveloyall
Je vais y rester. :-) ETA actuel est autour de Noël.
Malabarba
1
Comment n'ai-je pas vu ce Q? : D Il est intéressant de noter que le paquet fonctionne immédiatement avec 24.3. @ dharmatech - cela vous dérangerait-il de poster cela comme un problème ?
Sean Allred
3
Wow, lisez ceci, installez sx.el depuis melpa, lancez-le et écrivez un commentaire en l'utilisant. Fantastique!
Tim X
11

edit-serverpourrait être utile. Il vous permet de modifier n'importe quel champ de texte dans Chrome avec Emacs, puis de renvoyer le texte au navigateur avec un minimum d'effort. Pas exactement ce que tu voulais, mais c'est une amélioration.

Jaseem
la source
quand vous dites edit-server, vous voulez dire le plug-in qui fonctionne avec Edit avec Emacs dans les navigateurs basés sur Chrom (ium)?
Stsquad
7

J'utilise w3mpour envoyer cette réponse depuis Emacs. Les sites StackExchange ne sont pas très jolis dans w3m, mais la soumission de formulaires fonctionne parfaitement. (Je n'ai pas pu envoyer de réponse avec le nouveau ewwnavigateur.)

Je ne recommande pas réellement de faire cela, car cela semble plutôt pénible comparé à l'utilisation d'un navigateur classique avec des liaisons de type Emacs (par exemple, une clé pour Firefox).

EDIT : Je devais résoudre un captcha pour soumettre ma réponse. Malheureusement, aucun captcha n'était affiché dans la mémoire tampon w3m, j'ai donc dû visiter l'URL captcha dans un navigateur traditionnel.

rekado
la source
5

J'ai toujours trouvé que tuer et tirer était suffisant, mais j'ai une fonction de copie spécifique de stackoverflow que j'utilise.

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

Ce qui prend des choses comme:

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

et les transformer en:

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

Alternativement, je trouve les extensions chromées Edit With Emacs très agréables.

Jordon Biondo
la source
2
Je suggérerais Edit With Emacs comme réponse séparée. Et je trouve ça sympa aussi, et pas buggy.
Mankoff
5

Keysnail implémente les liaisons de clé Emacs pour Firefox. Il sert également de plate-forme pour les plug-ins, prolongeant l'architecture de Firefox de manière distincte pour Emacsesque.

chen bin
la source
1
Il convient de mentionner qu’il existe un plugin appelé K2Emacs pour Keysnail, qui vous permet de modifier des zones de texte dans un programme externe (par défaut, Emacs).
Omar
1

J'utilise Firemacs et j'en suis très heureux. C'est une extension firefox qui vous donne le raccourci clavier d'Emacs. Il supporte de nombreuses combinaisons de touches, y compris kill et yank.

Il peut être installé à partir d' ici .

Sibi
la source
1

Vous pouvez utiliser le module complémentaire Firefox Tout le texte . Cela va ajouter un petit bouton "modifier" au bas de n'importe quelle zone de texte. En cliquant dessus (ou en utilisant un raccourci clavier, par défaut C-S-v), Emacs se déclenche avec le contenu dans un tampon temporaire. Ecrivez le tampon (plusieurs fois) et la zone de texte se met à jour.

Ma config pour cela est tout simplement mettre l' éditeur à /usr/bin/emacsclient.

Micah Elliott
la source