1. jesem

    16.11.2008

    0 ↑
    0 ↓
    Добрый день.
    Столкнулся с такое проблемой — кроме подсветки синтаксиса мне нужна фоновая подсветка строк (это вывод diff файла), для этого внутри тегов <pre> <code> я использую <span> с указанием нужного класса. Но в этом случае highliht.js перестает работать. Как то это можно решить?
    Заранее благодарен за подсказку.
  2. Ivan Sagalaev

    16.11.2008

    0 ↑
    0 ↓

    Так происходит по двум причинам. Во-первых считается, что если внутри кода уже есть какая-то разметка, то автор кода имел намерение показать что-то отдельное, и не надо ему мешать еще дополнительной разметкой. Но главное, это просто очень сложно сделать, потому что авторская разметка может перемешиваться с автоматической произвольным образом, и это надо как-то совмещать. Если представить себе например вот такой фрагмент с комментарием:

    some_func(); /* This is a multiline
                    comment 
                 */
    

    То что тут кого должно разрезать? <span>ы строк комментарный <span> или нет? А если в авторской разметке это не строки, а что-то еще? И это простой случай из головы, если хорошо подумать, там могут быть вещи и сложнее.

    В связи с этим я не знаю конкретного ответа на вопрос "как" :-). Наверное можно подумать в сторону подкладывания под <pre> с хайлайтингом фонового <div>а с полосатыми строками.

  3. dolzhenko.blogspot.com

    05.02.2009

    0 ↑
    0 ↓
    ведь в приведённом примере, "is" находится внутри комментария, который будет выделен от начала блока комментария до конца строки, а "is" уже внутри этого блока... и казалось бы перекрытий особо никаких нет.
    И с другой стороны можно строить пересечения множеств (обычного текста, и текста с дополнительным span'ом) и добавлять в span'ы highligher'а классы/стили из span'а пользователя
  4. Ivan Sagalaev

    05.02.2009

    0 ↑
    0 ↓

    А причем тут "is"?

  5. dolzhenko.blogspot.com

    07.02.2009

    0 ↑
    0 ↓
    ты привёл пример кода
    <pre><code>some_func(); /* This <span style="font-weight:bold>is</span> a multiline
    comment
    */</code></pre>

    т.е span внутри pre code
    is в данном случае текст, находящийся в span'е
  6. Ivan Sagalaev

    07.02.2009

    0 ↑
    0 ↓

    Пример кода тут про многострочный комментарий. И весь текст вокруг про это. То, что там "is" подсвечен вообще не имеет отношения к делу.

  7. dolzhenko.blogspot.com

    09.02.2009

    0 ↑
    0 ↓
    но зачастую требуется подсветить какое-то одно максимум два слова в однообразном блоке, например в целом комментарии выделить какое-то слово курсивом или жирным, или в xml выделить какой-нибудь атрибут жирным, или вообще дать в комментарии href
    казалось бы - если автор не указал no-highlight, то код и не надо подсвечивать - в другом случае надеется, что код будет подсвечен, конечно по возможности не стоит делать серьёзных препятствий highligher'у - но и не подсвечивать, когда явно нет конфликтов тоже не совсем корректно.
  8. Ivan Sagalaev

    09.02.2009

    0 ↑
    0 ↓

    Проблема в том, как определить "явно нет конфликтов". Когда смотришь глазами на раскрашенный код, это очевидно. Но как это запрограммировать — совершенно неясно. Мне, по крайней мере :-)

  9. dolzhenko.blogspot.com

    18.02.2009

    0 ↑
    0 ↓
    патч выслал на почту
  10. Ivan Sagalaev

    18.02.2009

    0 ↑
    0 ↓

    Да, я видел письмо (конечно же :-) ). Как только руки дойдут, посмотрю. Спасибо!

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