.NET

индекс
121,07

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

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

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

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

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

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

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

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

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

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

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