Emacs - завершение табуляции локальных переменных Python
Есть ли хороший режим Emacs, который позволит завершить табуляции локальных переменных Python? Я настроил ipython.el, но он только завершит вкладку в объеме интерпретатора. Я ищу что-то, что позволит мне заполнить табуляцией токены в локальном пространстве имен функции или файла.
6 ответов
M-/ запускает команду dabbrev-expand . Это завершит локальные имена в любом режиме. Также я связываю meta f1 с хиппи-экспандом из всех открытых буферов. Это очень полезно для меня.
;; Bind hippie-expand
(global-set-key [(meta f1)] (make-hippie-expand-function
'(try-expand-dabbrev-visible
try-expand-dabbrev
try-expand-dabbrev-all-buffers) t))
Надеюсь, это полезно.
Я использую emacs-autocomplete.el (версия 0.2.0) вместе с yasnippet. Работает нормально для меня, хотя это не полная среда автозаполнения, как eclipse+java. Но достаточно для обычного хакера Emacs, как я:)
1) Загрузите автозаполнение отсюда (первая ссылка) и поместите его в каталог пути загрузки. Также скачайте расширения, которые вы хотите использовать (Внимание: расширениям Ruby и etags нужны дополнительные материалы). Поместите их также в каталог load-path.
2) Загрузите yasnippet и установите его, как сказано в инструкции на этой странице (включая часть (require ...)).
3) Поместите эти строки в свой файл.emacs и отредактируйте их для своих нужд (как и все расширения, которые вы хотите использовать):
(require 'auto-complete)
(global-auto-complete-mode t)
(when (require 'auto-complete nil t)
(require 'auto-complete-yasnippet)
(require 'auto-complete-python)
(require 'auto-complete-css)
(require 'auto-complete-cpp)
(require 'auto-complete-emacs-lisp)
(require 'auto-complete-semantic)
(require 'auto-complete-gtags)
(global-auto-complete-mode t)
(setq ac-auto-start 3)
(setq ac-dwim t)
(set-default 'ac-sources '(ac-source-yasnippet ac-source-abbrev ac-source-words-in-buffer ac-source-files-in-current-dir ac-source-symbols))
Для получения дополнительной информации о параметрах см. Файл auto-complete.el.
4) Перезапустите emacs или загрузите файл Mx с вашим файлом.emacs. Напишите некоторый код и нажмите TAB для автоматического завершения.
Сообщение в блоге, описывающее вид завершения табуляции, которое вы хотите, можно найти в дополнении кода Python в Emacs. Есть немного установки пакетов, pymacs, AutoComplete, Rope, Ropemacs, Rope Mode, Yasnippet и настройки, но в конце я надеюсь, что это окупится.
Используйте джедаев!
Он действительно понимает Python лучше, чем любая другая библиотека автозаполнения:
- встроенные команды
- несколько возвратов или выходов
- назначения кортежей / индексация массивов / индексация словаря
- с оператором / обработка исключений
- *args / **kwargs
- декораторы / лямбды / затворы
- генераторы / итераторы
- некоторые дескрипторы: свойство / staticmethod / classmethod
- некоторые магические методы:
__call__
,__iter__
,__next__
,__get__
,__getitem__
,__init__
- list.append (), set.add (), list.extend () и т. д.
- (вложенный) список пониманий / троичные выражения
- относительный импорт
- getattr () /
__getattr__
/__getattribute__
- простые / обычные модификации sys.path
- isinstance проверяет, если /while/assert
Я думаю, что вы можете искать что-то вроде этого. Он использует Pymacs и Python-режим, чтобы сделать то, что вы ищете.
Дайте нам знать, как это работает для вас?
Если вы просто хотите запустить его с минимальными усилиями, попробуйте пакет emacs-for-python.
Удачного кодирования!