2013-08-16 3 views
20

Я недавно установил несколько пакетов, чтобы я мог программировать приложения iOS от emacs, но у меня проблемы. Один из пакетов (я уверен, что это автозаполнение) препятствует работе табуляции в ansi-term. Каждый раз, когда я пытаюсь выполнить табуляцию, я получаю сообщение об ошибке «Неверный аргумент типа: characterp, tab».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' и повторите попытку включения табуляции. Это должно дать вам буфер backtrace, который должен быть полезен при поиске проблемы. – legoscia

+0

Спасибо. Я думаю, что это yasnippet, что вызывает проблемы ... Я посмотрю на него – user1539179

+0

Я нашел это, что и эта проблема, но предлагаемое исправление не помогло решить эту проблему: https://github.com/capitaomorte/ yasnippet/issues/289 – user1539179

ответ

33

Хорошо, я установил ее. Проблема была связана с ясниппетом, но предложение по ссылке не помогло. По какой-то причине установка 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

+0

Первый работает отлично для меня :) – squiter

3

Метод, предоставляемые user1539179 работает путем использования режима yasnippets при использовании режима оболочки. Существует небольшая проблема, из-за которой я больше не могу использовать режим yasnippet после того, как я открою ansi-term. Например, если файл markdown открывается после ansi-term, yasnippet не будет работать. Мое решение не использует yasnippet глобально, но подключайтесь к режиму, который мы хотим. Вот мой emacs configure для yasnippet, что я привязываю его только к prog-mode, ess-mode и markdown-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) 
Смежные вопросы