Пишем свой текстовый редактор на C: часть 1

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! Представляю вашему вниманию перевод статьи "Build Your Own Text Editor" автора Джереми Рутена.


Свой текстовый редактор!


Привет! Это вольный перевод о том, как написать свой никому не нужный текстовый редактор на C.



Итак, что сможет делать наш редактор?


  • Базовые функции редактора (писать, стирать, перемещать «каретку» и т.д.)
  • Искать по ключевому слову
  • Подсвечивать синтаксис

Еще чуть-чуть о реализации редактора:


  • Реализация редактора состоит из чуть больше, чем 1000 строк и одного файла
  • Не имеет зависимостей (кроме, конечно же, системных)

Всего туториал состоит из 184 шагов. Каждый шаг вы будете добавлять, изменять или удалять разные строки кода. На большинстве шагов вы сможете наблюдать за внесенными изменениями просто скомпилировав и запустив программу.


Я попробую объяснить каждый шаг на этом пути, иногда очень подробно. Не бойтесь пропускать теорию, потому что суть в самом написании кода и то, что вы вообще решились на это! Всё, что вы узнаете в процессе — это бонус, будет чему научится просто вводя изменения в код и наблюдая за результатами.


Настройки


Первый шаг, новый файл и всё всё всё с чистого листа…
Для начала убедитесь в том, что ваша среда корректно настроена для вашего ЯП (в нашем случае — для C), а так же вы хотя бы примерно понимаете, как компилировать и запускать вашу программу в этой среде.


К нашему счастью, редактор, который мы напишем не зависит от каких-либо внешних библиотек. Единственное, что нам понадобится, так это компилятор и стандартная библиотека языка C, с которой он и поставляется. Мы так же будем использовать make-скрипт для упрощения команд компиляции. Удостоверьтесь, что у вас есть как и компилятор для C, так и make.


Компилятор языка C


Так как C компилируемый язык, нам нужен, как не странно, компилятор, если у вас его нет, его обязательно нужно установить, как и make. Например, в Ubuntu, это можно сделать так:


sudo apt-get install gcc make

Функция main()


Итак, вот, с чего начинается наш путь! Создайте файл kilo.c и напишите в нем базовую main() функцию.


Шаг 1

int main() {
    return 0;
}

Для компиляции этого файла, достаточно ввести cc kilo.c -o kilo в ваш терминал. Если ошибок не последовало, в текущей директории появится исполняемый файл kilo. Что бы запустить программу, введите ./kilo. К сожалению, пока наша программа ничего не умеет, поэтому ничего нам не напечатает.


(не обязательно, что бы ваш редактор назывался так же, как и в статье, вы вполне можете назвать свой редактор "uber_mega_super_redaktor1337" другим эстетичным названием)


Упрощение компилирования с make


Каждый раз печатать что то вроде cc kilo.c -o kilo надоедает, поэтому мы и напишем make скрипт.


Создайте новый Makefile с подобным содержимым:


Шаг 2

kilo: kilo.c
    $(CC) kilo.c -o kilo -Wall -Wextra -pedantic -std=c99

Первая линия Makefile-а говорит нам о том, что мы хотим скомпилировать и то, что нам для этого потребуется. Вторая линия определяет команду, которую будет выполнять make скрипт. $(CC) обычно ссылается на команду cc.


Что это за магические слова появились?
Это флаги, а именно:


  1. -Wall — от английского "all Warnings", что говорит компилятору выводить почти все предупреждения, если ему что то не очень нравится.
  2. -Wextra и -pedantic просит компилятор выводить еще больше предупреждений, если такие имеются.
  3. -std=c99 показывает компилятору, какую версию стандарта языка C ему использовать при компилировании. Стандарт C99 немного упростит нам процесс написания кода.

Теперь, когда Makefile настроен, попробуйте написать команду make в ваш терминал для компиляции программы. Запустить её можно так же, как и всегда, ./kilo.


Продолжение следует...

Источник: https://habr.com/ru/articles/777946/


Интересные статьи

Интересные статьи

В предыдущей статье я рассказал, как создать блок-дизайн c софт-процессором Microblaze, ethernet в режиме SGMII и SPI flash. В этой статье я расскажу про то, как собрать и настроить образ линукса, как...
Если вам нужно быстро смонтировать видеоролик для рекламной кампании или других целей, совсем не обязательно изучать сложные программы. Собрали 15 простых инструментов, с которыми справится даже нович...
Это вторая часть статьи про голосового помощника. Первую часть можно наути тут.
Долгое время беспроводные сети WiFi предполагали наличие проводной сети между точками доступа. Даже название «точка доступа» предполагает, что эти устройства работают на уровне доступа для подключен...
В предыдущей серии постов для начинающих из ремикса книги Генри Гарнера «Clojure для исследования данных» (Clojure for Data Science) на языке Python было представлено нес...