LINUX.ORG.RU

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

 


3

5

Всем привет!

Часто вижу на форумах мнение, что 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)