Подсветка исходного кода

    Переписал и изменил (специально для Хабры, а точнее для .NET блога) на досуге небольшой модуль, который подсвечивает исходный код C#, VB.NET, HTML/XML/ASPX, JavaScript и SQL.

    Если Вы хотите вставить кусок исходного кода в новую запись или комментарий к записи, используйте Source Code Highlighter, который подсветит Ваш код.

    Есть поддержка нумерации строк и вставки переноса строк, если вы отметили «Отключить автоформатирование» при написании поста.

    Вот пример подсвеченного исходного кода который выдает этот модуль:

    1. using System;
    2. using System.Data;
    3. using System.Configuration;
    4. using System.Web;
    5. using System.Web.Security;
    6. using System.Web.UI;
    7. using System.Web.UI.WebControls;
    8. using System.Web.UI.WebControls.WebParts;
    9. using System.Web.UI.HtmlControls;
    10.  
    11. /// <summary>
    12. /// Summary description for Test
    13. /// </summary>
    14. public class Test
    15. {
    16.  
    17.   private int m_TestVar1;
    18.   private float m_TestVar2;
    19.   private DateTime m_TestVar3;
    20.  
    21.   public Test()
    22.   {
    23.     //
    24.     // TODO: Add constructor logic here
    25.     //
    26.   }
    27.  
    28.   public int TestVar1
    29.   {
    30.     get { return m_TestVar1; }
    31.     set { m_TestVar1 = value; }
    32.   }
    33.  
    34.   public float TestVar2
    35.   {
    36.     get { return m_TestVar2; }
    37.     set { m_TestVar2 = value; }
    38.   }
    39.  
    40.   public DateTime TestVar3
    41.   {
    42.     get { return m_TestVar3; }
    43.     set { m_TestVar3 = value; }
    44.   }
    45.  
    46. }
    * This source code was highlighted with Source Code Highlighter.


    Баги, просьбы и пожелания оставляйте в комментариях. :)

    Надеюсь, что этот модуль будет полезен для многих и не только для использования в этом блоге.
    Пользуйтесь на здоровье!

    P.S.
    Ссылка на сайт будет всегда висеть в описании блога.

    UPD #1: Добавлена возможность подсветки HTML/XML/ASPX кода.
    UPD #2: Добавлена возможность быстрого копирования кода в буфер обмена.
    UPD #3: Исправлена нумерация строк кода. Теперь можно копировать код в буфер обмена без проблем.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 82

      0
      Маленькие косметические баги — кнопка "Fromat Code", флажок "Place Line Brake ..."
        0
        "Fromat" пофиксил, опечатка.
        А что с "Line Brake" не так?
          0
          А что из этого тогда подразумевалось? Я думаю, там все же "Break" должно быть, разве нет?
            0
            Да нет, имелось в виду это.
              0
              Ну дык "break" же :)
                0
                break чего? :)
                  +1
                  Что же так тяжело :) Линии Break, линии :)

                  У вас на сайте "Line Brake", а нужно "Line Break"
                    0
                    А, блин, теперь понял. :))))
        0
        Спасибо, это очень полезная штука. Сейчас потестирую.
          0
          В чём преимущество использования FONT вместо CSS? o_O
            0
            Да, думаю, что через стили и замены тега на какой-нибудь односимвольный, форматированный код был бы гораздо короче.
              0
              Разумеется, но Хабровский редактор CSS не принимает.
              +2
              на хабре разрешён CSS? o_O
              0
              В том, что редактор Хабровский CSS не принимает.
              0
              Отличный функционал. Осталось попросить уважаемого va1en0k-а интеграции этой возможности в его замечательный скрипт для Greasemonkey.
                0
                Исправьте ссылку, пожалуйста, у вас там русские буквы затесались
                  0
                  А разве Хабр позволяет вносить исправления в комментарий?
                  Могу лишь продублировать: http://userscripts.org/scripts/show/2316…
                    0
                    Упс... Однако и нет моей вины, это что-то НЛО сегодня "не в настроении".
                    Ссылка: http://userscripts.org/scripts/show/2316…
                      +3
                      Я ненавижу тебя, НЛО :)
                        0
                        попробуй ещё раз :)
                          0
                          Да уж, НЛО... а комментарий действительно не изменить.
                          обидно. Там вроде с и р русские подставились, особо не вглядывался
                            +1
                            Скопируйте это в браузер:
                            userscripts.org/scripts/show/23164
                      +1
                      Скопируйте это в браузер:
                      userscripts.org/scripts/show/23164
                        0
                        А что туда добавить, ссылку на сайт?
                        0
                        Замечен баг - не корректно осуществляется подсветка названий классов в C# (после class и new). Если следовать стандарту - то следовать ему до конца.
                        А вообще сервис полезный. В качестве развития предложил бы вынос в css описания стилевых классов (в среднем 3-4 класса) и увеличение количества поддерживаемых цветовых схем.
                          0
                          Да, названия классов пока не подсвечиваются..
                          От CSS намеренно отказался, так как Хабровский редактор его не кушает.
                            0
                            А есть стандарт подсветки C#? Просветите ссылкой.
                            0
                            ну... на данный момент - не заметил признаков форматирования кода (тестил только на js-коде), только подсветка. если ещё не видели хайлайтер GeSHi - посмотрите в его сторону (вот только он на php. но это же не страшная проблема, правда?). довольно популярная вещь, может будет полезным его изучение.
                              0
                              Есть ещё старый добрый colorer. У него есть HTML генератор:
                              http://colorer.sourceforge.net/php/
                                +1
                                там цвета не от VS:)
                                  0
                                  А вы пробовали вставлять код, кторый он выдает, сюда?
                                    0
                                    угу, вы правы, не красит :(
                                      0
                                      в этом то и дело.
                                  0
                                  Под форматированием я имел ввиду замену пробелов и табов в уже отформатированном коде на NBSP.

                                  Нет не видел. Посмотрел немного. Дело в том, что он генерирует CSS, а Хабра редактор его не принимает. Только поэтому я решил переписать этот модуль.
                                  +1
                                  OMG!

                                  document.getElementById('asd').value

                                  <blockquote><font size="2" face="Courier New" color="black"><font color="#2B91AF"></font>d<font color="#2B91AF"></font>o<font color="#2B91AF"></font>c<font color="#2B91AF"></font>u<font color="#2B91AF"></font>m<font color="#2B91AF"></font>e<font color="#2B91AF"></font>n<font color="#2B91AF"></font>t<font color="#2B91AF"></font>.<font color="#2B91AF"></font>g<font color="#2B91AF"></font>e<font color="#2B91AF"></font>t<font color="#2B91AF"></font>E<font color="#2B91AF"></font>l<font color="#2B91AF"></font>e<font color="#2B91AF"></font>m<font color="#2B91AF"></font>e<font color="#2B91AF"></font>n<font color="#2B91AF"></font>t<font color="#2B91AF"></font>B<font color="#2B91AF"></font>y<font color="#2B91AF"></font>I<font color="#2B91AF"></font>d<font color="#2B91AF"></font>(<font color="#A31515">'asd'</font><font color="#2B91AF"></font>)<font color="#2B91AF"></font>.<font color="#2B91AF"></font>v<font color="#2B91AF"></font>a<font color="#2B91AF"></font>l<font color="#2B91AF"></font>u<font color="#2B91AF"></font>e<font color="#2B91AF"></font></font></blockquote>
                                    0
                                    Да, косяк..
                                    Посмотрю.
                                    Спасибо!
                                      0
                                      Починил.
                                      Проверь пожалуйста.
                                      0
                                      C# 3.0 не поддерживается похоже, например var не подсвечивается как ключевое слово; с LINQ ситуация аналогичная.
                                        0
                                        Нет, пока не поддерживается.
                                        Надо добавлять ключевые слова.
                                        var и LINQ добавил.
                                        Проверь пожалуйста.
                                          0
                                          var работает, ключевые слова LINQ нет.
                                            0
                                            Можешь мне послать скриншот с кодом из VS на мыло (в профиле)?
                                            Я хочу посмотреть как это должно выглядеть.
                                              0
                                              Выслал.
                                                0
                                                Спасибо.
                                                Позже посмотрю.
                                        0
                                        Что-то с SQL как-то у него не комильфо (Нефига он не расставил инденты, не увеличил ключевые слова и зачем навтыкал пустых строк (я отключил флажок про перевод строки)):

                                          1: WITH super_foo AS
                                          2: 
                                          3: (select d1.dummy habr ,d2.dummy babr from dual d1 cross join dual d2)
                                          4: 
                                          5: select * from super_foo sf left outer join dual d on d.dummy = sf.habr
                                          0
                                          пустые строки у вас и были наверное в оригинале.
                                          Под форматированием я имел ввиду замену пробелов и табов в уже отформатированном коде на HTML.
                                            0
                                            Тогда все понятно с форматированием, а вот откуда взялись переводы строк — я не знаю.
                                              0
                                              Можешь мне на мыло (в профиле) кинуть то, что ты хотел подсветить?
                                              Я посмотрю почему это произошло..
                                          0
                                          Прикольно, только классы подсвечиваются както выборочно:)
                                            0
                                            Что конкретно не подсветилось?
                                              0
                                              Ну например Guid или StringWriter или TimeSpan, было бы прикольно сделать подсветку всех системных классов, а еще прикольнее тех которые в юзингах... Короче задача не из легких - полный анализ кода в идеале:)
                                                0
                                                Guid, StringWriter и TimeSpan вставил.
                                                Где бы получить весь список системных классов?
                                                  0
                                                  ну блин рефлекшн рулит:) и еще гугль рулит тоже:)
                                                  0
                                                  Мне кажется это лишнее. Системные классы будут подсвечены, пользовательские - нет. Возникнет некоторая путаница в сознании читателя, который не сразу сможет понять что к чему, если не знаком со стандартным классом.
                                                    0
                                                    Пользовательские должен подсвечивать пользователь:) Без подсветки классов совсем не интересно - таких простых сервисов как грязи...
                                              0
                                              вещь!!
                                              еслиб знал как ставить плусики в карму, сделал бы!!!
                                              0
                                              Notepad++ хорошо справляется с этой задачей (правда со стилями)
                                                0
                                                В этом то и беда.
                                                Хабраедиотр не понимает стилей.
                                                  0
                                                  Notepad++ -> Service(css2font) -> Habracode ))
                                                    0
                                                    что то я не понял, как это сделать. Не подскажете подробнее?
                                                      0
                                                      Вот что я имел ввиду:
                                                      в Notepad++ нажимаем "Дополнения->NppExport->Copy HTML to clipboard". Потом вставляем в какой-нибудь веб-сервис, который парсит стили и делает FONT вместо SPAN. Но это, конечно, ерунда. Правильней написать/дописать плагин к npp, который не использовал бы стили для экспорта.
                                                +2
                                                Писал комментарий, а он куда-то... Попробую повторить.

                                                Извините, но я долгое время использую SYHI

                                                Он поддерживает гораздо больше конструкций, но есть одно "НО", он не будет дружить с Хабром - CSS

                                                Пример:
                                                  0
                                                  Это уже что-то более похожие на правду и языков там не в пример больше.
                                                    0
                                                    Спасибо за ссылку!
                                                    С CSS у Хабраредактора проблемы.
                                                    0
                                                    Спасибо, очень не хватало =)
                                                      0
                                                      спасибо, удобная штука. Давно хотел у себя на блоге подсветку сделать :)
                                                        0
                                                        Большое спасибо! Сразу добавил в закладки.
                                                          0
                                                          Ухты! наконец-таки. Спасибо!
                                                            0
                                                            Кстати, а можно ли заиметь этот модуль, для личного пользования?
                                                          0
                                                          а можете помочь блогу mac os x dev и написать такой-же модуль для objective-C или хотя-бы рассказать как его самому написать?
                                                            0
                                                            Оригинал модуля можно скачать здесь.
                                                            Разбирайтесь.
                                                              0
                                                              большое спасибо, буду разбираться
                                                            0
                                                            вот интересно.. если я захочу копировать вот такой подсвеченный код... я сильно зе..усь удалять номера строк!?!?!
                                                              0
                                                              OMG!!!
                                                              wpAjax = jQuery.extend( {
                                                              преобразуется в
                                                                1: wpAjax = jQuery.extend( {

                                                              у меня погиб мозг :( а жаль... новый ведь был... практически
                                                                0
                                                                блин.... забыл опять что хабр так коряво всё воспринимает.... - короче там каждая буква в теге FONT - НАФИГА!?!?!?!
                                                                  0
                                                                  Писал уже здесь, что косяк известен. Починю, когда время будет.
                                                                    0
                                                                    Починил.
                                                                    Проверь пожалуйста.
                                                                  0
                                                                  Точно также, как искать 30ую строку в коде без нумерации.
                                                                    0
                                                                    Кстати, переписал нумерацию строк.
                                                                    Теперь можно копировать без проблем!
                                                                    0
                                                                    Не смог найти, как воспользоваться подсветкой.

                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                    Самое читаемое