首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs模式Python源代码块不使用python-mode.el导出。

Emacs模式Python源代码块不使用python-mode.el导出。
EN

Stack Overflow用户
提问于 2014-03-21 17:19:37
回答 2查看 693关注 0票数 1

最近,我将Emacs设置配置为使用python-mode.el而不是python.el。此更改显然导致org模式不再能够导出python源块,正如我所得到的。

代码语言:javascript
复制
org-export-format-source-code-or-example: "End of buffer"

作为导出后的唯一消息,并且不生成导出文件。

我想知道这是为什么,我能做些什么来解决这个问题。我的python-mode.el是通过el-get安装的(我不认为这很重要)。它加载在我的init文件中,如下所示:

代码语言:javascript
复制
(add-to-list 'load-path "~/.emacs.d/el-get/python-mode/")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))

下面是产生此错误的示例:

代码语言:javascript
复制
This is a test.

#+BEGIN_SRC python
  print "Hello, World"
#+END_SRC

下面是我在信息中看到的:

代码语言:javascript
复制
Export buffer: 
Exporting...
org-babel-exp processing...
org-export-format-source-code-or-example: End of buffer
EN

回答 2

Stack Overflow用户

发布于 2014-10-10 11:55:34

在我的配置中,

  • GNU Emacs 24.3.1,
  • python-模式6.1.3,
  • org 20141006

我也有同样的问题。当我跟踪导致这个错误的原因时,我发现org-html-fontifiy-codeox-html.el中导致了这个错误。特别是下面的代码块:

代码语言:javascript
复制
(save-excursion
  (let ((beg (point-min))
        (end (point-max)))
    (goto-char beg)
    (while (progn (end-of-line) (< (point) end))
       (put-text-property (point) (1+ (point)) 'face nil)
       (forward-char 1))))

通常,在while循环的最后一次迭代中,put-text-property之前的点通常有值(1- (point-max)),将文本属性(不改变点)放入文本属性,然后调用forward-char将点移动到(point-max),并停止then循环。

奇怪的是,在python源代码块中,put-text-property将点移动到(1+ (point))。因此,在最后一次迭代中,put-text-property将点移动到(1+ (point)),因此点已经位于(point-max),因此调用forward-char时会出现“缓冲区结束”错误。

我在python模式下嗅到了鱼的味道;也许它们安装了一些钩子函数或者什么东西来使put-text-property移动点?我没有把握。对于猴子补丁,下面是上面代码块的脏补丁:

代码语言:javascript
复制
(save-excursion
  (let ((beg (point-min))
        (end (point-max)))
    (goto-char beg)
    (while (progn (end-of-line) (< (point) end))
      (let ((oldpos (point)))
        (put-text-property (point) (1+ (point)) 'face nil)
        (goto-char oldpos))
      (forward-char 1))))

对不起,我太懒了,但是有人能把这个发到org模式/python模式的邮件列表吗?

票数 1
EN

Stack Overflow用户

发布于 2014-03-21 19:59:21

导出源代码时,不查询语言模式.

这是出口商的事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22565379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档