LINUX.ORG.RU

Книги про то как пишут текстовые редакторы (посоветуйте)

 , , ,


0

2

Я имею в виду графические текстовые редакторы, те, которые ещё не текстовые процессоры, но уже умеют изображать шрифты на экране (через X11).

По причинам неразвитости цифровых технологий, понятно, что по российским технологиям вроде редактора «Лексикон» таких книг нет.

Я даже не знаю, а существуют ли какие-то российские опенсорсные редакторы сейчас (как живые проекты).

Понятно, что софт в наше время продать нельзя (слишком много альтернатив, слишком мало российских магазинов, один только RuStore и есть).

Но можно было бы сделать веб-сервис. Хостинговые компании показывают, что в принципе на сайте принимать деньги можно.

★★★★

Последнее исправление: ilinsky (всего исправлений: 1)

В себе всё рисуется не так как в X11 и сделать редактор будет в 100 раз проще.

IIIypuk ★★★★
()

Но можно было бы сделать веб-сервис

Я сначала поставил фейспалм, потом перечёл, наткнулся на этот пассаж и поставил клоуна.

Удачи вам продать веб-редактор, которые недотягивает до текстового процессора. На Х11, ага.

PPP328 ★★★★★
()

Книги про то как пишут текстовые редакторы (посоветуйте)

K&R

Книг под каждую специфичную нужду не существует.

kaldeon
()

Если вопрос в деньгах, солги про 10 прирост к производительности в vim и продавай курс по настройке конфига.

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 1)

Но можно было бы сделать веб-сервис. Хостинговые компании показывают, что в принципе на сайте принимать деньги можно.

Уже есть: https://vscode.dev

kaldeon
()

погугли, есть статьи про это дело.

alysnix ★★★
()

Но ведь нет такой штуки как текстовый редактор. Notepad, emacs, acme — все они относятся к текстовым редакторам и все они совершенно разные.

ugoday ★★★★★
()

Браузер это почти текстовый редактор, только в нем текст не редактируется. Потому, вот тут нужное хорошо описано.
https://browser.engineering/
Смотри разделы «Drawing to the Screen» и «Formatting Text».

Ну и это, может пригодится.
https://viewsourcecode.org/snaptoken/kilo

urxvt ★★★★★
()

Книги про то как пишут текстовые редакторы (посоветуйте)

Я имею в виду графические текстовые редакторы, те, которые ещё не текстовые процессоры, но уже умеют изображать шрифты на экране (через X11).

Программистов И. Б. Как написать графический текстовый редактор, который ещё не текстовый процессор, но уже умеет изображать шрифты на экране (через X11). М.: Знак, 2007.

i-rinat ★★★★★
()

Думаешь текстовые редакторы по книге пишут?

Почитай про структуры данных rope, piece table, gap buffer. Для подсветки tree sitter. Если совсем лень изобретать то бери libscintilla, на ней уже куча редакторов есть, но она не идеальна.

neumond
()
  1. Находишь какой-нибудь опенсорсных текстовый редактор (на X11).

  2. Генерируешь историю коммитов в файл.

  3. Прогоняешь через переводчик (теперь российскя технология).

  4. Распечатываешь, пробиваешь, сшиваешь. Готово!

Bfgeshka ★★★★★
()
Ответ на: комментарий от ugoday

Вы видели в интернете сайты для сборки дистрибутивов? Там ставим галочки - это надо, это не надо, и он создаёт файл для скачивания. Вот и тут можно сделать так же - пользователь заказывает, что ему нужно, и редактор получается удобным именно для него.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от kaldeon

Открытие локальных папок не поддерживается Браузер не поддерживает открытие локальных папок. Вы можете открыть отдельные файлы или удаленный репозиторий.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Я ещё тут хотел про AbiWord написать, так как он не большой и модно ознакомится с исходныками, но потом понял что ты даже пытаться не будешь. И да, в том топике ещё несколько редакторов перечислили. А то что они не российские, ну уж извините, так он OpenSource, не дискриминирует другие страны.

IIIypuk ★★★★
()
Ответ на: комментарий от IIIypuk

можно ознакомится с исходныками

Прежде чем ознакамливаться с исходниками, нужно ознакомиться с самой программой. Хотя бы почитать описание и установить. Я этот ваш AbiWord и не видел никогда.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Прежде чем ознакомится с книгой, её необходимо купить или на крайний случай скачать, но мне лень, я балабол.

IIIypuk ★★★★
()
Ответ на: комментарий от IIIypuk

Прежде чем скачать книгу, надо знать какую. Их там миллионы (в Annas Archive или в Library Genesis).

Shushundr ★★★★
() автор топика
Ответ на: комментарий от urxvt

это, может пригодится.
https://viewsourcecode.org/snaptoken/kilo

Мне всегда было интересно, как отключить необходимость двойного нажимания Esc в Midnight Commander

найдите ~/.config/mc/ini
сделайте там

[Midnight-Commander]
esc_mode_free=1

Как это вообще работает?

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 2)

Забавно, что в питоне все нужное для создания консольного редактора в стандартной библиотеке:

>>> import sys
>>> import termios
>>> import tty
>>>
>>> class SimpleTerminal:
...     def __init__(self):
...         # Сохраняем текущие настройки терминала
...         self.old_settings = termios.tcgetattr(sys.stdin)
...
...     def enable_raw_mode(self):
...         # Включаем сырой режим для терминала
...         tty.setraw(sys.stdin)
...
...     def disable_raw_mode(self):
...         # Восстанавливаем исходные настройки терминала
...         termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.old_settings)
...
...     def run(self):
...         print("Запуск терминала. Нажмите 'q' для выхода.")
...         try:
...             self.enable_raw_mode()
...             while True:
...                 # Читаем по одному символу
...                 char = sys.stdin.read(1)
...                 if char == 'q':  # Завершить при вводе 'q'
...                     print("\nВыход из терминала.")
...                     break
...                 # Выводим символ на экран
...                 print(f"Введено: {char}")
...         finally:
...             self.disable_raw_mode()
...
>>> terminal = SimpleTerminal()
>>> terminal.run()
Запуск терминала. Нажмите 'q' для выхода.
Введено:
Введено:
Введено:
Введено:
Введено: h
          Введено: a
                    Введено: h
                              Введено: a
                                        Введено: a
                                                  Введено: h
                                                            Введено: a
                                                                      Введено: h
                                                                                Введено: a
                                                                                          Введено: h
                                                                                                    Введено: a
       Введено: d
                 Введено: d
                           Введено: s
                                     Введено: d
                                               Введено: s
                                                         Введено: d
                                                                   Введено: s
                                                                             Введено: d
                                                                                       Введено: s
                                                                                                 Введено: d
    Введено: d

              Выход из терминала.
                                 >>> q

Я по ссылке выше увидел termios.h, и оказалось, что в питоне его в либу обернули.

rtxtxtrx ★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от Shushundr

Когда-то в терминалах не было ни ctrl, ни alt, но был esc. И сначала нужно нажать esc, а затем букву или хитрые последовательности символов, и это называется ansi escape sequences. Двойной esc собственно вводит сам по себе esc.

Ещё в терминалах бывает никак не назначить какой-нибудь ctrl-h, потому что он жёстко захардкожен как backspace, что тоже легаси с незапамятных времён.

neumond
()

Слишком простой для того, чтобы писать о нём книгу, даже если это будет Kate с модулями. В книгах по программированию он не редкость в качестве примера, даже на асме можно написать. Выбор отображаемого шрифта это лишь дополнительная функция редактора и я бы сказал, что ничтожная, можно на примере терминала посмотреть (foot, например). Куда сложнее подСветкой синтаксиса, ибо языков далеко не один и все его особенности следует описать. Ваши потуги не переплюнут такие готовые редакторы, как Atom, Vim, про ОС Ёmacs вообще молчу. И веб-сервисы российские с текстовым редактором тоже есть. И есть редакторы с открытым исходным кодом под лицензией BSD, из которого можно создавать свой, даже с закрытым кодом. Да и под Linux тоже есть российские даже текстовые процессоры и далеко не один. Угадай, почему о них не знаешь?

wonit
()

Книги про то как пишут текстовые редакторы

а книги, про то, как пишут аудиоплееры, ты уже все прочитал?!

aol ★★★★★
()

Я даже не знаю, а существуют ли какие-то российские опенсорсные редакторы сейчас (как живые проекты).

Выпуск CudaText 1.214.0

greenman ★★★★★
()
Ответ на: комментарий от neumond

Когда-то был редактор, который не загружал весь текстовый файл в память, чтобы редактировать его, но выводил на дисплей его содержимое без подсветки и позволял редактировать содержимое. Потоковый текстовый редактор и по сей день используется. 😉

wonit
()

Читай любую книгу по программированию и документацию к выбранному графическому тулкиту (если планируется). По окончании чтения и понимания ты сможешь написать текстовый редактор. Книги о том, как писать конкретную программу, не нужны — более общие полностью покрывают эту задачу.

Если вдруг почему-то не получается даже после этого, можно просто заглянуть в исходники любого понравившегося текстового редактора.

Я имею в виду графические текстовые редакторы, те, которые ещё не текстовые процессоры, но уже умеют изображать шрифты на экране (через X11).

Так разницы никакой. Для иксового ты всё равно сделаешь матрицу символов, и будешь туда выводить текст. То есть, это считай то же самое, что писать консольный, но ещё надо написать «недотерминал» поверх этого. Да и в принципе эта задача тривиальна.

Я даже не знаю, а существуют ли какие-то российские опенсорсные редакторы сейчас (как живые проекты).

Это очень странная постановка вопроса. Опенсорсный софт обычно не имеет привязки к какой-либо стране, а если имеет, то несильную (и всем пофиг, никому не интересно, откуда автор). Но можно вспомнить как минимум TEA. Вот по нему сразу видно, что российский: там «наладка», «файловый приказчик» и «логмемо».

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

Так тут на сайте периодически публикуются новости про cudaText и кажется какой-то проект на паскале ещё был. Не знаю про их российскость

cobold ★★★★★
()

слишком мало российских магазинов, один только RuStore и есть

оно только для смартфонов

Но можно было бы сделать веб-сервис.

не взлетит, да и не нужно

Я даже не знаю, а существуют ли какие-то российские опенсорсные редакторы сейчас (как живые проекты).

https://github.com/search?q=текстовый редактор&type=repositories даже тут на форуме был один школьник (не оскорбление, он реально в школе учился) из Ярославля, который свой редактор на python писал

Kolins ★★★★★
()
Ответ на: комментарий от neumond

Это понятно. Непонятно, как работает «отмена».

Ведь если обрабатывать одиночный ESC сразу, то это значит, что станут невозможны все другие входящие esc-последовательности, а там на них многое завязано, например символы стрелок для перемещения курсора.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от wonit

Угадай, почему о них не знаешь?

Потому что вы поленились написать их названия. А вот автор leafpad не поленился. И поэтому я пользуюсь leafpad-ом, а не российскими редакторами.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от CrX

ты всё равно сделаешь матрицу символов, и будешь туда выводить текст.

А вот Кнут сделал не так. Он нанизывает боксы на базовые линии. Не матрица, представляете?

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Держи 🔴 ты уронил.

Это каким 🤡 надо быть чтоб сначала говорит о визивиг-редакторах. А потом упоминать обычные текст-онли редакторы

guyvernk
()

Так и бан за троллинг тупостью можно получить.

firkax ★★★★★
()
Ответ на: комментарий от Shushundr

А вот Кнут сделал не так. Он нанизывает боксы на базовые линии. Не матрица, представляете?

Не знаю, где конкретно и как сделал Кнут*, но в текстовом редакторое (не текстовом процессоре) у тебя в любом случае получится матрица в итоге, с чего не начинай. Если ты хочешь нормальный текстовый редактор, конечно, а не что-то очень специфическое.

*Я знаю, что про TeX, но это же не текстовый редактор

CrX ★★★★★
()
Ответ на: комментарий от Shushundr

Не вижу русских книжек в списке литературы

Там и нерусских книжек нет, это статьи о редакторе в журналах.

И я даже не знаю, почему они должны быть русскими (или вообще почему обязаны быть).

Я тебе отвечал отдельно на это:

Я даже не знаю, а существуют ли какие-то российские опенсорсные редакторы сейчас (как живые проекты).

Теперь вот знаешь про TEA.

Книжек не знаю, и скорее всего, таковых не существует, потому что это бред: есть книжки по программированию. Умение программировать позволяет написать любой тип программ, в том числе и текстовые редакторы. При этом текстовый редактор — это достаточно простая вещь по сравнению, например, с ОС, поэтому какой-то специфики архитектуры и проектирования даже в очень обобщённом виде не хватит на целую книжку.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

Что за процессор 🤣

Редакторы бывают визивиг - ворд, врайтер.

И бывают просто текстовые.

В этом прям огромное различие в рендере.

guyvernk
()
Ответ на: комментарий от guyvernk

Редакторы бывают визивиг - ворд, врайтер.

По-русски этот класс программ обычно называется текстовыми процессорами. Ещё со времён Лексикона. По-английски — Word processor.

CrX ★★★★★
()
Ответ на: комментарий от CrX

а не что-то очень специфическое

Так я не знаю, что я хочу. И поэтому мне нужно обзорное руководство.

Пишут же монографии про соль. Хотя формула там всего 4 символа.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Так я не знаю, что я хочу. И поэтому мне нужно

…делом заняться попробовать, а не какой-то странной фигнёй маяться

Пишут же монографии про соль. Хотя формула там всего 4 символа.

Не знаю такой монографии. Но уверен, что там не о том, как добыть каменную соль. Или как минимум не только об этом.

CrX ★★★★★
()
Ответ на: комментарий от CrX

LibreOffice Write - это текстовый редактор. Ну процессор, но это неважно.

Фреймворк для межпроцессного взаимодействия там при том, что работу с любыми прикладными программами желательно скриптовать, а скрипты криворукского происхождения желательно не запускать в том же процессе (зависнут, или ещё что придумают).

Мне может захотеться редактировать LaTeX визуально, поэтому концепция Кнут-а интересная. На самом деле мне не захочется, но заранее-то я об этом не знаю.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от CrX

странной фигнёй

Я сейчас читаю тот сайт про редактор из 1000 строк. Пока не дочитал до места, где работа с буфером обмена.

Но точно уверен, что редактор без работы с буфером обмена совсем не такой, как редактор с буфером.

А с откатами - ещё сложнее.

С независимым рецензированием правок - ещё.

И так там много разных фишек, на книжку бы хватило без вопросов.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

LibreOffice Write - это текстовый редактор. Ну процессор, но это неважно.

Важно. Совершенно разные принципы как работы с ним, так и написания. И совершенно разные сложности, с которыми придётся столкнуться. Книга по написанию текстовых процессоров не будет полезной (а возможно даже немного вредной) при написании обычного текстового редактора.

Фреймворк для межпроцессного взаимодействия там при том, что работу с любыми прикладными программами желательно скриптовать, а скрипты криворукского происхождения желательно не запускать в том же процессе (зависнут, или ещё что придумают).

И об этом ты тоже прочитаешь в книжках, посвящённых программировнию и проектированию вообще. Какой-то специфики именно у текстовых редакторов, чтобы выделяеть её в отдельную книгу, здесь нет.

Мне может захотеться редактировать LaTeX визуально

Тогда ты возьмёшь TeXstudio или LyX и будешь это делать.

поэтому концепция Кнут-а интересная. На самом деле мне не захочется, но заранее-то я об этом не знаю.

Если ты не знаешь, чего тебе хочется, мы тем более не знаем. Одно я могу сказать точно, судя по оригинальному посту и ответом под ним: тебе не нужно писать текстовый редактор.

CrX ★★★★★
()
Ответ на: комментарий от CrX

судя

не судите и не судимы будете

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Shushundr

Но точно уверен, что редактор без работы с буфером обмена совсем не такой, как редактор с буфером.

Он такой же, только с буфером обмена.

И так там много разных фишек, на книжку бы хватило без вопросов.

Ну если её по большей части кодом заполнить, как на сайте выше, то может и хватило бы, на тоненькую.

Только это по сути код с чуть-чуть более расширенными комментариями. Ничто не мешает при отсутствии нужной книжки (а как мы поняли, её просто нет, можешь сам написать, если хочется) просто взять исходники любого понравившегося текстового редактора (при этом выбрать самостоятельно — попроще или посложнее) и посмотреть, как там что реализовано. Это не так уж сложно.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Он такой же

Нифига, у него всё АПИ перекорёжили так, что теперь все действия определены через Selection. Раньше такого не было.

Shushundr ★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.