kostafey / organic-green-theme

Bright green color theme for Emacs.
39 stars 5 forks source link

black? #6

Closed neuromagus closed 2 years ago

neuromagus commented 2 years ago

так оно ничего, но хочется flat и black. Плюс собрать палитру, чтобы можно было интегрировать в окружение (терминалы и так далее)

kostafey commented 2 years ago

Не вполне понял что значит flat? (setq organic-green-boldless t) - не оно? И что значит black? Тема светлая, имелось в виду какой-то черный/темный как основной foreground? Это я более-менее сделал для версии Neovim. Что же касается палитры - да тут есть некая историческая особенность, тема формально существует с 2009-го, но в реальности с 2005-го, как адаптация для Emacs темы, которую я делал еще для редактора Bred. В то время почему-то идеи, что должны быть какие-то границы количества цветов у меня не возникло, поэтому цветов много. Очень много :).

Но так или иначе, я с некоторых пор переезжаю в Neovim и там уже делаю более осмысленную адаптацию, ограничивая количество цветов и целенаправленно формируя некую палитру. https://github.com/kostafey/organicgreen.nvim Собственно, палитра: https://github.com/kostafey/organicgreen.nvim/blob/master/lua/organicgreen/palette.lua

Адаптации для терминалов: urxvt: https://github.com/kostafey/dotfiles/blob/master/.urxvt/organic-green.xresources alacritty: https://github.com/kostafey/dotfiles/blob/master/.config/alacritty/alacritty.yml#L288 kitty: https://github.com/kostafey/dotfiles/blob/master/.config/kitty/kitty.conf

neuromagus commented 2 years ago

Да, цветов реально много. Не буду спрашивать, чем подкупил Nvim.

black - dark theme, flat - нечто среднее

За адаптации к терминалам спасибо, но надо будет думать о обрезании цветов. Их реально много - 40?

kostafey commented 2 years ago

А для терминалов там как раз количество цветов обрезано (как и для Nvim-а). В теории, можно сделать версию 2.0 для Emacs на основе вимоской палитры, хотя в теории, пользователей и не так много, можно и эту поменять, тем более, что жалобы по количеству цветов были и ранее, к слову, эту уже отредактированная версия, в оригинале цветов было еще больше :))) (см. https://github.com/kostafey/organic-green-theme/issues/2).

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

neuromagus commented 2 years ago

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

Жаль это слышать. По пользователям - organic green theme 125229 downloads https://emacsthemes.com/popular/index.html

Так что я за ver 2.0 ))

neuromagus commented 2 years ago

Ну и пол дня думал, что сподвигло пересесть на nvim?

kostafey commented 2 years ago

К слову, темная тема базировалась на теме neo редактора Bred. Хотя и была довольно сильно кастомизирована. Возможно, однажды удастся найти тот архив. Но так или иначе, основные цвета я не менял: fore="#55cc66" back="#001800".

Про проблемы Emacs я писал в свое время на ЛОРе: https://www.linux.org.ru/forum/talks/16132437 Про современный NeoVim я напишу чуть позже (вероятно, там же) и более подробно :).

neuromagus commented 2 years ago

Ждём, и версию 2.n и подробностей на ЛОР о Nvim.

neuromagus commented 2 years ago

P.S. Подробностей о Nvim ждём во прямо-прямо ))) Если не затруднит, пару слов.

А проблем у Emacs нет, были с LSP. Вон кто-то вбросил о https://www.linux.org.ru/forum/talks/17021892

kostafey commented 2 years ago

На самом деле, проблемы у Emacs есть.

  1. Самая главная - рендеринг UI на CPU, причем в том же потоке, в котором выполняется весь остальной код. А с учетом неспешности Elisp, это становится совсем грустно. В принципе, можно выносить часть кода через FF в сторонние процессы, но это будет уже не Elisp. И все равно не решает проблему рендеринга. Да, на LSP это ярче всего проявляется, но то, что в остальных случаях она не так заметна, не значит, что проблемы нет.
  2. Однопоточность. Да, есть обходные пути той или иной степени искуственности.
  3. Низкая производительность самого Elisp. Опять же, говорят на Emacs gcc починили, но я пока не смотрел.
  4. Механизм окон ломает возможность построения полноценного интерфейса на TUI. А TUI с хоткеями - это прекрасно, мы имеем классику TUI - Norton Commander. Это, например, делает почти невозможным такие вещи как Telescope (https://github.com/nvim-telescope/telescope.nvim) в NeoVim. Опять же, есть способы обойти, добавляя headless-фреймы поверх текущего. Путь рабочий, но его натуральность тоже вызывает вопросы.

Все остальное - сплошные плюсы, да.

По VS Code. Плюсы:

  1. Производительность UI, который рендерится на GPU.
  2. Производительность JavaScript (спасибо Electron/NodeJS/V8).
  3. Вменяемый API.

Минусы:

  1. Не keyboard-centric. Некоторые вещи вообще без мыши не сделать, что раздражает.
  2. Хотите переименовать файл? Вам нужен плагин для этого! В Emacs это была бы просто небольшая функция - кинул в конфиг и всего делов. Тут же 8 плагинов, половина из них заброшена в 2015-м, другая половина помимо необходимой функции добавляет еще 100500 других. Доков нет, докстрингов нет, что кто-то другой будет открывать код плагина и в мыслях не было. Спасибо, если есть ридми, пусть и не обновляемая много лет, и уже не релевантная коду.
  3. Культура разработки. Вне официального кода от MS ее нет (см. выше).
  4. Писать плагины на ClojureScript возможно, но не вполне натурально (см, например https://github.com/kostafey/advanced-navigation-cljs). Да, есть еще https://github.com/BetterThanTomorrow/joyride. И там флоу такой, что вот нельзя просто на лету подхачить что-то, допилить, нужно вот взять, переключиться на плагин конкретно.
  5. API неплох, да, но многие вещи гвоздями прибиты и всего не настроишь.

По Nvim Плюсы:

  1. Производительность UI, для чего делаются отдельно UI клиенты. Я по итогу выбрал https://github.com/equalsraf/neovim-qt
  2. Производительность Lua. Чуть хуже, чем JavaScript, но сильно лучше EmacsLisp.
  3. Fennel - Lisp, работающий на Lua прекрасен. Это дает почти схожий флоу конфигурации, что и в Emacs (поведение меняется на лету подробнее: https://github.com/Olical/conjure)
  4. Сопоставимая с Emacs экосистема. Например, Magit (для Emacs), Edamagit (для VSCode) и NeoGit (для NeoVim) работают почти одинаково.

Минусы:

  1. Модальность. Для кого-то это плюс, я ее не люблю. Сейчас как раз настраиваю конфигурацию без модальности. Как закончу-напишу.
  2. Чуть менее удобная работа с Fennel, чем то, что предоставляет Emacs для EmacsLisp.
  3. Довольно причудливый API, многие вещи прибиты гвоздями еще со времен царя-гороха. Например, для некоторой функциональности нет полноценных функций, которые можно было бы вызвать через API, есть только хоткеи, т.е. приходится эмулировать их нажатие для вызова этих функций. Ситуация прежде всего в NeoVim постепенно меняется к лучшему, но до API Emacs пропасть неизмеримых размеров.

В общем, я потом все это дело опишу по-хорошему, с толком, с чувством, с расстановкой, с примерами, с картинками и т.д. и т.п., но не скоро :).

neuromagus commented 2 years ago

Спасибо за развёрнутый ответ.

Чуть менее удобная работа с Fennel, чем то, что предоставляет Emacs для EmacsLisp.

Всё равно победа.

modal

Надо просто привыкнуть ))

Emacs gcc git

Намного быстрее, рекомендую.

Итого: Моё скромное мнение такое - NVim развивается, Emacs пытается догнать, некем, но меедленно пилится. VSCode прибит к MS, но позволяет быстро начать что-то менять на незнакомой машине, с оторой надо будет уйти. С клавишами там всё нормально, я работал без мыши, совсем, интерфейс тоже меняется до безобразия (у меня было только окно с кодом и табами (тоже со своим размером)). Есть теперь некий eval в командной строке ;)) Но это всё нивелируется MS. Стучит всё, всегда, все сервера запущены с --telemetry-my-dude-ALL, сам ts-server стучит, ну и дополнения с "дай на кофе", хотя недоделанно... Vim - код ужасен, решение пилить Viml9 развернуться не даёт, вкусностей нет. Без мелкого конфига неудобен. Joe - хорошая замена Emacs на удалённой машине, но вс равно надо убирать backup в конфиге, гадит по умолчанию file~, что бесит.

В общем, я потом все это дело опишу по-хорошему, с толком, с чувством, с расстановкой, с примерами, с картинками и т.д. и т.п., но не скоро :).

Ждём. В любом случае, голод пока убран ))

neuromagus commented 2 years ago

А тут возник вопрос, как у Nvim с lisp (common lisp)? Или здесь ничего не заменит Emacs?

kostafey commented 2 years ago

Честно, пока еще не пробовал. Можно использовать тот же Сonjure https://github.com/Olical/conjure/wiki/Quick-start:-Common-Lisp-(Swank).