Збирання і тестування програм – ЧАСТИНА 3

– Це lib три цих імені – це libelc’, ‘lib El і нарешті простоlib. Якщо існує файл lib Elc , за угодою це файл, що отримується в результаті компіляції краще завантажити скомпільований файл, так як він завантажується і працює швидше

Якщо load-library виявить, що lib El новіший заlib Elc , вона надрукує повідомлення, тому що це схоже на те, що хтось вніс зміни в. El-файл і забув його перекомпілювати

Так як аргумент для load-library зазвичай не є сам по собі дійсним імям файлу, то завершення імені файлу недоступно Дійсно, використовуючи цю команду, ви не знаєте точно, яке імя файлу буде використано

Послідовність каталогів, що переглядаються Mx load-library, визначається змінної load-path, списком рядків, які є іменами каталогів За замовчуванням значення цього списку містить каталог, де зберігається Лісп-код самого Emacs Якщо у вас є свої власні бібліотеки, помістіть їх в один каталог і додайте цей каталог до load-path nil в цьому списку означає поточний каталог за замовчуванням, але швидше за все, ставити в список nil – не найкраща ідея Якщо ви самі вирішили, що хочете мати nil в цьому списку, то найбільш імовірно, що насправді ви хочете цього разу використовувати Mx load-file

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

Код на Emacs Lisp може бути откомпилирован в байт-код, який завантажується швидше, займає після завантаження менше памяті і швидше виконується Див розділ Byte Compilation в the Emacs Lisp Reference Manual За угодою, скомпільований код бібліотеки поміщається в окремий файл, чиє імя складається з імені вихідного файлу бібліотеки з доданим c. Таким чином, скомпільований код для fooel потрапляє в fooelc. Тому load-library спочатку шукає . Elc-файли

238  Обчислення виразів Emacs-Lisp

Програми на Ліспі, призначені для запуску в Emacs, потрібно редагувати в режимі Emacs-Lisp Це відбувається автоматично для файлів, чиї імена закінчуються на . El. На противагу цьому, сам режим Lisp використовується для редагування Лісп-програм, призначених для інших Лісп-систем Щоб перейти в режим Emacs-Lisp, використовуєте команду Mx emacs-lisp-mode

Для перевірки програм на Ліспі, призначених для запуску в Emacs, часто корисно обчислювати якусь частину програми в тому вигляді, як вона знаходиться в буфері Emacs Наприклад, після зміни тексту ухвали лісповской функції, обчислення визначення встановлює це зміна для майбутніх викликів функції Обчислення лісповскіх

виразів також зручно при будь-якому редагуванні для запуску неінтерактивних функ-

ций (функцій, які не є командами)

M-: Зчитує одне лісповское вираження в мінібуфер, обчислює його й печатками-

ет його значення в луна-області (eval-expression)

Cx Ce Обчислює лісповское вираз, що знаходиться перед точкою, і друкує його значення в луна-області (eval-last-sexp)

CMx Обчислює визначення функції, що містить точку або перебуває після неї, і друкує його значення в луна-області (eval-defun)

M-x eval-region

Обчислює всі лісповскіе вираження в області

M-x eval-current-buffer

Обчислює всі лісповскіе вираження в цьому буфері

M-: (eval-expression) – це сама основна команда для інтерактивного обчислення лісповскіх виразів Вона зчитує вираз, використовуючи мінібуфер, так що ви можете виконати будь-який вираз в будь-якому буфері, незалежно від того, що цей буфер містить Коли вираз обчислено, то поточним буфером знову є той, який був поточним, коли ви набирали M-:

У режимі Emacs-Lisp ключ CMx привязаний до команди eval-defun, яка аналізує визначення функції, наступне за точкою або містить її, як вираз Лиспа і обчислює його Значення друкується в луна-області Ця команда зручна для установки в середовищі Лиспа змін, які ви тільки що зробили в тексті визначення функції

CMx обробляє вираження defvar особливо Зазвичай обчислення виразу defvar не робить нічого, якщо обумовлена ​​їм мінлива вже має значення Але CMx завжди переустановлює цю змінну в початкове значення, задане виразом defvar Ця особливість зручна для налагодження програм на Ліспі

Команда Cx Ce (eval-last-sexp) обчислює лісповское виразом, що знаходиться в цьому буфері перед крапкою, і показує його значення в луна-області Вона доступна у всіх основних режимах, а не тільки в режимі Emacs-Lisp Вона не обробляє defvar особливо

Якщо командам CMx, Cx Ce або M-: заданий числовий аргумент, то вони вставляють значення в поточний буфер в позиції точки, а не в друкують луна-області Значення аргументу не грає ролі

Самою загальною командою для обчислення Лісп-виразів з буфера є evalregion Mx eval-region аналізує текст з області як одне або кілька лісповскіх виразів, обчислюючи їх одне за іншим Mx eval-current-buffer схожа на попередню, але обчислює весь буфер Це виправданий спосіб установки Лісп-коду з файлу, який ви якраз готові перевірити Після знаходження і виправлення помилки використовуйте CMx в кожної функції, яку ви змінюєте Це збереже відповідність між світом Лиспа і вихідним файлом

239  Буфери діалогу з Ліспі

Буфер * scratch *, обираний в момент запуску Emacs, призначений для інтерактивне-

тивного обчислення Лісп-виразів всередині Emacs

Найпростіший спосіб використання буфера * scratch * – вставляти лісповскіе вираження, закінчуючи кожне з них введенням Cj Ця команда зчитує Лісп-вираз перед точкою, обчислює його і вставляє його значення в друкованому поданні перед точкою Результатом буде повний протокол обчислених вами виразів і їх значень

Основний режим буфера * scratch * називається Lisp Interaction він у всьому еквівален-

тен режиму Emacs-Lisp, за винятком привязки для Cj

Доцільність цієї властивості полягає в тому, що у Emacs повинен бути буфер в момент запуску, але цей буфер незручний для редагування файлів, так як новий буфер створюється для кожного файлу, до якого ви звертаєтеся Я думаю, що саме корисне, що може робити початковий буфер, – це вести протокол інтерпретатора Лиспа Mx lisp-interaction-mode переведе будь буфер в режим Lisp Interaction

Альтернативний спосіб інтерактивного обчислення виразів Emacs Lisp надає режим Inferior Emacs-Lisp, який має інтерфейс, схожий швидше на інтерфейс режиму Shell (див Розділ 3023 [Режим Shell], с 325) Наберіть Mx ielm, щоб створити буфер * ielm *, що використовує цей режим

2310  Запуск зовнішнього Лиспа

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

Щоб запустити підлеглий Лісп-процес, наберіть Mx run-lisp Це запускає програму з імям lisp, ту ж програму, яку б ви запустили, набравши lisp як команду оболонки, з виведенням і введенням, йдуть через буфер Emacs з імям * lisp *. Слід сказати, що будь-який термінальний висновок від Лиспа піде в цей буфер, пересуваючи вперед точку, і будь-який термінальний введення для Лиспа приходить з тексту в буфері (Ви можете змінити імя виконуваного файлу Лиспа, встановивши змінну inferior-lisp-program)

Щоб дати введення в Лісп, відправте сь в кінець буфера і наберіть потрібний текст, завершивши його введенням hRETi Буфер * lisp * знаходиться в режимі Inferior Lisp, режимі, який обєднує спеціальні характеристики режиму Lisp і більшу частину властивостей режиму Shell (див Розділ 3023 [Режим Shell], с 325) Визначення hRETяк команди, яка посилає рядок підпроцесу, – це одна з особливостей режиму Shell

Для запуску вихідних файлів програм у зовнішніх Ліспі використовуйте режим Lisp Цей режим можна вибирати за допомогою Mx lisp-mode він використовується автоматично для файлів, імена яких закінчуються на . L, . Lsp або . Lisp, які і застосовуються в більшості Лісп-систем

Коли ви редагуєте функцію в програмі на Ліспі, яка працює в даний момент, найпростішим способом пересилання зміненого визначення в підлеглий Лісппроцесс є ключ CMx У режимі Lisp при цьому запускається функція lisp-senddefun, яка знаходить визначення функції поряд або слідом за крапкою і посилає його як введення в Лісп-процес (Emacs може послати введення в будь підлеглий процес незалежно від того, який буфер є поточним)

Порівняємо значення CMx в режимі Lisp (для редагування програм, що запускаються в інший Лісп-системі) і режимі Emacs-Lisp (для редагування програм на Ліспі, призначених для роботи в Emacs): в обох режимах вона має дію установки визначення, в якому знаходиться точка, але спосіб виконання цього розрізняється, згідно тому, де знаходиться відповідна середу Лиспа Див Розділ 236 [Виконання Лиспа], с 253

24 Скорочення

Скорочення – це слово, яке при вставці розшифровується в який-небудь інший текст Розшифровки скорочень визначаються користувачем Наприклад, ви можете визначити foo як скорочення, що розшифровується в find outer otter. Визначивши таке скорочення, ви отримаєте можливість вставляти в буфер find outer otter, набираючи foo hSPCi

Другий вид роботи з скороченнями називається динамічною розшифровкою скорочень Ви використовуєте динамічну розшифровку скорочень за допомогою явної команди, яка розкриває букви перед точкою шляхом пошуку в цьому буфері інших слів, які починаються з таких же букв Див Розділ 246 [Динамічні скорочення], с 260

241  Поняття про скорочення

Скорочення – це слово, яке було визначено як розшифровується в задану розшифровку Коли ви вставляєте після скорочення знак, що розділяє слова, скорочення розкривається, замінюючись на розшифровку Наприклад, якщо foo визначено як скорочення, що розшифровується в find outer otter, то ви можете вставити в буфер

‘Find outer otter’, Надрукувавши foo .

Скорочення розшифровуються, тільки коли включений режим Abbrev (другорядний режим) Вимкнення режиму Abbrev не викликає забуття визначень скорочень, але вони не розшифровуються, поки режим Abbrev НЕ буде знову включений Команда Mx abbrev-mode перемикає режим Abbrev З числовим аргументом вона включає цей режим, якщо аргумент позитивний, в іншому випадку – вимикає його Див Розділ 311 [Другорядні режими], с 341 Символ abbrev-mode також є змінною режим Abbrev включається, коли це змінна відмінна від nil Мінлива abbrev-mode автоматично стає локальної для поточного буфера, як тільки ви її встановлюєте

Визначення скорочень можуть бути залежними від режиму, тобто діяти тільки в одному основному режимі Скорочення можуть також мати глобальні визначення, які є активними у всіх основних режимах Одні й ті ж скорочення можуть мати глобальне визначення і різні залежні від режиму визначення для різних основних режимів Залежне від режиму визначення для поточного основного режиму перекриває глобальне визначення

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

242  Визначення скорочень

Cx ag Визначити скорочення, використовуючи одне або кілька слів перед точкою в якості його розшифровки (add-global-abbrev)

Cx al Аналогічно, але визначити скорочення, доступне тільки в поточному основному режимі (add-mode-abbrev)

Cx aig Визначити слово в буфері як скорочення (inverse-add-global-abbrev)

Cx ail Визначити слово в буфері як властиве для режиму скорочення (inverseadd-mode-abbrev)

M-x kill-all-abbrevs

Ця команда скидає всі діючі в даний момент визначення со-

кращения, починаючи все спочатку

Звичайний спосіб визначити скорочення – увійти в текст, який ви хочете зашифровувати, встановити після нього точку і набрати Cx ag (add-global-abbrev) При цьому саме скорочення зчитується в мінібуфер, і потім воно визначається як скорочення для одного або більше слів перед точкою Використовуйте числовий аргумент для вказівки числа слів перед точкою, які повинні братися в якості розшифровки Наприклад, щоб визначити скорочення foo як описано вище, вставте текст find outer otter і потім наберіть Cu 3 Cx agfoo hRETi

Нульовий аргумент для Cx ag означає, що в якості розшифровки що визначається скорочення слід використовувати вміст області

Команда Cx al (add-mode-abbrev) схожа, але визначає скорочення, властиве для режиму Властиві для режиму скорочення активні тільки в окремому основному режимі Cx al визначає скорочення для основного режиму, який діє в момент набору цієї команди Аргументи працюють так само, як і для Cx a g

Якщо знаходиться в буфері текст є скороченням, а не його розшифровкою, використовуйте команду Cx aig (inverse-add-global-abbrev) замість Cx ag або Cx ail (inverse-add-mode-abbrev) замість Cx a l Ці команди називаються інверсними, так як вони звертають сенс двох використовуваних текстових рядків (однієї з буфера і другий, зчитується в мінібуфер)

Щоб змінити визначення скорочення, просто додайте нове визначення Вас спро-

сят про підтвердження, якщо таке скорочення вже визначено

Щоб знищити визначення скорочення, дайте команді визначення скорочень негативний аргумент: Cu Cx ag або Cu Cx a l Перша видаляє глобальне визначення, а друга – властиве для режиму

Mx kill-all-abbrevs знищує всі наявні визначення скорочень, як гло-

бальні, так і локальні

243  Управління розшифровкою скорочення

Скорочення розшифровується всякий раз, коли воно присутнє в буфері безпосередньо перед точкою, і ви набираєте самовставляющійся пробільний знак або знак пунктуації (hSPCi, Кому тощо) Більш точно, будь-який знак, який не є частиною слова, розкриває скорочення, а будь-який знак, який може бути частиною слова, може бути частиною скорочення Найбільш загальний спосіб використання скорочення – вставити його і ввести потім знак пунктуації

Розшифровка скорочення зберігає регістр букв таким чином, foo расшіфрови-

ється в find outer otter; Foo в Find outer otter, а FOO в FIND OUTER OTTER або в

‘Find Outer Otter в залежності від значення змінної abbrev-all-caps (значення, не рівне nil, вибирає першу з двох розшифровок)

Для управління розшифровкою скорочень використовуються наступні команди:

M-Відокремити приставку від подальшого скорочення, яке буде розшифрує-

вивала пізніше (abbrev-prefix-mark)

Cx ae Розшифрувати скорочення перед точкою (expand-abbrev) Це діє, навіть коли відключений режим Abbrev

M-x expand-region-abbrevs

Розшифрувати деякі або всі скорочення в області

Ви можете захотіти розшифрувати скорочення з приєднаною приставкою наприклад, якщо cnst розкривається в construction, ви могли б захотіти використовувати його для введення reconstruction. Набір recnst не працює, так як це не обовязково певне скорочення У цьому випадку спрацює застосування команди M-(abbrevprefix-mark) між приставкою re і скороченням cnst . Першим вставте re. Потім

наберіть M-; ця команда вставить в буфер дефіс, щоб показати, що вона виконала свою роботу Потім вставте скорочення cnst. Тепер буфер містить re-cnst. Тепер вставте знак, який не є частиною слова, щоб розшифрувати скорочення cnst в construction. На цьому кроці розкриття дефіс, що залишився після використання M-, видаляється Результуючим текстом буде бажане слово reconstruction.

Якщо ви насправді хочете отримати в буфері текст скорочення, а не його розшифровку, ви можете досягти бажаного, вставивши подальшу пунктуацію за допомогою Cq Таким чином, foo Cq, залишає в буфері ‘foo,’

Якщо ви розшифрували скорочення помилково, то ви можете скасувати розшифровку і повернути саме скорочення, надрукувавши для скасування C-_ (див Розділ 44 [Скасувати], с 37) Це також скасовує вставку знака, який не є частиною слова, який розгорнув скорочення Якщо ви хочете отримати завершальний знак, який не входить в слово, плюс нерозкрите скорочення, то ви повинні заново вставити завершальний знак, екранувати його командою C-q Ви також можете використовувати команду Mx unexpand-abbrev для скасування останнього розкриття без видалення завершального знака

Mx expand-region-abbrevs шукає в області певні скорочення і пропонує замінити кожне знайдене скорочення на його розшифровку Це команда зручна, якщо ви набрали текст, використовуючи скорочення, але забули перед цим включити режим Abbrev Вона також може бути корисною разом зі спеціальним набором визначень скорочень для виконання декількох глобальних замін за один раз Ця команда діє, навіть якщо вимкнений режим Abbrev

Розшифровка скорочення запускає пастку pre-abbrev-expand-hook (див Раз-

справ 3123 [Пастки], с 349)

244  Перевірка і редагування скорочень

M-x list-abbrevs

Показати перелік усіх визначень скорочень

M-x edit-abbrevs

Редагувати перелік скорочень ви можете додати, змінити або уда-

лити визначення

Висновок Mx list-abbrevs виглядає так:

(lisp-mode-abbrev-table)

&quotdk&quot                0       &quotdefine-key&quot (global-abbrev-table)

&quotdfn&quot            0       &quotdefinition&quot

(Деякі порожні рядки, що не мають смислової значущості, і деякі інші та-

бліци скорочень були опущені)

Рядок, що містить імя в круглих дужках, – це заголовок для скорочень з конкретної таблиці global-abbrev-table містить всі глобальні скорочення, а інші таблиці скорочень, які іменуються в відповідності з основними режимами, містять скорочення, специфічні для режиму

Кожен непорожній рядок у таблиці визначає одне скорочення Слово на початку рядка

– Це само скорочення Число, що стоїть далі, говорить, скільки разів скорочення було розшифровано Emacs відстежує це, щоб допомогти вам побачити, які скорочення ви дійсно використовуєте, на випадок, якщо ви вирішите знищити ті, що не використовуються досить часто Ланцюжок знаків у кінці рядка – це і є розшифровка

Mx edit-abbrevs дозволяє вам додати, змінити або знищити визначення скорочень за допомогою редагування їх списку в буфері Emacs Цей список має той же самий формат, що й описаний вище Буфер скорочень називається * Abbrevs *

і знаходиться в режимі Edit-Abbrevs Надрукуйте в цьому буфері Cc Cc, щоб встановити, як зазначено в ньому, визначення скорочень і видалити все не перераховані в ньому визначення

Команда edit-abbrevs – це фактично те ж саме, що і list-abbrevs, за винятком того, що вона вибирає буфер * Abbrevs *, тоді як list-abbrevs просто показує його в іншому вікні

245  Збереження скорочень

Ці команди дозволяють вам зберігати визначення скорочень між сеансами ре-

дактірованія

M-x write-abbrev-file hRETфайл hRETi

Записати файл файл, що описує всі певні скорочення

M-x read-abbrev-file hRETфайл hRETi

Вважати файл файл і визначити скорочення так, як там описано

M-x quietly-read-abbrev-file hRETфайл hRETi

Те ж саме, але не показувати повідомлення про події

M-x define-abbrevs

Визначити скорочення з визначень в поточному буфері

M-x insert-abbrevs

Вставити всі скорочення і їх розшифровки в поточний буфер

Mx write-abbrev-file зчитує імя файлу, використовуючи мінібуфер, і записує в цей файл опис всіх поточних визначень скорочень Це використовується для того, щоб зберегти визначення для використання в подальших сеансах Зберігається в такому файлі текст – це послідовність лісповскіх виразів, які при виконанні визначають такі ж скорочення, які у вас є в даний момент

Mx read-abbrev-file запрошувати імя файлу, використовуючи мінібуфер, і потім зчитує цей файл, визначаючи скорочення відповідно його вмісту Mx quietly-read-abbrev-file – така ж команда, за винятком того, що вона не показує в луна-області повідомлення про свою роботу насправді це зручно головним чином у файлі . emacs. Якщо будь-який з цих функцій передається порожній аргумент, то як імя файлу використовується значення змінної abbrev-file-name, яка за замовчуванням дорівнює ~ / abbrev_defs.

Emacs автоматично запропонує записати скорочення, якщо ви змінили будь-яка з них, всякий раз, коли він пропонує зберегти всі файли (для Cx s або Cx Cc) Ця властивість може бути відключено встановленням змінної save-abbevs в значення nil

Команди Mx insert-abbrevs і Mx define-abbrevs схожі на попередні команди, але працюють над текстом в буфері Emacs Mx insert-abbrevs вставляє текст у поточний буфер перед точкою, описуючи всі поточні визначення скорочень Mx define-abbrevs повністю аналізує поточний буфер і відповідно визначає скорочення

246  Динамічна розшифровка скорочень

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

M-/ Розшифрувати слово в буфері перед точкою як динамічне скорочення за допомогою пошуку в буфері слів, які з цього скорочення (dabbrevexpand)

CM-/ Закінчити слово перед точкою як динамічне скорочення (dabbrevcompletion)

Наприклад, якщо буфер містить does this follow і ви наберете fo M-/, то результатом буде вставка follow, тому що це останнє слово в буфері, яке починається з fo. Числовий аргумент для M-/ говорить, що слід брати другу, третю і так далі відрізняється розшифровку, знайдену при перегляді в зворотному напрямку від точки Повтор M-/ шукає альтернативну розшифровку шляхом подальшого перегляду тому Після того, як буде переглянутий весь текст перед точкою, проглядається текст після крапки Мінлива dabbrev-limit, якщо не дорівнює nil, вказує, як далеко по буферу потрібно шукати розшифровку

Після перегляду поточного буфера M-/ зазвичай переглядає інші буфери, якщо ви не встановили dabbrev-check-all-buffers в значення nil

Негативний аргумент для M-/, як Cu M-/, каже, що потрібно шукати розшифровки спочатку після крапки, а потім перед нею Якщо ви повторюєте M-/ для пошуку іншого розкриття, не ставте аргумент При цьому спочатку будуть спробувати все розшифровки після крапки, а потім все розшифровки перед точкою

Після того, як ви розшифрували динамічне скорочення, ви можете скопіювати додаткові слова, які йдуть після розшифровки в оригінальному контексті Просто друкуйте hSPCM-/ для кожного слова, яке ви хочете скопіювати Проміжки і пунктуація між словами копіюється разом з ними

Команда CM-/ (dabbrev-completion) виробляє завершення динамічного скорочення Замість того, щоб пробувати можливі розшифровки одну за іншою, вона знаходить їх все, а потім вставляє текст, який є в них спільним Якщо в них немає нічого спільного, CM-/ показує перелік завершень, з якого ви можете вибрати потрібне звичайним способом Див Розділ 53 [Завершення], с 47

Динамічна розшифровка скорочень абсолютно не залежить від режиму Abbrev розшифровка слова за допомогою M-/ повністю незалежна від того, чи має воно визначення як звичайне скорочення

247  Налаштування для динамічних скорочень

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

Це засіб управляється змінної dabbrev-case-fold-search Якщо вона дорівнює t, регістр при пошуку ігнорується якщо вона дорівнює nil, то слово і розшифровка повинні мати один регістр Якщо значення dabbrev-case-fold-search одно case-fold-search, що вірно за замовчуванням, то ігнорування регістра під час пошуку розшифровок визначається змінної case-fold-search

Зазвичай динамічна розшифровка скорочень зберігає зразок регістра сокраще

ня, яке ви надрукували, перетворюючи розшифровку до регістру цього зразка

Мінлива dabbrev-case-replace вказує, чи потрібно зберігати зразок регістра скорочення Якщо вона дорівнює t, зразок регістра скорочення зберігається в більшості випадків якщо вона nil, то розшифровка копіюється буквально Якщо значення dabbrevcase-replace одно case-replace, що істинно за замовчуванням, то змінна casereplace вказує, чи потрібно копіювати розшифровку буквально

Однак, якщо розшифровка містить складний набір букв різних регістрів, і скорочення збігається з цим зразком, коли доходить до нього, то розшифровка копіюється буквально, незважаючи на значення цих змінних Таким чином, якщо буфер містить переменнуюСГлупымОбразцомРегистров, і ви надрукуєте п е M-/, вона скопіює розшифровку буквально, включаючи її зразок регістрів

Мінлива dabbrev-abbrev-char-regexp, якщо не дорівнює nil, вказує, які знаки вважаються частиною слова для цілей динамічної розшифровки Це регулярний вираз має збігатися тільки з одним знаком, але ніколи не з двома або більшою кількістю Це ж регулярний вираз визначає також, які знаки є частиною розшифровки Значення nil має особливий сенс: скорочення складаються з знаків, що є частиною слів, але розшифровки складаються із знаків, що є частиною слів і символів

У сценаріях командного інтерпретатора і Make-файлах до імен змінних іноді приставляється $, а іноді ні Основні режими для такого роду тексту можуть налаштувати динамічну розшифровку, щоб вона обробляла необовязковий префікс, встановивши змінну dabbrev-abbrev-skip-leading-regexp Її значення повинно бути регулярним виразом, що збігається з необовязковим префіксом, який повинен ігноруватися динамічними скороченнями

Джерело: Річард Столмен, Керівництво по 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>

*

*