diff --git a/src/languages/1c.js b/src/languages/1c.js index ef06c7438a..a463318863 100644 --- a/src/languages/1c.js +++ b/src/languages/1c.js @@ -2,7 +2,7 @@ Language: 1C:Enterprise Author: Stanislav Belov Description: built-in language 1C:Enterprise (v7, v8) -Category: enterprise +Category: enterprise, common */ export default function(hljs) { @@ -13,13 +13,25 @@ export default function(hljs) { const v7_keywords = 'далее '; + const v7_query_keywords = + 'ВЫБРАТЬ ИЗ ГДЕ УПОРЯДОЧИТЬ ПО ИТОГИ ПО ОБЩИЕ СГРУППИРОВАТЬ ПО ' + + 'СВЯЗАННЫЙ ЛЕВЫЙ ПРАВЫЙ ВНУТРЕННИЙ ПОЛНЫЙ ОБЪЕДИНЕНИЕ РАЗРЕШЕННЫЕ ' + + 'КАК И НЕ ИЛИ ВЫРАЗИТЬ В КОЛИЧЕСТВО УНИКАЛЬНЫЕ ' + + 'ПЕРВЫЕ ВСЕ НУЛЕВЫЕ НЕНУЛЕВЫЕ ПОМЕТКИУДАЛЕНИЯ АВТОУПОРЯДОЧИВАНИЕ ' + + 'ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ ДНЕЙ '; + // v8 ключевые слова ==> keyword const v8_keywords = 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' + 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт '; + // ключевые слова синтаксиса запросов + const v8_query_keywords = + 'ВЫБРАТЬ КАК ИЗ ЛЕВОЕ СОЕДИНЕНИЕ ПО ГДЕ РАЗРЕШЕННЫЕ ВЫРАЗИТЬ СТРОКА В ' + + 'ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ UNION ОБЪЕДИНИТЬ ИТОГИ СГРУППИРОВАТЬ УПОРЯДОЧИТЬ ИМЕЮЩИЕ ВНУТРЕННЕЕ СОЕДИНЕНИЕ НЕ И'; + // keyword : ключевые слова - const KEYWORD = v7_keywords + v8_keywords; + const KEYWORD = v7_keywords + v7_query_keywords + v8_keywords + v8_query_keywords; // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword const v7_meta_keywords = @@ -29,7 +41,10 @@ export default function(hljs) { const v8_meta_keywords = 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' + 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' - + 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент '; + + 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ' + // Дополнительные объекты + + 'внешнийисточникданных внешняяобработка внешнийотчет ' + + 'общийреквизит общиймодуль общаяформа общиймакет '; // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях const METAKEYWORD = v7_meta_keywords + v8_meta_keywords; @@ -421,6 +436,13 @@ export default function(hljs) { // number : числа const NUMBERS = hljs.inherit(hljs.NUMBER_MODE); + // operator : Звездочка для выбора всех полей + const OPERATORS = { + className: 'selector', + begin: /\*/, + relevance: 0 + }; + // string : строки const STRINGS = { className: 'string', @@ -485,6 +507,17 @@ export default function(hljs) { { begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции' + }, + { + begin: 'ЕСТЬNULL|ВЫРАЗИТЬ|РАЗНОСТЬДАТ|ДАТАВРЕМЯ|ГОД|МЕСЯЦ|ДЕНЬ|ДЕНЬГОДА|ДЕНЬНЕДЕЛИ|НЕДЕЛЯГОДА|ЧАС|МИНУТА|СЕКУНДА|НАЧАЛОПЕРИОДА|КОНЕЦПЕРИОДА|ДОБАВИТЬКДАТЕ|СУММА|КОЛИЧЕСТВО|МИНИМУМ|МАКСИМУМ|СРЕДНЕЕ', + end: '\\(', + returnBegin: true, + contains: [ + { + className: 'function-built_in', + begin: UNDERSCORE_IDENT_RE + } + ] } ], contains: [ @@ -536,7 +569,8 @@ export default function(hljs) { NUMBERS, STRINGS, DATE, - PUNCTUATION + PUNCTUATION, + OPERATORS ] }; } diff --git a/src/styles/1c-light.css b/src/styles/1c-light.css index c254db3dc3..9cabb319da 100644 --- a/src/styles/1c-light.css +++ b/src/styles/1c-light.css @@ -7,37 +7,41 @@ License: see project LICENSE Touched: 2023 */ - + /* end baseline CSS */ - + .hljs { color: #0000ff; background: #ffffff; } - + /* Base color: saturation 0; */ - + .hljs-subst { /* default */ } - + /* purposely ignored */ .hljs-formula, .hljs-attr, .hljs-property {} - + .hljs-comment { color: #008000; } .hljs-tag { color: #444a; } - + .hljs-tag .hljs-name, .hljs-tag .hljs-attr { color: #444; } - + + .hljs-function-built_in { + color: #800080 + } + .hljs-punctuation, .hljs-function, .hljs-keyword, @@ -52,7 +56,7 @@ .hljs-params { color: #0000ff; } - + /* User color: hue: 0 */ .hljs-string, @@ -65,12 +69,12 @@ .hljs-deletion { color: #000000; } - + .hljs-title, .hljs-section { color: #0000ff; } - + .hljs-regexp, .hljs-variable, .hljs-template-variable, @@ -79,28 +83,28 @@ .hljs-operator, .hljs-selector-pseudo { color: #ab5656; - } - + } + /* Language color: hue: 90; */ - + .hljs-literal { color: #ff0000; } - + .hljs-built_in, .hljs-bullet, .hljs-code, .hljs-addition { color: #0000ff; } - - + + /* Meta color: hue: 200 */ - + .hljs-meta { color: #963200; } - + .hljs-meta .hljs-string { color: #963200; } @@ -108,14 +112,13 @@ .hljs-meta .hljs-keyword { color: #963200; } - + /* Misc effects */ .hljs-emphasis { font-style: italic; } - + .hljs-strong { font-weight: bold; } - \ No newline at end of file