ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Транспилятор в Си от Юрия » Подсветка синтаксиса для форума


Подсветка синтаксиса для форума

Сообщений 1 страница 30 из 117

1

MihalNik написал(а):

Внешний вид исходников логично было бы наложить через JS, но для этого нужен разборщик на JS.

Отредактировано MihalNik (2022-05-13 08:16:04)

По-настоящему подсветка будет работать, если включать JS-скрипт на стороне сервера. Тогда он будет обрабатывать все блоки кода на странице. Со стороны пользователя тоже можно, но уже более ограниченно. Придется вставлять и скрипт и CSS и исходник в блок [html]. В общей структуре это будет iframe. К сожалению он не очень хорошо отображается на мобильных устройствах.
В ближайшее время попробую поэкспериментировать со скриптами.

0

2

Не знаю, как здесь, а на вече.программирование-по-русски.рф развёрнут PhpBB на хостинге, который можно поменять как надо, т.к. движок полностью доступен для правок. Если есть желание, могу развернуть пробный сайт с phpbb и дать ftp доступ. Заодно было бы интересно раскрасить и активный оберон, работающий вариант для VS Code у меня где-то валялся. Да и ещё кое-что интересное можно сделать.

Отредактировано БудДен (2022-05-17 22:16:10)

0

3

[html]<!DOCTYPE html>
<html>
<head>
<title>Lite Syntax Highlighting</title>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<style>
    body {
    background:#fafafa;
    margin:0;
    }
    .wrapper {
    width:960px;
    margin:0px auto;
    padding:20px;
    background:#fefefe;
    border:1px solid #f1f1f1;
    }
    pre {
    padding: 5px;
    background: #2b211c;
    font-family:'Courier New';
    font-size: 12px;
    position: relative;
    max-height: 500px;
    overflow: auto;
    display: block;
    word-wrap: normal;
    color: #a9b7c6;
}

pre.slh__c:before {
    content: '<C>';
}

pre.php:before, pre.slh__php:before, pre.js:before, pre.slh__js:before, pre.css:before, pre.slh__css:before, pre.html:before, pre.slh__html:before, pre.slh__c:before {
    position: absolute;
    display: block;
    top: 5px;
    right: 5px;
    font-size: 16px;
    color: #05D105;
    opacity: 0.5;
}

pre .code-comments {
    color:#707070;
    font-style:italic
}

pre .code-tags {
    color: #e8bf6a;
}

pre .code-attribute {
    color: #bababa;
}

pre .code-quotes {
    color:#80ff80;
    font-style:italic;
}

pre .code-var, pre .code-style {
    color: #9876aa;
}

pre .code-operator  {
    color:#f6f080;
}
pre .code-types  {
    color:#ffaa00;
}
pre .code-number {
    color:#ff3a83;
}
pre .code-class, pre .code-pseudo, pre .code-id {
    color: #ffc66d;
}
   
    h1 {margin:0 0 20px 0;}
</style>
</head>
<body>
<div class="wrapper">
    <h1>Подсветка синтаксиса языка С/С++</h1>
   

    <h2>С/С++</h2>
    <pre class="slh__c">//===========================================================
// Файл:    ASTtree.r
// Версия:    1.01
// Дата:    10:44 07.05.2022
// Описание: Тестовый пример для проверки подсветки синтаксиса
//        русифицированного и стандартного С/С++
// Автор:
//===========================================================
#вставка "ASTtree.h"    //пока не работает
#include "token_names.h"    //пока не работает
//==========================================================
// Тестовая функция
//==========================================================
пуст Проверить(беззнак длин цел *дерево)
{
цел а = 25;

двойн температура = 36.6; //пока не работает
double temp = 36.6;    //пока не работает

симв строка = "Это строка\n";
char    str = "\"Это строка\"";
     строка = "Это строка\\";
     строка = "Это строка\\\"";
    
симв16 строка = L"Это тоже строка";
wchar     str = L"\"Это строка\"";

    
}

    </pre>
</div>
<script type="text/javascript" >//src="liteHighlighting.js"

function backlightC(txt) {
    var comments = [];
    txt = txt
        .replace(/(^.*[\\]?)(\/\/[^\n\r]*(\n|\r\n))/gm, function (match, p1,str) {
            var l = comments.length;
            comments.push(str);
            return p1+'~~~COMM' + l + '~~~ ';
        }).replace(/\/\*[\s\S]*?\*\//g, function (str) {
            var l = comments.length;
            comments.push(str);
            return '~~~COMM' + l + '~~~ ';
        })
       
        .replace(/(\(|\s|\!|^)(bool|char|wchar|short|unsigned|signed|void|int|long|float|double)(\)|\s|\!|=|\*|\()/g, '$1<span class="code-types">$2</span>$3')
        .replace(/(\(|\s|\!|^)(цел|логич|симв|симв16|корот|знак|беззнак|длин|плав|двойн|пуст)(\)|\s|\!|=|\*|\()/g, '$1<span class="code-types">$2</span>$3')
        .replace(/(\(|\s|\!|^|\[)([0-9]*)(\)|;|\]|\s|\!|=|\()/g, '$1<span class="code-number">$2</span>$3')
        .replace(/(\(|\s|\!|^)(auto|struct|break|else|switch|case|enum|register|NULL|typedef|extern|return|union|const|continue|for|default|GOTO|sizeof|volatile|do|if|static|while)(\);||\s|\!|=|\()/g, '$1<span class="code-operator">$2</span>$3')
        .replace(/(\(|\s|\!|^)(если|иначе|для|пока|цикл|выбор|вариант|прервать|вернуть|прочее|заново)(\);||\s|\!|=|\()/g, '$1<span class="code-operator">$2</span>$3')
        //.replace(/(=|\s|\(|\t)((L"|")(?:[^"\\]|\\.)*")/g, '$1<span class="code-quotes">$2</span>')
        .replace(/(=|\s|\(|\t)(L"|")([^(code\-)](?:[^"\\]|\\.)*)"/g, '$1<span class="code-quotes">$2$3"</span>')
        .replace(/~~~(COMM)([0-9]*?)~~~ /g, function (reg, str, num) {
            return '<span class="code-comments">' + comments[num] + '</span>';
        })
    ;
    return txt;
}
jQuery(document).ready(function () {
    jQuery('pre.slh__c').each(function () {
        var safe = {
            '<': '&lt;',
            '>': '&gt;'
        };
        var txt = jQuery(this).html();
        txt = txt
           // .replace(/<!--\?php/g, '<?php')
           // .replace(/\?-->/g, '?>')
            .replace(/[\<\>]/g, function (m) {
                return safe[m];
            });
        jQuery(this).html(txt);
    });

    jQuery('pre.slh__c').each(function () {
        var txt = jQuery(this).html();
        txt = backlightC(txt);
        jQuery(this).html(txt);
    });
});
</script>
</body>
</html>[/html]
Ух, регулярки это песня!
Нужно найти все строки в двойных кавычках, кроме начинающихся с "code- ... Такая регулярка /(=|\s|\(|\t)(L"|")([^(code\-)?](?:[^"\\]|\\.)*)"/g  не справляется

0

4

БудДен написал(а):

Не знаю, как здесь, а на вече.программирование-по-русски.рф развёрнут PhpBB на хостинге, который можно поменять как надо, т.к. движок полностью доступен для правок. Если есть желание, могу развернуть пробный сайт с phpbb и дать ftp доступ. Заодно было бы интересно раскрасить и активный оберон, работающий вариант для VS Code у меня где-то валялся. Да и ещё кое-что интересное можно сделать.

Отредактировано БудДен (Сегодня 22:16:10)

Готов попробовать. Но нужно будет время, чтобы въехать в тему.

0

5

словарь.программирование-по-русски.рф , в личку отправил данные для входа.

Имя такое по техническим причинам - у них там на хостинге что-то глючит, пришлось переиспользовать ранее удалённое имя.

Отредактировано БудДен (2022-05-17 23:31:31)

0

6

Что-то пошло не так... Пока не могу зайти администратором форума почему-то.

0

7

Поправил.

0

8

БудДен написал(а):

Не знаю, как здесь, а на вече.программирование-по-русски.рф развёрнут PhpBB на хостинге, который можно поменять как надо, т.к. движок полностью доступен для правок. Если есть желание, могу развернуть пробный сайт с phpbb и дать ftp доступ. Заодно было бы интересно раскрасить и активный оберон, работающий вариант для VS Code у меня где-то валялся. Да и ещё кое-что интересное можно сделать.

Отредактировано БудДен (Вчера 22:16:10)

В качестве первого шага включил подсветку стандартных языков. Для дальнейших модификаций нужно поподробнее изучить скриптик... на полторы тыщи строк) А он, гад, совсем не на русском...

0

9

Где скриптик лежит, имя файла какое? Предположительно, ext/xaocz/higlightjs/styles/prosilver/template/prettify.js

Думается, если надо сделать другой Си, то нужно просто заполнить таблицы ключевых слов в начале файла и где-то добавить ещё один язык.
Вникать во весь скрипт для этого необязательно. Проблемой будет, если движок не поддерживает кириллицу.

Также собрал пару сложных случаев здесь: вече.программирование-по-русски.рф/viewtopic.php?f=2&t=580

Вложенные комментарии для Си не нужны, а вот для Оберона они очень даже нужны. Также там есть ссылка на регекспы для C++ - ных строк (не знаю, насколько они там хороши).

А так-то для серверной стороны вроде есть https://packagist.org/packages/scrivo/highlight.php , поддерживает 185 языков. Не то, чтобы я его пробовал, но в prettify.js что-то совсем уж мало языков.

Хотя он портирован с JS опять же, а тот, в свою очередь - https://highlightjs.org/

Круг замкнулся. Ладно, я спать.

Отредактировано БудДен (2022-05-19 00:38:23)

0

10

БудДен написал(а):

Предположительно, ext/xaocz/higlightjs/styles/prosilver/template/prettify.js

Он самый. Перебрал вчера несколько вариантов. Идеального, как всегда нет. Нужно выбрать какой-то компромисс. Я предлагаю следующий вариант: отделить подсветку синтаксиса русскоязычного семейства языков от стандартных. Для стандарта использовать просто {code}, для наших {code=oberon} или {code=ru} (вместо фигурных скобок подразумеваются квадратные). Ну или наоборот: для наших просто {code}, для стандарта {code=en}. И для русского семейства сделать свой отдельный скрипт, а не пристраивать кривые костыли. Даже два скрипта на JS будут весить меньше, чем сформированная на сервере подсветка. По этой причине от варианта на php отказываемся. Почему еще хочется разделить на две части? Автоопределение стандартных языков и так путается, а тут и вовсе сойдет с ума. Со скриптом мне более или менее понятно, осталось разобраться с BBCode. Теоретически, еще что-то, кроме русифицированного С/С++ и Оберона, включаем в скрипт?

0

11

Самое простое и, так сказать, болшевистское решение - это подсвечивать только русскоязычные ЯП, перепахав скриптик под себя. В скрипт вполне можно ещё включить ШАЯ, 1С и даже Эль-76. Также у нас тут были авторы Картарики и Санду - можно их попросить сделать подсветку под себя, если им интересно.

Отредактировано БудДен (2022-05-19 14:51:33)

0

12

БудДен написал(а):

Самое простое и, так сказать, болшевистское решение - это подсвечивать только русскоязычные ЯП, перепахав скриптик под себя. В скрипт вполне можно ещё включить ШАЯ, 1С и даже Эль-76. Также у нас тут были авторы Картарики и Санду - можно их попросить сделать подсветку под себя, если им интересно.

Отредактировано БудДен (Сегодня 14:51:33)

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

0

13

А кстати, а нельзя развернуть тестовую копию этого форума? Чтобы тренироваться в условиях приближенных к реальным.

0

14

Евгений написал(а):

А кстати, а нельзя развернуть тестовую копию этого форума? Чтобы тренироваться в условиях приближенных к реальным.

Так а почему прямо сюда нельзя? Ну или в отдельной теме.

0

15

Мне нужно поэкспериментировать с настройками форума. Желательно это сделать в безопасном режиме. А потом уже настроить этот форум. А сам скрипт и ход разработки я обязательно покажу. словарь.программирование-по-русски.рф
Здесь первые эксперименты. Но тестовый форум имеет отличия от здешнего.

Отредактировано Евгений (2022-05-19 18:14:02)

0

16

Пока решаются некоторые технические моменты, у меня для вас, уважаемые эксперты, интеллектуальная задачка. Нужна функция или алгоритм, достаточно шустрый, для идентификации принадлежности кода к тому или иному ЯП. В нашем случае русскоязычного или двуязычного. Какие будут идеи?

0

17

Нужна функция или алгоритм, достаточно шустрый, для идентификации принадлежности кода к тому или иному ЯП.

А зачем? Ну и пусть будет сделано только для одного, Вами используемого ЯП.

0

18

MihalNik написал(а):

А зачем?

Нужно стараться делать хорошо.) Плохо само получится.

0

19

Можно просто делать поэтапно, с кривой обучения:

* сделать поддержку только одного русскоязычного языка
* сделать поддержку двух русскоязычных, с ручным указанием языка
* сделать поддержку русскоязычных и англоязычных
* сделать автораспознование

Результат будет тот же, но разбиение задачи на более мелкие поможет двигаться более плавно и на самом деле быстрее.
И кстати, при работе с регулярками очень-очень помогает сайт regex101.com, если нас там ещё не забанили.

Отредактировано БудДен (2022-05-20 11:26:00)

0

20

Евгений написал(а):

Нужно стараться делать хорошо.

Распыление сил обычно не ведет к качеству.

0

21

Можно просто делать поэтапно, с кривой обучения:

Примерно по такому плану я и собирался двигаться.
Про regex101.com знаю и пользуюсь.

Отредактировано Евгений (2022-05-20 12:42:33)

0

22

Здесь можно будет посмотреть результаты
Сверху подсветка стандартного С. Внизу будет наша.

Делать буду пока в темной теме. Потом поменяем, если что...

Отредактировано Евгений (2022-05-20 15:37:38)

0

23

highlight.js Скрипт подсветки. Состояние на настоящий момент. Буду обновлять по мере продвижения вперед. Был странный глюк, когда подсветка сломалась в одном из браузеров. Но потом все заработало. Если у кого-нибудь повториться - напишите.
Добавлена подсветка символьных констант. Исправлена для строк.
Добавлена подсветка ключевых слов, типов, функций, одно- и многострочных макросов и символов операций. Чем дальше в лес, тем кудрявее регулярки.)
Код обновлен 24.05.22
Исправлены  случаи:
Строка в кавычках в комментарии
Комментарий внутри строки
Макрос внутри строки
Однострочный комментарий внутри многострочного
Многострочный комментарий внутри однострочного

Код:
// Скрип подсветки синтаксиса руссифицированного С/С++
// Версия 1.02    24.05.2022
function highlightC(txt) {
    var mcomments = [];
    var comments = [];
    var literal = [];
    var macro = [];
    var number = 1;
    txt = txt
 // Заменяем табуляцию на 4 пробела   
        .replace(/\t/g, '    ' )
// Вырезаем одно и многострочные макросы и помещаем в массив   
        .replace(/(?<=\n|\r|^)([ ]*)(#([^\n\r@\/]|\\|((?<=\\)\n|\r\n)|\/[^\/\*])*)(?=\/\/|\/\*|@|\n|\r\n)/gm, function (match, pm, str) { 
            var l = macro.length;
    	str = str
// Нужно "порубить" многострочные макросы построчно 
    	.replace(/((\r|\n)\n*)/g,'</span>$1<span class="code-macro">');
            macro.push(str);
            return pm + '@@@MACRO' + l + '@@@ ';
        })
  // Вырезаем строки в двойных кавычках и символьные константы в одиночных  и помещаем в массив
 // Строки и символьные константы, содержащие конец строки не обрабатываются   
       .replace(/(?<!\\|2|6)(L?("|')(?:[^"'\\\n\r]|\\.)*\2)/g, function (match, str) {
            var l = literal.length;
            literal.push(str);
            return '@@@STR' + l + '@@@ ';
        })
// Вырезаем многострочные комментарии и помещаем в массив   
        .replace(/\/\*[\s\S]*?\*\//g, function (str) {
            var l = mcomments.length;
            str = str
// Вставляем вырезанные строки назад в комментарии без подсветки
            .replace(/@@@(STR)([0-9]*?)@@@ /g, function (reg, str, num) {
            return  literal[num];
        	})
// Вставляем вырезанные макросы назад в комментарии без подсветки
            .replace(/@@@(MACRO)([0-9]*?)@@@ /g, function (reg, str, num) {
            return  macro[num];
        	})
// Нужно "порубить" многострочные комментарии построчно  
    	.replace(/((\r|\n)\n*)/g,'</span>$1<span class="code-comments">')
    	mcomments.push(str);
            return '@@@MCOMM' + l + '@@@ ';
        })
// Вырезаем однострочные комментарии и помещаем в массив 
        .replace(/(^.*[\\]?)(\/\/[^\n\r]*(?=\n|\r\n|$))/gm, function (match, p1,str) {
            var l = comments.length;
            str = str
// Вставляем вырезанные строки назад в комментарии без подсветки
    	.replace(/@@@(STR)([0-9]*?)@@@ /g, function (reg, str, num) {
             return  literal[num];
        	})
    	comments.push(str);
            return p1+'@@@COMM' + l + '@@@ ';
        })

 // Ищем и подсвечиваем типы  (\(|\s|\!|^)     
        .replace(/\b(auto|bool|char|const|double|float|int|long|mutable|register|short|signed|static|unsigned|void|wchar_t)\b/g, '<span class="code-types">$1</span>')
        .replace(/(?<![0-9а-яёЁ_])(автоматич|автом|беззнак|двойн|длин|знак|измен|конст|короткий|логич|плав|пуст|регистр|симв|симв16|статич|цел)(?=[^0-9а-яёЁ_])/g, '<span class="code-types">$1</span>')

// Ищем и подсвечиваем числовые константы 
// 	Целые и с плавающей точкой стандарт + русские 'еЕ'     
        .replace(/(?<![a-zA-Z\d\"а-яА-ЯёЁ_\.])(\d+([.]\d*)?([eEеЕ][+-]?\d+)?|[.]\d+([eEеЕ][+-]?\d+)?)(?![a-zA-Z\d\"а-яА-ЯёЁ_\.])/g, '<span class="code-number">$1</span>')
//  Шестнадцатиричные стандарт
        .replace(/(?<![a-zA-Z\d\"а-яА-ЯёЁ_\.])((?:0[xX])[0-9a-fA-F]*)(?![a-zA-Z\d\"а-яА-ЯёЁ_\.])/g, '<span class="code-number">$1</span>')
//  Шестнадцатиричные русские
        .replace(/(?<![a-zA-Z\d\"а-яА-ЯёЁ_\.])((?:16\")[0-9a-fA-FабцдефАБЦДЕФ]+)(?![a-zA-Z\d\"а-яА-ЯёЁ_\.])/g, '<span class="code-number">$1</span>')
//  Двоичные русские+стандарт
        .replace(/(?<![a-zA-Z\d\"а-яА-ЯёЁ_\.])((?:(2\")|(0b))[01_]+)(?![a-zA-Z\d\"а-яА-ЯёЁ_\.])/g, '<span class="code-number">$1</span>')

 // Ищем и подсвечиваем операторы       
        .replace(/\b(break|case|catch|continue|default|do|else|for|goto|if|return|sizeof|switch|throw|try|while)\b/g, '<span class="code-oper">$1</span>')
        .replace(/(?<![0-9а-яёЁ_])(вариант|вернуть|выбор|для|если|заново|иначе|исключ|контроль|отмена|перехват|переход|пока|прервать|прочее|цикл)(?=[^0-9а-яёЁ_])/g, '<span class="code-oper">$1</span>')
 // Ищем и подсвечиваем ключевые слова     
        .replace(/(?<!(<span ))(class)/g, '<span class="code-keyword">$2</span>')
        .replace(/\b(enum|explicit|extern|friend|inline|namespace|new|operator|private|protected|public|struct|template|this|typedef|union|using|virtual)\b/g, '<span class="code-keyword">$1</span>')
        .replace(/(?<![0-9а-яёЁ_])(виртуал|внеш|доступ|друг|защищ|использ|класс|новый|область|объединение|операция|перечисл|переч|подстав|скрытый|скрыт|создать|структура|тип|шаблон|этот|явный)(?=[^0-9а-яёЁ_])/g, '<span class="code-keyword">$1</span>')
 // Ищем и подсвечиваем функции     
        .replace(/(?<![a-zA-Z\d\"а-яА-ЯёЁ_\.])((?:[a-zA-Zа-яА-ЯёЁ_])[a-zA-Zа-яА-ЯёЁ_0-9]*)(?=( *\((?![^\(]*\) *\()))/g, '<span class="code-funct">$1</span>')
// И круглые скобки
        .replace(/(((\(\s*)+\)?)|((\)\s*)+))/g, '<span class="code-funct">$1</span>')
// В числовых константах переподсвечиваются символы - и . (тебует исправления!)
// Ищем и подсвечиваем символы операций 
// Особые случаи - = /
/* - */ .replace(/(?<!(\"code))(-)(?![\d]*<\/span>)/g, '<span class="code-types">$2</span>')
/* = */ .replace(/(?<!(<span class))(=)/g, '<span class="code-types">$2</span>')
/* / */ .replace(/(?<!(<))(\/)/g, '<span class="code-types">$2</span>')
/* . */ .replace(/(?<!<span class=\"code-number\">\d*)(\.)(?![\d]*<\/span>)/g, '<span class="code-types">$1</span>')

//  -|  /|%|      <<|       <<=|      <=|  <|   |>>|     >>=|      >=|  ->|   >|    &&|       &=|    &|    ++| +| --| *=|*| ==| +=|-=|/= |%=|%|^=| !=| ^| ?|,|::|:|;| [| ]|~|     ( )|	      
     .replace(/(&lt;&lt;|&lt;&lt;=|&lt;=|&lt;|&gt;&gt;|&gt;&gt;=|&gt;=|-&gt;|&gt;|&amp;&amp;|&amp;=|&amp;|\+\+|\+|--|\*=|\*|==|\+=|-=|\/=|%=|%|\^=|!=|\^|\?|,|::|:|;|\[|\]|~|{|}|\|\||\|)/g, '<span class="code-types">$1</span>')
// Вставляем на место и подсвечиваем однострочные комментарии      
       .replace(/@@@(COMM)([0-9]*?)@@@ /g, function (reg, str, num) {
            return '<span class="code-comments">' + comments[num] + '</span>';
        })  
// Вставляем на место и подсвечиваем многострочные комментарии      
       .replace(/@@@(MCOMM)([0-9]*?)@@@ /g, function (reg, str, num) {
            return '<span class="code-comments">' + mcomments[num] + '</span>';
        })  
  // Вставляем на место и подсвечиваем строки, простые и "широкие"       
       .replace(/@@@(STR)([0-9]*?)@@@ /g, function (reg, str, num) {
            return '<span class="code-quotes">' + literal[num] + '</span>';
        }) 
// Вставляем на место и подсвечиваем макросы      
       .replace(/@@@(MACRO)([0-9]*?)@@@ /g, function (reg, str, num) {
            return '<span class="code-macro">' + macro[num] + '</span>';
        }) 
   // Добавляем нумерацию строк
        .replace(/((\r|\n)\n*)/g, function (reg, str) {
         str = '</li><li class="LO'+number+'">'
        if(number == 0)
        	{number++;}
        else{number--;}	 
       	return str;
        });
   // Прибавляем открывающий тэг для первой и закрывающий для последней строки 
    txt = '<ol><li class="L00">'+txt + '</li></ol>'; 
    return txt;
}

jQuery(document).ready(function () {
   jQuery('code.russian').each(function () {
        var txt = jQuery(this).html();
        txt = highlightC(txt);
        jQuery(this).html(txt);
    });
});

Отредактировано Евгений (2022-05-24 23:48:43)

0

24

Наш скрипт заметно продвинулся вперед. Осталось совсем немного. Осталось довести до ума числовые константы, подсветить макросы и символы операций. Есть ли замечания или пожелания по внешнему виду подсвеченного кода? А вот нумерация только до 999, а дальше сначала... Критично ли?

Отредактировано Евгений (2022-05-22 00:40:01)

0

25

Я за светлую тему. Нумерация до 999 для форума вполне норм.

0

26

БудДен написал(а):

Я за светлую тему.

Поконкретнее бы, какую именно светлую... То, что в стандарте и то, что я попробовал переделать мне совсем не нравится. На телефоне ещё ничего, а на мониторе совсем плохо цвета различаются. А скрипт готов к обкатке.

Отредактировано Евгений (2022-05-23 22:16:39)

0

27

Интересно, что Лис думает о том, чтобы включить подсветку на этом форуме... Скрипт в основном готов. Если все заработает можно говорить о добавлении других ЯП. Пример, как выглядит см. выше.

0

28

На тестовом форуме выложил исходник скрипта и файл CSS.
На стареньком IPad скрипт не работает, на остальных устройствах вроде нормально. Почему не работает пока не понимаю...

0

29

Евгений написал(а):

Интересно, что Лис думает о том, чтобы включить подсветку на этом форуме...

Лис думает, что дополнительно к css и js нужен еще пример самого кода, чтобы увидеть - получилось настроить, или не получилось.

Код:

целое начало(int колво, знак** строки)
{
    вернуть 0;
}

я добавил css и js (можно посмотреть в коде), но оно не сработало,
потому что я не разбирался с этим кодом.

Другими словами, ещё нужно описание в виде текста, как оно должно работать (и ещё можно - как его встраивать в форум).

Отредактировано Лис (2022-05-27 21:23:44)

0

30

Шаг первый: включаем подсветку для стандартных языков. Инструкция
Скачать->распаковать и скопировать в папку ext->   
  Включить расширение HighlightJs
Для включения расширения нужно зайти в админскую панель на вкладку Персонализация

Отредактировано Евгений (2022-05-27 23:52:57)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Транспилятор в Си от Юрия » Подсветка синтаксиса для форума