2013-08-16 7 views
20

私は最近emacsからiOSアプリケーションをプログラムできるようにいくつかのパッケージをインストールしましたが、何か問題があります。パッケージの1つ(私はそれがオートコンプリートであると確信しています)は、タブ補完がansi-termで動作するのを妨げています。タブを完成させようとすると、「間違った型引数:文字列、タブ」というエラーが出ます。Emacs:Ansi-term not tab-completing

はここに私の.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 
+0

「M-x toggle-debug-on-error」と入力して、もう一度タブを押してみてください。それはあなたに問題を見つけるのに役立つはずのバックトレースバッファを与えるはずです。 – legoscia

+0

ありがとうございます。私はそれが問題を引き起こすyasnippetだと思う...私はそれを見てみよう – user1539179

+0

これは同じ問題を説明しているが見つかりましたが、提案された修正が私の問題を解決しなかった: https://github.com/capitaomorte/ yasnippet/issues/289 – user1539179

答えて

33

さてさて、私はそれを修正しました。問題はyasnippetsであったが、リンク上の提案はうまくいかなかった。何らかの理由でyas-minor-modeを-1に設定しても機能しませんでした。私がしなければならなかったことは何かに活性化されていたということでした。

私のために動作しませんでした推奨修正:

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

何私のために仕事をした:私はemacsのに23.4.1

+0

最初の1つは私にうまく動作します:) – squiter

3

user1539179によって提供される方法を実行している

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

シェルモードを使用しているときにyasnippetsモードを無効にすることで動作します。 ansi-termを開いた後、もうyasnippetモードを使用できないという小さな問題があります。たとえば、ansi-termの後にマークダウンファイルを開くと、yasnippetは機能しません。私の解決策は、グローバルにyasnippetを使用していませんが、私たちが望むモードにフックします。ここにyacnippet用の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)