KDevelop автоматически вставляет пробел после # в #include ‹file.h›

Я просто хочу включить заголовочный файл C++ в KDevelop, написав

#include <file.h>

Тем не менее, KDevelop автоматически исправляет приведенное выше утверждение на

# include <file.h>

Я не смог понять, где я могу это изменить. Мне нужна первая версия, чтобы мои файлы были похожи на другие файлы в проекте, над которым я работаю.

Тип файла установлен правильно как файл C++. Я думаю, что причиной лишнего пробела является то, что KDevelop хочет сделать отступ строки, потому что он находится внутри условного оператора, т. е. включения защиты, как показано ниже:

#ifndef THIS_FILE_H
#define THIS_FILE_H

// THIS_FILE_H
#endif

KDevelop также хочет сделать отступ для строки #define THIS_FILE_H.

Я попытался создать свой собственный стиль отступа, перейдя в пункт меню Настройки -> Настроить KDevelop, а затем щелкнув Source Formatter слева. При определении стиля форматирования я отключил отступы директив препроцессора, тем не менее, это не влияет на отступы #include и #define внутри включения защиты.


person debrandt    schedule 10.05.2016    source источник
comment
Ну, по крайней мере, это не должно иметь значения.   -  person πάντα ῥεῖ    schedule 10.05.2016
comment
Это достаточно важно, чтобы сломать подсветку кода SO. Я понятия не имею, как это могло произойти и остаться незамеченным. Насколько я слышал, KDevelop не такой уж и маленький.   -  person Baum mit Augen    schedule 10.05.2016
comment
Это верно, но это уже довольно давно меня раздражает, поэтому я подумал, что кто-то может знать, как предотвратить такое поведение.   -  person debrandt    schedule 10.05.2016
comment
Тип файла установлен правильно? Возможно, KDevelop думает, что вы пишете на языке, который использует символ # в качестве начала комментария в коде (например, Python, Perl, оболочка).   -  person Paulo1205    schedule 10.05.2016
comment
Возможно, он использует правила отступа в стиле C, поскольку .h обычно указывает заголовок языка C.   -  person Thomas Matthews    schedule 10.05.2016
comment
Я считаю, что понял, что вызывает это, но все еще не могу изменить поведение. См. отредактированный вопрос выше.   -  person debrandt    schedule 10.05.2016
comment
Это должно быть как-то связано с Кейт, частью KDevelop. Поэкспериментируйте с параметрами в меню Configure Editor, потому что я не вижу такого поведения.   -  person arrowd    schedule 24.05.2016
comment
Я использую KDevelop 4.7.3 каждый день и никогда такого не видел.   -  person Nicolas Holthaus    schedule 17.06.2016
comment
@BaummitAugen Я думаю, что они следуют определенному стилю кода, в котором общие директивы будут иметь один или несколько пробелов, а `#if #else #endif` не иметь ни одного в начале (но могут быть идентифицированы). Так что это скорее ошибка, потому что разработчик думал, что это должно быть по умолчанию   -  person Swift - Friday Pie    schedule 19.02.2020


Ответы (3)


Я знаю, что это довольно старо, но вот мой совет на будущее.

Go to Settings -> Configure KDevelop -> Code Formatter.

Там вы сможете увидеть раскрывающийся список языка, который вы хотите отформатировать в KDevelop (C, C++, C#, Java и любой другой), средство форматирования («Художественный стиль» или «Форматирование пользовательского скрипта») и список возможных предопределенных стили плюс кнопки для индивидуальной настройки.

Проверьте, выбрали ли вы один подходящий предустановленный вариант, и попробуйте несколько из них, чтобы увидеть, что произойдет.

KDevelop должен перестать добавлять дополнительное пространство после # include после этого.

Вопрос: ваш KDevelop также добавляет пробел после #define?

person j4x    schedule 11.09.2017

Та же проблема. Итак, я удаляю kate, затем удаляю все файлы конфигурации в домашнем каталоге, имя которого содержит kate. Затем я открыл kdevelop и ничего не нашел. Наконец, Kdevelop->Settings->Open/Save->Modes&Filetypes, выберите Sources/C++ и Sources/C, измените его на None, перезапустите kdevelop. OMG, наконец, мир во всем мире.

В заключение, Sources Modes&Filetypes возникает проблема.

person Ryan.Shi    schedule 29.11.2017

Автоматические пробелы, по-видимому, вызваны режимом отступов, который (в KDevelop 4.7.1) можно переключать для текущего файла с помощью Editor -> Tools -> Indentation. Если для отступа установлено значение C++/boost Style, вы получите эти странные автоматические пробелы при наборе текста; в то время как в режиме Normal вы получаете только обычный отступ в начале строки.

Режим отступа по умолчанию можно установить в Settings -> Configure Editor -> Open/Save -> Modes & Filetypes. Для каждого типа файла (например, Sources/C, Sources/C++, Sources/C++11, Sources/C++11/Qt4) режим отступа может быть установлен независимо.

Похоже, что KDevelop запоминает настройки файлов, которые вы когда-то открывали; поэтому для этих файлов новые параметры конфигурации не действуют. Я не знаю, как заставить KDevelop забыть об этих настройках для каждого файла.

person oliver    schedule 19.02.2020