LINUX.ORG.RU
Ответ на: комментарий от ugoday

Да, и я понимаю что это не серьезная претензия, но - вот открываю я учебник, а там все обозначения всех клавиш, совершенно фантастические, и постоянно поясняется «на некоторых терминалах это», «на всех терминалах есть» и в таком духе. Ну серьезно, какие могут быть разные терминалы, везде один стандарт уже 30 лет. Почему Backspace надо называть DEL в 2026 году, не понятно. Неужели нельзя было осовременить этот учебник, все работают на обычных современных компах, других мне из музея не выдали.

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

@dunmaksim, почему бы Вам не выложить прямую ссылку на свою книгу про Emacs, дабы всякие разные welle не ломали себе голову над вопросом актуальности руководства за 1999 год?

Пользуясь случаем, уведомляю Вас, что ссылка Emacs, расположенная на данной странице не работает.

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

Это называется иначе - избирательное зрение.

Я человек простой и рассуждаю просто и безыскусно. Если у меня всё работает, значит я всё делаю правильно. Если у вас ничего не работает, значит вы всё делаете неправильно. Так что вот вам моя рекомендация: правильно делайте, а неправильно не делайте.

некоторые хоткеи пересекаются с системной переключалкой языка

Я её на CapsLock повесил. Всё равно бесполезная клавиша простаивает.

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

А почему во французском пишется «беакоуп», а произносится «боку»? Так исторически сложилось. Переписать какой-то справочный материал можно. Но переписать весь архив всех статей про emacs за последние 40 лет — неподъёмная задача. А допустить, что в половине статей что-то называется так, в другой — эдак, а здесь — вообще авторская терминология, будет ещё хуже. Так и живём.

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

Ну тогда возникает прямой вопрос.

(setq ispell-program-name "hunspell")

(setq ispell-dictionary "russian")

(with-eval-after-load "ispell"
  (setq ispell-really-hunspell t)
  (setq ispell-encoding-keyword "utf-8")
  (setq flyspell-delay 1))

Что именно сделано неправильно.

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

Can not reproduce. Запущено на emacs 31.0.50 через emacs -q. Чтобы можно было проверять сразу на русском и английском, надо так:

(with-eval-after-load "ispell"
    ;; Configure `LANG`, otherwise ispell.el cannot find a 'default
    ;; dictionary' even though multiple dictionaries will be configured
    ;; in next line.
    (setenv "LANG" "en_US.UTF-8")
    (setq ispell-program-name "hunspell")
    (setq ispell-dictionary "ru_RU")
    ;; ispell-set-spellchecker-params has to be called
    ;; before ispell-hunspell-add-multi-dic will work
    (ispell-set-spellchecker-params)
    (ispell-hunspell-add-multi-dic "en_US,ru_RU")
    (setq ispell-personal-dictionary "~/.hunspell_personal"))

P.S. А hunspell из консоли точно работает?

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

На английском мне не особо надо сейчас.

Hunspell точно работает, если бы он не работал, ничего бы не подчеркивалось. И да, я проверял. Все работает. Все проверяется корректно везде, кроме Emacs. Он и в Emacs работает, я же говорю, проверяет. Только некоторые слова, иногда, ложно подчеркиваются. В любых других приложениях тут же, ложных срабатываний на этом же файле нет.

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

Там что-то внутри flyspell-buffer криво парсит текст.

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

Так то, я все-таки преисполнился, и решил использовать именно Emacs для LaTeX. Для плюсов, я не уверен что это удобнее Kate, но для LaTeX точно лучше всего остального.

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

Поскольку проблема не воспроизводится, то помочь не могу, уж извините. Хорошей отправной точкой в вашем случае будет запуск с --no-init-file, попытаться изолировать ситуацию, проверить на каких минорных режимах система так себя ведёт и т.п.

P.S. Ну и разные версии emacs’а проверить. Вдруг что.

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

в общем: "почему я не могу выделять в tex-исходнике в Emacs разными цветами ? "

потому что Emacs – текстовый plain text редактор, а не rich text процессор.

есть и такое, где исходники в Rich Text нормальных документах хранят, а не в простых Plain Text.

например: BlackBox Component Pascal где Oberon-2 / Component Pascal на BCF фреймворке в *.odc файлах (есть импорт/экспорт в ODF LibreOffice).

так там именно так и есть:

  1. Rich Text формат, где можно писать простой нормальный текст, выделять цветами, шрифтами, картинки вставлять, складки, гиперссылки и т.п. – вплоть до любых контролов или виджетов/гаджетов, на самом Oberon-2 в духе MVC компонентов написанных (например, хранимые объекты БД).

  2. например, исходники хранятся в отдельных файлах либо в текстовых фреймах непосредственно в такой же гипертекстовой Rich Text документации.

их можно раскрашивать руками, и кто-то написал полуавтоматизированную раскраску.

но это именно ручная – как сделаешь, так и будет. компилятору не требуется, раскрашивать можешь для себя.

  1. собственно, запускать всё это – примеры из документации : скомпилировать, загрузить, запустить, выгрузить – можно одной кнопкой, кликая по «коммандерам» (инвертированным иконкам вида (!) ) прямо в документации.

то есть: то что ты хочешь, это приблизительно как «писать *.tex исходники в Blackbox в *.odc в нормальном Richt Text формате, выделять цвета руками» + копипастить в отдельный обычный plain text *.tex файл оттуда.

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

Что я предлагаю необычного, объясните мне пожалуйста. Выделение цветами в рукописях, это крайне распространенная всеобщая практика, даже если это делается не на компьютере. А на компьютере почему я не могу выделять?

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

Мне не нужна «синтаксическая разметка теха» в данном вопросе. Она и так работает в любом редакторе. Мне нужна синтаксическая разметка русского языка, исходя из состояния информации в моем головном мозгу в данный момент. Как ты это собираешься решать «компьютерными средствами»? Назови хотя бы одно решение, которое автоматически подсвечивает русский язык исходя из субъективного отношения человека, пишущего русский текст к этому конкретному предложению в этот конкретный момент времени. Такое есть? Да, есть - называется «руки из плеч».

В итоге, я остановился на полузаброшенном пакете для Emacs - ov-highlight, который я немного подпилил. Все выделения он сохраняет в виде base64 строки в конце документа, потом восстанавливает при открытии. Я сделал, чтобы эта строка оформлялась как комментарий, поэтому на интерпретатор оно вообще не влияет.

Работает все отлично, единственная проблема, что нельзя редактировать файл за пределами Emacs, так как это сломает привязку выделения к местам, которые выделены.

занятное решение.

в общем: "почему я не могу выделять в tex-исходнике в Emacs разными цветами ? "

потому что Emacs – текстовый plain text редактор, а не rich text процессор.

Например: Rich Text это RTF RichEdit компонент который под виндой есть в Wordpad, и т.п.

Например: есть какое-то ASM IDE под Win32/Win64 в котором как раз раскраска делается через этот компонент.

если посмотришь по байтам на RTF формат – он похожий на PostScript, только там конпелируемые подфункции бинарные блобы в которые это всё компилируется. кажется, есть его новый вариант где UTF поддерживается и русский можно писать уникодом, а не отдельными кодами.

но в целом, формат файла почти бинарно-блобовый: там есть специальные объекты, представленные кодами и см. спецификацию – как задавать группы этих объектов и сами блобы.

потому и такая спецификация довольно сложная громоздкая. в отличие от например, исходного PostScript который в целом – исходник на функциональном форте. хотя там тоже есть блобы например EPS или картинки или шрифты.

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

далее, если ты посмотришь на офисные пакеты, созданные в стиле «rich text format».

то например, есть BlackBox Component Pascal который Оберон-2 в виде виндового приложения с форматом файлов *.odc.

Это фактически тоже бинарный формат с блобами, который через аналогичное IStorage интерфейсу в винде для Compound файлов, документов (например: .doc;.xls;*.mdb и т.п.) – реализует аналог файловой системы в одном файле.

Только у Оберонов это по сути ещё из досоподобного Project Oberon с *.Text форматом с гаджетами и виджетами тянется.

так вот, что такое BBCP или Оберон-2 по сути? это среда разработки компонентных документов *.odc и фреймворк BCF (Blackbox Component Framework) + язык программирования Оберон + компилятор + интерпретатор + Rich Text редактор + интеграция с Com / DirectToCOM + интеграция с внешними C dll == модульная компонентная среда разработки и исполнения.

то есть: вот там если ты посмотришь на встроенный хелп – это гипертекстовые Rich Text документы, где есть: цвета; шрифты; картинки; ActiveX/Com/BCF Oberon-2 объекты, встраиваемые в документы (например, OLE Word/Excel/…); свой набор контролов в виде View на MVC подобном паттерне на этом BCF + гаджеты и виджеты ещё из Project Oberon типа коммандеров + любой Win32 GUI со стандартными контролами, формами, и т.п.

скачай, потыкай. например, школьная сборка BlackBox.Shkola.7z отсюда https://informatika-21.ru/software.htm с русским языком (русскоязычный оберон-2, компонентный паскаль). или с батарейками, BlackBox-1.8.2504-core.7z / blackbox-1.7.3-a1.1133.zip отсюда http://www.zinnamturm.eu/ или https://www.blackboxframework.org/

под онтопик есть порт под SDL, ну или запускать виндовое под вайном .

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

как работает эта среда? модуль Kernel который запускается через запускалку BlackBox.exe влинкован в сам .exe и дальше запускает нужные подсистемы в отдельных каталогах вида $SubSys/{Code,Docu,Mod,Rsc,Sym}

здесь в $SubSys/Code/*.ocf лежит кодовый файл – сам бинарник собранного модуля на Oberon-2, а в $SubSys/Docu/*.odc – Rich Text + гипертекстовая документация + запускалка , в в $SubSys/Mod/*.odcRich Text + гипертекстовые исходники на Oberon-2/Component Pascal, в $SubSys/Code/*.osf – символьные файлы, в Rsc – ресурсы (формы, меню и т.п.)

в самой среде, например, в меню можно посмотреть список запущенных процессов загруженных модулей: меню Инфо/Загруженные модули в BlackBox.Shkola.7z или в BlackBox-1.8.2504-core.7z в меню Info/Loaded modules.

теперь открой какой-то пример, например : HelloWorld через Help/Examples => список примеров, оттуда например ObxHello0 docu/sources.

что видим? нормальную Rich Text документацию, где во фрейме написан хелловорд на обероне:

A first example of a Component Pascal module is given below, as an embedded text object:

MODULE ObxHello0;

	IMPORT StdLog;

	PROCEDURE Do*;
	BEGIN
		StdLog.String("Hello World"); StdLog.Ln	(* write string and 0DX into log *)
	END Do;

END ObxHello0.

To compile this module, its source code must first be focused (i.e., set the caret or selection in it). This is done by clicking somewhere in the above source code. Then execute the Compile command in the Dev menu. After the compilation, a message like

compiling «ObxHello0» 32 0

appears in the Log window. It means that module ObxHello0 has been compiled successfully, that a code file has been written to disk containing the compiled code, that this module has a code size of 32 bytes and global variables of 0 bytes size, and that information about the module’s interface has been written to disk in a symbol file. New symbol files are created whenever a module is compiled for the first time, or when its interface has changed.

The interface of the above module consists of one exported procedure: ObxHello0.Do. In order to call this procedure, a commander can be used (the little round button below):

^Q (!) ObxHello0.Do

здесь мы видим «коммандер» с восклицательным знаком, на него можно нажимать

Click on this button to cause the following actions to occur: the code for ObxHello0 is loaded into memory, and then its procedure Do is executed. You see the result in the log window:

Hello World

нажмём на коммандер. что происходит? в Log появляется сообщение.

что происходит с загруженными модулями? смотрим в меню Info/Loaded modules заново или нажимаем гиперссылку Update справа вверху в этом окне.

module name	bytes used	clients	compiled	loaded		Update

ObxHello0	112	0	18.04.2025  7:58:53	13.05.2026  16:05:26

здесь видим : модуль откомпилировался, загрузился, запустился коммандером. занял 112 байт код+данные = весь модуль хелловорда, ну или отдельно можно перекомпилировать через Dev/Compile стоя внурти фрейма с исходником:

compiling "ObxHello0"   32   64

то есть: 32 байта кода, 64 байта данных (сама строка хелло ворд в уникоде, наверное).

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

Try out the following examples:

^Q StdLog.Clear ^Q Dialog.Beep ^Q DevDebug.ShowLoadedModules

The list of loaded modules can be inspected by executing the Loaded Modules command in the Info menu, or by simply clicking in the appropriate commander above. It will generate a text similar to the following:

module name	bytes used	clients	compiled	loaded	Update

ObxHello0	47	0	06.09.2016  15:11:34	06.09.2016  15:13:15

DevCompiler	7007	0	05.09.2016  11:52:13	06.09.2016  15:11:04
DevCPV486	35800	1	05.09.2016  11:52:13	06.09.2016  15:11:04

мой пример:

module name	bytes used	clients	compiled	loaded		Update


DevCompiler	12574	0	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPV486	36157	1	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPC486	47902	1	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPL486	17805	2	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPH	5133	1	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPP	32364	1	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPS	8177	2	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPB	46742	2	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPDump	11393	1	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPE	22053	5	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPT	243380	10	18.04.2025  7:58:49	13.05.2026  16:08:13
DevCPM	15503	10	18.04.2025  7:58:49	13.05.2026  16:08:13
DevSelectors	7055	1	18.04.2025  7:58:49	13.05.2026  16:08:13
DevMarkers	6963	2	18.04.2025  7:58:48	13.05.2026  16:08:13
DevProfiler	12683	0	18.04.2025  7:58:50	13.05.2026  16:00:07
DevCmds	5551	0	18.04.2025  7:58:49	13.05.2026  16:00:07
DevDebug	29757	0	18.04.2025  7:58:48	13.05.2026  16:00:00
DevCommanders	6442	2	18.04.2025  7:58:48	13.05.2026  16:00:00
DevReferences	3569	1	18.04.2025  7:58:48	13.05.2026  16:00:00

ObxHello0	112	0	18.04.2025  7:58:53	13.05.2026  16:05:26

то есть:

сам компилятор оберона занимает примерно 571209 байт + хелловорд запущенный 112 байт

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

далее в этом списке запущенных процессов загруженных модулей :

  • Host{TextConv,Menus,Cmds,Clipboard,Dialog,CFrames,Printers,Windows,Mechanisms,Ports,Fonts,Registry,Files} – это собственно подсистемы Win32;

  • Text{Cmds,Mappers,Controllers,Views,Setters,Rulers,Models} – это сам Rich Text Editor (собственно, BCF aka BlackBox Component Framework) +

  • Forms{Cmds,Controllers,Views,Models} – тоже BCF

  • в конце списка модулей Dialog, Log, Files, Kernel 33054 – Kernel это модуль System вкомпилированный в BlackBox.exe

  • далее Std{MenuTool,Log,Links,Folds,Cmds,Apis,Interpreter,Dialog,CFrames,Loader} – собственно GUI запущенных модулей/компонент/документов

    • частично Rich Text Editor: StdLinks, StdFolds StdDialog, StdCFrames
    • StdInterpreter 3871 байт кода, 1 данных – запускалка команд модуля через коммандер (например, того хелловорда кнопкой)
    • StdLoader 8066 байт кода – сам загрузчик Oberon-2 модулей.

A module can be unloaded if its client count is zero, i.e., if it is not imported by any other module. In order to unload ObxHello0, focus its source text again and then execute Unload in the Dev menu. The following message will appear in the log window:

ObxHello0 unloaded

When you generate the list of loaded modules again, it will look as follows:

module name	bytes used	clients	     compiled	     loaded	Update

DevCompiler	7007	0	05.09.2016  11:52:13	06.09.2016  15:11:04
DevCPV486	35800	1	05.09.2016  11:52:13	06.09.2016  15:11:04

то есть, всё это можно вживую загружать/выгружать или перекомпилировать/перезапускать/тестировать или просто, тупо: открываешь документ, нет кодового или символьного файла, нажимаешь коммандер => модуль компилируется, загружается, команда запускается (всё это реализовано через StdInterpreter).

далее см. например примеры :

  • ObxAddress0 – как делаются формы (генерируются автоматически по исходнику)

  • ObxFact и в какой-то степени, ObxPi, ObxRatCalc – пример того, как содержимое документа генерировать автоматически, расчётной программой

  • Simple Views

ObxPatterns  docu	ObxPatterns  sources	view with rectangular pattern
ObxCalc  docu	ObxCalc  sources	calculator
ObxOmosi  docu	ObxOmosi  sources	editor for 3-D structures
ObxCubes  docu	ObxCubes  sources	actions as animation engines (rotating cube)
ObxTickers  docu	ObxTickers  sources	actions as animation engines (stock ticker)
ObxScroll  docu	ObxScroll  sources	demonstration of scrolling mechanism
  • Control Views (ObxButton и т.п.)

примеры своих контролов в документах (вьюшки, по сути View в MVC в BCF)

в конце есть примеры COM-автоматизации (см. ObxExcel, ObxWordEdit и ещё в самом help примеры про DirectToCOM , можно как управлять из BBCP через COM, так и писать COM сервер автоматизации).

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

на http://www.zinnamturm.eu/ или https://www.blackboxframework.org/

есть «батарейки» : среди них например:

  • импорт/экспорт из *.odc в LibreOffice *.odf файл *.xml.zip

  • синтаксическая раскраска (отдельным ручным запуском :))

  • парсер CoCo/R и прочие батарейки (HTTP,XML,SDL,OpenGL и т.п.)

  • Samurai игрушка на SDL на обероне

SDL сборка под онтопик на ELF была где-то на форуме оберонщиков https://forum.oberoncore.ru и ещё на гитхабе. там где-то на сайте сразу ссылка на *.deb и линуксовые бинарники с ночной сборкой была.

TL;dr: в целом, можно было бы писать *.tex исходники в Rich Text каком-то редакторе, например, том же BlackBox Component Pascal встроенном редакторе (на BCF фреймворке на самом обероне написанном).

и импортировать/экспортировать в plain tex / XeLaTeX / LuaTeX – написав кодеки по аналогии с импортом/экспортом в ODF формат Libre Office.

то есть: чтобы они игнорировали всю раскраску и прочие красотули, а тупо экспортировали как plain text, но уникод для LuaTex, например.

и вызывать одной кнопкой, коммандером из документа – или из меню.

ещё, было бы интересно например сам TeX портировать под Оберон-2.

  • под обероны пассивные, как BlackBox Component Pascal BBCP Component Framework BCF
  • или под обероны активные, как например Active Oberon: A2 (AOS, BlueBottle).

например: вот есть tex-gpc, tex-fpc – минималистичные сборки tex + metafont + шрифты + примеры

которые собираются обычным паскалем.

то есть:

  • tangle.web, weave.web – собираются в tangle.pas, weave.pas и в LitProg weaved нормальную грамотную документацию

  • tangle собирает tex.pas , а weave tex.tex -> tex.pdf – это собственно сама «TeX: the program and the book»

  • аналогично, собирается metafont

  • ещё какая-то магия, и конфиги со шрифтами.

сам TeX изначальный написан на паскале, причём GPC ISO паскале, даже не Turbo/FPC (хотя патч в change-файлах там небольшой)

а мог бы быть и например, на обероне-2 – пассивном BBCP или активном A2/AOS.

тут впрочем, придётся немного переписывать (goto выкинули) сами weave и tangle – нормально их портировать под обероны.

например, взять тот же CoCo/R и запилить не парсер вручную на конечных автоматах с рекурсивным спуском – а запилить нормальную грамматику.

и портировать не только на оберон, но и например на вообще всё: аду, модулу,… да тот же алгол-68 например ( gnat/gm2/ga68 в gcc-16 «из коробки» в Debian testing gcc-snapshot)

и потенциально – портировать дальше и сам TeX под это вот всё.

потенциально запускаемый как модуль, в какой-нибудь операционной среде типа BBCP оберона пассивного или A2 оберона активного.

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

забавно: там в самом A2 есть какой-то лисп на обероне написанный. ещё с времен однозадачного Project Oberon, кажется.

какой-то простенький интерпретатор схемы, и графический редактор Leonardo, с форматом Layla с формами гаджетов/виджетов в виде S-выражений на лиспе.

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

сейчас впрочем, чем ту недоделанную схему ковырять лучше взять например Ribbit схему с очень компактной VM в 460 байт; или например, ISLISP EasyISLISP какой-то через C FFI.

или ещё какой Guile через FFI задействовать, например.

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

например:

батарейки и подсистемы на https://www.zinnamturm.eu/subsystems.htm :

конкретные расширения, интересные в контексте: обрабатывать *.odc программным способом:

конвертировать между разными кодировками, в/из odc/ODF/HTML, grep/sed по *.odc, синтаксическая раскраска исходников на оберон-2 компонентном паскале одной командой
(автоматизация вручную,да, а не полностью автоматически в фоне); оберон-2 на русском языке (можно посмотреть как сделано в школьной сборке)

и т.п. вплоть до "написания книг на *.odc в самом векторном и гипертекстовом встроенном офисном редакторе в BlackBox Component Pascal " – в том числе, с импортом/экспортом в и из OpenOffice, HTML, XML.

думаю, в plain utf-8 *.tex с XeLaTeX или LuaTeX – можно допилить по аналогии с Odf или HTML импортом/экспортом.

в том числе и в емакс какой-нибудь с отдельными пометками оверлеями, типа того же ov-highlight или как там.

кстати, вот в векторном гипертекстовом Xanadu изначальном – гипертексты были слоями. то есть, сам текст исходный хранился иммутабельно как есть plain text. а к нему оверлей который накладывался – так были реализованы например ссылки или цитаты (трансклюзии).

то есть, можно сказать что Xanadu это такая СЭД где изначальный текстовый слой – сам исходник без раскрасок. а раскраски, гиперссылки, сноски, записки на полях и манжетах и диагармы копулирующие в конпелируемые подфункции картинки – вот это вот всё – хранилось отдельными слоями, оверлеями.

причем ссылки были похоже как физические (конкретное байт, смещение или строка:колонка) так и логические (purple numbers, tumblers) – которые не съезжали при изменении структуры глав.

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

пример:

  • StdIntepreter по нажатию на коммандер (!) в ^Q ObxHello0.Do ~ запускает парсер интерпретатор, который загружает модуль ObxHello и запускает в нём команду Do

  • ObxFact, ObxPi , ObxRatPi как ещё более интересные примеры кибертекста когда запускаемая команда парсит аргумент и использует его для генерации кибертекста программным образом вставляемого через API наподобие BCF.

  • Bbt

  • Babel / CpcIndex

  • CpcRegul / CpcSearch

grep по *.odc

  • CpcAllCaps

  • CpcAsciiCoder

  • CpcBeautifier

  • Coco , Prettify , Bnf7

  • Odf

импорт экспорт в Open Office

  • Trf

  • TboxText

  • Web / Dbu

выложить *.odc в веб сервер / сам веб сервер

то есть: это такой принципиально конпелируемый гипертекст гаджетов, виджетов и вьюшек с контролами с персистентными объектами – в отличие от принципиально интерпретируемого HTML+CSS+JS+<tl;dr:ts,etc>

  • TboxBook

Writing books with BlackBox.

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

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

наиболее близок, ЕМНИП, к этому: oxford oberon-2 compiler, там был какой-то емакс на обероне написан. а сам оберон на окамле, кажется.

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

тыц (oberoncore.ru)

tl;dr^: оберонщики в BBCP красят сорцы вручную в Rich Text формате семантически, а не синтаксической раскраской.

синтаксическая полуавтоматическая запускаемая вручную там тоже где-то есть (как бы не CpcBeautifier или Bbt и что-то оттуда), они тоже на форуме обсуждали.

типа, не вручную, зато у нас тоже удобства есть.

а вообще как-то менее герметично от исходников в ворде к обычным plain text utf-8 – всё обстоит в Active Oberon A2. там есть какой-то простенький текстовый редактор PET с раскраской и закладками по отдельным подфункциям процедуркам.

но возможно, надо было бы этот BCF фреймворк из BBCP и оберона пассивного (хотя, см. корутины в расширениях) под обероны активные портировать, дабы не изобретать велосипед.

а вообще, там в A2 и Project Oberon изначальный имеется. и вот там *.Text и *.Tool это как раз winrarный бинарный rich text формат , с гаджетами и виджетами вроде командеров и прочих вьюшек с контролами на простом API наколбашен.

вот faces на elisp и всякие раскраски в Elisp API немного в чём-то даже сложней сделаны.

а в оберонах – тупо бинарный rich text формат с блобами с конпелируемыми подфункциями. и исходники в ворде, ога.

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

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

вот, конкретная ссылка

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

  1. Ручная раскраска далеко не так полезна, как её преподносят.
  1. Среда, где применяется ручная раскраска, не предназначена для программирования командами.

Я применял автораскраску синтаксиса несколько лет, просто не зная о другой возможности. И мне казалось, что раскрашивать синтаксис - это обязательная черта среды. Когда я познакомился с ББ, по привычке долго раскрашивал синтаксис (с помощью компонента автораскрашивания Master, авт. С. Губанов). А когда началось плотное программирование на ББ, то случилось страшное: раскраска синтаксиса стала мешать и отвлекать внимание! Я пока не могу сформулировать, почему. Хотя для начинающих осваивать синтаксис языка - это удобно, признаю! Чем сложнее язык, тем удобнее. Думаю, для оберона это несущественно.

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

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

кстати, вот в векторном гипертекстовом Xanadu изначальном – гипертексты были слоями. то есть, сам текст исходный хранился иммутабельно как есть plain text. а к нему оверлей который накладывался – так были реализованы например ссылки или цитаты (трансклюзии).

то есть, можно сказать что Xanadu это такая СЭД где изначальный текстовый слой – сам исходник без раскрасок. а раскраски, гиперссылки, сноски, записки на полях и манжетах и диагармы копулирующие в конпелируемые подфункции картинки – вот это вот всё – хранилось отдельными слоями, оверлеями.

блин, а оно как бы не слоями с Z-координатой накладываться должно :))

то есть: вот у тебя оригинал изначальный, первый текстовый слой. второй слой – LSP или tree sitter или ещё как emacs faces с синтаксической раскраской слой правок. третий слой – семантическая, а не синтаксическая раскраска, если есть.

то есть: если есть второй слой, показывается он и «накладывается» на первый слой, который всей стопкой накладывается на оригинал изначальный, который вообще read only и иммутабельный.

далее такой фотошоп для текстов слоями.

то есть, если ты там ещё каких-то сносок или рецензий с комментами или записок на манжетах оно там четвертым или ещё каким пятым слоем накладываться должно.

и композитор на расте каким-то образом оно должно все эти правки слоями совмещать и применять, ога.

заметно сложнее простого plain text + faces тот же получается, да даже того же carriers and riders или MVC в BCF получается :))

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

а! вспомнил! Hyperbole было расширение под Emacs которое по faces раскраску само определяло и кнопки вставляло – именно отдельным слоем накладывая.

типа читаешь ты такой mbox почту, и оно кнопки с коммандерами само накладывает, если по тексту определяет.

ну почти как StdInterpreter в Blackbox-е.

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

Blackbox Component Pascal .deb SDL

ещё есть например, армянский Vishap Oberon: vishapoberon/compiler под который есть тот же CoCo/R портированный: norayr/cocor_voc

есть пакетный менеджер vishapoberon/vipak

менее герметичные исходники, не в ворде :)

а в обычных plain text utf-8

далее через oo2c и/или какие-то куски из BBCP – транспилируется в си, линкуется с нормальным gcc конпелятором.

пример графического хелловорда на GTK + Glade GUI: src/test/gtk/HelloWorld.Mod

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

синтаксическая раскраска полуавтоматическая

ещё вот такое в армянском Vishap обероне из oo2c, например:

src/tools/beautifier/vbeautify.Mod:698

тут тоже раскраска делается через этот pretty printer and beautifier

oo2c какой-то был как раз под BBCP, тут см. пример того как они через Scanner/Rider&Carrier/Writer этот Rich Text парсят.

например, складки вставляют в Folds, шрифты, раскраска синтаксическая и т.п.

то есть, с ТеХ-ом по аналогии можно сделать.

плюс : руками раскрашиваешь свою авторскую Семантическую раскраску

и по аналогии, затем в plain text из Rich Text одной процедурой, командой – запускаемой из меню или коммандером в plain text utf-8 экспортировать.

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

Upd: по ходу, закоментированное, например шрифты, складки folds – это как раз то что для Rich Text *.odc в BBCP в BCF работало; а для oo2c с plain text – выкинули.

то есть, API сам там довольно простой: все эти Text.Scanners, Text.ChangeLooks, GetFontsFromText, FoldElems.ExpandAll, FoldElems.CollapseAll + StdFolds, FoldElems и т.п.

как бы даже compiler-master\src\test\vt100\vt100.Mod несколько громоздче :))

кстати, а если там сделать векторный гипертекстовый – например, Kitty graphics protocol для растровых картинок или ctx для текстовых canvas.

то можно по аналогии, с простым но более современным терминалом и картинки рисовать, не сильно сложнее всех энтихъ *.Text *.Tool гаджетов и виджетов

то есть, для TeX синтаксическую раскраску полуавтоматическую аналогичным этому украшателю оберонистому обероновых исходников можноЗделать (с) (тм)

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

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

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

Reverse-im рабочий вариант для раскладки, но есть моменты где он все-же вспотыкается.
Например вызов Агенды (doom) spc-n-a-a, на второй a выдаст ошибку. Ну и точки с запятыми вроде не совсем корректно работают.

Настроил включение нужной раскладки через dual-function-keys (можно и через tapper, но он в wayland отказался работать) по левым и правым ctrl и на автомате перед командой нажимаю.

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

У меня reverse-im вообще не заработал :) там какую-то функцию нужно было прописать в конфиг, которой у меня почему-то не нашлось (через M-x ничего похожего не увидел). Вернее я там что-то натыкал и оно вроде заработало, но, до первого выхода из имакса. Пакет я ставил из репы guix - может из-за этого, в общем не стал разбираться. Да и имаксом я не пользуюсь, так, посмотреть ставил, ну и нагуглил эти штуки. Другой метод заработал, но вроде шероховатости какие-то с evil-mode были, не помню уже.

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

Оптимальнее читать info-pages внутри самого редактора. Они-то точно актуальны.

Можно просто открыть емакс и в сразу в нём же открыть встроенный Tutorial.

Artsi0m
()

Русскоязычное издание 1999 года в 2026 году

Нет, не актуально. Многое поменялось, особенно что касается emacs lisp и как всё организованно внутри.

Смысла в этой книге сейчас нет никакого, т.к. это просто перевод мануала. Возьми последний мануал и скармливай по главам ИИшке, если с английским туго.

no-such-file ★★★★★
()

Если скрипты поправить или через ssh что-то сделать, то я nvim использую. А если код писать, то eclipse в последнее время мне нравится из того что осталось и не огородилось от РФ.

peregrine ★★★★★
()
Ответ на: комментарий от James_Holden
Control-Command-D: отображение или скрытие определения выделенного слова.

Shift-Command-двоеточие (:): отображение окна «Правописание и грамматика».

Command-точка с запятой (;): поиск неправильно написанных слов в документе.

Option-Delete: удаление слова слева от точки вставки.

И в чём тут аналогия с клавишей Windows?

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

Meta — это вообще непонятный зверь. Вообще они все (Alt, Ctrl, Shift, Super/Windows) именуются также Meta1, Meta2, Meta3, Meta4, и так далее. Какую конкретную мету имеешь в виду ты, и что в твоём мире ей обозвали? Это сильно зависит от контекста.

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

Я его бросил пытаться тыкать лет так 20 назад, я не помню, что там под метой понимается :)

Вроде бы Alt? Помню, что сочетания клавиш документированы как C-x (Ctrl+x), S-x (Shift+x) и M-x (Meta+x). Помня, что супер не используется (это было бы странно), методом исключения вспоминаю, что таки да, альт.

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

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

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

У лисперов же был space cadet, там нижний ряд такой: Hyper, Super, Meta, Control. Так что аналог Alt это скорее Control. И только так можно объяснить любовь к этому модификатору. А современные емаксеры просто позеры и каргокультисты со сломанными пальцами.

bread
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария