如何在这里使用Emacs编辑问题,答案和评论?


58

Emacs作为StackExchange客户端?

如何在Emacs Stack Exchange网站上使用Emacs编辑问题,答案和评论?

广义上讲,存在哪些可能的方法?

杀死并猛拉

这行得通,但是该方法非常繁琐,以至于短篇甚至中篇文章都不值得。

浏览器插件

有一个相对知名的Firefox浏览器插件,可让您<textarea>在所选编辑器之间来回推送任何文本内容。我认为它可以通过临时文件运行,但我尚未对其进行评估。 在StackOverflow上已经讨论了将插件与emacs一起使用。我不再使用Chrome。

堆栈交换API

存在一种称为Emacs的堆栈交换模式。我还没有评估。 消息来源不是很陈旧,但是该项目显然没有完成。

还有其他选择吗?

我寻求建议!

动机

无论使用哪种方法在emacs中编辑问题,答案和评论,我都相信这样做可以使我们轻松地完成一些常见任务:

  • 遵守约定。诸如M-x record-keystrokes-and-write-them-out-as-markdown RET C-x C-s C-g RET...可能会产生:

    C-x C-s C-g

  • 询问错误消息是什么意思:M-x post-region-on-emacs-se-as-question RET...


我故意没有在问题中提到我是Linux用户。我是不是该?当然,我在工作时最常使用SE,在Windows主机上进行所有Internet浏览,在Linux VM中进行emacs工作...
daveloyall 2014年

Chrome Edit-with-emacs对我来说不是错误的……
mankoff 2014年

删除他或她的答案的用户会考虑将其放回原处吗?那里有一个有用的elisp函数。不可接受的答案是否以某种我不知道的方式对用户造成影响?
daveloyall 2014年

@daveloyall:我感兴趣的(你曾与Chrome浏览器的textarea解决的问题披露我是编辑与Emacs的维护者)。我很高兴用它和markdown-mode编辑StackExchange帖子。
stsquad 2014年

@stsquad好吧,我不确定。我没有安装它,所以我不确定我使用的是哪个版本。好的,我做了一点挖掘(只有一点点),我发现github.com/stsquad/emacs_chrome/issues上的许多主题行听起来就像我遇到的那种事情。基本上,如果某个站点上的javascript不能正常工作,那不是我想要的...无论如何,当更新永久禁用非网络商店扩展名时,例如我在本地编写的小扩展程序,我停止使用Chrome。
daveloyall 2014年

Answers:


33

请参阅Stack Exchange for Emacs项目。从他们的页面:

SX将成为GNU Emacs 24+的全功能堆栈交换模式。我们旨在使用官方API,为Emacs本身的Stack Exchange网络创建更加通用的体验。

屏幕截图


Artur Malabarba已承诺为其编写一种模式,请参阅:twitter.com/bruceconnor/status/520692859109117952我建议他坚持使用它:)
Lee H

@Malabarba我抱着你!:) ...事实上,如果这个想法得到了回购的支持,我很想接受它作为答案。并不是说我是互联网积分或其他任何东西的唯一来源...
daveloyall 2014年

我会坚持下去。:-)当前的预计到达时间是圣诞节前后。
Malabarba

1
我怎么没看到这个Q?:D有趣的是,该软件包在24.3上即开即用。@dharmatech-您介意将此问题发布吗?
肖恩·艾瑞德

3
哇,刚读了这篇,从melpa安装了sx.el,运行了它,在这里我正在使用它写评论。太棒了!
蒂姆X


7

w3m用来从Emacs提交此答案。在w3m中,StackExchange网站看起来不太好,但是提交表单就可以了。(我无法使用新的eww浏览器提交答案。)

我不建议您这样做,因为与使用具有类似Emacs的绑定的常规浏览器(例如Firefox的快捷键)相比,这似乎很痛苦。

编辑:我必须解决验证码才能提交我的答案。不幸的是,w3m缓冲区中未显示验证码,因此我不得不在传统浏览器中访问验证码URL。


5

我总是发现kill和yank足够了,但是我确实有我使用的stackoverflow特定的复制功能。

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

这需要像:

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

并将它们变成:

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

另外,我发现使用Emacs chrome扩展插件进行编辑非常好。


2
我建议用Emacs编辑作为单独的答案。而且我觉得它也不错,而不是马车。
mankoff 2014年

5

Keysnail为Firefox实现了Emacs的绑定。它还用作插件平台,以独特的Emacsesque方式扩展了Firefox的体系结构。


1
值得一提的是,有一个名为K2Emacs的Keysnail插件,让您在外部程序(默认为Emacs)中编辑文本区域。
奥马尔2014年

1

我一直在使用Firemacs,对此非常满意。这是一个firefox扩展,可为您提供emacs键盘绑定。它支持许多键绑定,包括kill和yank。

可以从这里安装。


1

您可以使用Firefox附加组件 “全部为文本”。这将在任何文本区域的底部添加一个微小的“编辑”按钮。单击它(或使用热键,默认为C-S-v)将Emacs的内容放入临时缓冲区中。写入缓冲区(重复),然后文本区域更新。

我的配置只是将Editor设置为/usr/bin/emacsclient

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.