Автозаполнение Emacs для ESS во всплывающей подсказке вместо буфера

Я понял из следующих источников:

... что у меня должен быть доступ к всплывающим подсказкам для автозаполнения справки в emacs при использовании ESS для разработки R. Последняя ссылка дополнительно указывает, что она должна работать из коробки с последней версией ESS, а также:

Начиная с версии 12.03 ESS интегрируется из коробки с пакетом автозаполнения.

В дистрибутив ESS включены три источника: «ac-source-R-args», «ac-source-R-objects» и «ac-source-R». Последний сочетает в себе два предыдущих и заставляет их хорошо играть вместе.

Я знаю, что в целом мои всплывающие подсказки в emacs возможны, потому что они отображаются правильно с моей настройкой python jedi в emacs.

Однако мое автозаполнение emacs не работает. Вместо этого внизу есть буфер:

введите описание изображения здесь

вместо этого с помощью наложенного на рабочий буфер:

введите описание изображения здесь

И у меня в init.el есть следующее:

(require 'auto-complete)
(setq ess-use-auto-complete t)
(ess-toggle-underscore nil)

У меня есть следующие версии:

  ess                20131207.1141  installed  No description available.
  ess-R-data-view    20130509.458   installed  Data viewer for GNU R
  ess-R-object-popup 20130302.336   installed  popup description of R object
  auto-complete      20140208.653   installed  Auto Completion for GNU Emacs

Что мне не хватает?

ОБНОВЛЕНИЕ 1

Вот моя инициализация для ESS. Это производит завершение в буфере, но не во всплывающей подсказке, где были добавлены некоторые параметры конфигурации из руководства. (Сейчас я перепробовал все варианты комментирования и не комментировал все это):

(require 'auto-complete)
(global-auto-complete-mode)
(require 'auto-complete-config)
(ac-config-default)
(require 'ess-site)
(setq ess-use-auto-complete t)
(setq ac-auto-start 2)
(setq ac-auto-show-menu 0.2)
(ess-toggle-underscore nil)

ОБНОВЛЕНИЕ 2

Аналогичный вопрос здесь, но предлагается то же решение, которое на самом деле не привело к всплывающим подсказкам в моей настройке . Но это наводит на мысль, что это может быть проблема с платформой? Плакат был также на Ubuntu 12.04, как и я - возможно ли, что решения, которые работали для VitoshKa, Алекса Воробьева и Икбала Ансари, были на другой платформе? Вы, ребята, используете OS X?

ОБНОВЛЕНИЕ 3

Возможно другая диагностика:

ac-source-R is a variable defined in `ess-r-d.el'.
Its value is ((prefix . ess-ac-start)
 (candidates . ess-ac-candidates)
 (document . ess-ac-help))


Documentation:
Combined ad-completion source for R function arguments and R objects

ac-source-R-objects is a variable defined in `ess-r-d.el'.
Its value is ((prefix . ess-symbol-start)
 (candidates . ess-ac-objects)
 (document . ess-ac-help-object))


Documentation:
Auto-completion source for R objects

ac-source-R-args is a variable defined in `ess-r-d.el'.
Its value is ((prefix . ess-ac-start-args)
 (candidates . ess-ac-args)
 (document . ess-ac-help-arg))


Documentation:
Auto-completion source for R function arguments

[back]

где переменные для ess-ac[TAB] только ...

Click <mouse-2> on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:
ess-ac-R-argument-suffix
ess-ac-sources

Так что, может быть, проблема в том, что в моей установке ESS не хватает всех ess-ac-* вещей, определенных выше, например ess-ac-args и т. Д.?


person Mittenchops    schedule 10.03.2014    source источник
comment
Хотел бы я тоже знать. Я тоже пытался настроить это, но у меня ничего не получалось.   -  person Josh O'Brien    schedule 10.03.2014
comment
Я могу получить завершение аргумента функции. Какое значение имеет ac-auto-start? Также попробуйте нажать C-M-i.   -  person    schedule 10.03.2014
comment
M-x describe-variable ac-auto-start говорит: ac-auto-start's value is 2 Documentation: Non-nil means completion will be started automatically.   -  person Mittenchops    schedule 10.03.2014
comment
C-M-i, похоже, не действует.   -  person Mittenchops    schedule 10.03.2014
comment
@Mittenchops Я так понимаю, потерпите меня. После того, как write.table( type fi выполнит автозаполнение, также попробуйте нажать C-M-i, по крайней мере, что-то должно произойти, я получаю завершение   -  person    schedule 10.03.2014
comment
Буфер внизу по-прежнему говорит то же самое, нет предлагаемых изменений для файла (файла), и нет всплывающей подсказки или неактивных подсказок в тексте, как при автозаполнении python.   -  person Mittenchops    schedule 10.03.2014
comment
@Mittenchops Не беспокойтесь о тексте внизу, это eldoc-mode, который дает сигнатуру функции. Попробуйте обновить библиотеку, последняя версия на melpa 20140304.2344   -  person    schedule 10.03.2014
comment
Также попробуйте выполнить автозаполнение вручную, набрав write.file(f, а затем выполнив M-x auto-complete   -  person    schedule 10.03.2014
comment
Хорошо, очевидно, что режим автозаполнения не был включен, что я исправил с помощью M-x auto-complete-mode. Я думал, что моя фраза: (setq ess-use-auto-complete t) позаботится об этом, но, видимо, этого не произошло. Это очень странно. Не могли бы вы сформулировать это как ответ, который я могу отметить как решенный?   -  person Mittenchops    schedule 10.03.2014
comment
У вас должна быть хотя бы одна обработка R в emacs, чтобы включить эти функции. Сначала попробуйте C-c C-n в строке кода R, а затем попробуйте эти функции автозаполнения и всплывающих подсказок.   -  person RNA    schedule 04.05.2014
comment
Вы нашли решение? У меня автозаполнение тоже не запускается автоматически в режиме ess (хотя в других режимах работает отлично). Та же конфигурация работает на debian, но не работает на моем недавно установленном ubuntu.   -  person user69818    schedule 25.05.2015
comment
Ах, прошу прощения. Я выяснил, что не так. Некоторые настройки не работают в моей новой ОС, поскольку что-то не установлено, поэтому emacs выдает предупреждения и прекращает загрузку конфигураций до того, как прочитает настройки для ess и автозаполнения.   -  person user69818    schedule 25.05.2015


Ответы (3)


В моей конфигурации автозаполнения также есть

(require 'auto-complete-config)
(ac-config-default)

и после этой настройки ess-use-auto-complete заставляет ESS показывать всплывающие меню.

person Alex Vorobiev    schedule 10.03.2014

Итак, согласно вашим комментариям, оказалось, что auto-complete не был включен в вашей конфигурации emacs. Так что просто включите auto-complete, добавив что-то вроде этого в свой файл инициализации

(load "auto-complete")
(global-auto-complete-mode)

Также для ESS вам нужно будет установить ess-use-auto-complete на t что-то вроде следующего:

(setq ess-use-auto-complete t)

ИЗМЕНИТЬ: для ess-use-auto-complete по умолчанию установлено значение t, поэтому этот шаг на самом деле не нужен.

Кроме того, поскольку вы нашли этот вариант запутанным, я бы порекомендовал вам открыть проблему в репозитории github, чтобы разработчики могли улучшить документацию (или код), что может уменьшить путаницу.

Автозаполнение имеет множество параметров конфигурации. Прочтите руководство, когда у вас будет время .

Рад, что смог помочь

person Community    schedule 10.03.2014
comment
Как ни странно, несмотря на эти изменения, автозаполнение не срабатывает до тех пор, пока я не запустил C-c C-c в первый раз. Он должен работать в буфере, прежде чем кажется, что он распознает файл .R как файл R. - person Mittenchops; 16.03.2014
comment
Это очень странно. Я выполнил такую ​​же установку на другом компьютере и снова столкнулся с той же проблемой, что и выше. - person Mittenchops; 16.03.2014
comment
То же самое, что и у вас нет автозаполнения? - person ; 16.03.2014
comment
the auto-complete never kicks in until the first time I run C-c C-c это могло быть, потому что (я предполагаю) ess использует repl для автозаполнения. - person ; 16.03.2014
comment
Да, установил на новую машину с тем же файлом инициализации и (я думал) такими же установками. Там написано, что режим автозаполнения включен, поэтому непонятно. - person Mittenchops; 16.03.2014
comment
Как ни странно, нет. Теперь я опробовал его на трех разных установках Ubuntu, и он будет работать только от случая к случаю. Интересно, есть ли какое-то смешение со стандартным пакетом автозаполнения и пакетами ac-независимо, необходимыми для R. По крайней мере, похоже, что он не устанавливается автоматически с ESS, даже с настройками для использования-автозаполнения. - person Mittenchops; 17.03.2014
comment
Я добавил обновление с моими данными init.el в разделе ОБНОВЛЕНИЕ выше. - person Mittenchops; 17.03.2014
comment
Привет, @Mittenchops, в вашей auto-complete конфигурации есть ошибка. Переменная ac-auto-start должна быть числом, а не t. Установите его примерно на 2. - person ; 18.03.2014
comment
Хорошо, спасибо. Я сделал это исправление, но проблема не исчезла. знак равно - person Mittenchops; 18.03.2014
comment
Странный! У меня он работает с вашим файлом инициализации. Какая у вас версия emacs? - person ; 18.03.2014
comment
Версия Emacs - 24.3.1. Вы используете OSX? Моя текущая теория заключается в том, что в пакетах для определений источника ac-source есть ошибка, которая затрагивает только пользователей Linux, поскольку на мои источники нигде нет ссылок. - person Mittenchops; 18.03.2014
comment
Нет, я использую Ubuntu 12.04. My running theory ... don't get referenced anywhere.. Глядя на ваш UPDATE 3, источник ссылается на ess-r-d.el. Также у меня есть только переменные с префиксом ess-ac, так что это не похоже на проблему. Я только что заметил, что я не получаю завершения в файле, если я не выполняю одну из команд eval (например, C-c C-c). - person ; 18.03.2014
comment
Я знаю, что многие источники ввода можно установить с помощью apt-get, путем загрузки с github, а также с помощью некоторой комбинации MELPA и т. Д. Есть ли шанс, что вы помните порядок установки на ac, а не на ess и т. Д.? - person Mittenchops; 20.03.2014
comment
Я установил автозаполнение, а затем ess от MELPA. - person ; 20.03.2014

Не путайте eldoc с автозаполнением. Eldoc - это то, что у вас на скриншоте, он показывает все аргументы функции без навязчивости. Автозаполнение появляется, когда вы начинаете вводить текст, и активируется после ac-auto-start символов.

person VitoshKa    schedule 10.03.2014
comment
Я понимаю, что eldoc - это то, что на моем снимке экрана, но насколько я понимаю, я / также / должен иметь автозаполнение, а также готовый к работе компонент ESS; и это та часть, которая не работает, несмотря на наличие ESS. Это было даже по вашим ссылкам, да? - person Mittenchops; 10.03.2014
comment
@Mittenchops, вы правы. Он должен работать по умолчанию, пока у вас загружено автозаполнение. Проверьте, работает ли он в других режимах, таких как elisp. - person VitoshKa; 11.03.2014
comment
Как ни странно, он работает во всем, например, когда я редактирую свой init.el, я получаю идеальное автозаполнение во всплывающей подсказке, скажем, для автозаполнения setq после 'set'. Просто R / ESS не получает успешных автозаполнений. Как будто он не знает, где искать определения или что-то в этом роде. Я добавил элементы в своем init.el к вопросу после ОБНОВЛЕНИЯ. - person Mittenchops; 17.03.2014
comment
@Mittenchops попытается разобраться, возможно, в минибуфере отображается какая-то ошибка. Просмотрите значения ac-sources, проверьте, включено ли автозаполнение, попробуйте напрямую использовать источники ess-ac и т. Д. - person VitoshKa; 18.03.2014