Kolorowanie i formatowanie kodu w <code> w runtime

7

Skoro tak idziemy w nowoczesność, przydatna była by możliwość sformatowania kodu znajdującego się w wątku i zmiany kolorowania.

http://oi40.tinypic.com/a42sy.jpg

Ludzie często walą suche <code> lub rzucają strasznie badziewnie sformatowanym kodem, proponowane przyciski dokonywały by tymczasowych zmian via AJAX. O ile formatowanie jest trudnym zagadnieniem (stąd imho niski priorytet dla tego fragmentu ficzera) zapewne mile widziana też opcja uruchom ten kod na ideone - na forum sporo się benchmarkuje i testuje, a ideone udostępnia API. Gdy jest wybrane kolorowanie, to język można jednoznacznie rozpoznać, więc raczej problemu z dwoma pozostałymi opcjami być nie powinno.

Co wy na to?

0

Rzeczywiscie - formatowanie kodu to zagadanienie. O ile do pojedynczych jezykow, znalazloby sie moze jakies open sourcowe biblioteki, to na pewno nie do wszystkich jezykow. Jest to zadanie z ktorym pewnie sobie nie poradzimy, a nawet jesli, to mysle, ze gra nie warta swieczki.

Natomiast jezeli chodzi o kolorowanie składni, to fajny pomysł i ja jestem za :)

0

Zdaje się że olesio kiedyś napisał jakiś program formatujący kod, to chyba nie takie trudne. Chociaż nie wiem, nigdy się nie brałem za to. A z tym ideone to raczej nie wypał bd bo raczej niewiele osób podaje cały kod, tylko jakieś urywki w których nie ma implementacji ewentualnych klas/struktur/modułów. Poza tym z tego co wiem ideone nie ma (jak już mówiłem) modułów w sobie (chyba) więc kod delphi czy jakichś innych zaawansowanych środowisk też nie pohula. Wiec moim zdaniem,
formatowanie kodu - tak
kolorowanie składni - tak
kompilacja online - nie

0

Przecież mówiłem, że to ma być głównie do użycia przy różnych benchmarkach, testach i kompletnych snippetach, a takich na forum jest sporo (może nie w dziale Delphi/Pascal, gdzie ciągle pytają się jak zmienić caption labela). Co do formatowania: każdy język ma inną składnię, jak widzisz formatowanie jednocześnie Haskella i PHP uniwersalnym skryptem? :|

0

if (CzusdLengydż == delfi) formatujDelfi else
if (CzusdLengydż == pehape) formatujPehape else
//[..]

problem zaimplementować formatowanie osobno dla każdego języka?

0

Będę wdzięczny jak napiszesz w czynie społecznym formatter do 62 języków.

0

Moim zdaniem nieco chybiony pomysł. Wg mnie lepiej zaraportować post, by moderator dodał 5 znaków do tagu <code> niż jakieś tymczasowe ajaxowe formatowanie. Także ten pomysł na minus.

Co do ideone, to się nie wypowiadam, w chwili obecnej stosunek neutralny.

0

Może pójść w inną stronę. Nie tworzyć interaktywnego edytora kodu źródłowego tylko formatować kod podczas wyświetlania postu, tak jak to jest z kolorowaniem składni. Po najechaniu myszką na blok kodu mogłaby się wyświetlać chmurka "włącz/wyłącz formatowanie". No i oczywiście feature byłby dostępny tylko dla wybranych języków...

0

Formatowanie kodu poki co odpada, chyba ze ktos napisze biblioteke do formatowania zrodel (cos takiego jak HTML Tidy tyle, ze dla wszystkich jezykow :D)

0

Dorzuciłem ankietę, choć sam przyznaję, że formatowanie jest mało realne :P Pomysł ma charakter draftu, najbardziej bym widział możliwość odpalenia w ideone i ewentualnie załączenia dodatkowych informacji o uruchomieniu pod odpalonym snippetem - ideone ma bardzo szerokie API.

0

jestem za wszystkimi trzema opcjami.
co do formatowania - można po prostu zrobić dla paru języków, i ew. dokładać kolejne języki później.
eclipse jest open source, js, css, php, javę ładnie formatuje (ok, js średnio ładnie, ale lepiej niż kod typu najpierw 3 wcięcia, potem żadnego, potem 10, potem 7 ....) - już na start można tam coś podejrzeć (tylko czy komuś się będzie chciało to portować do php/js? :P)

0

Ideone 3 razy tak!

Nie wszystkie kody można będzie jednak uruchomić tak po prostu, więc pewnie przydała by się możliwość wyłączenia tego ficzera dla konkretnego bloku code.

4

Druga opcja ankiety równie dobrze mogłaby brzmieć "czy jesteś za tym, żeby Adam kodował zamiast spać". ;)

4

Co do ideone, to rzadko kiedy ktoś zamieszcza cały program, a kawałek kodu wywali tylko tonę błędów.

0

Ale często snippety typu:

Zrób tak:

$wtf = array(1, 2, 5);

$suma = 0;
foreach($wtf as $thing) {
$suma += $thing;
}

echo $suma;

Tego typu rzeczy już się odpalą na ideone.

1

Ja proponuję użyć jakiś Highlight.js czy Google Code Prettify zamias ręcznego definiowania języków.

0

Mam dylemat w kwestii wizualnego rozwiazania dynamicznego kolorowania skladni. Postawilem na takie rozwiazanie:

7374391614f93c4b661dc3.png

Tzn. w prawym gornym rogu skrawka kodu pojawia sie ikonka (tylko wowczas, gdy autor postu nie ustawil kolorowania skladni "na sztywno"). Po naprowadzeniu kursora pojawia sie lista jezykow:

7675792754f93c51de935c.png

Po wybraniu jezyka - zmienia sie oczywiscie kolorowanie.
Feedback mile widziany.

0

Weź pod uwagę małe okno przeglądarki i długą listę.

0

Wiec co sugerujesz?

0

To ma się pokazać jednorazowo w poście czy przy każdej sekcji code?
Nie zapomnij, że mamy często mieszany kod w postach, tych bloków może być więcej każdy z innym kolorowaniem, np. <code class="php">, a kawałek za nim <code class="html">

3

Kilka pierwszych pozycji-najczęściej wykorzystywane języki: C, C++, Pascal, C#, Java, PHP, reszta po kliknięciu na "strzałkę".

2

Przy kazdym "skrawku" kodu, ktoremu autor nie przypisal danego "kolorowania". Czyli w przypadku, gdy user napisze po prostu <code> zamiast np. <code class="php"> - Adam Boduch dzisiaj, 17:30

To może dane statystyczne? Jeśli kilku userów z odpowiednim stażem i ilością postów wybierze to samo to automatycznie zamieniamy ;)

1
grizz napisał(a):

Kilka pierwszych pozycji-najczęściej wykorzystywane języki: C, C++, Pascal, C#, Java, PHP, reszta po kliknięciu na "strzałkę".

Dobry pomysl. Poki co kod jest w trunku czeka na dokonczenie i testowanie: http://dev.4programmers.net/Forum/Coyote/Test/195351-kolorowanie_skladni (login i haslo: testserv)
Zastanawiam sie, czy ten <div> nie powinien jednak pojawiac sie po naprowadzeniu kursora myszy nad kod zrodlowy.

0

Dobre, chodziło o to, że te języki byłyby pierwsze na rozwiniętej liście, a pod nimi strzałka, ale tak jest lepiej. Tylko można zrobić tą listę "reszty" na dwie kolumny, albo podzielić alfabetycznie: A->Asembler, Ada, B->...

napisał(a):

Zastanawiam sie, czy ten <div> nie powinien jednak pojawiac sie po naprowadzeniu kursora myszy nad kod zrodlowy.

Tak.

0

Czym się różni kolorowanie jQuery od JS? Imho to długaśne menu jak już to powinno być porozbijane na kilka kolumn (taka paleta). Na Operze nie działa, przetestuj sobie.

0
Marooned napisał(a):

Weź pod uwagę małe okno przeglądarki i długą listę.

Może prościej. Umieścić wszystko w 3-4 kolumnach. Dopasować prawy górny róg listy do prawego górnego rogu bloku kodu. Powinno się wszystko ładnie mieścić.

0

Lista jezykow jest posortowana alfabetycznie. Przetestowalem pod IE, Opera, FF i Chrome. W razie problemow, oczywiscie mozna pisac :))

0

http://4programmers.net/Forum/Newbie/197796-c++_rozne_obszary_pamieci_po_operacji_przypisania
Jeżeli ktoś kod umieści w znacznikach z kwadratowymi nawiasami ([code]) robi się chaos.

2

Przy okazji, należałoby trochę ujednolicić kolorystykę poszczególnych języków, obecnie delphi/pascal albo c/cpp mają zupełnie inne kolorowanie, podczas gdy te składnie różnią się w zasadzie tylko listą dodatkowych słów kluczowych.

4

Hey, jeśli ostatecznie zaakceptujecie pomysł integracji z Ideone to odezwijcie się do nas na adres [email protected] a postaramy się pomóc w tym. W tej chwili mamy gotową wtyczkę do phpBB, ale jak się domyślam tutaj się nie przyda. Michał

1 użytkowników online, w tym zalogowanych: 0, gości: 1