【问题标题】:Emacs: Ansi-term not tab-completingEmacs:Ansi-term 不是制表符完成
【发布时间】:2013-08-16 16:45:09
【问题描述】:

我最近安装了一些软件包,以便我可以从 emacs 编写 iOS 应用程序,但我遇到了一些麻烦。其中一个包(我很确定它是自动完成的)正在阻止制表符完成在 ansi-term 中工作。每当我尝试使用制表符完成时,都会收到错误“错误类型参数:characterp,制表符”。

这是我的 .emacs 文件:

; Add packages
(add-to-list 'load-path "~/.emacs.d/elpa")
(add-to-list 'load-path "~/.emacs.d/packages")

(require 'package)

; Package sources
(add-to-list 'package-archives 
    '("marmalade" .
      "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
    '("melpa" .
            "http://melpa.milkbox.net/packages/") t)

(package-initialize)

; Check packages were loaded
(require 'linum-relative)
(require 'git-gutter-fringe)
(require 'yasnippet)
(require 'auto-complete-config)

; Enable packages
(elscreen-start)

; Config
; Color scheme
(load-file "~/.emacs.d/themes/color-theme-wombat.el")

; Enable snippets
(yas-global-mode 1)

; Copy/paste with the system clipboard
(setq x-select-enable-clipboard t)

; Enable relative line numbers
(global-linum-mode t)

; Enable git gutter
(global-git-gutter-mode t)
(setq git-gutter-fr:side 'left-fringe)

; Darker git gutter colors
(set-face-foreground 'git-gutter-fr:modified "#ccaa8f")
(set-face-foreground 'git-gutter-fr:added    "#333366")
(set-face-foreground 'git-gutter-fr:deleted  "#e5786d")

; C-x -> arrow changes windows
(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <right>") 'windmove-right)
(global-set-key (kbd "C-x <left>") 'windmove-left)

; Hide everything that isn't text
(tool-bar-mode -1)
(scroll-bar-mode -1)
(menu-bar-mode -1)

; Move backups
(setq backup-directory-alist
  `((".*" . ,"~/.emacsbackups")))
(setq auto-save-file-name-transforms
  `((".*" ,"~/.emacstemps" t)))
(setq backup-by-copying t)

; Autocomplete settings
;when to use autocomplete (note yasnippits)
(setq-default ac-sources '(ac-source-yasnippet ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers))
(global-auto-complete-mode t)
(add-to-list 'ac-modes 'objc-mode) ; For iOS dev

【问题讨论】:

  • 输入 M-x toggle-debug-on-error 并尝试再次点击标签。这应该会为您提供一个回溯缓冲区,该缓冲区应该有助于发现问题。
  • 谢谢。我猜是 yasn-p 引起了问题……我会调查一下
  • 我发现这个描述了同样的问题,但建议的修复并没有解决我的问题:github.com/capitaomorte/yasnippet/issues/289

标签: emacs


【解决方案1】:

好的,我修好了。问题出在 yasn-ps 上,但链接上的建议不起作用。出于某种原因,将 yas-minor-mode 设置为 -1 不起作用。我要做的就是将 yas-dont-activate 设置为某些东西。

对我不起作用的建议修复:

(add-hook 'term-mode-hook (lambda()
                (yas-minor-mode -1)))

什么对我有用:

(add-hook 'term-mode-hook (lambda()
        (setq yas-dont-activate t)))

我正在运行 emacs 23.4.1

【讨论】:

    【解决方案2】:

    user1539179 提供的方法是在使用 shell 模式时停用 yasn-ps 模式。有个小问题是我打开ansi-term后不能再使用yasn-p模式了。例如,如果在 ansi-term 之后打开 markdown 文件,则 yasn-p 将不起作用。我的解决方案不是全局使用 yasn-p,而是挂钩到我们想要的模式。这是我为 yasn-p 配置的 emacs 配置,我只将它绑定到 prog-modeess-modemarkdown-mode,并且制表符完成在 ansi-term 中工作。

    (require 'yasnippet)
    (yas-reload-all)
    (add-hook 'prog-mode-hook 'yas-minor-mode)
    (add-hook 'ess-mode-hook 'yas-minor-mode)
    (add-hook 'markdown-mode-hook 'yas-minor-mode)  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2017-05-15
      • 2010-12-28
      • 1970-01-01
      相关资源
      最近更新 更多