1. Song

    15.05.2009

    0 ↑
    0 ↓
    Скажите пожалуйста, а какие именно изменения вносились в алгоритм подсветки, чтобы она стала понимать правила подсветки 1С?
    Я так понимаю, это изменения, связанные с юникодом.
    Я использую старую версию подсветки и по разным причинам не хочу её апргрейдить. Так вот у меня подсветка 1С не работает вообще. Даже если убрать все правила, а оставить только основной keywords.
    Заранее спасибо за помощь.
  2. Иван Сагалаев

    15.05.2009

    0 ↑
    0 ↓

    Я ничего не понял, если честно... Подсветка 1С работает уже довольно давно, и я не припомню каких-то специальных изменений для этого.

  3. Song

    23.05.2009

    0 ↑
    0 ↓
    Не, это был мой косяк.
    У меня класс <code> был "1c", а такой не допустим, надо чтобы с буквы обязательно начиналось.
  4. Song

    24.05.2009

    0 ↑
    0 ↓
    Всё-таки я был поспешен, сказав, что подсветка 1С работает.
    Она работает во всех браузерах кроме IE.
    Я долго локализовывал ошибку и нашёл то место где она отваливается.
    Это функция:
    function langRe(language, value, global) {
    var mode = 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '');
    return new RegExp(value, mode);
    }
    Код вылетает на правиле:
          {
    className: 'title',
    lexems: [IDENT_RE_RU],
    begin: IDENT_RE_RU, end: '^'
    }
    где IDENT_RE_RU =
    var IDENT_RE_RU   = '[a-zA-Z╨░-╤П╨Р-╨п][a-zA-Z0-9_╨░-╤П╨Р-╨п]*';
    (уникод здесь, из-под фара не виден)

    Когда я написал функцию так:
    function langRe(language, value, global) {
    var mode = 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '');
    try {
    new RegExp(value, mode);
    } catch(e) {
    alert(value+'='+e);
    }
    return new RegExp(value, mode);
    }
    то получил следующее:
    ---------------------------
    Windows Internet Explorer
    ---------------------------
    ^[a-zA-ZР°-СЏРђ-РЇ][a-zA-Z0-9_Р°-СЏРђ-РЇ]*=[object Error]
    ---------------------------
    ОК
    ---------------------------
    Исключение возникает на 'title' -> begin.

    Если правило title убрать, то исключение возникает при обработке keywords, т.к. там тоже используется IDENT_RE_RU.
    В других браузерах исключение не возникает.
    Помогите пожалуйста. Не знаю чего не нравится ослику :(
  5. Иван Сагалаев

    24.05.2009

    0 ↑
    0 ↓

    Это, случаем, происходит не тогда, когда js-файл с диска берется? Если так, то вполне может быть, что IE пытается читать файл в кодировке windows-1251, отчего ему и сносит крышу.

  6. Song

    28.05.2009

    0 ↑
    0 ↓
    Нет, это на сервере. При загрузке страницы.
    Если я правильно понял ваш вопрос.
  7. Иван Сагалаев

    28.05.2009

    0 ↑
    0 ↓

    Тогда возможно на сервер javascript отдается без указания кодировки или с неверной кодировкой. Надо смотреть в заголовок Content-type. Если там не написано явно "charset=utf-8", то русские буквы, конечно, работать не будут.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.