首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在打开Python文件时加载Pymacs & Ropemacs?

只在打开Python文件时加载Pymacs & Ropemacs?
EN

Stack Overflow用户
提问于 2010-05-22 23:54:01
回答 3查看 2.4K关注 0票数 5

我使用Pymacs加载、ropemacs、rope,并在.emacs文件中使用如下所描述的这里

代码语言:javascript
复制
(autoload 'pymacs-load "pymacs" nil t)
(pymacs-load "ropemacs" "rope-")

然而,由于加载Ropemacs需要一段时间,Emacs的启动速度明显减慢。

我尝试了下面的行,但是每次打开文件时都会加载

代码语言:javascript
复制
(add-hook 'python-mode-hook (lambda () (pymacs-load "ropemacs" "rope-")))

在打开Python时,是否有一种方法可以执行pymacs-load操作,但前提是、ropemacs、和还没有加载?

EN

回答 3

Stack Overflow用户

发布于 2010-06-01 20:28:18

在我的.emacs中有:

代码语言:javascript
复制
(autoload 'python-mode "my-python-setup" "" t)

在一个单独的文件my-python-setup.el中,我保存了:

代码语言:javascript
复制
(require 'python)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
;; Initialize Pymacs
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)
;; Initialize Rope
(pymacs-load "ropemacs" "rope-")
(setq ropemacs-enable-autoimport t)

这样,Pymacsropemacs将只加载一次。当打开第一个.py文件时会发生这种情况。

票数 9
EN

Stack Overflow用户

发布于 2010-09-19 13:28:39

这就是eval-after-load的目的。

代码语言:javascript
复制
(eval-after-load "python-mode"
  '(progn
     ;; Do whatever you need to do here. It will only get executed
     ;; after python-mode.el has loaded.
     (require 'pymacs)
     (pymacs-load "ropemacs" "rope-")))

如果您使用python-mode.el.而不是python.el,则需要编写"python“而不是”python模式“。

实际上,我的ropemacs加载代码位于一个可以交互调用的单独函数中。这是因为偶尔ropemacs会为我崩溃,当它崩溃时,我只需要调用该函数来重新加载它。

票数 2
EN

Stack Overflow用户

发布于 2011-03-08 14:30:09

这是我的解决办法:

代码语言:javascript
复制
(defun my-python-hook-mode ()
  (interactive)
  (require 'pymacs)
  (autoload 'pymacs-apply "pymacs")
  (autoload 'pymacs-call "pymacs")
  (autoload 'pymacs-eval "pymacs" nil t)
  (autoload 'pymacs-exec "pymacs" nil t)
  (autoload 'pymacs-load "pymacs" nil t)
  (ac-ropemacs-setup)
  (setq ropemacs-confirm-saving 'nil)
  (ropemacs-mode t)
  (define-key python-mode-map "\C-m" 'newline-and-indent)
 )
(add-hook 'python-mode-hook 'my-python-hook-mode)

其中ac-ropemacs-setup是在自动完成模块中定义的:

代码语言:javascript
复制
(defun ac-ropemacs-require ()
  (with-no-warnings
    (unless ac-ropemacs-loaded
      (pymacs-load "ropemacs" "rope-")
      (if (boundp 'ropemacs-enable-autoimport)
          (setq ropemacs-enable-autoimport t))
      (setq ac-ropemacs-loaded t))))

(defun ac-ropemacs-setup ()
  (ac-ropemacs-require)
  ;(setq ac-sources (append (list 'ac-source-ropemacs) ac-sources))
  (setq ac-omni-completion-sources '(("\\." ac-source-ropemacs))))

该解决方案假设您同时使用自动完成

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

https://stackoverflow.com/questions/2890199

复制
相关文章

相似问题

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