我使用Pymacs加载、ropemacs、和rope,并在.emacs文件中使用如下所描述的这里。
(autoload 'pymacs-load "pymacs" nil t)
(pymacs-load "ropemacs" "rope-")然而,由于加载Ropemacs需要一段时间,Emacs的启动速度明显减慢。
我尝试了下面的行,但是每次打开文件时都会加载:
(add-hook 'python-mode-hook (lambda () (pymacs-load "ropemacs" "rope-")))在打开Python时,是否有一种方法可以执行pymacs-load操作,但前提是、ropemacs、和还没有加载?
发布于 2010-06-01 20:28:18
在我的.emacs中有:
(autoload 'python-mode "my-python-setup" "" t)在一个单独的文件my-python-setup.el中,我保存了:
(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)这样,Pymacs和ropemacs将只加载一次。当打开第一个.py文件时会发生这种情况。
发布于 2010-09-19 13:28:39
这就是eval-after-load的目的。
(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会为我崩溃,当它崩溃时,我只需要调用该函数来重新加载它。
发布于 2011-03-08 14:30:09
这是我的解决办法:
(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是在自动完成模块中定义的:
(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))))该解决方案假设您同时使用自动完成。
https://stackoverflow.com/questions/2890199
复制相似问题