From: |
Vitaliy Aksyonov 1:104/117 |
01 Feb 2023 01:41 +0200 |
To: |
Alexander Kruglikov 2:5053/58 |
|
Subject: |
Код в golded-plus
|
Привет, Alexander!
01 Feb 23 03:29, ты писал(а) мне:
VA>> И если уж писать с нуля - тогда уж или Qt/GTK
AK> Неплохо, кроссплатформено... а как там с cli?
Никак. В cli логичнее переделать существующее рещение. И это не должно быть
очень сложно, на самом деле.
VA>> или вообще на Java/JavaFX.
AK> whooyjava (простите)
Каждый имеет право на свое мнение. :)
Best regards,
Vitaliy Aksyonov.
... Пройдете по этомy мостy до середины и сразy направо...
From: |
Alexander Kruglikov 2:5053/58 |
01 Feb 2023 01:29 +0200 |
To: |
Vitaliy Aksyonov 2:5023/24.4107 |
|
Subject: |
Код в golded-plus
|
Привет, Vitaliy!
26 янв 23 21:45, Vitaliy Aksyonov писал(а) к Nil A:
VA> И если уж писать с нуля - тогда уж или Qt/GTK
Неплохо, кроссплатформено... а как там с cli?
VA> или вообще на Java/JavaFX.
whooyjava (простите)
С наилучшими пожеланиями, Alexander.
From: |
Vitaliy Aksyonov 2:5023/24.4107 |
27 Jan 2023 06:45 +0200 |
To: |
Nil A 2:5015/46 |
|
Subject: |
Код в golded-plus
|
Hello Nil!
27 Jan 23 07:04, you wrote to me:
VA>> Ncurses под DOS или OS/2 будет работать? Я сомневаюсь.
NA> Юникодный голдед-фор-дос - это недостижимо. Проще дропнуть поддержку.
NA> Хотите голдеда - юзайте классику, а не новодел на C++20 ;)
Тогда проще форкнуть и выпилить всё легаси. Вроде такие попытки были?
С нуля писать - слишком много работы. В деде за годы накопилось много вкусного
функционала.
И если уж писать с нуля - тогда уж или Qt/GTK или вообще на Java/JavaFX.
NA> В ДОСе же текстмода натуральная, две таблицы шрифтов можно загрузить.
NA> Кагбэ стопицот разных символов из юникода не покажешь. Хотя, если
NA> помнишь, были утилитки, в них применялся хак, динамически меняли эти
NA> фонты, и получались разные интересные украшения, тени, и курсор мышки
NA> ещё такой графический поверх текста мог ездить.
Было дело. Люди умели использовать ограниченные ресурсы на полную.
NA> Можно извернуться, найти ДОСовый фреймбуфер, под каким-нибудь dos4gw,
NA> и затащить туда FreeType, и прям отрисовывать, как будто текстмода, и
NA> будет тебе все символы юникода. Кстати, однажды же мы проснулись, и в
NA> линуксе при загрузки стал показываться пингвинчик лого, а дальше вроде
NA> бы как обычная текст-модная консоль, но там уже был фреймбуфер, а не
NA> знакогенератор из видеокарты. Только это уже не будет тем самым
NA> ламповым голдедом. Это как голдед переписать на Qt, и там какой-нибудь
NA> terminal шрифт фиксированный пихать.
Вот и я о том же. Если ламповый голдед оставлять, но с юникодом, то просто
переделать внутреннее представление. А что под досом не сможет отобразить все
символы - не проблема. Ведь в основном там будет один набор символов.
Vitaliy
... Лысый может причесываться, не снимая шляпы.
From: |
Nil A 2:5015/46 |
27 Jan 2023 06:04 +0200 |
To: |
Vitaliy Aksyonov 2:5023/24.4107 |
|
Subject: |
Код в golded-plus
|
Hello, Vitaliy!
Thursday January 26 2023 20:34, from Vitaliy Aksyonov -> Nil A:
VA> Ncurses под DOS или OS/2 будет работать? Я сомневаюсь.
Юникодный голдед-фор-дос - это недостижимо. Проще дропнуть поддержку. Хотите
голдеда - юзайте классику, а не новодел на C++20 ;)
В ДОСе же текстмода натуральная, две таблицы шрифтов можно загрузить. Кагбэ
стопицот разных символов из юникода не покажешь. Хотя, если помнишь, были
утилитки, в них применялся хак, динамически меняли эти фонты, и получались
разные интересные украшения, тени, и курсор мышки ещё такой графический поверх
текста мог ездить.
Можно извернуться, найти ДОСовый фреймбуфер, под каким-нибудь dos4gw, и
затащить туда FreeType, и прям отрисовывать, как будто текстмода, и будет тебе
все символы юникода.
Кстати, однажды же мы проснулись, и в линуксе при загрузки стал показываться
пингвинчик лого, а дальше вроде бы как обычная текст-модная консоль, но там уже
был фреймбуфер, а не знакогенератор из видеокарты. Только это уже не будет тем
самым ламповым голдедом. Это как голдед переписать на Qt, и там какой-нибудь
terminal шрифт фиксированный пихать.
Best Regards, Nil
From: |
Vitaliy Aksyonov 2:5023/24.4107 |
27 Jan 2023 05:39 +0200 |
To: |
Vitaliy Aksyonov 2:5023/24.4107 |
|
Subject: |
Shift/Ctrl в Linux + Putty
|
Hello Vitaliy!
26 Jan 23 08:10, I wrote to all:
VA> Сейчас у меня эхотах работает в linux. Запускаю в ru_RU.koi8-r.
VA> Подключаюсь через ssh (putty). Там, соответственно, тоже выставлена
VA> кодировка koi8-r и тим терминала - linux. Все нормально отображается,
VA> могу вводить текст без проблем.
VA> Одна проблема - не работают нормально комбинации с Shift/Ctrl.
VA> Например, не работает выделение строк через Shift+Up/Down. Или
VA> удаление слова через Ctrl+Backspace.
VA> Shift+Up/Down просто перемещает курсор, но без выделения.
VA> Ctrl+Backspace удаляет один символ, а не слово целиком.
VA> Подскажите, пожалуйста, где надо подкрутить, чтобы это работало
VA> нормально?
VA> Скорее всего проблема именно в настройках putty, т. к. когда я захожу
VA> через lxde terminal - выделение с Shift работает.
В общем, дело точно в Putty. Или его настройках. Локализовал место, где
возникает проблема. Для определения нажатого Shift, используется такой код в
файле goldlib/gcui/gkbdbase.cpp (строка 1855):
// Under Linux we could use TIOCLINUX fn. 6 to read shift states on console
// Of course it is very unportable but should produce good results :-)
key = 6;
if(ioctl(fileno(stdin), TIOCLINUX, &key) == -1)
И ioctl возвращает ошибку ENOTTY "inappropriate ioctl for device".
Как поборот - пока не нашел. :(
Vitaliy
... Яблоко от лошади недалеко падает!
From: |
Vitaliy Aksyonov 2:5023/24.4107 |
27 Jan 2023 05:34 +0200 |
To: |
Nil A 2:5015/46 |
|
Subject: |
Код в golded-plus
|
Hello Nil!
27 Jan 23 03:52, you wrote to me:
VA>> Как раз буферы там местами выделяются, учитывая размер окна. В
VA>> этом году залили патч. У тебя исходники свежие? Проверь.
NA> Ааа.. вижу пул-реквест от lamskoy принят в мастер голдеда. Кстати,
NA> Eugene Lamskoy не пробивается по нодлисту-историй, видимо поент.
NA> https://github.com/golded-plus/golded-plus/commit/c8c7f069398a165b281d
NA> d75be1724db381769bc8
NA> Ну окей, char buf[256] --> на макрос с MAXCOL или MAXCOL*2 кагбэ
NA> лучше, чем предлагали до этого char buf[2560], но это всё до ресайза
NA> терминалки.
char buf[2560] - грязненький хак, конечно.
Новое решение лучше, чем ничего. Правда, ведь? Падать не будет. Просто ширина
окна останется такая же.
VA>> Динамически изменять размер окна - было бы круто. Но это вряд ли
VA>> кто-то сейчас будет делать.
NA> Потому что надо сразу на какие-то стринги заменять, а не char buf, и
NA> динамически строчки меняли свой размер, при этом там бы хорошо было бы
NA> хранить utf8. Хотя, виндовому коду нужны wchar_t везде, тот ещё
NA> геморой. Ещё для целей редактора надо понимать сколько там
NA> отображаемых фигней на экране, а не просто юникодных код-поинтов, и
NA> каждый раз запускать функцию пересчёта из utf8 не очень рационально.
NA> Был бы какой-нибудь Qt, тамошний QString внутри UTF-16, и прям
NA> какой-нибудь QTextEdit и всё само случается. Я думал, для голдеда
NA> может ICU библиотеку затащить, и тамошний стринг умеет и хранить, и
NA> количество символов печатуемых выдавать.
Если уж делать юникодный - лучше UTF-8 или уже UTF-32. В UTF-16 не все влазит.
:)
ИМХО, ICU было бы хорошо.
Ща договоримся.... Придется пилить. :)
NA> Но в голдеде исторически слишком много способов вывода, и через ДОС
NA> (наверное можно забить), и свой ANSI даже есть, и через ncurses, и под
NA> вендой консольный вариант (который надо с codepage на UNICODE
NA> переводить). Мне симпатизирует rtin проект, он красиво так всё рисует,
NA> внутри utf8 у него, на libiconv перекодировку просто делает, и
NA> печатает через ncurses, и ресайз срабатывает хорошо. Вроде rtin есть
NA> под венду, и там есть вендовый ncurses. Я про то, что если в голдеде
NA> всё на стринги заменить, и вывод только через ncurses сделать, то
NA> задача уже имеет какой-то законченный скоп.
Ncurses под DOS или OS/2 будет работать? Я сомневаюсь.
Vitaliy
... Объявление в общественном мyжском тyалете: "Мимо писсyаров не СРАТЬ!!!".
From: |
Nil A 2:5015/46 |
27 Jan 2023 02:52 +0200 |
To: |
Vitaliy Aksyonov 2:5023/24.4107 |
|
Subject: |
Код в golded-plus
|
Hello, Vitaliy!
Thursday January 26 2023 16:08, from Vitaliy Aksyonov -> Nil A:
VA> Как раз буферы там местами выделяются, учитывая размер окна. В этом
VA> году залили патч. У тебя исходники свежие? Проверь.
Ааа.. вижу пул-реквест от lamskoy принят в мастер голдеда. Кстати, Eugene
Lamskoy не пробивается по нодлисту-историй, видимо поент.
https://github.com/golded-plus/golded-plus/commit/c8c7f069398a165b281dd75be1724db381769bc8
Ну окей, char buf[256] --> на макрос с MAXCOL или MAXCOL*2 кагбэ лучше, чем
предлагали до этого char buf[2560], но это всё до ресайза терминалки.
VA> Динамически изменять размер окна - было бы круто. Но это вряд ли
VA> кто-то сейчас будет делать.
Потому что надо сразу на какие-то стринги заменять, а не char buf, и
динамически строчки меняли свой размер, при этом там бы хорошо было бы хранить
utf8. Хотя, виндовому коду нужны wchar_t везде, тот ещё геморой. Ещё для целей
редактора надо понимать сколько там отображаемых фигней на экране, а не просто
юникодных код-поинтов, и каждый раз запускать функцию пересчёта из utf8 не очень
рационально.
Был бы какой-нибудь Qt, тамошний QString внутри UTF-16, и прям какой-нибудь
QTextEdit и всё само случается.
Я думал, для голдеда может ICU библиотеку затащить, и тамошний стринг умеет и
хранить, и количество символов печатуемых выдавать.
Но в голдеде исторически слишком много способов вывода, и через ДОС (наверное
можно забить), и свой ANSI даже есть, и через ncurses, и под вендой консольный
вариант (который надо с codepage на UNICODE переводить). Мне симпатизирует rtin
проект, он красиво так всё рисует, внутри utf8 у него, на libiconv перекодировку
просто делает, и печатает через ncurses, и ресайз срабатывает хорошо. Вроде rtin
есть под венду, и там есть вендовый ncurses. Я про то, что если в голдеде всё на
стринги заменить, и вывод только через ncurses сделать, то задача уже имеет
какой-то законченный скоп.
Best Regards, Nil
From: |
Vitaliy Aksyonov 2:5023/24.4107 |
27 Jan 2023 01:08 +0200 |
To: |
Nil A 2:5015/46 |
|
Subject: |
Код в golded-plus
|
Hello Nil!
27 Jan 23 00:58, you wrote to me:
NA> Hello, Vitaliy!
NA> Thursday January 26 2023 13:47, from Vitaliy Aksyonov -> All:
VA>> Пожалуй, выделю немного времени и погоняю его с valgrind, заодно
VA>> починю такие места.
NA> Та char buf[80] сплошные, а окно терминала может быть ширши, писал
NA> уже, и конечно же не проверяется выход за границы. Есть патчик, я свой
NA> такой делал, где тупо на большое число изменили все эти буфера, но это
NA> dirty hack, сам понимаешь, а по уму это долго чинить. Ещё надо бы на
NA> SIGWINCH играл реагировать, чтобы динамически менять эти буфера и
NA> перерисовывать окошечко. Кстати, какой-нибудь tin/rtin из-коробки
NA> через ncurses будет всё это правильно отрисовывать, ещё и в utf8
NA> внутри себя всё перегонять.
Как раз буферы там местами выделяются, учитывая размер окна. В этом году залили
патч. У тебя исходники свежие? Проверь.
Динамически изменять размер окна - было бы круто. Но это вряд ли кто-то сейчас
будет делать.
Vitaliy
... Ищу психиатра для работы с C++.
From: |
Nil A 2:5015/46 |
26 Jan 2023 23:58 +0200 |
To: |
Vitaliy Aksyonov 2:5023/24.4107 |
|
Subject: |
Код в golded-plus
|
Hello, Vitaliy!
Thursday January 26 2023 13:47, from Vitaliy Aksyonov -> All:
VA> Пожалуй, выделю немного времени и погоняю его с valgrind, заодно
VA> починю такие места.
Та char buf[80] сплошные, а окно терминала может быть ширши, писал уже, и
конечно же не проверяется выход за границы.
Есть патчик, я свой такой делал, где тупо на большое число изменили все эти
буфера, но это dirty hack, сам понимаешь, а по уму это долго чинить.
Ещё надо бы на SIGWINCH играл реагировать, чтобы динамически менять эти буфера
и перерисовывать окошечко.
Кстати, какой-нибудь tin/rtin из-коробки через ncurses будет всё это правильно
отрисовывать, ещё и в utf8 внутри себя всё перегонять.
Best Regards, Nil
From: |
Vitaliy Aksyonov 2:5023/24.4107 |
26 Jan 2023 22:47 +0200 |
To: |
All |
|
Subject: |
Код в golded-plus
|
Hello everybody!
* Originally in pvt.luna.local
* Crossposted in ru.golded
Ради интереса собрал дебажный билд голдеда. И когда запустил, он у меня тут же
упал в некоторых местах с порчей памяти. Залез в исходники и... Не буду
описывать гамму эмоций. Конечно же, это легаси, но даже в то время с памятью
работали более аккуратно.
Вот пример:
CREATEBUFFER(char, buf, MAXCOL);
const size_t buflen=MAXCOL;
buf[buflen]='\0';
Внимательные читатели берут печеньку. Для невнимательных - мы пишем вне буфера
и весело портим память.
Пожалуй, выделю немного времени и погоняю его с valgrind, заодно починю такие
места.
Vitaliy
... Ты что, думаешь ты дурак, а я нет?