Редагування програм – ЧАСТИНА 10

Якщо команди Emerge були викликані з іншої програми на Ліспі, то в разі успішного завершення повертається значення t, а якщо ви перервали обєднання, повертається nil

22146  Комбінування двох версій

Іноді ви хочете зберегти обидва варіанти деякого зміни Щоб зробити так,

використовуйте xc, яка редагує буфер обєднання наступним чином:

#ifdef NEW

версія з буфера A

#else  /* not  NEW  */

версія з буфера B

#endif /*  not  NEW  */

Хоча цей приклад показує умовні конструкції препроцесора Сі, що розділяють два альтернативні версії, ви можете задати використовувані рядки, встановлюючи змінну emerge-combine-versions-template по вашим вибором У цьому рядку % a каже, де потрібно поміщати версію A, а % b говорить, говорить поміщати версію B Установка за замовчуванням, яка видає результат, показаний вище, виглядає наступним так:

&quot#ifdef NEW\n%a#else  /* not  NEW  */\n%b#endif  /* not  NEW  */\n&quot

22147  Тонкі питання, повязані з Emerge

У процесі обєднання ви не повинні намагатися редагувати буфери A і B самі Emerge тимчасово змінює їх, але врешті повертає в початковий стан

Ви можете виробляти будь-яке число обєднань одночасно – тільки не використовуйте один і той же буфер в якості вхідного більш ніж для одного обєднання, так як тимчасові зміни, зроблені в цих буферах, зіткнулися б один з одним

Запуск Emerge може зайняти тривалий час, оскільки їй потрібно повністю порівняти файли Emacs не можете нічого робити, поки diff не завершиться Можливо, в майбутньому хтось змінить Emerge так, що вона буде робити порівняння у фоновому режимі, коли вхідні файли великі – тоді ви могли б продовжувати в Emacs інші справи, поки Emerge дійсно не буде готова приймати команди

Після підготовки обєднання Emerge запускає пастку emerge-startup-hook (див

Розділ 3123 [Пастки], с 349)

2215  Режим C і споріднені з ним

Цей розділ описує особливі засоби, доступні в режимах C, C + +, Objective-C, Java, CORBA IDL і Pike Коли ми говоримо режим C і споріднені з ним, ми маємо на увазі ці режими

22151  Команди переміщення в режиміC

Цей розділ описує команди для переміщення точки в режимі C і споріднених з ним режимах

Cc Cu Переміщає точку назад до містить її умовної констукции препроцесора, залишаючи мітку в поточній позиції Префіксний аргумент працює в якості лічильника повторів З негативним аргументом, переміщує точку вперед до кінця цієї умовної констукции препроцесора При проході назад, # elif розглядається як # else, за якою стоїть # if При проході вперед # elif ігнорується

Cc Cp Переміщає точку назад через умовну констукции препроцесора, залишаючи мітку в поточній позиції Префіксний аргумент служить в якості лічильника повторів З негативним аргументом, переміщує вперед

Cc Cn Переміщає точку вперед через умовну констукции препроцесора, залишаючи мітку в поточній позиції Префіксний аргумент служить в якості лічильника повторів З негативним аргументом, переміщує тому

Ma Переміщає точку до початку самого внутрішнього оперетор Сі (c-beginningof-statement) Якщо точка вже знаходиться на початку оператора, переміщує до початку попереднього З префіксним аргументом n, Переміщує назад на n −

1 операторів

Якщо точка знаходиться всередині рядка або коментаря або після коментарю (між ними тільки пропуск), ця команда переміщує за пропозиціями, а не по операторам

Якщо ця функція викликана з програми, вона приймає три необовязкових аргументу: префіксний числовий аргумент, межа позиції в буфері (не рухатися назад далі цієї позиції) і прапор, який говорить, чи потрібно рухатися за пропозиціями всередині коментаря

Me Переміщає точку до кінця самого внутрішнього оперетор Сі як M-a, але пере-

міщан в протилежному напрямку (c-end-of-statement)

M-x c-backward-into-nomenclature

Переміщує точку назад до початку секції або слова в нотації Сі + + З префіксним аргументом n, Переміщує n разів Якщо n негативно, переміщує вперед Нотація Сі + + позначає запис імен символів у стилі ИменованиеСимволовВСмешанномРегистреИБезПодчерков кожна заголовна буква починає секцію або слово

У проекті GNU ми рекомендуємо використовувати для розділення слів у иденти-

фікаторах Сі чи Сі + + подчерки, а не зміна регістру

M-x c-forward-into-nomenclature

Переміщує точку назад до кінця секції або слова в нотації Сі + + З префікс-

вим аргументом n, Переміщує n разів

22152  Електрикзнаки в Сі

У режимі Сі та споріднених з ним деякі друковані знаки є електричними – крім вставки самих себе, вони також оновлюють відступ в поточному рядку і можуть вставляти переклади рядків Це засіб управляється змінної c-auto-newline Електрик-знаки – це {,},:, #,,,, <,>, /, *, (і)

Електрик-знаки вставляють переклади рядків, тільки якщо включено засіб auto-newline (Це відображається в рядку режиму як / a після імені режиму) Це засіб управляється змінної c-auto-newline Ви можете включити або виключити його командою Cc Ca:

Cc Ca Перекючает автоматичну вставку перекладів рядків (c-toggle-auto-state)

З префіксним аргументом, ця команда включає таку можливість, якщо аргумент позитивний, і вимикає, якщо аргумент відємний

Двокрапка – це електрик-знак, оскільки це підходить для одного двокрапки Але це незручно, коли ви хочете вставити подвійне двокрапка в Сі + + Ви можете вставити подвійне двокрапка в Сі + + без вставки відступу або переведення рядка, набираючи Cc:

Cc: Вставляє у точці оператор області видимості, подвійне двокрапка, не змінюючи відступ рядки і не додаючи нових рядків (c-scope-operator)

Електрик-ключ # оновлює відступ рядки, якщо він виявився на початку директив-

ви препроцесора Це відбувається, коли значення c-electric-pound-behavior одно

(Alignleft) Ви можете вимкнути цю можливість, встановлюючи c-electric-poundbehavior в nil

Мінлива c-hanging-braces-alist управляє вставкою перекладів рядків до і після вставлених фігурних дужок Це асоціативний список з елементами в такій формі: (синтаксичнийсимвол списокпс) Більшість синтаксичних символів, перерахованих в c-offsets-alist, мають сенс і тут

Список списокпс може містити один із символів before і after, або обидва, або це може бути nil Коли вставляється фігурна дужка, в c-hanging-braces-alist шукається визначається їй синтаксичний контекст якщо він знайдений, використовується списокпс для зясування того, де потрібно вставити переклад рядки: перед фігурною дужкою, після неї або і до, і після Якщо нічого не знайдено, за замовчуванням вставляє переклад рядка до і після фігурних дужок

Мінлива c-hanging-colons-alist управляє вставкою перекладів рядків до і після вставлених двокрапок Це асоціативний список, чиї елементи мають форму (синтаксичнийсимвол списокпс) Список списокпс може містити будь-які з символів before або after, або обидва, або це може бути nil

Коли вставляється двокрапка, в цьому Cписки шукається визначений ним синтаксичний символ, і якщо він знайдений, використовується списокпс для зясування того, де потрібно вставити переклад рядки: перед двокрапки, після нього або і там, і там Якщо цей символ не найден в списку, переклади рядків не входить

Електрик-знаки можуть також автоматично видаляти переклади рядків, коли включено засіб для їх автоматичної вставки Це робить автоматичну вставку перекладів рядків більш пріємлімой, шляхом видалення перекладів рядків у більшості випадків, коли це було б бажано встановлюючи змінну c-cleanup-list, ви можете вказати в яких випадках це відбуватиметься Значення цієї змінної – це список символів, кожен з яких описує один випадок можливого видалення перекладу рядка Ось перелік сприймаються символів і їх значень:

brace-catch-brace

Стискає конструкцію } catch (умова) {, поміщають її цілком на один рядок Стиснення відбувається, коли ви набираєте {, якщо між фігурними дужками немає нічого, крім catch та умови

brace-else-brace

Стискає конструкцію } else {, поміщають її цілком на один рядок Стиснення відбувається, коли ви набираєте { після else, але тільки якщо між фігурними дужками і else немає нічого, крім пропусків

brace-elseif-brace

Стискає конструкцію } else if (..) {, поміщають її цілком на один рядок Стиснення відбувається, коли ви набираєте {, якщо між } і { немає нічого, крім пропусків, не вважаючи ці ключові слова і умова для if

empty-defun-braces

Стискає фігурні дужки порожнього визначення функції, поміщаючи їх на один рядок Стиснення відбувається, коли ви набираєте закриває фігурну дужку

defun-close-semi

Стискає двокрапку і struct або подібний тип оголошення, поміщаючи двокрапка на ту ж рядок, де стоїть закриває фігурна дужка Стиснення відбувається, коли ви вводите двокрапка

list-close-comma

Стискає коми, наступні після фігурних дужок у масивах і складних ініціалізації Стиснення відбувається, коли ви набираєте коми

scope-operator

Стискає подвійне двокрапка, яке може позначати оператор області видимості в Сі + +, поміщаючи ці двокрапки разом Стиснення відбувається, коли ви набираєте друга двокрапка, але тільки якщо вони розділені тільки пропуском

22153  Засіб голодного видалення в Сі

Коли включено засіб голодного видалення (це показується в рядку режиму як

‘/ H або / ah після імені режиму), одна команда hDELi  видаляє весь попередній пропуск, а не тільки одні прогалину Щоб включати і вимикати цю можливість, використовуйте Cc Cd:

Cc Cd Включає або вимикає засіб голодного видалення (c-toggle-hungrystate) З префіксним аргументом, ця команда включає таку можливість, якщо аргумент позитивний, і вимикає, якщо аргумент відємний

Джерело: Річард Столмен, Керівництво по GNU Emacs

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*