Size: a a a

Emacs — русскоговорящее сообщество

2021 November 17

𝘎(

𝘎𝘕𝘜/𝘚𝘤𝘳𝘪𝘱𝘵𝘰𝘥 ( λλλ )... in Emacs — русскоговорящее сообщество
простенько
источник

A ß in Emacs — русскоговорящее сообщество
для начала можно посмотреть какие фейсы уже есть у фонт-лока
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
Посмотрел. Даже смог сделать defface для новых. Но не понимаю как отображать
источник

A ß in Emacs — русскоговорящее сообщество
отображать что и где?
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
может я не понимаю чего-то. У меня на входе есть текст на языке программирования, я выделяю в нем ключевые слова. Дальше я должен писать в буфер. Как мне сказать буферу что вот это ключевое слово нужно писать таким-то фейсом?
источник

y

yosk in Emacs — русскоговорящее сообщество
Можно юзать фонт-лок. То есть просто писать обычный текст, а потом сделать так:

(font-lock-add-keywords
'my-lang-mode
'(("регулярка_для_кейворда1" . фейс)
  ("регулярка_для_кейворда2" . фейс)))
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
а если у меня очень сложный язык и я хочу чтобы где-то рядом висел language-server, который бы общался с буфером и говорил какими фейсами выводить конструкции? Есть ли способ заставить емакс обращаться к нему при обновлении буфера?
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
или как вообще это делается "у больших"?
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
у больших ast строится, как в tree-sitter
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
и для каждого типа узла определяется свой фейс
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
а как это AST преобразуется и попадает в буфер?
источник

y

yosk in Emacs — русскоговорящее сообщество
Это вроде магия пакета tree-sitter.el, можно в нем подсмотреть
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
преобразуется? Если процесс получения то там все нетривиально, парсинг текста -> таблица правил с лексемами разными..и потом построение дерева, в буфер как угодно можно прокидывать, полагаю в виде json сейчас попадает
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
спасибо.. Но общий принцип в том, что я должен буферу отдать AST а tree-sitter разберет его формат и отобразит?
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
просто если именно аст построить то это очень косвенно к емаксу относится, да и обычно (если язык не изотерический) все уже написано кем-то
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
Что если в буфере происходят изменения?
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
посмотри на ралеизацию tree-sitter-langs, это пакет для tree-sitter с поддержкой разных языков
источник

y

yosk in Emacs — русскоговорящее сообщество
Вроде tree-sitter (как программа, а не пакет для имакса) получает строку, а отдает AST. Но я его совсем немного тыкал, могу ошибаться.
источник

RR

Rigidus Rigidus in Emacs — русскоговорящее сообщество
спс, смотрю
источник

A ß in Emacs — русскоговорящее сообщество
лучше на таких языках не писать
источник