Eclipse-привязка Alt-Q к `format-element` не работает (с Emacs +?) - PullRequest
0 голосов
/ 16 февраля 2012

Я использую фантастический плагин MulgaSoft Emacs + Eclipse , чтобы Eclipse можно было использовать для моих пальцев emacs'd.

Однако я не могу настроить работающий Alt+ q привязка к «Элементу формата».При написании комментария, например, в коде Java, я хотел бы иметь возможность время от времени нажимать Alt + q , чтобы перетекать текущий абзац текста.(В основном я просто хочу, чтобы комментарий был обернут в ~ 80 столбцов.)

Итак, я вошел в Preferences -> General -> Keys и привязал Format Element к Alt+Q "когда" Editing in Structured Text Editors (категория Source).

Если я наберу Alt + x format-element с курсором в длинном Java-комментарии, произойдет правильная вещь (текст перекомпоновывается).Но нажатие Alt + q ничего не делает.

Если я спрашиваю Eclipse, с чем связано Alt + q (набрав Ctrl + hk Alt +q ), я получаю:

Alt+Q runs format-element
    Id -org.eclipse.wst.jsdt.ui.edit.text.java.quick.format
 Key Bindings
    ALT+Q [org.eclipse.ui.contexts.dialogAndWindow]
 Description
    Format enclosing text element

Насколько я могу судить (путем сортировки по 'Binding') в настройках Key, больше ничего не связано с Alt + Q.(Ну, я попытался связать его в некоторых дополнительных контекстах «когда», но это не помогло ...)

screenshot of Alt+Q keybindings

Я не уверен, если это проблемас плагином Emacs + или с Eclipse (поскольку «Элемент формата» является примитивом затмения?).Я несколько раз перезапускал Eclipse с этими привязками.

Обновление

С предложениями @ mfeber я подправил привязки клавиш, но все еще не достиг успеха.Я сократил только одну привязку с «когда», равным Editing Text.

Теперь, когда я запускаю Ctrl + hk Alt + q Я вижу:

Alt+Q runs format-element
    Id -org.eclipse.wst.jsdt.ui.edit.text.java.quick.format
 Key Bindings
    ALT+Q [org.eclipse.ui.textEditorScope]
 Description
    Format enclosing text element

Разница заключается в «[org.eclipse.ui.textEditorScope]» в разделе «Привязки клавиш».Новое значение лучше соответствует тому, что показывают другие привязки клавиш, такие как «Ctrl + O».

Как ни странно, если я запускаю Ctrl + hw format-element , я получаю:

format-element is unbound

Но выполнение Ctrl + hw для других команд, таких как forward-символ или insert-line-over-current-line выводит правильный список ключейпривязки для этой функции.Таким образом, есть кое-что немного странное.

Еще одна вещь, которую я заметил, - это то, что в привязках клавиш есть запись «Элемент формата», в которой есть пустые «Когда» и «Привязка» (на снимке экрана выше былоотсортировано по «Binding», поэтому оно не показывало это, но я уверен, что оно было там раньше):

screenshot #2 of Alt+Q keybindings

Существуют ли какие-либо инструменты или журналы для отладки привязок клавишв Eclipse, что я могу включить?

Update # 2

Чтобы выяснить, какой базовый идентификатор привязан (как предложено в обновлении @ mfeber), я попробовал еще пару вещей.

Я установил несколько привязок Alt-Q для форматирования элемента в разных контекстах:

screenshot #3 of Alt+Q keybindings

(я пробовал с и без 'Редактирование текста'binding --- Я не уверен, может ли' Редактирование текста 'применяться / конфликтовать при редактировании файлов .java или .py, или это чисто для файлов .txt ... В любом случае я не вижу большой разницы....)

Единственная интересная информация, которую я смог собрать, это то, что Ctrl + hkAlt + q показывает очень немного отличающиеся результаты при запуске в редакторе .java и при запуске в редакторе .js:

Вот что я получаю из Ctrl + hk Alt + q в редакторе исходного кода Java:

Alt+Q runs format-element
    Id -org.eclipse.wst.jsdt.ui.edit.text.java.quick.format
 Key Bindings
    ALT+Q [org.eclipse.jdt.ui.javaEditorScope]
 Description
    Format enclosing text element

И вот что я получаю из Ctrl + hk Alt + q в редакторе исходного кода Javascript:

Alt+Q runs format-element
    Id -org.eclipse.jdt.ui.edit.text.java.quick.format
 Key Bindings
    ALT+Q [org.eclipse.wst.jsdt.ui.javaEditorScope]
 Description
    Format enclosing text element

Разница в wst.jsdt против jdt в путях к пакетам.Я не очень понимаю это, но я думаю, что это означает, что я запускаю форматер java в окне javascript и форматер javascript в окне java?

О ... это все!Если я переключаю «Когда» для каждой из этих привязок, теперь Alt-Q работает!Таким образом, несмотря на то, что все привязки клавиш выглядят одинаково в пользовательском интерфейсе, под ним находится несколько различных функций ....

1 Ответ

1 голос
/ 19 февраля 2012

Во-первых: вы должны установить для элемента «Когда» значение «Редактирование текста» («Структурированный текст» относится к таким вещам, как редакторы XML, которые предоставляют различные виды редактирования для своего контента). Вы должны увидеть что-то вроде:

Alt + Q запускает format-element Идентификатор -org.eclipse.jdt.ui.edit.text.java.quick.format Ключевые привязки ALT + Q [org.eclipse.ui.textEditorScope] Описание Форматирование текстового элемента

Второе: вы можете узнать привязки для конкретного ключа, вызвав description-key (C-h k). Если существует несколько привязок для данной последовательности клавиш, они все перечислены, и те, которые выделены жирным шрифтом, будут включены в соответствующем контексте «Когда», при условии, что вы не сталкиваетесь с ...

Три: в Eclipse есть привязки клавиш, которые не отображаются в предпочтениях привязок (обычно это привязки, откачиваемые ОС, поэтому они отличаются в разных установках). Я никогда не находил простой способ отключить их в Eclipse.

Наконец: рад слышать, что плагин Emacs + полезен ...

Надеюсь, это поможет, Mark

Дополнительная информация ... Мой плохой ... format-element - одна из тех команд eclipse, которая имеет то же «внешнее» имя, но несколько идентификаторов. Я полагаю, что тот, который вы связали, подходит для javascript, но не для других контекстов. Вы можете выяснить, какой из них вам нужен для java, связывая каждый из них по очереди и проверяя идентификатор в C-h k. Для Java это должно быть: Id - org.eclipse.jdt.ui.edit.text.java.quick.format . Затем установите привязку «Когда» для «Редактирования исходного кода Java», и она должна работать в этом контексте. Вы можете установить любые другие по желанию.

...