KDevelop5/Manual/Working with source code/uk: Difference between revisions
(Created page with "Щоб додати нові вкладені функції, поверніться на вкладку <menuchoice>bus.h</menuchoice> і додайте назву функц...") |
(Updating to match new version of source page) |
||
(104 intermediate revisions by 2 users not shown) | |||
Line 11: | Line 11: | ||
Для роботи з проектами у '''KDevelop''' передбачено ''інструменти''. Інструмент надає певні дані щодо коду або виконує з ним певну дію. Інструментам відповідають кнопки вздовж периметра вікна програми (з вертикальним текстом на полях ліворуч і праворуч та горизонтальним вздовж нижнього поля). Якщо ви натиснете таку кнопку, у головному вікні буде відкрито підвікно — ''панель перегляду''; якщо кнопку буде натиснуто ще раз, відповідне підвікно буде закрито. | Для роботи з проектами у '''KDevelop''' передбачено ''інструменти''. Інструмент надає певні дані щодо коду або виконує з ним певну дію. Інструментам відповідають кнопки вздовж периметра вікна програми (з вертикальним текстом на полях ліворуч і праворуч та горизонтальним вздовж нижнього поля). Якщо ви натиснете таку кнопку, у головному вікні буде відкрито підвікно — ''панель перегляду''; якщо кнопку буде натиснуто ще раз, відповідне підвікно буде закрито. | ||
{{Note_(uk)|1=Щоб закрити підлегле вікно, ви можете просто натиснути кнопку зі значком <menuchoice>x</menuchoice> у верхньому правому куті цього допоміжного вікна.}} | {{Note_(uk)|1=Щоб закрити підлегле вікно, ви можете просто натиснути кнопку зі значком <menuchoice>x</menuchoice> у верхньому правому куті (або у верхньому лівому куті для інструментів на нижньому полі) цього допоміжного вікна.}} | ||
На наведеному вище зображенні ви можете бачити певний набір інструментів, вирівняних за лівим і правим полем. Ліворуч відкрито панель інструмента <menuchoice>Класи</menuchoice>, праворуч — <menuchoice>Фрагменти</menuchoice>. Посередині можна бачити панель редактора. З практичних міркувань, переважну частину часу розробки варто працювати лише з редактором та панеллю <menuchoice>Класи</menuchoice> чи <menuchoice>Перегляд коду</menuchoice>, відкритою ліворуч. На час використання певного інструмента можна відкрити його панель, яку після використання варто закрити з метою збільшення простору для панелі редактора. | На наведеному вище зображенні ви можете бачити певний набір інструментів, вирівняних за лівим і правим полем. Ліворуч відкрито панель інструмента <menuchoice>Класи</menuchoice>, праворуч — <menuchoice>Фрагменти</menuchoice>. Посередині можна бачити панель редактора. З практичних міркувань, переважну частину часу розробки варто працювати лише з редактором та панеллю <menuchoice>Класи</menuchoice> чи <menuchoice>Перегляд коду</menuchoice>, відкритою ліворуч. На час використання певного інструмента можна відкрити його панель, яку після використання варто закрити з метою збільшення простору для панелі редактора. | ||
Line 17: | Line 17: | ||
Після першого запуску '''KDevelop''' ви вже зможете скористатися кнопкою інструмента <menuchoice>Проєкти</menuchoice>. Натисніть цю кнопку: у відповідь буде відкрито панель зі списком проєктів, які було додано до сеансу у нижній частині вікна та панель перегляду файлової системи вашого проєкту у верхній його частині. | Після першого запуску '''KDevelop''' ви вже зможете скористатися кнопкою інструмента <menuchoice>Проєкти</menuchoice>. Натисніть цю кнопку: у відповідь буде відкрито панель зі списком проєктів, які було додано до сеансу у нижній частині вікна та панель перегляду файлової системи вашого проєкту у верхній його частині. | ||
У '''KDevelop''' ви можете скористатися багатьма [[Special:myLanguage/KDevelop5/Manual/Tool_list|іншими інструментами]], не всі з них представлено кнопками вздовж периметра вікна у початковому стані. Щоб додати кнопку, скористайтеся пунктом меню <menuchoice>Вікна -> Додати панель інструмента</menuchoice>. У результаті буде відкрито вікно для вибору бажаної панелі. У контекстному вікні ви зможете натискати кнопки ліворуч, вниз, праворуч для пересування панелей і вибору місця розташування панелей. Ось перелік можливих корисних інструментів: | |||
* '''Класи''': повний список всіх класів, які визначено у одному з проектів або у вашому сеансі з усіма вбудованими функціями та змінними. Натискання пункту елемента класу відкриє вікно редактора з місцем оголошення елемента, пункт якого було натиснуто. | * '''Класи''': повний список всіх класів, які визначено у одному з проектів або у вашому сеансі з усіма вбудованими функціями та змінними. Натискання пункту елемента класу відкриє вікно редактора з місцем оголошення елемента, пункт якого було натиснуто. | ||
Line 23: | Line 23: | ||
* '''Документи''': тут буде показано список поточних відкритих у редакторі файлів. | * '''Документи''': тут буде показано список поточних відкритих у редакторі файлів. | ||
* ''' | * '''Перегляд коду''': залежно від розташування курсора у редакторі файла, на цій панелі буде показано пов’язані з кодом дані. Наприклад, якщо курсор перебуває у рядку з <code>#include</code>, на панелі буде показано дані щодо файла, який включено до коду, зокрема дані щодо оголошених у файлі класів. Якщо курсор перебуває на порожньому рядку у файлі, на панелі буде показано класи і функції, оголошені і визначені у поточному файлі (всі як посилання: натискання відповідного пункту відкриватиме файл з оголошенням або визначенням класу чи функції). Якщо курсор перебуває на визначенні функції, на панелі буде показано місце оголошення та список місць, у яких використано функцію. | ||
* '''Файлова система''': показує ієрархічну структуру файлової системи. | * '''Файлова система''': показує ієрархічну структуру файлової системи. | ||
* ''' | * '''Документація''': надає вам змогу виконувати пошук даних на сторінках довідника (man) та у інших довідкових документах, зокрема документації до C++, Qt, PHP тощо. | ||
* ''' | * '''Фрагменти''': на цій панелі буде наведено фрагменти тексту, які використовують вами регулярно, і які ви не хочете повторно вводити кожного разу. У прикладі, на основі якого було створено знімок екрана, була потреба часто використовувати фрагмент коду <syntaxhighlight lang="cpp" line>if(vcs->isVersionControlled(source)) { | ||
VcsJob* job=vcs->copy(source, target); | VcsJob* job=vcs->copy(source, target); | ||
if(job) { | if(job) { | ||
return job->exec(); | return job->exec(); | ||
</syntaxhighlight>Цей вираз завжди використовуватиметься у такій формі кожного разу — чудовий кандидат на включення до списку фрагментів. | |||
* '''Konsole''': відкриває панель командного рядка у головному вікні '''KDevelop''', щоб ви могли віддати потрібну вам команду оболонки (наприклад, виконати <code>./configure</code>). | * '''Konsole''': відкриває панель командного рядка у головному вікні '''KDevelop''', щоб ви могли віддати потрібну вам команду оболонки (наприклад, виконати <code>./configure</code>). | ||
Line 47: | Line 47: | ||
[[Image:Kdevelop-variable-doc-tooltip.png|625px|thumb|center]] | [[Image:Kdevelop-variable-doc-tooltip.png|625px|thumb|center]] | ||
'''KDevelop''' | '''KDevelop''' показує підказку, зокрема тип змінної (тут: <code>container</code>), де цю змінну оголошено (''контейнер'', яким тут є функція-обгортка <code>operator()(AreaIndex *index)</code>, оскільки це локальна змінна), тип даних (змінна, не функція, клас або простір назв) та місце оголошення (у рядку 376, декількома рядками коду вище). | ||
У поточному контексті з символом, на який наведено вказівник миші, не пов’язано жодної документації. У нашому прикладі, де вказівник миші наведено на символ <code>Container</code> у рядку 376, буде показано такі дані: | У поточному контексті з символом, на який наведено вказівник миші, не пов’язано жодної документації. У нашому прикладі, де вказівник миші наведено на символ <code>Container</code> у рядку 376, буде показано такі дані: | ||
Line 56: | Line 55: | ||
Тут '''KDevelop''' показано оголошення зі стороннього файла (<code>container.h</code>, який є частиною зовсім іншого проекту того самого сеансу) разом з коментарем у форматі doxygen, який супроводжує цей оголошення. | Тут '''KDevelop''' показано оголошення зі стороннього файла (<code>container.h</code>, який є частиною зовсім іншого проекту того самого сеансу) разом з коментарем у форматі doxygen, який супроводжує цей оголошення. | ||
Кориснішими ці підказки робить те, що вони є динамічними: ви можете клацнути на пункті контейнера, щоб отримати відомості щодо контексту, у якому оголошено змінну (тобто щодо простору назв <code>Sublime</code>, зокрема того, де її оголошено, визначено, використано або якою є її документація), і ви можете клацнути на розфарбованих у синє посилань для перенесення позиції курсора до місця оголошення символу (наприклад, у <code>container.h</code>, рядок 40) або отримання списку місць, де цей символ використано у поточному файлі або в усіх проєктах поточного сеансу. Останній варіант часто корисним, якщо ви хочете вивчити те, як, наприклад, певну функцію використано у великій кодовій базі. | |||
{{Note_(uk)|1=Панель підказки з часом зникатиме: щоб її знову відкрити доведеться знов утримувати натиснутою клавішу <keycap>Alt</keycap> або наводити вказівник миші на фрагменти коду. Якщо вам потрібно зафіксувати дані з цієї панелі, відкрийте панель інструмента <menuchoice>Перегляд коду</menuchoice>. У нашому прикладі курсор перебуває у тій самій функції, що і раніше, а на панелі інструмента ліворуч показано той самий набір даних, що і на панелі підказки раніше:<!--}}--> | {{Note_(uk)|1=Панель підказки з часом зникатиме: щоб її знову відкрити доведеться знов утримувати натиснутою клавішу <keycap>Alt</keycap> або наводити вказівник миші на фрагменти коду. Якщо вам потрібно зафіксувати дані з цієї панелі, відкрийте панель інструмента <menuchoice>Перегляд коду</menuchoice>. У нашому прикладі курсор перебуває у тій самій функції, що і раніше, а на панелі інструмента ліворуч показано той самий набір даних, що і на панелі підказки раніше:<!--}}--> | ||
Line 82: | Line 81: | ||
Знову ж таки, за допомогою наведення вказівника миші на запис у списку можна отримати дані щодо відповідного символу, розташування його оголошення та визначення і випадків використання. Подвійним клацанням на пункті цього ієрархічного списку можна відкрити вікно редактора на позиції, де оголошено або визначено символ. | Знову ж таки, за допомогою наведення вказівника миші на запис у списку можна отримати дані щодо відповідного символу, розташування його оголошення та визначення і випадків використання. Подвійним клацанням на пункті цього ієрархічного списку можна відкрити вікно редактора на позиції, де оголошено або визначено символ. | ||
Але існують інші способи вивчення загальних відомостей. Наприклад, інструмент <menuchoice>Документи</menuchoice> надає панель перегляду документів, які відкрито, і надає можливість вибору одного з документів для перегляду і безпроблемного пересування від одного документа до іншого: | |||
[[Image:Kdevelop-document-view.png|625px|thumb|center]] | [[Image:Kdevelop-document-view.png|625px|thumb|center]] | ||
Ви також можете вибрати пункт із маленькою коробкою із чотирма кубиками у верхньому правому куті, щоб отримати список відкритих файлів, який має назву ''робочий набір''. Кожен рядок починається з поля для позначки, позначення якого вилучає файл з робочого списку. Також буде показано кнопку у правій частині, натискання якої надає вам змогу виконати записування до реєстру git. Корисно, якщо вам потрібно перейти до іншої гілки або до повністю іншого проєкту. | |||
[[Image:Kdevelop-upper-right-corner.png|400px|thumb|center]] | [[Image:Kdevelop-upper-right-corner.png|400px|thumb|center]] | ||
==== | ==== Пояснення щодо розфарбовування коду ==== | ||
'''KDevelop''' | '''KDevelop''' використовує різноманітні кольори для підсвічування різних об'єктів у початковому коді. Якщо ви знаєте призначення різних кольорів, ви можете швидко отримати багато інформації з початкового коду простим його переглядом (за кольорами) навіть не читаючи сам код. Правила підсвічування такі: | ||
* | * Для об'єктів типів Class / Struct, Enum (значень і типу), (загальних) функцій і членів класу визначено власні кольори (класи — зелені, переліки — темно-червоні, а учасники — темно-жовті або фіолетові, (загальні) функції — завжди фіолетові). | ||
* | * Усі загальні змінні буде розфарбовано у темно-зелений. | ||
* | * Ідентифікатори, які є визначеннями типів для інших типів буде розфарбовано у синьо-зелений колір. | ||
* | * Усі оголошення та визначення об'єктів буде показано напівжирним шрифтом. | ||
* | * Якщо доступ до учасника класу отримується з контексту, де його визначено (базового або похідного класу), його буде показано жовтим. Якщо ж це не так, його буде показано фіолетовим. | ||
* | * Якщо член класу є приватним (private) або захищеним (protected), його буде розфарбовано у дещо темніший колір при використанні. | ||
* | * Для змінних, які є локальними для області видимості функції, використовуються кольори веселки, які програма вибирає за хешем ідентифікатора. Це стосується і параметрів функції. Ідентифікатор матиме той самий колір у її області видимості (але той самий ідентифікатор матиме інший колір, якщо відповідає іншому об'єкту, тобто його перевизначено у вкладенішій області видимості). Зазвичай, для ідентифікатора із тією самою назвою у різних областях видимості буде використано той самий колір. Отже, якщо параметри із однаковими назвами приймають декілька функцій, кольори аргументів будуть однаковими. Розфарбовування у кольори веселки можна вимкнути окремо на рівні сторінки налаштовування загального розфарбовування у діалоговому вікні параметрів програми. | ||
* | * Ідентифікатори, для яких '''KDevelop''' не вдалося визначити відповідне оголошення, буде розфарбовано білим кольором. Іноді причиною такого розфарбовування є пропущені директиви <code>#include</code>. | ||
* | * На додачу до цього розфарбовування буде застосовано звичайне розфарбовування синтаксичних конструкцій редактора, які відомі з '''Kate'''. Семантичне підсвічування у '''KDevelop''' завжди перевизначає підсвічування редактора, якщо виникне конфлікт. | ||
<span id="Navigating in source code"></span> | <span id="Navigating in source code"></span> | ||
=== Пересування між фрагментами коду === | === Пересування між фрагментами коду === | ||
Line 127: | Line 125: | ||
На рівні окремого файла у '''KDevelop''' передбачено багато способів навігації кодом програми. Приклад: | На рівні окремого файла у '''KDevelop''' передбачено багато способів навігації кодом програми. Приклад: | ||
* ''' | * '''Схема''': ви можете переглянути схему вмісту поточного файла в один із принаймні трьох різних способів: | ||
** | ** Натисканням кнопки <menuchoice>Outline</menuchoice> ''Панелі інструментів'', яку, зазвичай, розташовано у лівій частині вікна.[[Image:Kdevelop-outline1.png|625px|thumb|center]]Передбачено кнопку для упорядковування усього за зростанням або спаданням та панель фільтрування. Далі, ви можете просто вибрати пункт, до якого слід перейти, або, якщо пунктів багато, почати вводити критерій пошуку, щоб у списку лишилися потрібні вам записи. Зі зростанням кількості символів у введеному критерії, список ставатиме усе меншим, оскільки з нього зникатимуть усі назви, які не містять введеного вами тексту, аж доки ви не будете готові вибрати один з варіантів, що лишився у списку. | ||
** | ** Комбінацією клавіш <keycap>Alt + Ctrl + N</keycap> можна відкрити діалогове вікно зі списком усіх оголошень функцій та класів.[[Image:Kdevelop-outline2.png|625px|thumb|center]]Там також буде наведено опис того, що відбувається у поточному файлі. Крім того, у цьому діалоговому вікні ви зможете виконати пошук, якщо список є надто довгим, та вибрати оголошення для переходу до нього. | ||
** | ** На панелі інструментів вікна навігації кодом передбачено смужку редагування тексту, до якої ви можете ввести назву функції або класу для швидкого пошуку. Можна просто клацнути на смужці редагування, щоб побачити схему. Якщо клацнути на пункті у контекстному списку, програма покаже підказку щодо пункту і посилання на його визначення та використання.[[File:Kdevelop-outline4.png|400px|thumb|center]] | ||
* | * Файли коду впорядковано у список оголошень та визначень. За допомогою натискання комбінацій клавіш <keycap>Alt + Ctrl + PgUp</keycap> і <keycap>Alt + Ctrl + PgDown</keycap> можна переходити до визначення попередньої або наступної функції у файлі. | ||
==== Пересування проектами та сеансами: семантичне пересування ==== | ==== Пересування проектами та сеансами: семантичне пересування ==== | ||
Як ми вже згадували у інших частинах підручника, '''KDevelop''', зазвичай, не працює із окремими файлами початкових кодів, а розглядає проєкти програмного забезпечення уцілому (або, точніше, розглядає як ціле усі проєкти, які є частиною поточного сеансу). Наслідком цього є те, що програма пропонує багато можливостей для навігації усіма проєктами. Деякі з цих можливостей є похідними від тих, які вже було обговорено у розділі щодо [[Special:myLanguage/KDevelop5/Manual/Working with source code#Exploring source code|вивчення початкового коду]], інші ж є цілком відмінними. Загальним є те, що ці можливості з навігації засновано на ''семантичному розумінні'' коду, тобто вони пропонують вам щось, що потребує обробки коду усіх проєктів і поєднання даних. У наведеному нижче списку описано деякі способи для навігації початковим кодом, який розкидано між потенційно великою кількістю файлів: | |||
* | * Як зазначалося у розділі щодо [[Special:myLanguage/KDevelop5/Manual/Working with source code#Exploring source code|огляду початкового коду]], програма може показувати панель підказки із поясненнями щодо простору назв, класу, функції або назв змінних у відповідь на наведення на його пункт вказівника миші або утримання протягом певного часу натиснутою клавіші <keycap>Alt</keycap>. Ось приклад: [[Image:kdevelop-class-doc-tooltip.png|thumb|525px|center]] Клацання на посиланнях оголошення символу або розгортання списку використань надає вам змогу переходити до відповідних місць коду. Якщо потрібно, буде відкрито відповідний файл, і курсор буде переміщено до відповідного місця. Такого самого результату можна досягти використанням панелі '''Навігація кодом''', яку ми описували раніше. | ||
* ''' | * '''Швидко відкрити''': дуже потужний спосіб переходу до інших файлів або місць, який використовується для різноманітних способів ''швидкого відкриття'' у '''KDevelop'''. Передбачено чотири версії цих способів: | ||
** ''' | ** '''Швидко відкрити клас''' (<menuchoice>Навігація -> Швидко відкрити клас</menuchoice> або <keycap>Alt + Ctrl + C</keycap>): ви отримаєте список усіх класів у цьому сеансі. Почніть вводити (частину) назви класу, і у список скорочуватиметься до лише тих класів, у назвах яких міститься введений фрагмент тексту. Коли список стане достатньо коротким, виберіть у ньому запис за допомогою клавіш із стрілками вгору і вниз, і '''KDevelop''' перенесе вас до місця, де оголошено клас. | ||
** ''' | ** '''Швидко відкрити функцію''' (<menuchoice>Навігація -> Швидко відкрити функцію</menuchoice> або <keycap>Alt + Ctrl + M</keycap>): ви отримаєте список усіх функцій (членів класів), які є частиною проєктів у поточному сеансі, і зможете вибрати потрібний запис у списку у спосіб, який описано вище. Зауважте, що до цього списку може бути включено і оголошення і визначення функцій. | ||
** ''' | ** '''Швидко відкрити файл''' (<menuchoice>Навігація -> Швидко відкрити файл</menuchoice> або <keycap>Alt + Ctrl + O</keycap>): ви отримаєте список усіх файлів, які є частиною проєктів поточного сеансу і зможете вибрати з нього пункт у спосіб, який описано вище. | ||
** ''' | ** '''Універсальне швидке відкриття''' (<menuchoice>Навігація -> Швидко відкрити</menuchoice> або <keycap>Alt + Ctrl + Q</keycap>): якщо ви не пам'ятаєте, яку з комбінацій клавіш пов'язано із описаними вище командами, можете скористатися цим універсальним засобом — він просто покаже вам комбінований список усіх файлів, функцій, класів та інших записів, з яких ви можете вибрати потрібний. | ||
* ''' | * '''Перейти до оголошення/визначення''': при реалізації функції (члена класу) часто виникає потреба у зворотному переході до місця оголошення функції, наприклад, для підтримання синхронізації списку аргументів функції між оголошенням та визначенням або оновлення документації. Для здійснення подібних переходів розташуйте курсор на назві функції і виберіть пункт меню <menuchoice>Навігація -> Перейти до оголошення</menuchoice> (або натисніть комбінацію клавіш <keycap>Ctrl + .</keycap>), щоб перейти до місця оголошення функції. Існує декілька способів повернутися до початкового місця: | ||
** | ** Вибір пункту меню <menuchoice>Навігація -> Перейти до визначення</menuchoice> (або натискання комбінації клавіш <keycap>Ctrl + ,</keycap>). | ||
** | ** Вибір пункту меню <menuchoice>Навігація -> Попередній відвіданий контекст</menuchoice> (або натисніть комбінацію клавіш <keycap>Meta + ←</keycap>), як це описано нижче. | ||
{{Note_(uk)|1=Перехід до оголошення символу не обмежується лише функціями, які ви реалізуєте. Цей спосіб працює і у разі розташування курсора на назві (локальної, загальної чи вбудованої) змінної: вибір відповідного пункту меню призведе до пересування області перегляду до оголошення символу. Отже ви можете, наприклад, розташувати курсор на назві класу у оголошенні змінної функції і перейти до оголошення цього класу.}} | {{Note_(uk)|1=Перехід до оголошення символу не обмежується лише функціями, які ви реалізуєте. Цей спосіб працює і у разі розташування курсора на назві (локальної, загальної чи вбудованої) змінної: вибір відповідного пункту меню призведе до пересування області перегляду до оголошення символу. Отже ви можете, наприклад, розташувати курсор на назві класу у оголошенні змінної функції і перейти до оголошення цього класу.}} | ||
Line 153: | Line 151: | ||
* '''Перемкнути визначення/оголошення''': у наведеному вище прикладі для переходу до місця оголошення поточної функції нам потрібно було спочатку розташувати курсор на назві функції. Якщо вам не хочеться цього робити, скористайтеся пунктом меню <menuchoice>Навігація -> Перемкнути визначення/оголошення</menuchoice> (або натисніть комбінацію клавіш <keycap>Shift + Ctrl + C</keycap>), щоб перейти до оголошення функції, у якій перебуває курсор. Повторний вибір цього пункту меню поверне курсор назад до визначення функції. | * '''Перемкнути визначення/оголошення''': у наведеному вище прикладі для переходу до місця оголошення поточної функції нам потрібно було спочатку розташувати курсор на назві функції. Якщо вам не хочеться цього робити, скористайтеся пунктом меню <menuchoice>Навігація -> Перемкнути визначення/оголошення</menuchoice> (або натисніть комбінацію клавіш <keycap>Shift + Ctrl + C</keycap>), щоб перейти до оголошення функції, у якій перебуває курсор. Повторний вибір цього пункту меню поверне курсор назад до визначення функції. | ||
* ''' | * '''Попереднє/Наступне використання''': якщо ви розташуєте курсор на назві локальної змінної і виберете пункт меню <menuchoice>Навігація -> Наступне використання</menuchoice> (або натиснете комбінацію клавіш <keycap>Meta + Shift + →</keycap>), програма перенесе вас до наступного використання цієї змінної у коді. (Зауважте, що при цьому не виконуватиметься простий пошук назви змінної, але враховуватиметься те, що змінні із тією самою назвою назвою, але у різних областях видимості є різними.) Те саме працює і для використань назв функцій. Вибір пункту меню <menuchoice>Навігація -> Попереднє використання</menuchoice> (або натискання комбінації клавіш <keycap>Meta + Shift + ←</keycap>) призведе до переходу до попереднього використання символу. | ||
{{Note_(uk)|1=Щоб переглянути список всіх використань назв, якими здійснюватиметься циклічний перехід внаслідок використання цієї команди, розташуйте курсор на назві символу і відкрийте панель <menuchoice>Перегляд коду</menuchoice> або натисніть і утримуйте клавішу <keycap>Alt</keycap>. Докладніше про використання цього прийому можна дізнатися з розділу щодо [[Special:myLanguage/KDevelop4/Manual/Working_with_source_code#File_scope_information|навігації кодом]].}} | {{Note_(uk)|1=Щоб переглянути список всіх використань назв, якими здійснюватиметься циклічний перехід внаслідок використання цієї команди, розташуйте курсор на назві символу і відкрийте панель <menuchoice>Перегляд коду</menuchoice> або натисніть і утримуйте клавішу <keycap>Alt</keycap>. Докладніше про використання цього прийому можна дізнатися з розділу щодо [[Special:myLanguage/KDevelop4/Manual/Working_with_source_code#File_scope_information|навігації кодом]].}} | ||
* | * '''Список контекстів''': у браузерах є можливість переходити назад і вперед списком нещодавно відвіданих сторінок. У '''KDevelop''' реалізовано подібні можливості, але замість переходу між сторінками ви переходите між ''контекстами''. Контекстом є поточне місце курсора. Ви можете змінити його переходом у будь-який спосіб, окрім команд пересування курсора, наприклад, клацанням на пункті місця на панелі підказки, на панелі інструментів <menuchoice>Навігація кодом</menuchoice>, на одному з пунктів у меню <menuchoice>Навігація</menuchoice> або використанням будь-якої іншої команди навігації. За допомогою пунктів меню <menuchoice>Навігація -> Попередній відвіданий контекст</menuchoice> (<keycap>Meta + ←</keycap>) і <menuchoice>Навігація -> Наступний відвіданий контекст</menuchoice> (<keycap>Meta + →</keycap>) ви можете переходити між пунктами у списку відвіданих контекстів так, як ви переходите між сторінками за допомогою кнопок <menuchoice>назад</menuchoice> і <menuchoice>вперед</menuchoice> у списку відвіданих сторінок у браузері. Крім того, ви можете скористатися панеллю інструментів браузера, де можна натиснути кнопку зі стрілкою ліворуч для переходу назад до попереднього файла і номера рядка, або натиснути кнопку зі стрілкою вниз, яка відкриває контекстний список попередніх відвіданих файлів та рядків.[[Image:Kdevelop-context-history.png|525px|thumb|center]] | ||
* | * Нарешті, передбачено панелі інструментів, за допомогою яких ви можете переходити до різних місць у програмному коді. Наприклад, на панелі '''Класи''' буде наведено список усіх просторів назв та класів в усіх проєктах поточного сеансу. У списку ви можете розгортати записи для перегляду функцій та змінних-членів кожного з цих класів: [[Image:Kdevelop-classes-view.png|525px|thumb|center]] Подвійним клацанням на записі (або використанням відповідного запису контекстного меню, яке можна викликати клацанням правою кнопкою миші) ви можете перейти до місця оголошення запису. Інші засоби надають змогу виконувати подібні ж речі. Наприклад, на панелі <menuchoice>Проєкти</menuchoice> буде показано писок файлів, які є частиною сеансу: [[Image:kdevelop-class-doc-tooltip.png|thumb|525px|center]]Знову ж таки, подвійне клацання на пункті файла призведе до його відкриття. | ||
Line 172: | Line 170: | ||
Ймовірно, найкориснішою можливістю є можливість з автоматичного завершення фрагментів коду. Розглянемо, наприклад, такий фрагмент коду: | Ймовірно, найкориснішою можливістю є можливість з автоматичного завершення фрагментів коду. Розглянемо, наприклад, такий фрагмент коду: | ||
<!--}}--> | <!--}}--><syntaxhighlight lang="cpp" line> | ||
class Car { | class Car { | ||
// ... | // ... | ||
Line 182: | Line 180: | ||
{ | { | ||
Car my_ride; | Car my_ride; | ||
// ... | // ...do something with this variable... | ||
std::string color = my_ride.ge | std::string color = my_ride.ge | ||
</ | </syntaxhighlight><!--{--> | ||
У останньому рядку '''KDevelop''' запам’ятає, що змінна <code>my_ride</code> належить до типу <code>Car</code> і буде автоматично пропонувати доповнення назви вбудованої функції <code>ge</code> у форматі <code>get_color</code>. Фактично, вам достатньо вводити назву, аж доки список знайдених відповідників не починатиметься з потрібного вам виразу, а потім натиснути клавішу <keycap>Enter</keycap>: | У останньому рядку '''KDevelop''' запам’ятає, що змінна <code>my_ride</code> належить до типу <code>Car</code> і буде автоматично пропонувати доповнення назви вбудованої функції <code>ge</code> у форматі <code>get_color</code>. Фактично, вам достатньо вводити назву, аж доки список знайдених відповідників не починатиметься з потрібного вам виразу, а потім натиснути клавішу <keycap>Enter</keycap>: | ||
Line 194: | Line 192: | ||
[[File:Kdevelop-get-color2.png|500px|thumb|center]] | [[File:Kdevelop-get-color2.png|500px|thumb|center]] | ||
Автодоповнення може заощадити вам багато часу на введення тексту, якщо у вашому проєкті використовується багато довгих назв змінних та функцій. Крім того, так можна уникнути друкарських помилок у назвах (та помилок при компіляції, які є результатом таких помилок) і значно спростити запам'ятовування точних назв функцій. Наприклад, якщо усі назви функцій-отримувачів починаються із <code>get_</code>, можливість автодоповнення зможе показати список усіх можливих отримувачів, ввівши лише перші чотири літери, ймовірно, нагадавши вам, яку з функцій слід використати. Зауважте, що для забезпечення працездатності автодоповнення, ні оголошення класу <code>Car</code>, ні оголошення змінної <code>my_ride</code> не обов'язково мають зберігатися у тому самому файлі, у якому ви зараз пишете код. '''KDevelop''' достатньо значти, що ці класи і змінні поєднано, тобто файли, у яких виконано поєднання, мають бути частиною проєкту над якими ви зараз працюєте. | |||
{{Note_(uk)|1='''KDevelop''' не завжди може здогадатися, коли слід допомогти вам автоматичним доповненням коду. Якщо підказку автоматичного доповнення не було відкрито автоматично, натисніть комбінацію клавіш <keycap>Ctrl + Пробіл</keycap>, щоб відкрити список варіантів вручну. Загалом же, для того, щоб можна було скористатися автоматичним доповненням, '''KDevelop''' має обробити файли коду вашого проекту. Цю дію буде виконано у фоновому режимі для всіх файлів, які є частиною проектів поточного сеансу після запуску '''KDevelop''', а також після того, як ви припините вводити дані на частку секунди (тривалість паузи можна змінити).}} | {{Note_(uk)|1='''KDevelop''' не завжди може здогадатися, коли слід допомогти вам автоматичним доповненням коду. Якщо підказку автоматичного доповнення не було відкрито автоматично, натисніть комбінацію клавіш <keycap>Ctrl + Пробіл</keycap>, щоб відкрити список варіантів вручну. Загалом же, для того, щоб можна було скористатися автоматичним доповненням, '''KDevelop''' має обробити файли коду вашого проекту. Цю дію буде виконано у фоновому режимі для всіх файлів, які є частиною проектів поточного сеансу після запуску '''KDevelop''', а також після того, як ви припините вводити дані на частку секунди (тривалість паузи можна змінити).}} | ||
Line 216: | Line 214: | ||
[[File:Kdevelop-bus4.png|475px|thumb|center]] | [[File:Kdevelop-bus4.png|475px|thumb|center]] | ||
Зауважте, що реалізацію вже розпочато. Але у межах багатьох стилів програмування функції не слід реалізовувати у файлах заголовків, це слід робити у відповідних файлах .cpp. Для цього розташуйте курсор на назві функції і скористайтеся пунктом меню <menuchoice>Код -> Пересунути до коду</menuchoice> або натисніть комбінацію клавіш <keycap>Ctrl + Alt + S</keycap>. Код між фігурними дужками буде пересунуто з файла заголовків (його буде замінено на крапку з комою для завершення оголошення функції) до відповідного файла коду: | |||
[[File:Kdevelop-bus3.png|475px|thumb|center]] | [[File:Kdevelop-bus3.png|475px|thumb|center]] | ||
Введення коду розпочато. Змінна <code>students</code> має, ймовірно, бути вбудованою змінною класу <code>Bus</code>, але її ще не додано до цього класу. '''KDevelop''' підкреслено цю змінну, щоб позначити те, що середовищу ще нічого не відомо про цю змінну. Цю проблему просто розв’язати: натискання назви змінної відкриє таку панель підказки: | |||
[[File:Kdevelop-bus6.png|475px|thumb|center]] | [[File:Kdevelop-bus6.png|475px|thumb|center]] | ||
Нарешті, метод використання пункту меню <menuchoice>Код -> Пересунути до коду</menuchoice> не завжди призводить до вставляння вбудованої функції до бажаного місця у коді. Наприклад, вам може бути потрібним визначення коду як <code>inline</code> і розташування його у нижній частині файла заголовків. У такому разі вкажіть оголошення і почніть введення визначення функції ось так: | |||
[[Image:Kdevelop-add-inline.png|475px|thumb|center]] | [[Image:Kdevelop-add-inline.png|475px|thumb|center]] | ||
==== | ==== Оголошення для документування ==== | ||
Хороший код завжди добре документовано, як на рівні реалізації алгоритмів у функціях, так і на рівні інтерфейсу, — тобто класи (вбудовані і загальні) функції та (вбудовані і загальні) змінні слід документувати, щоб всім було зрозумілим їхнє призначення, можливі значення аргументів, попередні та остаточні умови тощо. У документуванні інтерфейсів фактичним стандартом є формат коментарів [http://www.doxygen.org doxygen], дані його можна видобути і показати на придатних для пошуку інтернет-сторінках. | |||
'''KDevelop''' | У '''KDevelop''' передбачено підтримку коментарів у цьому форматі за допомогою скорочення для створення оболонки-коментаря, який документуватиме клас або вбудовану функцію. Наприклад, припустімо ви вже створили такий код: | ||
<syntaxhighlight lang="cpp" line> | |||
class Car { | class Car { | ||
public: | public: | ||
std::string get_color () const; | std::string get_color () const; | ||
}; | }; | ||
</ | </syntaxhighlight> | ||
Тепер нехай вам потрібно додати документацію для класу і вбудованої функції. Для цього пересуньте курсор на перший рядок коду і скористайтеся пунктом меню <menuchoice>Код -> Документувати оголошення</menuchoice> або натисніть комбінацію клавіш <keycap>Alt + Shift + D</keycap>. '''KDevelop''' відкриє таке діалогове вікно: | |||
[[Image:Kdevelop-document-declaration.png|475px|thumb|center]] | [[Image:Kdevelop-document-declaration.png|475px|thumb|center]] | ||
Курсор вже перебуває у затіненій області, щоб ви могли ввести короткий опис (після ключового слова doxygen <code>@brief</code>) цього класу. Тепер ви можете продовжити додавати документацію до цього коментаря, який краще пояснюватиме призначення класу: | |||
[[Image:Kdevelop-document-class-purpose.png|475px|thumb|center]] | [[Image:Kdevelop-document-class-purpose.png|475px|thumb|center]] | ||
Коли ви дістанетеся кінця рядка, натисніть <keycap>Enter</keycap>, і '''KDevelop''' автоматично розпочне новий рядок, який починатиметься із зірочки, і відступить курсором на один символ. По завершенню документування запису і натискання <keycap>Enter</keycap> поза областю документування, сіре підсвічування буде вилучено. | |||
Тепер виконаємо документування вбудованої функції. Знову розташуйте курсор на рядку оголошення і виберіть пункт меню <menuchoice>Код -> Документувати оголошення</menuchoice> або натисніть комбінацію клавіш <keycap>Alt + Shift + D</keycap>: | |||
[[Image:Kdevelop-documenting-function.png|475px|thumb|center]] | [[Image:Kdevelop-documenting-function.png|475px|thumb|center]] | ||
Знову ж таки, '''KDevelop''' автоматично створить каркас коментаря разом з документації щодо самої функції, а також типом даних, які вона повертає. У нашому випадку назва функції доволі очевидно описує її призначення, але часто аргументи функції можуть бути доволі неочевидними, їх слід документувати окремо. Наприклад, розгяньмо трохи цікавішу функцію та коментар, який автоматично створить для неї '''KDevelop''': | |||
[[Image:Kdevelop-document-paint-function.png|475px|thumb|center]] | [[Image:Kdevelop-document-paint-function.png|475px|thumb|center]] | ||
У нашому прикладі у запропонованому коментарі вже містяться всі поля Doxygen для окремих параметрів. | |||
==== | ==== Перейменування змінних, функцій і класів ==== | ||
Іноді виникає потреба у перейменуванні функції, класу або змінної. Наприклад, нехай маємо такий код: | |||
[[Image:kdevelop-38.png|thumb|550px|center]] | [[Image:kdevelop-38.png|thumb|550px|center]] | ||
Нехай пізніше ми зрозуміємо, що назва <code>remove_students</code> є невдалою, і її варто назвати, скажімо, <code>throw_out_students</code>. Ви могли б виконати пошук з заміною назви функції, але у такого способу є два недоліки: | |||
* | * Функцію може бути використано у декількох файлах. | ||
* | * Нам потрібно перейменувати лише цю функцію і не чіпати функції, які можуть мати ту саму назву, але які оголошено у інших класах або просторах назв. | ||
Обидві ці проблеми можна розв’язати наведенням курсора на всі використання назви функції з наступним вибором пункту <menuchoice>Код -> Перейменувати оголошення</menuchoice> (або клацанням правою кнопкою миші на назві з вибором пункту <menuchoice>Перейменувати Bus::remove_students</menuchoice>). У відповідь буде відкрито діалогове вікно, за допомогою якого ви зможете ввести нову назву функції і переглянути всі місця, де використано функцію: | |||
[[Image:kdevelop-39.png|thumb|550px|center]] | [[Image:kdevelop-39.png|thumb|550px|center]] | ||
==== | ==== Фрагменти коду ==== | ||
У більшості проектів зустрічаються фрагменти коду, які доводиться використовувати доволі часто. Приклади: інструкції компілятора, цикл для всіх інструкцій, для функцій запису інтерфейсу користувача перевірки введених користувачем даних без відкриття вікна повідомлення про помилку. У проекті автора цього підручника часто використовується такий різновид коду: | |||
<syntaxhighlight lang="cpp" line> | |||
for (typename Triangulation<dim,spacedim>::active_cell_iterator; | for (typename Triangulation<dim,spacedim>::active_cell_iterator; | ||
cell = triangulation.begin_active(); | cell = triangulation.begin_active(); | ||
cell != triangulation.end(); ++cell) | cell != triangulation.end(); ++cell) | ||
... | ... Робимо щось із cell ... | ||
</ | </syntaxhighlight> | ||
Замість введення тексту подібного типу знову і знову (із усіма можливими друкарськими помилками), ви можете скористатися інструментом '''KDevelop''' <menuchoice>Фрагменти</menuchoice>. Для цього відкрийте панель інструментів (див. [[Special:myLanguage/KDevelop5/Manual/Working with source code#Tools and views|Інструменти і панелі перегляду]], якщо відповідної кнопки ще немає на периметрі вашого вікна). Крім того, ви можете скористатися пунктом <menuchoice>Вікно -> Панелі інструментів</menuchoice> на верхній панелі меню і увімкнути <menuchoice>Фрагменти</menuchoice>. Далі, натисніть кнопку <menuchoice>Додати сховище</menuchoice> (дещо оманлива назва — за допомогою цього пункту можна створити іменовану збірку фрагментів для початкових кодів певного типу, наприклад, коду C++) і створіть порожнє сховище. Потім натисніть <menuchoice>Додати фрагмент</menuchoice>, щоб додати фрагмент і відкрити діалогове вікно, подібне до такого: | |||
[[Image:Kdevelop-snippet.png|475px|thumb|center]] | [[Image:Kdevelop-snippet.png|475px|thumb|center]] | ||
Якщо сховища із фрагментами ще не було створено, і ваш проєкт засновано на C++, використання пункту меню <menuchoice>Інструменти -> Створити фрагмент</menuchoice> призводить до створення сховища із назвою ''Фрагменти ISO C++'' і записування ваших фрагментів до сховища, як це показано вище. Праворуч у діалоговому вікні ''Створення фрагмента'' розташовано панель перегляду, на якій показано фрагменти, якими можна скористатися. | |||
{{ | {{Note_uk|1=У назві фрагмента не повинно міститися пробілів або інших спеціальних символів, оскільки вона має бути подібною до звичайної назви функції або змінної (з причин, які буде висвітлено у наступному абзаці). }} | ||
Щоб скористатися таким чином визначеним фрагментом, вам слід просто почати вводити у коді його назву, як ви це робите для будь-яких інших функцій або змінних. Для введених літер буде відкрито панель автоматичного доповнення (це означає, що можна використовувати будь-які достатньо довгі для розрізнення назви фрагментів, зокрема назви, подібні до використаної нами), якщо ви виберете відповідний пункт фрагмента на панелі підказки автоматичного доповнення (наприклад, натисканням клавіші <keycap>Enter</keycap>), вже введену частину назви фрагмента буде замінено повним текстом фрагмента з відповідними відступами: | |||
[[File:Kdevelop-snippet-entry-preview.png|475px|thumb|center]] | [[File:Kdevelop-snippet-entry-preview.png|475px|thumb|center]] | ||
Зауважте, що, щоб це спрацювало, слід відкрити або зробити видимою панель інструментів <menuchoice>Фрагменти</menuchoice>. Альтернативним способом вставлення фрагмента є просте клацання на ньому на панелі інструментів фрагментів. Якщо навести вказівник миші на фрагмент, програма покаже вам панель перегляду коду фрагмента. | |||
{{ | {{Note_(uk)|1=Фрагменти є набагато потужнішими, ніж було пояснено. Повний опис можливостей, які вони надають, ознайомтеся з [[Special:myLanguage/KDevelop5/Manual/Tool_list/Snippets|докладною документацією з інструмента «Фрагменти»]].}}<span id="Modes and working sets"></span> | ||
=== | === Режими і робочі набори === | ||
[[File:Kdevelop-code-button.png|250px|thumb|center]] | [[File:Kdevelop-code-button.png|250px|thumb|center]] | ||
Якщо ви вже дісталися так далеко, зверніть увагу на верхній правий кут головного вікна '''KDevelop''' — ви побачити кнопку коду. Якщо натиснути цю кнопку, програма запропонує два '''варіанти''' дій: <menuchoice>Внести поточний проєкт...</menuchoice> (див. [[Special:myLanguage/KDevelop5/Manual/Working with version control systems|робота із системами керування версіями]]) та <menuchoice>Діагностика</menuchoice> (див. [[Special:myLanguage/KDevelop5/Manual/Debugging programs|діагностування вад у програмах]]). | |||
[[File:Kdevelop sessionsprojectsworkingsets.png|250px|thumb|center]] | [[File:Kdevelop sessionsprojectsworkingsets.png|250px|thumb|center]] | ||
Для кожного з режимів передбачено власний набір інструментів, кнопки яких розташовано вздовж периметра вікна середовища, для кожного режиму передбачено власний ''робочий набір'' відкритих файлів і документів. Крім того, кожен такий робочий набір пов’язано з поточним сеансом, тобто маємо взаємозв’язок, подібний до показаного вище. Зауважте, що файли у робочому наборі є частиною одного сеансу, але можуть належати до різних проектів, які є частинами цього сеансу. | |||
Якщо ви відкрили вікно '''KDevelop''' вперше, робочий набір буде порожнім, — ще не відкрито жодного файла. Але з відкриттям файлів для редагування (або діагностики, перегляду у інших режимах) ваш робочий набір розширюватиметься. Кожного разу, коли ви завершуватимете роботу '''KDevelop''', а потім починатимете її знову, робочий набір буде зберігатися і відновлюватися, тобто ви працюватимете з одним набором відкритих файлів. | |||
[[File:kdevelop-upper-right-corner.png|thumb|300px|center]] | [[File:kdevelop-upper-right-corner.png|thumb|300px|center]] | ||
[[File:kdevelop-working-set-icon.png|thumb|100px|center]] | [[File:kdevelop-working-set-icon.png|thumb|100px|center]] | ||
Якщо ви наведете вказівник миші на символ для робочого набору, програма покаже панель підказки зі списком файлів, які відкрито у цьому робочому наборі (у нашому прикладі це файли <code>helper.h</code>, <code>helper.cpp</code>, <code>filemanagerlistjob.h</code> та <code>filemanagerlistjob.cpp</code>). Піктограма робочого набору може мати різні кольори у різний час, але ці кольори не мають певного значення. Клацання на квадраті зі знаком «мінус» закриє вкладку для відповідного файла у робочому наборі. Суть роботи пункту закриття робочого набору полягає у тому, що його вибір не лише закриває усі файли, але і просить вас зберегти усі файли, до яких внесено зміни, але які не збережено, і відкриває новий порожній набір.<span id="Some useful keyboard shortcuts"></span> | |||
=== | === Деякі корисні клавіатурні скорочення === | ||
'''KDevelop' | У редакторі '''KDevelop''' використано стандартні клавіатурні скорочення для звичайних дій з редагування. Ці скорочення можна змінити, якщо у вас виникне така потреба. | ||
[[File:Kdevelop-shortcuts.png|400px|thumb|center]] | [[File:Kdevelop-shortcuts.png|400px|thumb|center]] | ||
Передбачено пункт для налаштовування і зберігання різних схем клавіатурних скорочень. За допомогою відповідного вікна ви можете експортувати та імпортувати будь-які ваші схеми. | |||
[[File:Kdevelop-shortcut-schemes.png|400px|thumb|center]] | [[File:Kdevelop-shortcut-schemes.png|400px|thumb|center]] | ||
Втім, передбачено також підтримку декількох додаткових дій при редагуванні початкового коду. Деякі з цих дій пов'язано із натисканням певних комбінацій клавіш. Зокрема, часто є зручними такі комбінації: | |||
{| | {| class="wikitable" | ||
!colspan="2 | !colspan="2"| Пересування кодом | ||
|- | |- | ||
| <keycap>Ctrl+Alt+O</keycap> | | <keycap>Ctrl+Alt+O</keycap> | ||
| | | Пришвидшене відкриття файла: вкажіть частину назви файла і виберіть той з них у каталозі проектів поточного сеансу, який вам потрібен; цей файл і буде відкрито. | ||
|- | |- | ||
| <keycap>Ctrl+Alt+C</keycap> | | <keycap>Ctrl+Alt+C</keycap> | ||
| | | Пришвидшене відкриття класу: вкажіть частину назви класу і виберіть ту з назв класів, яка вам потрібна; курсор буде переведено до рядка оголошення класу. | ||
|- | |- | ||
| <keycap>Ctrl+Alt+M</keycap> | | <keycap>Ctrl+Alt+M</keycap> | ||
| | | Пришвидшене відкриття функції: вкажіть частину назви функції (частини класу) і виберіть з запропонованих варіантів той, який вам потрібен; зауважте, що у списку буде показано оголошення і визначення, а курсор буде переведено до вибраного вами пункту. | ||
|- | |- | ||
| <keycap>Ctrl+Alt+Q</keycap> | | <keycap>Ctrl+Alt+Q</keycap> | ||
| | | Універсальне пришвидшення відкриття: вкажіть будь-які дані (назву файла, назву класу, назву функції), і вам буде показано список всіх частин проекту, які відповідають критерію пошуку. | ||
|- | |- | ||
| <keycap>Ctrl+Alt+N</keycap> | | <keycap>Ctrl+Alt+N</keycap> | ||
| | | Огляд: показує список всіх дій, які виконуються у файлі, наприклад, оголошень класів та визначень функцій. | ||
|- | |- | ||
| <keycap>Ctrl+,</keycap> | | <keycap>Ctrl+,</keycap> | ||
| | | Перейти до визначення функції, якщо курсор перебуває у місці її оголошення. | ||
|- | |- | ||
| <keycap>Ctrl+.</keycap> | | <keycap>Ctrl+.</keycap> | ||
| | | Перейти до оголошення функції або змінної, якщо курсор перебуває у позиції визначення функції. | ||
|- | |- | ||
| <keycap>Ctrl+Alt+PageDown</keycap> | | <keycap>Ctrl+Alt+PageDown</keycap> | ||
| | | Перейти до наступної функції | ||
|- | |- | ||
| <keycap>Ctrl+Alt+PageUp</keycap> | | <keycap>Ctrl+Alt+PageUp</keycap> | ||
| | | Перейти до попередньої функції | ||
|- | |- | ||
| <keycap>Ctrl+G</keycap> | | <keycap>Ctrl+G</keycap> | ||
| | | Перейти до рядка | ||
|- | |- | ||
!colspan="2 | !colspan="2"| Пошук і заміна | ||
|- | |- | ||
| <keycap>Ctrl+F</keycap> | | <keycap>Ctrl+F</keycap> | ||
| | | Знайти | ||
|- | |- | ||
| <keycap>F3</keycap> | | <keycap>F3</keycap> | ||
| | | Знайти далі | ||
|- | |- | ||
| <keycap>Ctrl+R</keycap> | | <keycap>Ctrl+R</keycap> | ||
| | | Замінити | ||
|- | |- | ||
| <keycap>Ctrl+Alt+F</keycap> | | <keycap>Ctrl+Alt+F</keycap> | ||
| | | Знайти і замінити у декількох файлах | ||
|- | |- | ||
!colspan="2 | !colspan="2" | Інші команди | ||
|- | |- | ||
| <keycap>Ctrl+_</keycap> | | <keycap>Ctrl+_</keycap> | ||
| | | Згорнути один рівень: вилучити блок з перегляду, наприклад, якщо ви бажаєте зосередитися на загальнішій картині у функції. | ||
|- | |- | ||
| <keycap>Ctrl++</keycap> | | <keycap>Ctrl++</keycap> | ||
| | | Розгорнути один рівень: скасувати згортання. | ||
|- | |- | ||
| <keycap>Ctrl+D</keycap> | | <keycap>Ctrl+D</keycap> | ||
| | | Зняти коментування з позначеного фрагмента тексту або поточного рядка. | ||
|- | |- | ||
| <keycap>Ctrl+Shift+D</keycap> | | <keycap>Ctrl+Shift+D</keycap> | ||
| | | Додати позначки коментаря до позначеного тексту або поточного рядка. | ||
|- | |- | ||
| <keycap>Alt+Shift+D</keycap> | | <keycap>Alt+Shift+D</keycap> | ||
| | | Документувати поточну функцію. Якщо курсор перебуває на оголошенні функції або класу, натискання цієї комбінації клавіш призведе до створення коментаря у форматі doxygen зі списком параметрів, значень, які повертаються, тощо. | ||
|- | |- | ||
| <keycap>Ctrl+T</keycap> | | <keycap>Ctrl+T</keycap> | ||
| | | Поміняти місцями поточний і попередній символи | ||
|- | |- | ||
| <keycap>Ctrl+K</keycap> | | <keycap>Ctrl+K</keycap> | ||
| | | Вилучити поточний рядок (зауваження: ця дія не збігається за результатом з дією «вилучити звідси до кінця рядка» у emacs) | ||
<!--{-->|} | <!--{-->|} | ||
{{Prevnext2 | {{Prevnext2 | ||
| prevpage=Special:MyLanguage/KDevelop5/Manual/Sessions_and_projects | nextpage=Special:MyLanguage/KDevelop5/Manual/Code_generation_with_templates | | prevpage=Special:MyLanguage/KDevelop5/Manual/Sessions_and_projects | nextpage=Special:MyLanguage/KDevelop5/Manual/Code_generation_with_templates | ||
| prevtext= | | prevtext=Сеанси і проекти | nexttext=Створення коду за допомогою шаблонів | ||
| index=Special:MyLanguage/KDevelop5/Manual | indextext= | | index=Special:MyLanguage/KDevelop5/Manual | indextext=Повернутися до меню | ||
}} | }} | ||
[[Category: | [[Category:Розробка/uk]] |
Latest revision as of 23:06, 23 September 2022
Робота з кодом програм
Окрім зневаджування, читання та написання коду є найважливішими завданнями під час розробки програмного забезпечення. З метою полегшення навігації кодом та його написання у KDevelop передбачено багато різних інструментів. Як буде докладніше показано у наступних розділах, KDevelop не просто редактор коду, — це скоріше система керування кодом, яка може подавати різні дані, отримані на основі аналізу загальної сукупності коду всього вашого сеансу роботи.
Інструменти та панелі перегляду
Для роботи з проектами у KDevelop передбачено інструменти. Інструмент надає певні дані щодо коду або виконує з ним певну дію. Інструментам відповідають кнопки вздовж периметра вікна програми (з вертикальним текстом на полях ліворуч і праворуч та горизонтальним вздовж нижнього поля). Якщо ви натиснете таку кнопку, у головному вікні буде відкрито підвікно — панель перегляду; якщо кнопку буде натиснуто ще раз, відповідне підвікно буде закрито.
На наведеному вище зображенні ви можете бачити певний набір інструментів, вирівняних за лівим і правим полем. Ліворуч відкрито панель інструмента
, праворуч — . Посередині можна бачити панель редактора. З практичних міркувань, переважну частину часу розробки варто працювати лише з редактором та панеллю чи , відкритою ліворуч. На час використання певного інструмента можна відкрити його панель, яку після використання варто закрити з метою збільшення простору для панелі редактора.Після першого запуску KDevelop ви вже зможете скористатися кнопкою інструмента
. Натисніть цю кнопку: у відповідь буде відкрито панель зі списком проєктів, які було додано до сеансу у нижній частині вікна та панель перегляду файлової системи вашого проєкту у верхній його частині.У KDevelop ви можете скористатися багатьма іншими інструментами, не всі з них представлено кнопками вздовж периметра вікна у початковому стані. Щоб додати кнопку, скористайтеся пунктом меню . У результаті буде відкрито вікно для вибору бажаної панелі. У контекстному вікні ви зможете натискати кнопки ліворуч, вниз, праворуч для пересування панелей і вибору місця розташування панелей. Ось перелік можливих корисних інструментів:
- Класи: повний список всіх класів, які визначено у одному з проектів або у вашому сеансі з усіма вбудованими функціями та змінними. Натискання пункту елемента класу відкриє вікно редактора з місцем оголошення елемента, пункт якого було натиснуто.
- Документи: тут буде показано список поточних відкритих у редакторі файлів.
- Перегляд коду: залежно від розташування курсора у редакторі файла, на цій панелі буде показано пов’язані з кодом дані. Наприклад, якщо курсор перебуває у рядку з
#include
, на панелі буде показано дані щодо файла, який включено до коду, зокрема дані щодо оголошених у файлі класів. Якщо курсор перебуває на порожньому рядку у файлі, на панелі буде показано класи і функції, оголошені і визначені у поточному файлі (всі як посилання: натискання відповідного пункту відкриватиме файл з оголошенням або визначенням класу чи функції). Якщо курсор перебуває на визначенні функції, на панелі буде показано місце оголошення та список місць, у яких використано функцію.
- Файлова система: показує ієрархічну структуру файлової системи.
- Документація: надає вам змогу виконувати пошук даних на сторінках довідника (man) та у інших довідкових документах, зокрема документації до C++, Qt, PHP тощо.
- Фрагменти: на цій панелі буде наведено фрагменти тексту, які використовують вами регулярно, і які ви не хочете повторно вводити кожного разу. У прикладі, на основі якого було створено знімок екрана, була потреба часто використовувати фрагмент коду Цей вираз завжди використовуватиметься у такій формі кожного разу — чудовий кандидат на включення до списку фрагментів.
if(vcs->isVersionControlled(source)) { VcsJob* job=vcs->copy(source, target); if(job) { return job->exec();
- Konsole: відкриває панель командного рядка у головному вікні KDevelop, щоб ви могли віддати потрібну вам команду оболонки (наприклад, виконати
./configure
).
Для багатьох програмістів найважливішою є економія вертикального місця на екрані. Щоб досягти такої економії, ви можете розташувати панелі інструментів вздовж лівої та правої межі вікна програми. Щоб пересунути панель, клацніть на заголовку правою кнопкою миші і виберіть нове її розташування.
Огляд роботи з кодом
Локальні дані
KDevelop розуміє код програми, тому це середовище може надавати вам дані щодо змінних або функцій вашої програми. Наприклад, у цьому підручнику наведено знімок роботи з фрагментом коду, де вказівник миші наведено на символ cell
у рядку 1316 (якщо ви надаєте перевагу роботі за допомогою клавіатури, того самого ефекту можна досягти утримуванням певний час натиснутою клавіші Alt):
KDevelop показує підказку, зокрема тип змінної (тут: container
), де цю змінну оголошено (контейнер, яким тут є функція-обгортка operator()(AreaIndex *index)
, оскільки це локальна змінна), тип даних (змінна, не функція, клас або простір назв) та місце оголошення (у рядку 376, декількома рядками коду вище).
У поточному контексті з символом, на який наведено вказівник миші, не пов’язано жодної документації. У нашому прикладі, де вказівник миші наведено на символ Container
у рядку 376, буде показано такі дані:
Тут KDevelop показано оголошення зі стороннього файла (container.h
, який є частиною зовсім іншого проекту того самого сеансу) разом з коментарем у форматі doxygen, який супроводжує цей оголошення.
Кориснішими ці підказки робить те, що вони є динамічними: ви можете клацнути на пункті контейнера, щоб отримати відомості щодо контексту, у якому оголошено змінну (тобто щодо простору назв Sublime
, зокрема того, де її оголошено, визначено, використано або якою є її документація), і ви можете клацнути на розфарбованих у синє посилань для перенесення позиції курсора до місця оголошення символу (наприклад, у container.h
, рядок 40) або отримання списку місць, де цей символ використано у поточному файлі або в усіх проєктах поточного сеансу. Останній варіант часто корисним, якщо ви хочете вивчити те, як, наприклад, певну функцію використано у великій кодовій базі.
Дані щодо окремих файлів
Наступним рівнем є отримання даних щодо всього файла коду, над яким ви працюєте. Щоб переглянути її, розташуйте курсор на початку поточного файла і подивіться на дані, які буде показано на панелі інструмента Перегляд коду:
Тут середовищем показано список просторів назв, класів та функцій, оголошених або визначених у поточному файлі. За допомогою цього списку ви можете ознайомитися з загальними даними щодо дій, які виконуються у файлі, та безпосередньо перейти до будь-якого з оголошень або визначень без потреби у гортанні коду файла або пошуку певного фрагмента.
Дані щодо проектів та сеансів
Існує багато способів отримати загальні дані щодо проекту (або, фактично, всіх проектів сеансу). Такі дані, зазвичай, можна знайти на панелях перегляду різноманітних інструментів середовища. Наприклад, на панелі інструмента
показано ієрархічну структуру всіх класів і зовнішніх просторів назв для всіх проектів сеансу, разом з вбудованими функціями та змінними кожного з цих класів:Знову ж таки, за допомогою наведення вказівника миші на запис у списку можна отримати дані щодо відповідного символу, розташування його оголошення та визначення і випадків використання. Подвійним клацанням на пункті цього ієрархічного списку можна відкрити вікно редактора на позиції, де оголошено або визначено символ.
Але існують інші способи вивчення загальних відомостей. Наприклад, інструмент
надає панель перегляду документів, які відкрито, і надає можливість вибору одного з документів для перегляду і безпроблемного пересування від одного документа до іншого:Ви також можете вибрати пункт із маленькою коробкою із чотирма кубиками у верхньому правому куті, щоб отримати список відкритих файлів, який має назву робочий набір. Кожен рядок починається з поля для позначки, позначення якого вилучає файл з робочого списку. Також буде показано кнопку у правій частині, натискання якої надає вам змогу виконати записування до реєстру git. Корисно, якщо вам потрібно перейти до іншої гілки або до повністю іншого проєкту.
Пояснення щодо розфарбовування коду
KDevelop використовує різноманітні кольори для підсвічування різних об'єктів у початковому коді. Якщо ви знаєте призначення різних кольорів, ви можете швидко отримати багато інформації з початкового коду простим його переглядом (за кольорами) навіть не читаючи сам код. Правила підсвічування такі:
- Для об'єктів типів Class / Struct, Enum (значень і типу), (загальних) функцій і членів класу визначено власні кольори (класи — зелені, переліки — темно-червоні, а учасники — темно-жовті або фіолетові, (загальні) функції — завжди фіолетові).
- Усі загальні змінні буде розфарбовано у темно-зелений.
- Ідентифікатори, які є визначеннями типів для інших типів буде розфарбовано у синьо-зелений колір.
- Усі оголошення та визначення об'єктів буде показано напівжирним шрифтом.
- Якщо доступ до учасника класу отримується з контексту, де його визначено (базового або похідного класу), його буде показано жовтим. Якщо ж це не так, його буде показано фіолетовим.
- Якщо член класу є приватним (private) або захищеним (protected), його буде розфарбовано у дещо темніший колір при використанні.
- Для змінних, які є локальними для області видимості функції, використовуються кольори веселки, які програма вибирає за хешем ідентифікатора. Це стосується і параметрів функції. Ідентифікатор матиме той самий колір у її області видимості (але той самий ідентифікатор матиме інший колір, якщо відповідає іншому об'єкту, тобто його перевизначено у вкладенішій області видимості). Зазвичай, для ідентифікатора із тією самою назвою у різних областях видимості буде використано той самий колір. Отже, якщо параметри із однаковими назвами приймають декілька функцій, кольори аргументів будуть однаковими. Розфарбовування у кольори веселки можна вимкнути окремо на рівні сторінки налаштовування загального розфарбовування у діалоговому вікні параметрів програми.
- Ідентифікатори, для яких KDevelop не вдалося визначити відповідне оголошення, буде розфарбовано білим кольором. Іноді причиною такого розфарбовування є пропущені директиви
#include
.
- На додачу до цього розфарбовування буде застосовано звичайне розфарбовування синтаксичних конструкцій редактора, які відомі з Kate. Семантичне підсвічування у KDevelop завжди перевизначає підсвічування редактора, якщо виникне конфлікт.
Пересування між фрагментами коду
У попередньому розділі ми обговорювали вивчення коду програми, тобто отримання даних щодо символів, файлів та проектів. Наступним кроком є перехід між компонентами коду, тобто навігація кодом. Знову ж таки, існує декілька рівнів, на яких можна здійснювати подібну навігацію: локально, у межах файла і у межах проекту.
Пересування поточним фрагментом
KDevelop — набагато більше, ніж просто редактор, — це також редактор коду. Тому, звичайно ж, ви можете пересувати курсор текстом за допомогою звичайних клавіш зі стрілочками. Ви також можете скористатися натисканням клавіш PageUp та PageDown і всіма іншими командами, якими можна скористатися у звичайному текстовому редакторі.
Пересування файлами та режим огляду
На рівні окремого файла у KDevelop передбачено багато способів навігації кодом програми. Приклад:
- Схема: ви можете переглянути схему вмісту поточного файла в один із принаймні трьох різних способів:
- Натисканням кнопки Панелі інструментів, яку, зазвичай, розташовано у лівій частині вікна.Передбачено кнопку для упорядковування усього за зростанням або спаданням та панель фільтрування. Далі, ви можете просто вибрати пункт, до якого слід перейти, або, якщо пунктів багато, почати вводити критерій пошуку, щоб у списку лишилися потрібні вам записи. Зі зростанням кількості символів у введеному критерії, список ставатиме усе меншим, оскільки з нього зникатимуть усі назви, які не містять введеного вами тексту, аж доки ви не будете готові вибрати один з варіантів, що лишився у списку.
- Комбінацією клавіш Alt + Ctrl + N можна відкрити діалогове вікно зі списком усіх оголошень функцій та класів.Там також буде наведено опис того, що відбувається у поточному файлі. Крім того, у цьому діалоговому вікні ви зможете виконати пошук, якщо список є надто довгим, та вибрати оголошення для переходу до нього.
- На панелі інструментів вікна навігації кодом передбачено смужку редагування тексту, до якої ви можете ввести назву функції або класу для швидкого пошуку. Можна просто клацнути на смужці редагування, щоб побачити схему. Якщо клацнути на пункті у контекстному списку, програма покаже підказку щодо пункту і посилання на його визначення та використання.
- Файли коду впорядковано у список оголошень та визначень. За допомогою натискання комбінацій клавіш Alt + Ctrl + PgUp і Alt + Ctrl + PgDown можна переходити до визначення попередньої або наступної функції у файлі.
Пересування проектами та сеансами: семантичне пересування
Як ми вже згадували у інших частинах підручника, KDevelop, зазвичай, не працює із окремими файлами початкових кодів, а розглядає проєкти програмного забезпечення уцілому (або, точніше, розглядає як ціле усі проєкти, які є частиною поточного сеансу). Наслідком цього є те, що програма пропонує багато можливостей для навігації усіма проєктами. Деякі з цих можливостей є похідними від тих, які вже було обговорено у розділі щодо вивчення початкового коду, інші ж є цілком відмінними. Загальним є те, що ці можливості з навігації засновано на семантичному розумінні коду, тобто вони пропонують вам щось, що потребує обробки коду усіх проєктів і поєднання даних. У наведеному нижче списку описано деякі способи для навігації початковим кодом, який розкидано між потенційно великою кількістю файлів:
- Як зазначалося у розділі щодо огляду початкового коду, програма може показувати панель підказки із поясненнями щодо простору назв, класу, функції або назв змінних у відповідь на наведення на його пункт вказівника миші або утримання протягом певного часу натиснутою клавіші Alt. Ось приклад: Клацання на посиланнях оголошення символу або розгортання списку використань надає вам змогу переходити до відповідних місць коду. Якщо потрібно, буде відкрито відповідний файл, і курсор буде переміщено до відповідного місця. Такого самого результату можна досягти використанням панелі Навігація кодом, яку ми описували раніше.
- Швидко відкрити: дуже потужний спосіб переходу до інших файлів або місць, який використовується для різноманітних способів швидкого відкриття у KDevelop. Передбачено чотири версії цих способів:
- Швидко відкрити клас (Alt + Ctrl + C): ви отримаєте список усіх класів у цьому сеансі. Почніть вводити (частину) назви класу, і у список скорочуватиметься до лише тих класів, у назвах яких міститься введений фрагмент тексту. Коли список стане достатньо коротким, виберіть у ньому запис за допомогою клавіш із стрілками вгору і вниз, і KDevelop перенесе вас до місця, де оголошено клас. або
- Швидко відкрити функцію (Alt + Ctrl + M): ви отримаєте список усіх функцій (членів класів), які є частиною проєктів у поточному сеансі, і зможете вибрати потрібний запис у списку у спосіб, який описано вище. Зауважте, що до цього списку може бути включено і оголошення і визначення функцій. або
- Швидко відкрити файл (Alt + Ctrl + O): ви отримаєте список усіх файлів, які є частиною проєктів поточного сеансу і зможете вибрати з нього пункт у спосіб, який описано вище. або
- Універсальне швидке відкриття (Alt + Ctrl + Q): якщо ви не пам'ятаєте, яку з комбінацій клавіш пов'язано із описаними вище командами, можете скористатися цим універсальним засобом — він просто покаже вам комбінований список усіх файлів, функцій, класів та інших записів, з яких ви можете вибрати потрібний. або
- Перейти до оголошення/визначення: при реалізації функції (члена класу) часто виникає потреба у зворотному переході до місця оголошення функції, наприклад, для підтримання синхронізації списку аргументів функції між оголошенням та визначенням або оновлення документації. Для здійснення подібних переходів розташуйте курсор на назві функції і виберіть пункт меню Ctrl + .), щоб перейти до місця оголошення функції. Існує декілька способів повернутися до початкового місця:
- Вибір пункту меню Ctrl + ,). (або натискання комбінації клавіш
- Вибір пункту меню Meta + ←), як це описано нижче. (або натисніть комбінацію клавіш
(або натисніть комбінацію клавіш
- Перемкнути визначення/оголошення: у наведеному вище прикладі для переходу до місця оголошення поточної функції нам потрібно було спочатку розташувати курсор на назві функції. Якщо вам не хочеться цього робити, скористайтеся пунктом меню Shift + Ctrl + C), щоб перейти до оголошення функції, у якій перебуває курсор. Повторний вибір цього пункту меню поверне курсор назад до визначення функції. (або натисніть комбінацію клавіш
- Попереднє/Наступне використання: якщо ви розташуєте курсор на назві локальної змінної і виберете пункт меню Meta + Shift + →), програма перенесе вас до наступного використання цієї змінної у коді. (Зауважте, що при цьому не виконуватиметься простий пошук назви змінної, але враховуватиметься те, що змінні із тією самою назвою назвою, але у різних областях видимості є різними.) Те саме працює і для використань назв функцій. Вибір пункту меню (або натискання комбінації клавіш Meta + Shift + ←) призведе до переходу до попереднього використання символу. (або натиснете комбінацію клавіш
- Список контекстів: у браузерах є можливість переходити назад і вперед списком нещодавно відвіданих сторінок. У KDevelop реалізовано подібні можливості, але замість переходу між сторінками ви переходите між контекстами. Контекстом є поточне місце курсора. Ви можете змінити його переходом у будь-який спосіб, окрім команд пересування курсора, наприклад, клацанням на пункті місця на панелі підказки, на панелі інструментів Meta + ←) і (Meta + →) ви можете переходити між пунктами у списку відвіданих контекстів так, як ви переходите між сторінками за допомогою кнопок і у списку відвіданих сторінок у браузері. Крім того, ви можете скористатися панеллю інструментів браузера, де можна натиснути кнопку зі стрілкою ліворуч для переходу назад до попереднього файла і номера рядка, або натиснути кнопку зі стрілкою вниз, яка відкриває контекстний список попередніх відвіданих файлів та рядків. , на одному з пунктів у меню або використанням будь-якої іншої команди навігації. За допомогою пунктів меню (
- Нарешті, передбачено панелі інструментів, за допомогою яких ви можете переходити до різних місць у програмному коді. Наприклад, на панелі Класи буде наведено список усіх просторів назв та класів в усіх проєктах поточного сеансу. У списку ви можете розгортати записи для перегляду функцій та змінних-членів кожного з цих класів: Подвійним клацанням на записі (або використанням відповідного запису контекстного меню, яке можна викликати клацанням правою кнопкою миші) ви можете перейти до місця оголошення запису. Інші засоби надають змогу виконувати подібні ж речі. Наприклад, на панелі буде показано писок файлів, які є частиною сеансу: Знову ж таки, подвійне клацання на пункті файла призведе до його відкриття.
Введення коду
Оскільки KDevelop «розуміє» код ваших проектів, це середовище може допомогти вам у написанні коду. Нижче наведено огляд деяких з цих допоміжних можливостей.
Автозавершення
Ймовірно, найкориснішою можливістю є можливість з автоматичного завершення фрагментів коду. Розглянемо, наприклад, такий фрагмент коду:
class Car {
// ...
public:
std::string get_color () const;
};
void foo()
{
Car my_ride;
// ...do something with this variable...
std::string color = my_ride.ge
У останньому рядку KDevelop запам’ятає, що змінна my_ride
належить до типу Car
і буде автоматично пропонувати доповнення назви вбудованої функції ge
у форматі get_color
. Фактично, вам достатньо вводити назву, аж доки список знайдених відповідників не починатиметься з потрібного вам виразу, а потім натиснути клавішу Enter:
Зауважте, що ви можете клацнути на панелі підказки, щоб отримати більше даних щодо функції, окрім типу даних, які вона повертає, і те, чи є ця функція відкритою (public):
Автодоповнення може заощадити вам багато часу на введення тексту, якщо у вашому проєкті використовується багато довгих назв змінних та функцій. Крім того, так можна уникнути друкарських помилок у назвах (та помилок при компіляції, які є результатом таких помилок) і значно спростити запам'ятовування точних назв функцій. Наприклад, якщо усі назви функцій-отримувачів починаються із get_
, можливість автодоповнення зможе показати список усіх можливих отримувачів, ввівши лише перші чотири літери, ймовірно, нагадавши вам, яку з функцій слід використати. Зауважте, що для забезпечення працездатності автодоповнення, ні оголошення класу Car
, ні оголошення змінної my_ride
не обов'язково мають зберігатися у тому самому файлі, у якому ви зараз пишете код. KDevelop достатньо значти, що ці класи і змінні поєднано, тобто файли, у яких виконано поєднання, мають бути частиною проєкту над якими ви зараз працюєте.
Додавання нових класів та реалізація вкладених функцій
У KDevelop передбачено допоміжну програму для додавання нових класів. Її роботу описано у розділі Створення класу. Простий клас C++ можна створити за допомогою основного шаблона C++ з категорії Клас. У допоміжній програмі ви можете вибрати попередні функції-елементи, наприклад порожній конструктор, конструктор копіювання та деструктор.
Після завершення роботи допоміжної програми буде створено і відкрито у редакторі нові файли. Основу файла заголовків вже створено, а у новому класів є всі вибрані нами вбудовані функції. Наступними двома кроками мають бути документування класу та його вбудованих функцій та реалізація цих класів і функцій. Нижче ми обговоримо допоміжні засоби з документування класів і функцій. Щоб реалізувати спеціальні функції, які ми вже додали, просто перейдіть на вкладку
, де вже є каркас наших функцій:Щоб додати нові вкладені функції, поверніться на вкладку
і додайте назву функції. Наприклад, можна додати таке:Зауважте, що реалізацію вже розпочато. Але у межах багатьох стилів програмування функції не слід реалізовувати у файлах заголовків, це слід робити у відповідних файлах .cpp. Для цього розташуйте курсор на назві функції і скористайтеся пунктом меню Ctrl + Alt + S. Код між фігурними дужками буде пересунуто з файла заголовків (його буде замінено на крапку з комою для завершення оголошення функції) до відповідного файла коду:
або натисніть комбінацію клавішВведення коду розпочато. Змінна students
має, ймовірно, бути вбудованою змінною класу Bus
, але її ще не додано до цього класу. KDevelop підкреслено цю змінну, щоб позначити те, що середовищу ще нічого не відомо про цю змінну. Цю проблему просто розв’язати: натискання назви змінної відкриє таку панель підказки:
Нарешті, метод використання пункту меню inline
і розташування його у нижній частині файла заголовків. У такому разі вкажіть оголошення і почніть введення визначення функції ось так:
Оголошення для документування
Хороший код завжди добре документовано, як на рівні реалізації алгоритмів у функціях, так і на рівні інтерфейсу, — тобто класи (вбудовані і загальні) функції та (вбудовані і загальні) змінні слід документувати, щоб всім було зрозумілим їхнє призначення, можливі значення аргументів, попередні та остаточні умови тощо. У документуванні інтерфейсів фактичним стандартом є формат коментарів doxygen, дані його можна видобути і показати на придатних для пошуку інтернет-сторінках.
У KDevelop передбачено підтримку коментарів у цьому форматі за допомогою скорочення для створення оболонки-коментаря, який документуватиме клас або вбудовану функцію. Наприклад, припустімо ви вже створили такий код:
class Car {
public:
std::string get_color () const;
};
Тепер нехай вам потрібно додати документацію для класу і вбудованої функції. Для цього пересуньте курсор на перший рядок коду і скористайтеся пунктом меню Alt + Shift + D. KDevelop відкриє таке діалогове вікно:
або натисніть комбінацію клавішКурсор вже перебуває у затіненій області, щоб ви могли ввести короткий опис (після ключового слова doxygen @brief
) цього класу. Тепер ви можете продовжити додавати документацію до цього коментаря, який краще пояснюватиме призначення класу:
Коли ви дістанетеся кінця рядка, натисніть Enter, і KDevelop автоматично розпочне новий рядок, який починатиметься із зірочки, і відступить курсором на один символ. По завершенню документування запису і натискання Enter поза областю документування, сіре підсвічування буде вилучено.
Тепер виконаємо документування вбудованої функції. Знову розташуйте курсор на рядку оголошення і виберіть пункт меню Alt + Shift + D:
або натисніть комбінацію клавішЗнову ж таки, KDevelop автоматично створить каркас коментаря разом з документації щодо самої функції, а також типом даних, які вона повертає. У нашому випадку назва функції доволі очевидно описує її призначення, але часто аргументи функції можуть бути доволі неочевидними, їх слід документувати окремо. Наприклад, розгяньмо трохи цікавішу функцію та коментар, який автоматично створить для неї KDevelop:
У нашому прикладі у запропонованому коментарі вже містяться всі поля Doxygen для окремих параметрів.
Перейменування змінних, функцій і класів
Іноді виникає потреба у перейменуванні функції, класу або змінної. Наприклад, нехай маємо такий код:
Нехай пізніше ми зрозуміємо, що назва remove_students
є невдалою, і її варто назвати, скажімо, throw_out_students
. Ви могли б виконати пошук з заміною назви функції, але у такого способу є два недоліки:
- Функцію може бути використано у декількох файлах.
- Нам потрібно перейменувати лише цю функцію і не чіпати функції, які можуть мати ту саму назву, але які оголошено у інших класах або просторах назв.
Обидві ці проблеми можна розв’язати наведенням курсора на всі використання назви функції з наступним вибором пункту
(або клацанням правою кнопкою миші на назві з вибором пункту ). У відповідь буде відкрито діалогове вікно, за допомогою якого ви зможете ввести нову назву функції і переглянути всі місця, де використано функцію:Фрагменти коду
У більшості проектів зустрічаються фрагменти коду, які доводиться використовувати доволі часто. Приклади: інструкції компілятора, цикл для всіх інструкцій, для функцій запису інтерфейсу користувача перевірки введених користувачем даних без відкриття вікна повідомлення про помилку. У проекті автора цього підручника часто використовується такий різновид коду:
for (typename Triangulation<dim,spacedim>::active_cell_iterator;
cell = triangulation.begin_active();
cell != triangulation.end(); ++cell)
... Робимо щось із cell ...
Замість введення тексту подібного типу знову і знову (із усіма можливими друкарськими помилками), ви можете скористатися інструментом KDevelop Інструменти і панелі перегляду, якщо відповідної кнопки ще немає на периметрі вашого вікна). Крім того, ви можете скористатися пунктом на верхній панелі меню і увімкнути . Далі, натисніть кнопку (дещо оманлива назва — за допомогою цього пункту можна створити іменовану збірку фрагментів для початкових кодів певного типу, наприклад, коду C++) і створіть порожнє сховище. Потім натисніть , щоб додати фрагмент і відкрити діалогове вікно, подібне до такого:
. Для цього відкрийте панель інструментів (див.Якщо сховища із фрагментами ще не було створено, і ваш проєкт засновано на C++, використання пункту меню
призводить до створення сховища із назвою Фрагменти ISO C++ і записування ваших фрагментів до сховища, як це показано вище. Праворуч у діалоговому вікні Створення фрагмента розташовано панель перегляду, на якій показано фрагменти, якими можна скористатися.Щоб скористатися таким чином визначеним фрагментом, вам слід просто почати вводити у коді його назву, як ви це робите для будь-яких інших функцій або змінних. Для введених літер буде відкрито панель автоматичного доповнення (це означає, що можна використовувати будь-які достатньо довгі для розрізнення назви фрагментів, зокрема назви, подібні до використаної нами), якщо ви виберете відповідний пункт фрагмента на панелі підказки автоматичного доповнення (наприклад, натисканням клавіші Enter), вже введену частину назви фрагмента буде замінено повним текстом фрагмента з відповідними відступами:
Зауважте, що, щоб це спрацювало, слід відкрити або зробити видимою панель інструментів
. Альтернативним способом вставлення фрагмента є просте клацання на ньому на панелі інструментів фрагментів. Якщо навести вказівник миші на фрагмент, програма покаже вам панель перегляду коду фрагмента.
Режими і робочі набори
Якщо ви вже дісталися так далеко, зверніть увагу на верхній правий кут головного вікна KDevelop — ви побачити кнопку коду. Якщо натиснути цю кнопку, програма запропонує два варіанти дій: робота із системами керування версіями) та (див. діагностування вад у програмах).
(див.Для кожного з режимів передбачено власний набір інструментів, кнопки яких розташовано вздовж периметра вікна середовища, для кожного режиму передбачено власний робочий набір відкритих файлів і документів. Крім того, кожен такий робочий набір пов’язано з поточним сеансом, тобто маємо взаємозв’язок, подібний до показаного вище. Зауважте, що файли у робочому наборі є частиною одного сеансу, але можуть належати до різних проектів, які є частинами цього сеансу.
Якщо ви відкрили вікно KDevelop вперше, робочий набір буде порожнім, — ще не відкрито жодного файла. Але з відкриттям файлів для редагування (або діагностики, перегляду у інших режимах) ваш робочий набір розширюватиметься. Кожного разу, коли ви завершуватимете роботу KDevelop, а потім починатимете її знову, робочий набір буде зберігатися і відновлюватися, тобто ви працюватимете з одним набором відкритих файлів.
Якщо ви наведете вказівник миші на символ для робочого набору, програма покаже панель підказки зі списком файлів, які відкрито у цьому робочому наборі (у нашому прикладі це файли helper.h
, helper.cpp
, filemanagerlistjob.h
та filemanagerlistjob.cpp
). Піктограма робочого набору може мати різні кольори у різний час, але ці кольори не мають певного значення. Клацання на квадраті зі знаком «мінус» закриє вкладку для відповідного файла у робочому наборі. Суть роботи пункту закриття робочого набору полягає у тому, що його вибір не лише закриває усі файли, але і просить вас зберегти усі файли, до яких внесено зміни, але які не збережено, і відкриває новий порожній набір.
Деякі корисні клавіатурні скорочення
У редакторі KDevelop використано стандартні клавіатурні скорочення для звичайних дій з редагування. Ці скорочення можна змінити, якщо у вас виникне така потреба.
Передбачено пункт для налаштовування і зберігання різних схем клавіатурних скорочень. За допомогою відповідного вікна ви можете експортувати та імпортувати будь-які ваші схеми.
Втім, передбачено також підтримку декількох додаткових дій при редагуванні початкового коду. Деякі з цих дій пов'язано із натисканням певних комбінацій клавіш. Зокрема, часто є зручними такі комбінації:
Пересування кодом | |
---|---|
Ctrl+Alt+O | Пришвидшене відкриття файла: вкажіть частину назви файла і виберіть той з них у каталозі проектів поточного сеансу, який вам потрібен; цей файл і буде відкрито. |
Ctrl+Alt+C | Пришвидшене відкриття класу: вкажіть частину назви класу і виберіть ту з назв класів, яка вам потрібна; курсор буде переведено до рядка оголошення класу. |
Ctrl+Alt+M | Пришвидшене відкриття функції: вкажіть частину назви функції (частини класу) і виберіть з запропонованих варіантів той, який вам потрібен; зауважте, що у списку буде показано оголошення і визначення, а курсор буде переведено до вибраного вами пункту. |
Ctrl+Alt+Q | Універсальне пришвидшення відкриття: вкажіть будь-які дані (назву файла, назву класу, назву функції), і вам буде показано список всіх частин проекту, які відповідають критерію пошуку. |
Ctrl+Alt+N | Огляд: показує список всіх дій, які виконуються у файлі, наприклад, оголошень класів та визначень функцій. |
Ctrl+, | Перейти до визначення функції, якщо курсор перебуває у місці її оголошення. |
Ctrl+. | Перейти до оголошення функції або змінної, якщо курсор перебуває у позиції визначення функції. |
Ctrl+Alt+PageDown | Перейти до наступної функції |
Ctrl+Alt+PageUp | Перейти до попередньої функції |
Ctrl+G | Перейти до рядка |
Пошук і заміна | |
Ctrl+F | Знайти |
F3 | Знайти далі |
Ctrl+R | Замінити |
Ctrl+Alt+F | Знайти і замінити у декількох файлах |
Інші команди | |
Ctrl+_ | Згорнути один рівень: вилучити блок з перегляду, наприклад, якщо ви бажаєте зосередитися на загальнішій картині у функції. |
Ctrl++ | Розгорнути один рівень: скасувати згортання. |
Ctrl+D | Зняти коментування з позначеного фрагмента тексту або поточного рядка. |
Ctrl+Shift+D | Додати позначки коментаря до позначеного тексту або поточного рядка. |
Alt+Shift+D | Документувати поточну функцію. Якщо курсор перебуває на оголошенні функції або класу, натискання цієї комбінації клавіш призведе до створення коментаря у форматі doxygen зі списком параметрів, значень, які повертаються, тощо. |
Ctrl+T | Поміняти місцями поточний і попередній символи |
Ctrl+K | Вилучити поточний рядок (зауваження: ця дія не збігається за результатом з дією «вилучити звідси до кінця рядка» у emacs) |