Закрытие парантеза в Geany для C++
После ввода
int func(){
И нажимая Enter, я получаю это, так как я включил плагин автоматического закрытия
int func(){
//cursor stays here }
Но мне нужно
int func(){
//cursor stays here
}
Я могу добиться необходимого отступа, изменив snippets.conf, но мне нужно нажать c и Tab, где
c=%brace_open%%cursor%%brace_close%
brace_open={\n\t
brace_close=\n}\n
Автоматически закрывать настройки плагина:
есть ли другой способ достижения?? Заранее спасибо.
2 ответа
Посетите https://plugins.geany.org/autoclose.html для плагина autoclose. Это решит вашу проблему.
В Linux вы можете напрямую установить его,sudo apt-get install geany-plugin-autoclose
Я не смог понять, как получить именно то, что вы указали, но плагин Autoclose может приблизиться. Набор текстаint func(){
и нажатие Enter дает следующее, где|
символ представляет положение курсора:
int func(){
|
}
РЕДАКТИРОВАТЬ:
Мои настройки Autoclose показаны ниже. Но это не все. Смотрите после изображения для получения дополнительной информации.
Изучая это еще раз, я обнаружил странное поведение. Я не знаю, является ли это причиной вашей проблемы или нет, но, возможно, это стоит рассмотреть.
Автозакрытие работало, как я описал, при нажатии Enter на основную клавиатуру, но не при нажатии Enter на клавиатуре, с NumLock включенной функцией или без нее. В последнем случае я получил тот же результат, что и вы.
Обычно я использую старинную клавиатуру IBM Model M, поэтому, чтобы исключить любую возможность проблемы, вызванной самой клавиатурой, я попробовал современную клавиатуру USB с клавиатурой. Результаты были точно такими же.
Имея подозрение относительно того, что происходит, и поскольку это открытый исходный код, я вытащил исходный код Autoclose и взглянул. И нашел...
static gboolean
auto_close_chars(
AutocloseUserData *data,
GdkEventKey *event)
{
...
else if (ch == GDK_Return)
{
return improve_indent(sci, editor, pos);
}
...
}
Общий поиск GDK_Return
появился gdkkeysyms.h, который определяет все коды ключей GDK. В этом естьGDK_Return
а также GDK_KP_Enter
, где "КП" означает "клавиатура". Поскольку Autoclose не распознаетGDK_KP_Enter
, он не будет реагировать на нажатие Enter на клавиатуре.
Итак, если вы используете полную клавиатуру с клавиатурой, она должна работать нормально, пока Enter используется основная клавиатура. С другой стороны, если вы используете ноутбук, на котором есть только одна Enter клавиша, все ставки отключены.