LINUX.ORG.RU

Если вы пробовали вкатиться в GNU Emacs, расскажите, что пошло не так

 


3

6

Всем привет!

Часто вижу на форумах мнение, что Emacs это что-то старое, кривое и ненужное. Пожалуйста, напишите в комментариях, как вы пытались вкатиться в Emacs, и что пошло не так. Это поможет мне улучшить свою книгу про Emacs и даст идеи для постов в Telegram-канал.

Писал диплом в Emacs + LaTeX + knitr. Потом когда через несколько лет работы инженером-конструктором снова взялся за код и понял, что на 100% забыл как пользоваться Emacs. Теперь сижу на VS Code.

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

Винкей там обозначается Mod4, это просто картинка, относящаяся к левому альту. У меня в конфиге так:

$ grep 'Mod[14]' ./.config/i3/config
set $alt                 Mod1
set $win                 Mod4

Кстати, из соображений читаемости, чтобы не перепутать Mod1 и Mod4

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

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

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

Хорош, пара лет нужна к тому чтобы привести имакс к состоянию vscode из коробки, нормальный внешний вид, подсветки, навигация по коду, навигация по каталогу, автоподхват git и так далее.

Это минут пять в соответствующем файле (init.el, емнип), в котором перечисляешь все необходимые плагины. И это я знаю не будучи активным пользователем emacs.

Как узнать что марксист-шындовоз врет? Он открыл рот.

Что там с цитатами ТС, мм?

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

При чем тут создатель vi, если клавиатуры были такими в то время? Альт на ней видишь? И я не вижу. А его и нет.

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

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

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

ключевое слово «в то время». с «того времени», судя по картинке, прошло лет 50. никто ничего не заметил?

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

Я больше скажу - сейчас не только лигатуры, сейчас дажи emoji есть в редакторах и ЯП их, внезапно, поддерживают, например, для именования переменных :)

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

На маковской клаве мне альт найди, ага :)

А это, внезапно, сертифицированный Unix.

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

Nerd fonts поизучаю, спасибо.

Что я имел ввиду: Попробуйте в Google Fonts поиграться, например, со шрифтом JetBrains Mono, обратите внимание, как отображаются сочетания == =< => и т.д.

https://fonts.google.com/specimen/JetBrains Mono

Если я правильно понимаю, настроить emacs под такое отображение непросто. Или я отстал от жизни.

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

Просто берешь и меняешь шрифт на нужный, если нужен какой-то конкретно, то патчишь его через nerd-fonts, в чем проблема-то?

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

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

а вот emoji - это просто тупость. и если в редакторе ЯП такое втащено, за это надо руки отрывать.

я лично у себя эти тупые картинки выпилила везде. вместо них пустота. это хотя бы не раздражает.

для себя в коде я использую простое правило хорошего тонна: en_US.UTF-8. и никаких больше закорючек. ни в коде, ни в комментариях.

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

а вот emoji - это просто тупость. и если в редакторе ЯП такое втащено, за это надо руки отрывать.

Вы только что древнюю египетскую письменность

en_US.UTF-8

А надо en_GB.UTF-8, потому что у них понедельник начинается в субботу неделя начинается с понедельника, а не на седьмой день.

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

Я просто оставлю ссылку на шрифт для программирования и где у них это официально называется именно термином лигатура.

https://www.jetbrains.com/lp/mono/#ligatures

И таких шрифтов много.

А вообще, надо помнить, что emacs - это универсальный текстовый редактор. Не только для программирования, поэтому ему такой функционал нужен, ибо дофига письменностей, где нужны надстрочные и подстрочные знаки, которые удобно отображать именно ввиде лигатур.

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

Имхо, тот же Hack лучше читается, но это вкусовщина, разумеется.

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

ну, это не лигатуры. это попса. и это чисто тупость редактора на конретном сайте. в других редакторах будет не так. шрифты - отдельно, редакторы - отдельно.

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

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

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

документация к eglot говорит что это надо писать вручную

Что именно? Там вообще ничего не нужно настраивать. Ставишь и работает.

use-package тоже пакеты ставит через customize

Ты не поверишь…

десяток режимов включены всегда, а не когда они нужны

Режимы включаются или не включаются в зависимости от типа файла. Если ты про то что нужно на хук загрузки повесить запуск режимов, то ты опять не поверишь… это тоже можно сделать через customize

no-such-file ★★★★★
()
Ответ на: комментарий от Iron_Bug

Только реализовано это стандартными возможностями шрифта, а не редактора, можете ниже по ссылке прочитать:

https://darkside.paratype.ru/two/

А то, что конкретный редактор захочет или нет этот функционал поддерживать - это лично его дело.

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

я не понимаю, что значит «шрифт для программирования». по-моему, для программирования подходит любой моноширинный юникодный шрифт. больше от него ничего не нужно.

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

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

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

Если я правильно понимаю, настроить emacs под такое отображение непросто

Этот относится к терминалу, если он поддерживает шрифты с лигатурами, то и в Emacs они будут. Насколько понимаю vte-терминалы этого не умеют, а вот разные гпу-ориентированные могут, но тоже не все, например алакритти нет.

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

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

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

Шрифт для программирования - это был только частный наглядный пример. Не надо на нём зацикливаться.

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

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

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

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

Вы очень сильно ошибаетесь. Шрифт уже не только набор изображений. Он может включать и логику.

Как пример, почитайте при микротипограф в шрифте:

https://habr.com/ru/articles/819929/

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

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

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

Вы даже не хотите пройти по предложенным Вам ссылкам и продолжаете шпарить свою песню дальше... Всего хорошего.

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

А как дела обстоят с «графическим» емаксом?

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

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

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

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

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

ну, в коде en-US.UTF-8 - это текстовая локаль. всякие понедельники тут ни при чём. и да, мне как-то пофиг, когда там «начинается неделя». я работала с разными странами и у некоторых она начинается в воскресенье и это не выходной. а мне лично по барабану, как отображается календарь. у меня от этого крышу не снесёт. тем более, что тем календарём я пользуюсь ну очень редко.

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

шрифт - это не программа. это данные.

В том-то и дело, что это уже не так. Если бы Вы почитали представленные ссылки выше, то сами бы это поняли.

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

это так. потому что есть данные, а есть исполняемый код. и шрифт - это данные. а код исполняет редактор. ну или какой-то софт, который манипулирует шрифтами. сами шрифты к вам в редактор не заползут. они не запускаются на машине и ничего сами не делают.

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

Ваше упрямство граничит с тупостью.

Последняя ссылка Вам в коллекцию, где есть примеры программирования внутри шрифта так называемых Opentype features:

https://simoncozens.github.io/fonts-and-layout/features.html

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

Если Вы умеете слушать, а не только спорить, то сами найдёте.

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

я программист. зачем мне какая-то ламерская чушь? не надо мне её толкать. без поддержки в софте никакая «магия» в шрифтах работать не будет. потому что чудес не бывает.

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

зачем мне какая-то ламерская чушь? не надо мне её толкать. без поддержки в софте никакая «магия» в шрифтах работать не будет.

Ваша логика шикарна:
Если какая-то программа не поддерживает скриптинга, то его не существует в принципе.

Есть так называемые Opentype features. Они стандартизованы. Часть редакторов их поддерживает, часть нет. Но этот функционал создан и есть. Если он Вам важен - используйте программы, где он поддерживается. Но если он Вам не важен, то не говорите, что этого функционала нет.

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

Если какая-то программа не поддерживает скриптинга, то его не существует в принципе.

так и есть. скрипты не выполняются в вакууме. вообще для выполнения любых скриптов надо очень много всего. и это нетривиально.

Есть так называемые Opentype features. Они стандартизованы. Часть редакторов их поддерживает, часть нет.

о чём я и говорю. шрифты - отдельно, редакторы - отдельно. шрифты ничего не выполняют. выполняют что-то только редакторы. и всё зависит от редактора. и это очевидные вещи.

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

нафига как-то шифроваться и обозначать обычный alt не alt, а какой-то неведомый «mod»

Традиция. Когда написали первый Emacs, Alt ещё не изобрели. Поддерживают совместимость с древнейшими клавиатурами.

Вот это в нём и отпугивает.

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

А - я, думал в цирке. То-то же смотрю. Факиром - иллюзионистом. Я не разглашал свои мысли. Ты, отсебятину придумал.

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

Если бы Qt…

А вообще, есть ли возможность собрать Emacs с Qt-интерфейсом?

… оно на жкт.

Желудочно-кишечном тракте?

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

А вы с Iron_Bug не хотите в какой-нибудь мессенджер перейти, чтобы не оффтопить здесь?

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

Потому что это не Alt, а Meta. На клавиатурах LISP-машин клавиша Alt размещалась там, где сейчас Ctrl, а Meta там, где сейчас Alt. Ещё там была клавиша Hyper, и другие. Но потом пришла IBM и всё испортила.

Вы бы ещё к медикам пришли и предъявили за клиновидную кость.

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

нормальный внешний вид

;; 📦 MENU-BAR
(when (fboundp 'menu-bar-mode)
  (customize-set-variable 'menu-bar-mode nil "Выключить главное меню."))

;; 📦 SCROLL-BAR
(when (fboundp 'scroll-bar-mode)
  (customize-set-variable 'scroll-bar-mode nil "Выключить полосы прокрутки."))

;; 📦 TOOL-BAR-MODE
(when (fboundp 'tool-bar-mode)
  (customize-set-variable 'tool-bar-mode nil "Отключить показ панели инструментов"))

подсветки

Always has been, как говорится. Проще найти язык, который Emacs не поддерживает.

навигация по коду

xref-find-definitions, по умолчанию [M-.].

навигация по каталогу

автоподхват Git

Magit

;; 📦 MAGIT
;; https://magit.vc/
;; Magic + Git + Diff-HL.
;; Лучшее средство для работы с Git.
(use-package magit
  :ensure t
  :pin "melpa-stable"
  :custom
  (magit-define-global-key-bindings 'default "Включить глобальные сочетания Magit.")
  :hook
  (magit-mode . magit-auto-revert-mode)
  (after-save . magit-after-save-refresh-status)
  (after-save . magit-after-save-refresh-buffers))

и так далее

Огласите весь список, пжлст!

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

Это называется метод ввода. Тут 2 пути:

  • написать собственный метод ввода, не так уж сложно;
  • настроить таблицу замен, например, через abbrev.
dunmaksim
() автор топика
Ответ на: комментарий от t3n3t

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

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

Хочу уточнить постановку вопроса:

  • Если надо чтобы в редакторе последовательности символов выглядели как другой символ, то это prettify-symbols-mode.
  • Если надо чтобы одна последовательность символов заменялась автоматически на другую, то это метод ввода или таблица замен. См. мой комментарий выше.
dunmaksim
() автор топика
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.