Javascript-форум (https://javascript.ru/forum/)
-   Сайт Javascript.ru (https://javascript.ru/forum/site/)
-   -   Перевод подсветки на highlight.js (https://javascript.ru/forum/site/7071-perevod-podsvetki-na-highlight-js.html)

Илья Кантор 13.01.2010 16:16

Перевод подсветки на highlight.js
 
Кто что думает? Никогда не пользовал...
http://softwaremaniacs.org/soft/highlight/

Плюсы - чистый код.
Можно поадаптировать к браузеру, размеру окна.

Минусы - загрузка файла, порядка 20к.. Больше пока не вижу.

Илья Кантор 13.01.2010 16:54

Еще опция: http://alexgorbatchev.com/wiki/SyntaxHighlighter

Dmitry A. Soshnikov 13.01.2010 17:11

На самом деле, без разницы - если скрипт хорошо работает, можно использовать. Раскрасить CSS-ом можно по-своему, если захочешь. Я не знаю, какая сейчас используется система для подсветки, лучше она или хуже.

Но, однозначно, иметь подсветку все остальных языков, было бы удобно.

B@rmaley.e><e 13.01.2010 18:33

Я использую SyntaxHighlighter. Немного допилил для правильной работы с табами, поправил схему подсветки, добавил подсветку регэкспов (кривоватую, правда).

Минусы, имхо, незначительны, т.к. файл закешируется (не забываем еще и о гзипе) и мешать никому не будет.

PeaceCoder 13.01.2010 20:07

Цитата:

Сообщение от Илья Кантор
Минусы - загрузка файла, порядка 20к.. Больше пока не вижу.

это минус? если не минус то скрипт должен 5к занимать? норм размер для таких возможностей подсветки.
Цитата:

Сообщение от B@rmaley.e><e
Я использую SyntaxHighlighter. Немного допилил для правильной работы с табами, поправил схему подсветки, добавил подсветку регэкспов (кривоватую, правда).

короче сделал свое по примеру =)

Octane 13.01.2010 20:30

SyntaxHighlighter падает от наличия enum-свойств в Object.prototype, а в highlight.js когда-то давно по моей просьбе была добавлена проверка hasOwnProperty :)

Илья Кантор 13.01.2010 22:21

alert('new highlight is here!');

Илья Кантор 13.01.2010 22:24

Пишите, если что не так при работе с новой подсветкой.. run привинчиваю..

Octane 13.01.2010 22:29

номера строк копируются :(

B@rmaley.e><e 13.01.2010 22:30

Octane, лучше копировать специальной кнопкой.

Dmitry A. Soshnikov 13.01.2010 22:32

Старые коды все сломались - и на форуме, и в блоге.

Илья Кантор 13.01.2010 22:34

Где ? Наверно это временно было..

Dmitry A. Soshnikov 13.01.2010 22:38

Цитата:

Сообщение от Илья Кантор
Где ?

О, а щас нормально стало. Надо было скриншот сделать ;) Возможно, я попал именно в тот момент, когда ты заливал новый функционал.

Илья Кантор 13.01.2010 22:39

Кстати, появился
def python:
  hehe

Dmitry A. Soshnikov 13.01.2010 22:40

Цитата:

Сообщение от Илья Кантор
Кстати, появился
def python:
hehe

Ага, отлично, подправлю статью ;)

Илья Кантор 13.01.2010 22:41

Еще побочный эффект - после AJAX-редактирования подсветка не работает у нового кода. Исправлю.

Илья Кантор 13.01.2010 23:09

Завтра доделаю run.
Как думаете, тулбар с копированием, запуском и т.п. лучше над кодом поместить или оставить сбоку?

Gvozd 13.01.2010 23:19

над кодом

Илья Кантор 14.01.2010 11:07

Должно работать run для javascript
alert("TEST")

Dmitry A. Soshnikov 14.01.2010 11:23

Сбоку тоже хороший вариант - не отвлекает от кода.

Dmitry A. Soshnikov 14.01.2010 11:51

Да, сбоку лучше, иначе на маленьких кодах отвлекает сильно (посмотрел, как смотрится в статьях, где подряд идут коды на пару-тройку строк). Можно проголосовать.

Также, в некоторых кодах, почему-то, нет номеров строк и этого меню вообще.

micscr 14.01.2010 12:07

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 40470)
Octane, лучше копировать специальной кнопкой.

Та что справа копирует в буфер весь код, а если выделенный только желательно?

Kolyaj 14.01.2010 12:13

С этими номерами строк классический случай "придумали проблему и мужественно её решаем", особенно учитывая, что они в большинстве случаев не нужны. Пришлось придумывать кнопку "Копировать". Да я Ctrl+C привык копировать, не надо меня переучивать. Если уж так сильно хочется номера строк, то сверстай так, чтобы они не копировались.

З.Ы. Это, разумеется, не Илье выпад, а всем создателям хайлайтеров, 99% этим страдают.

З.З.Ы. Илья, может их отключить можно?

B@rmaley.e><e 14.01.2010 12:14

Цитата:

Сообщение от Kolyaj
Если уж так сильно хочется номера строк, то сверстай так, чтобы они не копировались.

К слову: в первой версии sh так и было.

Илья Кантор 14.01.2010 13:37

Еще других правок по хайлайту хватает.

Если скажете, как можно сделать чтобы не копировались - сделаю.
Патченный хайлайтер велкам. Или файл стиля к нему..

Kolyaj 14.01.2010 13:50

Цитата:

Сообщение от Илья Кантор
Если скажете, как можно сделать чтобы не копировались - сделаю.

Убрать их, они никому не нужны.

Цитата:

Сообщение от Илья Кантор
Или файл стиля к нему..

Стили тут не помогут.

Илья Кантор 14.01.2010 14:01

Насчет никому не нужны - мне кажется, ты слишком категоричен...

Dmitry A. Soshnikov 14.01.2010 16:02

И, всё-таки, кнопки лучше в бок, как было в оригинале. Это дополнение (функционал) к коду, он не должен мешать просмотру кода.

PeaceCoder 14.01.2010 16:33

Цитата:

Сообщение от Илья Кантор
Насчет никому не нужны - мне кажется, ты слишком категоричен...

Согласен. номера строк позволяют лучше ориентироваться в коде, если строка длиннее ширины отображения, тогда видно что это продолжение старой строки а не начало новой.
На счет сбоку кнопки. когда наводишь курсор - они появляются и закрывают часть кода, если он на всю ширину.
Можно сделать след образом: выводить сбоку при наведении на код но меню расположить не горизонтально а вертикально по возможности.

PeaceCoder 14.01.2010 16:49

На счет подсветки.
http://javascript.ru/forum/events/69...html#post40526
Такое ощущение что там стоит white-space: nowrap и нет overflow: auto или перевода на новую строку под тем же номером (вся строка в диве например)

Илья Кантор 14.01.2010 17:22

Ctrl-F5 guys ;) Выложил новый вариант.

Меню вернул в бок, т.к. это действительно удобнее.
Кнопка "Запустить" там, где она есть, стоит сверху - это важно, т.к. она самая часто используемая + чтобы человек сразу видел возможность запуска.

Илья Кантор 14.01.2010 17:28

Над проблемой думаю http://javascript.ru/forum/events/69...html#post40526

Илья Кантор 14.01.2010 18:06

Поборол.

Riim 14.01.2010 18:06

Цитата:

Сообщение от Илья Кантор
Если скажете, как можно сделать чтобы не копировались - сделаю.

1. списком (ol, li), цифры хоть и выделяются, но в буфер все как надо попадает.
2. циферки из рисунка, который крепится background-ом (нужно будет правильно размер шрифта подбирать). Не такой уж плохой вариант как на первый взгляд кажется.

Kolyaj 14.01.2010 18:12

Цитата:

Сообщение от Riim
1. списком (ol, li), цифры хоть и выделяются, но в буфер все как надо попадает.

В FF копируются.

Илья Кантор 14.01.2010 18:22

Добавил кнопку "открыть в новом окне", там без списка.

Илья Кантор 14.01.2010 18:48

Да, и кнопку "убрать номера" - тоже добавил. Hope that makes you happy.

Осталось
TODO: просмотр HTML, AJAX-редактирование на форуме, выделение.

Выделение хочу сделать так:
Цитата:

*!*что-то важное*!*
будет выделять инлайн, т.е. в строке, а такое:
Цитата:

*!*
строка 1
мультилайн 2
*!*
будет выделять важное в многострочном виде.

Dmitry A. Soshnikov 14.01.2010 19:19

Меню появляется слева - там, где код - часть кода скрывается. Лучше справа, чтобы не мешало.

B~Vladi 14.01.2010 20:07

Он кроме текста, ключевых слов и ссылок больше ничего не понимает? Тоска... Хотя бы ещё цифры и основные DOM свойства/методы раскрашивал...

B@rmaley.e><e 14.01.2010 20:13

Цитата:

Сообщение от Riim
циферки из рисунка, который крепится background-ом (нужно будет правильно размер шрифта подбирать). Не такой уж плохой вариант как на первый взгляд кажется.

Так нельзя. Потому что строка может быть такой длинной, что разрастется на 2, 3 и более строк вниз.
Наглядный пример:
$('#state_checkboxes input[type=checkbox]').each(function(i){$(this).click(function(){if(!$(this).attr('checked')){if($('#state_checkboxes input[type=checkbox]:checked').length==0){$('#state_checkboxes input[type=checkbox]').not(this).attr('checked','checked')}}})});$('#type_checkboxes input[type=checkbox]').each(function(i){$(this).click(function(){if(!$(this).attr('checked')){if($('#type_checkboxes input[type=checkbox]:checked').length==0){$('#type_checkboxes input[type=checkbox]').not(this).attr('checked','checked')}}})});$('#own_checkboxes input[type=checkbox]').each(function(i){$(this).click(function(){if(!$(this).attr('checked')){if($('#own_checkboxes input[type=checkbox]:checked').length==0){$('#own_checkboxes input[type=checkbox]').not(this).attr('checked','checked')}}})});

B~Vladi, его несложно научить этому.


Часовой пояс GMT +3, время: 17:11.