Подтвердить что ты не робот

Emacs - вкладка-завершение локальных переменных Python

Есть ли хороший режим emacs, который позволит выполнять табуляцию локальных переменных python? Я настроил ipython.el, но он будет выполнять только вкладку в рамках интерпретатора. Я ищу что-то, что позволит мне вводить полные токены в локальное пространство имен функции или файла.

4b9b3361

Ответ 1

M-/запускает команду dabbrev-expand. Это приведет к заполнению локальных имен в любом режиме. Кроме того, я связываю meta f1 с hippie из всех открытых буферов. Это очень полезно для меня.

;; 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))

Надеюсь, это полезно.

Ответ 2

Я использую 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 или загрузите файл M-x с файлом .emacs. Напишите код и нажмите TAB для автоматического завершения.

Ответ 3

Сообщение в блоге, описывающее вид заполнения вкладки, который вы хотите, можно найти по адресу Выполнение кода Python в Emacs. Существует несколько пакетов установки, pymacs, AutoComplete, веревка, ropemacs, режим каната, yasnippet и настройка, но в конце я надеюсь, что он окупится.

Ответ 4

Я думаю, что вы можете искать что-то вроде этого. Он использует Pymacs и python-mode для сделайте то, что вы ищете.

Сообщите нам, как это работает для вас?

Ответ 5

Используйте Jedi!

Он действительно понимает Python лучше, чем любая другая библиотека автозаполнения:

  • встроенные команды
  • несколько возвратов или доходностей
  • присвоения кортежей/индексирование индексов/индексация словаря
  • с инструкцией/обработкой исключений
  • * args/** kwargs
  • декораторы/lambdas/закрытия
  • генераторы/итераторы
  • некоторые дескрипторы: свойство /staticmethod/classmethod
  • некоторые магические методы: __call__, __iter__, __next__, __get__, __getitem__, __init__
  • list.append(), set.add(), list.extend() и т.д.
  • (вложенный) список/тернарные выражения
  • относительный импорт
  • getattr()/__getattr__/__getattribute__
  • простые/обычные изменения sys.path
  • isinstance проверяет, если /while/assert

Ответ 6

Если вы просто хотите его запустить и запустить с минимальным шумом, попробуйте emacs-for-python.

Счастливое кодирование!