Клуб пользователей редактора vim
 
[Most Recent Entries] [Calendar View] [Friends View]

Thursday, December 22nd, 2005

    Time Event
    10:08p
    Генерация цветовой подсветки синтаксиса для LJ
    ..как известно, vim умеет генерить HTML-код для цветовой подсветки синтаксиса таким образом, что на итоговой страничке он выглядит так же, как в окне редактора. Всё бы хорошо, да вот незадача -- цвет фона и дефолтный цвет шрифа забиваются в атрибуты тэга <body>, и при копировании данного куска кода в LJ-пост эти цвета пропадают, что приводит порой к довольно неудобоваримым последствиям, если цвет фона редактора и цвет фона журнала не совпадают.

    Предлагаю небольшую функцию, которая решает данную проблему.


    fun! MyToHtml(line1, line2)
            exec a:line1.','.a:line2.'TOhtml'
            %g/<body/normal k$dgg
            %s/<body\s*\(bgcolor="\#[a-f0-9]\{6\}"\)\s*text=\("\#[a-f0-9]\{6\}"\)\s*>/<table><tr><td \1><font color=\2>/
            %s#</body>\(.\|\n\)*</html>#</font></td></tr></table>#i
    endf
    
    command -range=% MyToHtml :call MyToHtml(<line1>,<line2>)
    



    Теперь выделяете нужный кусок кода, и набираете :MyToHtml

    Ну, если ничего не выделить, то сгенерится страничка для всего буфера, само собой ;-/


    ..а вот тот же кусок кода, сгенерённый TOhtml без всякой дополнительной обработки, для сравнения:




    fun! MyToHtml(line1, line2)
            exec a:line1.','.a:line2.'TOhtml'
            %g/<body/normal k$dgg
            %s/<body\s*\(bgcolor="\#[a-f0-9]\{6\}"\)\s*text=\("\#[a-f0-9]\{6\}"\)\s*>/<table><tr><td \1><font color=\2>/
            %s#</body>\(.\|\n\)*</html>#</font></td></tr></table>#i
    endf
    
    command -range=% MyToHtml :call MyToHtml(<line1>,<line2>)
    




    я думаю, разница налицо ;-/

    << Previous Day 2005/12/22
    [Calendar]
    Next Day >>

About LJ.Rossia.org