VSCode 1.9 полностью изменил способ обработки областей tmTheme для раскрашивания.
На данный момент вся тема сломана, и ее нужно в значительной степени переделать с нуля.
Дополнительная информация: https://github.com/Microsoft/vscode/issues/18357
Я буду работать над этим как можно скорее. Держите всех крепко и извините за неудобства :(
Я только что выпустил версию 1.0.0, она обеспечивает минимальную поддержку версии 1.9.
Некоторые языки просто не имеют хорошей поддержки в VS Code и не позволяют хорошо раскрашивать (например, Java).
Передо мной еще много работы. Я считаю, что могу достичь той же поддержки, что и до 1.9, некоторые языки (например, Python) все еще очень плохи по сравнению с последней версией. Мне очень жаль, я над этим работаю.
Я буду обновлять этот выпуск по мере продвижения.
Всем, кто ждет, я считаю, что версия 1.1.0 теперь имеет ту же окраску, что и до версии 1.9. Вы можете просто обновить его на VSCode Marketplace.
Некоторые языки были улучшены с новыми областями действия, например Ruby и JS / TS, но если вы обнаружите какие-либо несоответствия, особенно те, которые не существовали до 1.9, сообщите об этом.
Я считаю, что сейчас отсутствуют только те языки, которые зависят от плагинов на VSCode, которые я поддерживал до 1.9, например, Rust. Я буду работать над ними в течение недели и закрою этот вопрос, когда они будут выпущены.
Спасибо за терпение :)
Я обнаружил следующее несоответствие.
Язык: JavaScript
До:
После:
Проблема, похоже, в скобках и коде внутри них.
Пример кода
export default class Definition {
constructor(def) {
if (invalidParams(def)) {
throw new Error('Invalid arguments provided to Lang constructor');
}
this.__def = def instanceof Map ? def : new Map(def);
}
clone = () => new Definition(new Map(this.__def));
extend = (def) => {
if (invalidParams(def)) {
throw new Error(`extend requires Map`);
}
const extendedLang = new Map(this.__def);
for (const [key, value] of def) {
extendedLang.set(key, value);
}
return new Definition(extendedLang);
}
}
Спасибо за сообщение!
Я посмотрю на это сегодня вечером и вернусь к вам.
Фиксированный. Я подожду, пока не завершу оставшуюся работу, чтобы не заваливать пользователей новой версией каждый день (в прошлом я получал несколько жалоб на это). Он будет выпущен в версии 1.2.0 .
Для сравнения,
Атом:
VSCode:
Ключевое слово constructor
к сожалению, не может быть выбрано без изменения цветов многих других элементов вместе ... Объявления констант в JS также имеют ту же проблему, для них нет уникальной области. Если VSCode когда-нибудь улучшится, я обновлю исправление.
Еще раз спасибо за участие :)
Спасибо за быстрый отклик!
Один вопрос: объявления const работали правильно до 1.9, а также, если вы посмотрите, объявление const в цикле for
работает правильно. Так почему бы не тот, что над ним?
[key, value]
внутри цикла for являются объявлением переменных массива , поэтому VSCode предоставляет для них уникальные области видимости, которые я использовал.
Однако extendedLang
const определяется как обычная переменная. Как показано на картинке ниже:
Это наиболее конкретная сфера его применения. И, как видите, ни одна из других областей видимости не обнаруживает это как объявление const
. Так что, если я раскрашу его сейчас, все переменные тоже будут красными.
Когда я сталкиваюсь с этими конфликтами, я должен сделать выбор, поэтому обычно побеждает наиболее распространенный прицел или более приятный для глаз цвет. В этом случае переменные встречаются гораздо чаще, и их выделение красным цветом для соответствия константам вызовет гораздо больше отличий от исходной темы Atom.
Что касается того, почему это работало раньше, VSCode теперь предоставляет области, которые полностью отличаются от предыдущих версий, вероятно, у меня был способ отличить объявление переменных от констант в этом случае.
Вы можете видеть, что константы и переменные теперь имеют одинаковые области видимости:
Atom предоставляет область видимости constant.other.js
поэтому он может предоставлять настраиваемую окраску.
Спасибо за подробное объяснение!
Можете ли вы сделать вариант для последовательной окраски всех типов переменных? (красным я думаю)
Я стараюсь как можно точнее следить за темой Atom. Atom не окрашивает переменные ( var
или let
), они серые. Так что я так и оставлю.
Атом:
Вы всегда можете форкнуть проект и настроить его, если хотите, он под лицензией MIT :)
В любом случае вот ошибка:
код:
import * as styles from './mission.scss';
export default function MissionIcon({ key, title }) {
return <i class={classnames(
styles['mission__icon'],
{
[styles['mission__icon-letter']]: title.match(A_HEBREW_LETTER),
[styles['mission__icon-first']]: !key,
}
)}>{title}</i>;
}
Спасибо!
Не могли бы вы предоставить немного дополнительной информации? Это файл JS или TS? Это React?
Еще баги:
@
серым цветом@connect(
({ artists }) => ({ artists }),
dispatch => bindActionCreators({ getArtists, getArtist, addArtist, editArtist, removeArtist }, dispatch)
)
export default class AdminArtists extends Component {
componentWillMount = () => {
this.props.getArtists();
}
render = () => {
console.log(this.props.artists);
return <div>
</div>;
}
}
@akamud Это JS React
Я создам новую задачу, чтобы отслеживать проблемы с JS React.
Пожалуйста, используйте # 36, чтобы следить за этим обсуждением.
Версия 1.2.0 теперь имеет ту же поддержку плагинов, что и раньше.
Если вы обнаружите какие-либо другие несоответствия, создайте новую проблему.
Самый полезный комментарий
Всем, кто ждет, я считаю, что версия 1.1.0 теперь имеет ту же окраску, что и до версии 1.9. Вы можете просто обновить его на VSCode Marketplace.
Некоторые языки были улучшены с новыми областями действия, например Ruby и JS / TS, но если вы обнаружите какие-либо несоответствия, особенно те, которые не существовали до 1.9, сообщите об этом.
Я считаю, что сейчас отсутствуют только те языки, которые зависят от плагинов на VSCode, которые я поддерживал до 1.9, например, Rust. Я буду работать над ними в течение недели и закрою этот вопрос, когда они будут выпущены.
Спасибо за терпение :)