войти зарегистрироваться

.NET whois

индекс
93,75

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

Переписал и изменил (специально для Хабры, а точнее для .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: Исправлена нумерация строк кода. Теперь можно копировать код в буфер обмена без проблем.

комментарии (81)

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

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

      Нет не видел. Посмотрел немного. Дело в том, что он генерирует CSS, а Хабра редактор его не принимает. Только поэтому я решил переписать этот модуль.
  • 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>
    • Да, косяк..
      Посмотрю.
      Спасибо!
    • Починил.
      Проверь пожалуйста.
  • C# 3.0 не поддерживается похоже, например var не подсвечивается как ключевое слово; с LINQ ситуация аналогичная.
    • Нет, пока не поддерживается.
      Надо добавлять ключевые слова.
      var и LINQ добавил.
      Проверь пожалуйста.
      • var работает, ключевые слова LINQ нет.
        • Можешь мне послать скриншот с кодом из VS на мыло (в профиле)?
          Я хочу посмотреть как это должно выглядеть.
          • Выслал.
            • Спасибо.
              Позже посмотрю.
  • Что-то с 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
    • пустые строки у вас и были наверное в оригинале.
      Под форматированием я имел ввиду замену пробелов и табов в уже отформатированном коде на HTML.
      • Тогда все понятно с форматированием, а вот откуда взялись переводы строк — я не знаю.
        • Можешь мне на мыло (в профиле) кинуть то, что ты хотел подсветить?
          Я посмотрю почему это произошло..
  • Прикольно, только классы подсвечиваются както выборочно:)
    • Что конкретно не подсветилось?
      • Ну например Guid или StringWriter или TimeSpan, было бы прикольно сделать подсветку всех системных классов, а еще прикольнее тех которые в юзингах... Короче задача не из легких - полный анализ кода в идеале:)
        • Guid, StringWriter и TimeSpan вставил.
          Где бы получить весь список системных классов?
          • ну блин рефлекшн рулит:) и еще гугль рулит тоже:)
        • Мне кажется это лишнее. Системные классы будут подсвечены, пользовательские - нет. Возникнет некоторая путаница в сознании читателя, который не сразу сможет понять что к чему, если не знаком со стандартным классом.
          • Пользовательские должен подсвечивать пользователь:) Без подсветки классов совсем не интересно - таких простых сервисов как грязи...
  • вещь!!
    еслиб знал как ставить плусики в карму, сделал бы!!!
  • Notepad++ хорошо справляется с этой задачей (правда со стилями)
    • В этом то и беда.
      Хабраедиотр не понимает стилей.
      • Notepad++ -> Service(css2font) -> Habracode ))
        • что то я не понял, как это сделать. Не подскажете подробнее?
          • Вот что я имел ввиду:
            в Notepad++ нажимаем "Дополнения->NppExport->Copy HTML to clipboard". Потом вставляем в какой-нибудь веб-сервис, который парсит стили и делает FONT вместо SPAN. Но это, конечно, ерунда. Правильней написать/дописать плагин к npp, который не использовал бы стили для экспорта.
  • Писал комментарий, а он куда-то... Попробую повторить.

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

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

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

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