Додаток C Emacs і MS-DOS – ЧАСТИНА 1

Цей розділ коротко описує особливості використання Emacs під операційною системою MS-DOS (відомої також як MS-DOG) Якщо ви зберете Emacs для MSDOS, цей двійковий файл можна буде також запустити на Windows 3X, Windows NT, Windows 9X або OS / 2 як додаток DOS відомості з даної глави ставляться до всіх цих систем, якщо ви використовуєте Emacs, який був скомпільований для MS-DOS

Зауважте, що можливо зібрати Emacs спеціально для Windows NT або Windows 9X Якщо ви зробите так, більша частина глави буде непридатна до вашого випадку тоді ви отримаєте поведінку, яка більш близько до того, що описано в решті частини керівництва, і яке включає підтримку для довгих імен файлів, множинних фреймів, смужок прокрутки, меню для миші і підпроцесів Однак, розділ про текстових і довічних файлах все ще матиме силу Також наприкінці цієї глави є два розділи, які відносяться виключно до Windows NT і 9X

C1  Клавіатура і миша в MS-DOS

Розкладки клавіатури PC використовують як клавіші hMETAліву клавішу hALTi Ви можете вибрати між двома способами емулювання клавіш hSUPERi  і hHYPERi: Використовувати або правий hCTRLi, Або правий hALTi, Встановивши змінні dos-hyper-key і dos-super-key, відповідно, в значення 1 або 2 Якщо ні dos-super-key, ні doshyper-key не дорівнює 1, то за замовчуванням правий hALTi  також відображається в клавішу hMETAi Однак, якщо встановлена ​​KEYBCOM, програма для підтримки в MS-DOS багатомовною клавіатури, Emacs не відображатиме правий hALTi  в hMETAi, Так як він використовується для отримання таких знаків, як ~ і @ в розкладках, відмінних від розкладки US в такому випадку ви можете використовувати як клавіші hMETAтільки лівий hALTi

Мінлива dos-keypad-mode – це прапор, який управляє кодами, повертаними клавішами додаткової цифрової клавіатури Ви також можете визначити клавішу hENTERi  з додатковою клавіатури як Cj, помістивши в ваш файл _emacs наступний рядок:

;; Робить так, щоб Enter з додатковою

;; клавіатури діяв як Cj

(define-key  function-key-map [kp-enter] [\C-j])

Клавіша, відома в Emacs як hDELi  (Бо таке її призначення на більшості робочих станцій), на PC відома як hBSi  (Забій) Тому специфічна для PC ініціалізація терміналу змінює відображення клавіші hBSi  таким чином, щоб вона діяла як hDELi клавіша hDELвідображається в Cd з тих же причин

Emacs, зібраний для MS-DOS, розпізнає в якості ключа виходу комбінацію C-hBREAKi, Точно так само, як C-g Це робиться, тому що Emacs не може зареєструвати натискання Cg, якщо тільки він не готовий до прийняття вводу Як наслідок, ви не можете використовувати Cg для зупинки запущеної команди (див Розділ 321 [Вихід], с 371) Навпаки, C-hBREAKi  можна вловити, як тільки ви її набрали (як Cg на інших системах), тому її можна застосовувати для зупинки працюючої команди і для аварійного виходу (див Розділ 3228 [Аварійний вихід], с 374)

Emacs підтримує в MS-DOS миша (тільки на терміналі за замовчуванням) Команди миші працюють як описано, включаючи ті, що використовують меню та смужку меню (див Розділ 14 [Смужка меню], с 26) Смужки прокрутки не працюють в MS-DOS Emacs Миші на PC зазвичай мають тільки дві кнопки вони діють як Mouse-1 і Mouse-2, але якщо ви натиснете їх разом, то вони подіють як Mouse-3

Зібраний для MS-DOS і запущений під Windows Emacs підтримує операції з буфером обміну Команди, які поміщають текст в список знищень або відновлюють текст з нього, спочатку перевіряють буфер обміну, так само, як в X Windows (див

Розділ 171 [Команди миші], с 147) У MS-DOS Emacs під Windows підтримуються тільки первинне виділення і буфер вирізок вторинне виділення завжди виглядає як пусте

Доступ до буферу обміну реалізований в Windows так, що довжина тексту, який ви можете в нього помістити, обмежена кількістю доступної Emacs вільної памяті DOS Зазвичай в буфері може вміститися до 620KB тексту, але цей межа залежить від конфігурації системи і буде менше, якщо ви запустите Emacs як подпроцесс іншої програми Якщо знищений текст не вміщується, Emacs друкує повідомлення про це і не поміщає цей текст у буфер обміну

Також, в буфер обміну Windows не можна помістити знаки з нульовим кодом Якщо знищуваний текст містить нулі, Emacs НЕ БУДЕ записувати його в буфер обміну і надрукує про це попередження в луна-області

Мінлива dos-display-scancodes, якщо вона не дорівнює nil, велить Emacs показувати ASCII-значення скан-кодів клавіатури при кожному натисканні клавіші ця можливість служить доповненням до команди view-lossage, вона корисна для налагодження

C2  Зображення в MS-DOS

У MS-DOS не можна використовувати варіації шрифтів, такі як курсив або жирний шрифт, але множинні накреслення підтримуються кожне з них може визначати кольору шрифту і фону Отже, ви можете користуватися всією функціональністю пакетів Emacs, які використовують шрифти (таких як font-lock, режим Enriched Text та інших), визначаючи відповідні накреслення як використовують різні кольори Щоб подивитися, які кольори і накреслення доступні, і як вони виглядають, запустіть команду list-colors-display (див Розділ 1710 [Параметри фрейма], с 153) і команду listfaces-display (див Розділ 1713 [Начертания], с 155)

Див Розділ C6 [MS-DOS і MULE], с 408, де описано, як Emacs відображає гліфи та знаки, які не підтримуються вбудованими шрифтами

Множинні фрейми (див Глава 17 [Фрейми], с 147) підтримуються в MS-DOS, але вони перекриваються, так що в один час ви можете бачити тільки один з них Цей єдиний фрейм займає весь екран Коли ви запускаєте Emacs в сеансі DOS изпод MS-Windows, ви можете зробити так, щоб видимий фрейм займав не весь екран, але Emacs все одно не може показати більше одного фрейма одночасно

Команда mode4350 перемикає між відображенням 43 або 50 рядків, залежно від вашої апаратури команда mode25 перемикає до розміру екрану за замовчуванням, 80×25

За замовчуванням Emacs знає тільки як встановити розмір вікна для 80-ти стовпців на

25, 28, 35, 40, 43 або 50 рядків Однак, якщо у вашого відеоадаптера є особливі відеорежими, які перемикаю зображення в інші розміри, ви можете зробити так, щоб Emacs підтримував і їх теж Коли ви просите Emacs змінити розмір фрейма на n стовпців і m рядків, він перевіряє, чи є змінна з імям screen-dimensionsnxm, І якщо вона є, використовує її значення (яке повинно бути цілим числом) як відеорежим, в який потрібно переключитися (Emacs перемикається в цей режим відео, викликаючи функцію BIOS Set Video Mode зі значенням screen-dimensions-nxm в регістрі AL) Наприклад, уявімо, що ваш адаптер переходить до розмірів 66×80, коли його перевели в режим відео 85 Тоді ви можете зробити так, щоб Emacs підтримував цей розмір екрану, помістивши в ваш файл _emacs наступне:

(setq  screen-dimensions-66×80 85)

Оскільки Emacs здатний в MS-DOS встановити розмір фрейму тільки до конкретних підтримуваним розмірами, він не може слідувати будь-якого можливого запиту на його зміну Коли запитано непідтримуваний розмір, Emacs вибирає наступний,

більший, ніж зазначений Наприклад, якщо ви звернулися щодо фрейм 36×80, замість цього ви отримаєте 40×80

Змінні screen-dimensions-nxm використовуються, тільки якщо вони точно збігаються з вказаним розміром при пошуку наступного більшого розміру вони ігноруються У прикладі вище, навіть якщо ваш VGA-адаптер підтримує розмір 38×80, і ви визначили змінну screen-dimensions-38×80 з відповідним значенням, ви тим не менш отримаєте екран 40×80, коли зажадаєте зробити розмір фрейму рівним 36×80 Якщо ви хочете отримати в цьому випадку розміри 38×80, ви можете зробити це, встановивши змінну з імям screen-dimensions-36×80 і тим же значенням відеорежиму, що і screen-dimensions-38×80

Зміна розмірів фрейма в MS-DOS призводить також до нових розмірів і всі Залишився-

ві фрейми

C3  Імена файлів в MS-DOS

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

Імена файлів в MS-DOS регістронезавісімий і обмежені вісьмома знаками плюс необовязкова точка і ще три знаки Emacs досить обізнаний про ці обмеження, щоб справлятися з іменами файлів, призначених для інших операційних систем Наприклад, початкові точки .’ В імені файлу неприпустимі в MS-DOS, тому Emacs автоматично переводить їх у подчерки _; так що ваш файл ініціалізації за замовчуванням (Див Розділ 317 [Файл ініціалізації], с 366) називається в MS-DOS _emacs. Зайві знаки перед або після точки зазвичай ігноруються самої MS-DOS тому, якщо ви звертаєтеся до файлу LongFileNameEvenLongerExtension, ви без попереджень отримаєте longfileeve, але в рядку режиму Emacs все так само буде показувати це довге імя файлу У всіх інших відносинах ви самі повинні піклуватися про зазначення допустимих під MS-DOS імен файлів описане вище прозоре перетворення діє тільки на імена файлів всередині Emacs

Згадані вище обмеження на імена файлів в MS-DOS роблять конструювання імен резервних файлів майже неможливим (див Розділ 14311 [Імена резервних файлів], с 110) без втрати деяких знаків з первісного імені файлу Наприклад, імям резервного файлу для docstxt буде docstx ~, навіть якщо використаний єдиний резервний файл

Якщо ви запускаєте Emacs як додаток DOS під Windows 9X, ви можете включити підтримку довгих імен файлів Якщо ви зробите так, Emacs не стане усікати імена файлів або приводити їх до нижнього регістру навпаки, він буде використовувати імена файлів так, як ви їх задали, без змін Щоб задіяти підтримку довгих імен файлів, встановіть змінну середовища LFN рівний y перед запуском Emacs На жаль, Windows NT не дозволяє програмам DOS отримувати доступ до довгих іменах файлів, так що зібраний для MS-DOS Emacs буде бачити тільки їх короткі псевдоніми у формі 8 +3

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

*

*