python - pymacs:一般问题和安装问题

标签 python emacs rope pymacs

我正在尝试为 python 开发设置 emacs。

根据我的阅读,建议使用 python-mode.el 而不是 Emacs 22.3 中的默认 python.el。所以我开始了新的冒险。

据我了解,python-mode 有几个依赖项,所以我需要安装 rope、ropemode 和 ropemacs。然后最重要的是我需要安装 pymacs。

问:是否正确?

现在这是我的新 .emacs:

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(inhibit-startup-screen t)
 '(tab-width 4))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

(setq emacs-config-path "~/.emacs.d/")
(setq base-lisp-path "~/.emacs.d/site-lisp/")
(setq site-lisp-path (concat emacs-config-path "/site-lisp"))
(defun add-path (p)
  (add-to-list 'load-path (concat base-lisp-path p)))

(add-path "") 
(add-to-list 'load-path "~/.emacs.d")

(require 'psvn)

;; python-mode
;;
(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode) interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)


(setq pymacs-load-path '(   "~/.emacs.d/site-lisp/rope"
                            "~/.emacs.d/site-lisp/ropemode"
                            "~/.emacs.d/site-lisp/ropemacs"))


(setq interpreter-mode-alist
      (cons '("python" . python-mode)
        interpreter-mode-alist)
      python-mode-hook
      '(lambda () (progn
            (set-variable 'py-indent-offset 4)
            (set-variable 'py-smart-indentation nil)
            (set-variable 'indent-tabs-mode nil)
            ;;(highlight-beyond-fill-column)
                    (define-key python-mode-map "\C-m" 'newline-and-indent)
            (pabbrev-mode)
            (abbrev-mode)
     )
      )
)


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

;; Search local path for emacs rope
;;

;; enable pymacs
;; 
(require 'pymacs)
(pymacs-load "ropemacs" "rope-")

现在,当我启动 emacs 时,我收到以下错误消息:

("C:\\opt\\emacs-22.3\\bin\\emacs.exe")
Loading encoded-kb...done
Loading regexp-opt...done
Loading easy-mmode...done
Loading wid-edit...done
Loading edmacro...done
Loading derived...done
Loading advice...done
Loading cl-macs...done
Loading byte-opt...done


An error has occurred while loading `c:/opt/cygwin/home/akong/.emacs':

File error: Cannot open load file, pymacs

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

For information about GNU Emacs and the GNU system, type C-h C-a. [2 times]

让它稍微复杂一点:

由于工作原因,我必须使用 python 2.4,但我的 PC 上安装了 python 2.6。但显然 rope 不喜欢 2.4,所以我没有运行 setup.py。我解压/解压缩这些包并将这些文件放在 ~/.emacs.d/site-lisp 下。默认情况下,如果在命令提示符下调用 python,则它是 python 2.4 可执行文件。

问:如何才能成功加载“pymacs”?

最佳答案

到目前为止我从未使用过 pymacs,但是当我查看您的 .emacs 时引起我注意的一件事是您显然没有将 pymacs 目录添加到 emacs load-path 但仅限于 pymacs 一个:

(setq pymacs-load-path '( "~/.emacs.d/site-lisp/rope"
                          "~/.emacs.d/site-lisp/ropemode"
                          "~/.emacs.d/site-lisp/ropemacs"))

你可能还需要这样的东西:

(add-to-list 'load-path "~/.emacs.d/site-lisp/rope")
(add-to-list 'load-path "~/.emacs.d/site-lisp/ropemode")
(add-to-list 'load-path "~/.emacs.d/site-lisp/ropemacs")

(或任何你有 pymacs.el 的地方)以便 emacs 可以找到 lisp 文件。在pymacs documentation中也提到

2.4 Install the Pymacs proper ... for the Emacs part ...

This is usually done by hand now. First select some directory along the list kept in your Emacs load-path, for which you have write access, and copy file pymacs.el in that directory.

关于python - pymacs:一般问题和安装问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1078069/

相关文章:

python - 什么是 glob2 模块?

python - 如何将 Python 与数据库一起使用?

python - 是否可以在不使用 jenkins 上的 "PyAutoGUI"库的情况下使用键盘操作?

python - 将 python 打印语句转换为日志记录

自定义类型的 python 列表构造函数-长度调用两次

templates - 如何使用 Emacs+AUCTeX 创建(自动插入)LaTeX 模板?

emacs - 自定义 Elisp plist 缩进

python - python开发的Jedi/rope/emacs配置

python-rope/ropevim 无法正常工作

Emacs -- 如何将一个 Git 存储库推送到多个远程服务器