Закрытие парантеза в 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 клавиша, все ставки отключены.

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