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.

Удачного кодирования!

Другие вопросы по тегам