用于堆栈溢出减价的Emacs模式


96

我正在Emacs中使用组织模式来处理我的所有技术文档。我想使用Emacs来准备关于Stack Overflow的问题。是否有一个Emacs模式,甚至更好的是,组织模式的扩展来处理堆栈溢出格式?理想情况下,它应包括Stack Overflow问题/评论缓冲区中使用的markdown语法支持的所有格式选项。


那些阅读此问题的人可能对SX
肖恩·艾瑞德

Answers:


144

将Emacs与堆栈溢出集成

如前所述,您可以使用markdown-mode。要将markdown-mode与Stack Overflow集成在一起,可以使用Firefox插件It's All Text,该插件使您可以使用外部编辑器编辑textarea。设置方法如下:

  1. 安装markdown-mode。如果您使用Debian或Ubuntu,则可以通过发出以下命令进行安装

    sudo apt-get install emacs-goodies-el

    或者,如果您使用的是emacs 24(或emacs 23上的package.el)和果酱Melpa,则可以使用

    M-x package-install RET markdown-mode
  2. 安装全部内容

  3. 设置所有文本的首选项以使用Emacs。您可以将其设置为可执行文件(例如/ usr / bin / emacs)或emacsclient
  4. 将以下内容添加到您的.emacs中,以为堆栈溢出和堆栈交换文本区域启用markdown模式:

    ;; 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。它的格式略有不同(它是对列表而不是con单元格列表),因此可以正常工作:

    (add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+\\.txt" markdown-mode))
  5. 按下文本区域右下角的蓝色编辑按钮,以通过emacs对其进行编辑。以下屏幕截图显示了蓝色的编辑按钮:

    此文本区域右下角的蓝色编辑按钮的屏幕截图

    在以下屏幕截图中,是以markdown模式编辑此帖子的Emacs缓冲区:

    Markdown模式下的Emacs缓冲区的屏幕快照

  6. 在Emacs中完成编辑后,保存缓冲区以将其发送到Firefox。

如果您需要其他域的此功能,则需要更改上面的正则表达式。以下内容可识别堆栈交换,堆栈溢出,询问Ubuntu和超级用户:

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

将markdown模式与Org模式一起使用

要将markdow-mode与Org-mode一起使用,您可以使用其功能处理源代码。有了它,您可以在组织模式缓冲区中包括markdown块,您可以通过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 '以markdown模式编辑源代码块。

  4. 在markdown模式下编辑源代码块。

  5. C-c '返回到组织模式缓冲区并插入编辑。看起来就像以下屏幕截图所示:

    组织模式缓冲区为该帖子编辑降价代码块


2
如果您已经as-external安装(或nxhtml-mode它安装as-external),它可能会完全忽略你的调整auto-mode-alist,你要修改的变量,然后as-external-alist
quodlibetor 2012年

@quodlibetor我会as-external-alist以完全相同的方式修改吗?
NN 2012年

@NN几乎完全一样,但是您需要从内部单元格中取出句点,我已经有了,它对我(add-to-list 'as-external-alist '("stack\\(exchange\\|overflow\\)\\.com\\.[a-z0-9]+" markdown-mode))
有用

也许您可以更新此答案以提及SX — Emacs的Stack Exchange:)
Sean Allred

1
它的“所有文本”已不再受支持,并且无法在最新版本的Firefox(57+)中运行
Iain

14

有markdown模式:http : //jblev​​ins.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 将导出到降价。



我找到了一个基本的org-markdown导出器:github.com/alexhenning/ORGMODE-Markdown
Nate Parsons

4

@NN的答案也适用于Chrome,但这些细节有所更改。

Chrome浏览器具有Edit with Emacs扩展名,类似于It's all text。安装后,您将在扩展选项页面中找到更多说明。

有一个edit-server带有选项的emacs定制组,最重要的是,每个站点的主要模式更改的配置与@NN的答案不同:

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

另外,为了使编辑服务器在终端emacs中工作,我必须禁用该edit-server-new-frame选项。


1

Pandoc支持读取组织模式的子集,并且可以输出markdown。

换句话说,您可以继续以org模式书写,包括以斜体//像this /这样写,然后导出到markdown。从emacs中,您可以通过选择区域,单击Cu MS- \并键入pandoc -r org -t markdown来转换为markdown,获得如下输出:

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

或者,您可以保存文件并在命令行将其转换。


0

Chrome太简单了

这不是解决方案测试的答案,而是使用Emacs chrome插件编辑和 配置为 对Stackoverflow 使用markdown-mode(以及我使用的其他Stackexchange网站)的Emacs Edit Server进行的解决方案测试 。设置了扩展和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邮件使用组织模式。仍然需要在这里做一些工作,但是可以通过一点努力来使用org-mode起草您的gmail消息,然后使用org-mime从您的组织结构化文本中生成html。您可以只使用markdown和markdown进行html转换。

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.