Что нового, что не рекомендуется и каковы планы на будущее
Последние несколько недель я работал над большим пиаром для темы космических кораблей. Это самое большое обновление Spaceship за всю историю, в нем много изменений (в том числе критические), подсказка почти полностью переписана, поэтому я решил написать заметку, которая должна быть итогом моих усилий.
Почему?
Прежде чем я углублюсь в описание новых функций, я хотел бы поговорить о причинах полного переписывания. Основная причина в том, что Spaceship имеет много шаблонного скопированного кода, например:
echo -n "%{$fg_bold[green]%}" echo -n "${SPACESHIP_NVM_SYMBOL} ${nvm_status}" echo -n "%{$reset_color%}"
И этот фрагмент был частью любого раздела, вызывая множество связанных проблем.
Порядок разделов и их цвета в подсказке вряд ли были определены в исходном коде Spaceship, и это была вторая важная проблема. Пользователи могли переопределить префиксы для разделов, но не могли этого сделать для суффиксов, цветов или порядка разделов. Параметры были сгруппированы по имени (например, GIT
, XCODE
и т. Д.), За исключением PREFIX
-параметров, которые были сгруппированы сами по себе. Это было сделано для несогласованности API.
Еще одна проблема была скрыта в разделе имени хоста. Внутри этого раздела использовались раздел имени пользователя и префикс каталога. Это просто исторический вопрос, связанный со спецификой реализации. В любом случае, это вызвало неочевидную привязку между частями приглашения, и это стало большой проблемой для будущих функций.
Помимо этого, было несколько мелких, но, тем не менее, досадных проблем с внутренними устройствами космического корабля, которые необходимо исправить.
Какие новости?
космический корабль-zsh-theme теперь v2.0.0
. Pull-request № 78 для этой версии содержит 66 коммитов (1095 добавлений и 523 удаления), 48 новых опций (всего 98, 26 устарели).
Давайте посмотрим, что будет с новым крупным обновлением. Вот список важных изменений:
Индивидуальный оперативный заказ
Я начал рефакторинг с внедрения новой функции: настраиваемый порядок подсказок.
Ранее у пользователей не было возможности изменять порядок разделов космического корабля. Более того, в Spaceship не было такого понятия, как section. Поэтому ключевой особенностью этого крупного обновления было предоставление пользователям возможности определять порядок подсказок.
Теперь вы можете использовать $SPACESHIP_PROMPT_ORDER
параметры для определения желаемого порядка, как это (порядок по умолчанию ниже):
SPACESHIP_PROMPT_ORDER=( time # Time stampts section user # Username section host # Hostname section dir # Current directory section git # Git section (git_branch + git_status) node # Node.js section ruby # Ruby section xcode # Xcode section swift # Swift section golang # Go section docker # Docker section venv # virtualenv section pyenv # Pyenv section line_sep # Line break vi_mode # Vi-mode indicator char # Prompt character )
Префиксы являются частью разделов
Ранее я упоминал о проблемах с именованием параметров префикса. В новой версии префиксы перенесены в соответствующие разделы: $SPACESHIP_PREFIX_*
→ $SPACESHIP_*_PREFIX
Параметры $SPACESHIP_PREFIX_SHOW
были переименованы в $SPACESHIP_PROMPT_PREFIXES_SHOW
и перемещены в раздел подсказок.
Не волнуйтесь, если вы используете старые параметры прямо сейчас, вы получите предупреждение об устаревании с предложением варианта, который следует использовать вместо этого:
Предупреждения об устаревших вариантах не будут удалены до следующего основного выпуска.
Параметры суффиксов
С момента введения префиксов ожидалось, что будут добавлены и суффиксы. Теперь у каждого раздела есть соответствующая опция $SPACESHIP_*_SUFFIX
для суффикса раздела. По умолчанию он падает до значения $SPACESHIP_PROMPT_DEFAULT_SUFFIX
, которое является пробелом. Однако не стесняйтесь определять собственный суффикс для любого раздела (больше примеров можно найти на вики-странице Presets).
Пользовательские цвета
Раньше не было возможности изменить цвета разделов. В новом основном выпуске эта функция доступна пользователям. Если вам нужно изменить цвет раздела, просто назначьте имя цвета соответствующей переменной $SPACESHIP_*_COLOR
. Вот пример:
Git более конкретен
Теперь поддержка Git стала намного лучше. Во-первых, раздел git
был разделен на два подраздела: git_branch
+ git_status
. Как вы могли заметить, первая показывает текущую ветку Git, а вторая показывает статус Git.
Помимо старых добрых индикаторов, в подраздел Git status добавлены новые:
»
- переименованные файлы;✘
- удаленные файлы;=
- не объединенные изменения;⇕
- разошлись изменения.
Исправлена поддержка Node.js
Больше нет nvm
раздела и связанных с ним опций. Вместо этого используется node
. У нас было много проблем от людей, предпочитающих использовать n
вместо nvm
. В новой версии есть опция $SPACESHIP_NODE_DEFAULT_VERSION
. Если вы используете n
, назначьте этой переменной версию системы Node.js по умолчанию, и раздел node
будет скрыт.
Пакет NPM
Космический корабль теперь распространяется как NPM-пакет. Это означает, что вы можете установить его с помощью одной команды:
npm install -g spaceship-zsh-theme
Эта команда автоматически загрузит, установит ссылку и исходный код Spaceship. $ZSH_THEME
будет установлен на "spaceship"
. Просто перезагрузите свой терминал.
Кроме того, вы можете удалить Spaceship с помощью команды npm uninstall
и обновить с помощью npm update
.
Наряду с этим вы можете установить Spaceship как обычно, используя диспетчер плагинов оболочки или с помощью одной команды:
curl -o - https://raw.githubusercontent.com/denysdovhan/spaceship-zsh-theme/master/install.zsh | zsh
Кстати, было бы здорово, если бы мы добавили возможность установки Spaceship с помощью Homebrew. Если вы можете помочь, напишите, пожалуйста, сообщение по теме Установить через Homebrew.
Меньшие изменения
С более крупными изменениями были и более мелкие. Космический корабль получил больше внутренних улучшений, а именно:
- Новый символ подсказки. Теперь это
➜
вместо➔
. Изменение не совсем очевидное, но у нового персонажа закругленные углы, что больше подходит для глаз. - Низкое внутреннее сцепление.
user
иdir
разделы не зависят от разделаhost
. - Расширенный API. Теперь у
time
иuser
есть свои префиксы и другие параметры, которые были упущены. - Улучшенный установщик / деинсталлятор.
install.sh
был заменен наinstall.zsh
иuninstall.zsh
для установки и удаления соответственно. Оба запускаются постскриптами NPM илиcurl
иwget
. - Добавлено
.editorconfig
. Понятия не имею, почему я пропустил это раньше. Однозначно, этот файл должен быть в любом проекте с открытым исходным кодом. - Добавлены вики-страницы. Документы были особенно перемещены на вики-страницы GitHub. В частности, на странице Скриншоты добавлено больше скриншотов Космического корабля в других цветовых решениях (в том числе и в светлых).
Предустановки
На данный момент у Космического корабля 98 вариантов. Вы можете изменить практически все, что захотите: порядок, цвета, префиксы, суффиксы, символы и т. Д. Это делает Spaceship еще более настраиваемым, чем это было раньше.
Играя с опциями, я обнаружил, что делаю Космический корабль похожим на другие темы. Например, вот демонстрация того, как Spaceship может выглядеть как приглашение robbyrussell (приглашение по умолчанию Oh-My-Zsh):
Вот почему я решил создать вики-страницу Presets, где пользователи могут делиться своей конфигурацией с другими.
Планы на будущее
Конечно, этот выпуск еще не конец. Существует множество запросов на добавление функций и рабочих запросов на вытягивание с предварительной реализацией этих функций, а именно:
Хочешь помочь? Посмотрите ярлык help wanted
в выпуске. Если вам нужна функция или у вас есть вопросы, не стесняйтесь открывать вопрос.
Пожертвование
Я работаю над этим проектом в свободное время, помимо своей основной работы. Надеюсь, вам понравится пользоваться космическим кораблем, и если вы это сделаете, пожалуйста, купите мне чашку ромашкового чая ☕️ или сырного торта 🍰
Буду признателен за вашу поддержку! Спасибо!
Спасибо за внимание! Подпишитесь на меня в Twitter и Facebook, если хотите получать обновления.