python模式、ipython、(ipython.el)版本/发行版和init.el/.emacs.d代码的哪种组合可以工作?
我的目标是使用Emacs24作为python编辑器(也有一个Matlab和R编辑器,但这不是我的问题所在) (如果我遗漏了任何信息,或者我没有清楚地说明一些事情,请告诉我。) 我已经能够设置我的包和init.el文件,这样我就能够获得python的制表符完成、正确的高亮显示和代码片段。我使用python-mode.el作为我的python模式。 问题都围绕着这一点:我想使用ipython作为我的python shell,以便在调试脚本时使用它的tab completion函数python模式、ipython、(ipython.el)版本/发行版和init.el/.emacs.d代码的哪种组合可以工作?,python,emacs,ipython,emacs24,python-mode,Python,Emacs,Ipython,Emacs24,Python Mode,我的目标是使用Emacs24作为python编辑器(也有一个Matlab和R编辑器,但这不是我的问题所在) (如果我遗漏了任何信息,或者我没有清楚地说明一些事情,请告诉我。) 我已经能够设置我的包和init.el文件,这样我就能够获得python的制表符完成、正确的高亮显示和代码片段。我使用python-mode.el作为我的python模式。 问题都围绕着这一点:我想使用ipython作为我的python shell,以便在调试脚本时使用它的tab completion函数 但是,当我启动i
- 但是,当我启动ipython(使用M-x ipython)时,我没有制表符完成。此外,它不显示“[1]in:”,但显示“[1]out:”
- 我想让ipython成为Emacs中的默认shell。但是,尝试此操作失败(例如,将C:\PATH\TO\IPython.exe设置为py python命令)
- 当我尝试使用C-C-C运行python脚本时,它使用普通python运行,并且确实在我告诉调试器停止的位置停止(我使用ipdb.set_trace)。但是,当我使用另一种应该启动IPython的命令时(比如将区域设置为整个脚本并运行py execute region IPython),IPython不起作用。它确实启动了IPython shell,或者至少看起来是这样,但我可以像输入文本编辑器一样输入shell(仅供参考:在迷你缓冲区中显示“Comint:run shell compile”)
- python模式6.1.3
- ipython 1.1.0
- 我从尝试了ipython.el,但从与python-mode.el的开发人员的联系来看,这似乎已被弃用,并且没有集成到python-mode.el中
- 2013年3月17日于马文发布的GNU Emacs 24.3.1(i386-mingw-nt6.1.7601)
- Windows 7 64位
;; Requisites: Emacs >= 24
(require 'package)
(package-initialize)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-refresh-contents)
(defun install-if-needed (package)
(unless (package-installed-p package)
(package-install package)))
;; make more packages available with the package installer -->
;; removed python mode since the version I got had errors
(setq to-install
'(
;python-mode
magit yasnippet jedi auto-complete autopair find-file-in-repository flycheck))
(mapc 'install-if-needed to-install)
;;------------R STUFF-----------
(add-to-list 'load-path "C:\\emacs-24.3\\site-lisp\\ess-13.09-1")
(setq ess-use-auto-complete t)
(load "ess-site")
;;------------MatLab STUFF-----------
; add folder of matlab-mode.el
(add-to-list 'load-path "C:\\Users\\Rob Ter Horst\\AppData\\Roaming\\.emacs.d\\elpa\\matlab-mode-20130829.142")
(load-library "matlab-load")
(matlab-cedet-setup)
(setq matlab-show-mlint-warnings t)
(add-hook 'matlab-mode-hook 'auto-complete-mode)
(add-hook 'matlab-mode-hook 'mlint-minor-mode)
;;------------GENERAL STUFF-----------
; Ido mode: Ido-powered versions of code. Most ido commands are named ido-xxxxx
; so find-file becomes ido-find-file, and so on.
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(ido-mode t)
(global-linum-mode t)
;Use y or n always instead of yes/no
(defalias 'yes-or-no-p 'y-or-n-p)
;; -------------------- extra nice things Andrea Crotti--------------------
;; use shift to move around windows
(windmove-default-keybindings 'shift)
(show-paren-mode t)
; Turn beep off
(setq visible-bell nil)
(custom-set-variables
'(ansi-color-names-vector ["#242424" "#e5786d" "#95e454" "#cae682" "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"])
'(custom-enabled-themes (quote (wheatgrass))))
(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.
)
(put 'downcase-region 'disabled nil)
;;------------PYTHON STUFF-----------
;(require 'magit)
;(global-set-key "\C-xg" 'magit-status)
(require 'auto-complete)
(require 'autopair)
(require 'yasnippet)
(require 'jedi)
;yasnipped settings
(setq yas-snippet-dirs
'("C:\\Users\\Rob Ter Horst\\AppData\\Roaming\\.emacs.d\\elpa\\yasnippet-20140106.1009\\snippets"))
(add-to-list 'load-path "C:\\Users\\Rob Ter Horst\\AppData\\Roaming\\.emacs.d\\elpa\\yasnippet-20140106.1009")
(global-set-key [f7] 'find-file-in-repository)
; auto-complete mode extra settings
(setq
ac-auto-start 2
ac-override-local-map nil
ac-use-menu-map t
ac-candidate-limit 20)
;; ;; Python mode settings
(setq py-install-directory "C:\\Users\\Rob Ter Horst\\AppData\\Roaming\\.emacs.d\\self_installed\\python-mode.el-6.1.3")
(add-to-list 'load-path py-install-directory)
(add-to-list 'auto-mode-alist '("\\.py$" . python-mode))
(when (featurep 'python) (unload-feature 'python t))
(require 'python-mode)
(setq py-electric-colon-active t)
(add-hook 'python-mode-hook 'autopair-mode)
(add-hook 'python-mode-hook 'yas-minor-mode)
(add-hook 'python-mode-hook 'auto-complete-mode)
;; ;; Jedi settings
;; It's also required to run "pip install --user jedi" and "pip
;; install --user epc" to get the Python side of the library work
;; correctly.
;; With the same interpreter you're using.
;; if you need to change your python intepreter, if you want to change it
;; (setq jedi:server-command
;; '("python2" "/home/andrea/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py"))
(add-hook 'python-mode-hook
(lambda ()
(jedi:setup)
(jedi:ac-setup)
(local-set-key "\C-cd" 'jedi:show-doc)
(local-set-key (kbd "M-SPC") 'jedi:complete)
(local-set-key (kbd "M-.") 'jedi:goto-definition)))
; ipython settings
(setq py-python-command "C:\\Python27\\Scripts\\ipython.exe")
(setq py-complete-function 'ipython-complete
py-shell-complete-function 'ipython-complete
py-shell-name "ipython"
py-which-bufname "IPython")
;(require 'ipython)
;With tab autocompletion in ipdb I get an error that might be solved by changing this var
;the error: "variable binding depth exceeds max-specpdl-size"
(setq max-specpdl-size 32000)
; Try to add flycheck --> flycheck causes emacs to become incredibly slow on big script with
; many style errors (as present in a lot of my older scripts, so I do not want to activate it
; by default
;(setq flycheck-highlighting-mode 'lines)
;(add-hook 'python-mode-hook 'global-flycheck-mode)
;(flycheck-select-checker 'python-flake8)
;(provide 'init-flycheck)
(yas-reload-all)
我不使用Emacs(我是一个VIM风扇),但通常当ipython不执行制表符完成时,这意味着您缺少了ipython shell中的readline模块,因为python-mode.el提供了制表符调用py indent line
。这样循环可能的缩进就像在脚本缓冲区中一样。完成时间在M-TAB。您可以重新定义该键 对于Emacs24,我使用默认的python.el(而不是python mode.el),它启动了
pythonshell切换到shell
或C-C-p
(python菜单->启动解释器)启动ipython时,我得到了ipython。Tab竣工工程jedi:setup
启动绝地自动完成。它提供了带有参数“帮助”和“文档”的漂亮弹出窗口,您可以选择在点处(而不是在3个字符之后)触发它。看见它可以被看作是对ipython的补充,而不是替代
以下是我的配置:
;; trying ipython tab completion: that works :)
(setq
python-shell-interpreter "ipython"
python-shell-interpreter-args ""
python-shell-prompt-regexp "In \\[[0-9]+\\]: "
python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: "
python-shell-completion-setup-code "from IPython.core.completerlib import module_completion"
python-shell-completion-module-string-code "';'.join(module_completion('''%s'''))\n"
python-shell-completion-string-code "';'.join(get_ipython().Completer.all_completions('''%s'''))\n"
)
取自
希望这能有所帮助。为什么这一点被否决了?我承认这可能不是具体的问题,但评论是完全正确的,而且是关于主题的。我以前遇到过这个问题&检查并安装readline通常可以帮我解决。我没有投你反对票,但我的印象是(尽管没有说明)Rubbert在Emacs之外的ipython中有工作标签完成,在这种情况下,答案可能并不真正在主题上。不过,这只是我的假设。