Wymiana Geshi na Prism

14

@hauleth prawie 2 lata temu zgłosił zadanie związane ze zmianą biblioteki do kolorowania składni (https://github.com/adam-boduch/coyote/issues/323).

Wreszcie czas pozbyć się biblioteki która jest z nami niemal od początku. Niestety od dawna nie jest wspierana ani utrzymywana więc czas przesiąść się na coś nowszego.
Zadanie jest niemal ukończone więc zmiana będzie niedługo widoczna na serwerze.

screenshot-20190205190759.png

Z plusów:

  • Wsparcie dla nowych języków programowania
  • Numerowanie linii dla dłuższych listingów
  • Szybsze publikowanie posta (brak parsowania po stronie serwera przed zapisem)

Z minusów:

  • ~30 kB więcej w formie kodu JS
  • parsowanie po stronie klienta (kolorowanie składni może zająć pewien ułamek sekundy)
0

Ja chciałem nawet zrobić to samemu, ale niestety nie byłem w stanie dojść gdzie się rzeczy dzieją :(

0

Czy z punktu widzenia użytkownika coś się zmieni? Nie chodzi mi o lepszy efekt wizualny, ale raczej o samą obsługę tego nowego wynalazku.

0

Nie, z pkt widzenia użytkownika nic się nie zmieni.

1

Zauważyłem, że po edycji postu, który ma kod, kolorowanie składni nie działa i trzeba odświeżyć stronę.

0

Rzeczywiście. Trzeba wywołać ponownie funkcję kolorującą.

1

@Adam Boduch: zmiana na plus. Nie dość że kolorki ładniejsze (choć jeszcze nie widziałem kodów wszystkich języków), to jeszcze mamy w końcu nomerowanie linii i bez problemu można kopiować kod bez tego numerowania.

Nie wiem jak inni i jak inne przeglądarki, ale w moim przypadku praktycznie wszędzie kopiowanie numerowanego kodu działa źle. Po zaznaczeniu fragmentu i jego skopiowaniu, każda kopiowana linijka rozdzielona jest pustą linią, przez co w rzeczywistości do schowka trafia dwa razy dłuższy tekst (jeśli o liczbę linii chodzi) i trzeba ręcznie usuwać co drugą linię. A tutaj ten problem nie występuje, więc podwójny sukces. ;)


Czy nowa biblioteka wspiera kolorowanie składni większego zbioru języków programowania? Bo jeśli tak, to trzeba będzie je wszystkie ustalić i zaktualizować combobox do wyboru języka przy wstawianiu znaczników podczas pisania posta. To samo jeśli chodzi o Pastebin (chociaż ten to chyba jeszcze inną bibliotekę obsługuje).

1

Hmmm coś tu nie bangla - mam więcej niż 5 linijek kodu, a numerowania ni ma - https://4programmers.net/Forum/1566123

1

Ale znowu odstępy pomiędzy liniami w kodzie są tragicznie duże… Zmieniłem sobie za pomocą user css, więc gdyby ktoś też chciał mieć bardziej ”zagęszczony” kod to można to załatwić kilkoma linijkami:

code[class*="language-"], pre[class*="language-"] {
  line-height: 14px !important; /* tu własny rozmiar wysokości linii */
}

.line-numbers-rows > span {
  line-height: 14px !important; /* tu to samo, żeby numerowanie pasowało do kodu */
}

Miłe dla oka są nowe kolory – zmianę biblioteki uważam za bardzo udaną.

0
MasterBLB napisał(a):

Hmmm coś tu nie bangla - mam więcej niż 5 linijek kodu, a numerowania ni ma - https://4programmers.net/Forum/1566123

Post siedzi w cache. Nowe kolorowanie działa, bo jest po stronie front end. Poczekajmy aż się cache odświeży i będzie ok :)

Mogłem wyczyścić cały cache ale kilka GB cache by poszło i trzeba by było parsować wszystko od nowa, a tak to stopniowo samo się będzie czyściło i parsowało od nowa.

0

W tym poście – Import biblioteki DLL napisanej w C# do Delphi XE2 – nie ma numerowania we wszystkich czterech polach kodu, a w ostatnim polu kod nie jest kolorowany, mimo że znacznik delphi jest podany.

No dobra, poczekam na odświeżenie cache'u. :P

0

Prism jest fajny, stosowałem kilka razy, dodatkowo wygodny kompilator do dodawania odpowiednich dla siebie języków i kilka wersji kolorystycznych, przy mniejszej ilości języków da się zejść do 10-12kb (ale z oczywistych względów tutaj nie ma takiej opcji).

0

Kolorystyka kodu w starej bibliotece była paskudna – kod w języku C miał kolor kupy, a np. bash jakieś różowe paskudztwo. Tu jest znacznie, znacznie lepiej.

3

Czyli to moje zgłoszenie Dodanie numeru wiersza do bloku kodu w sumie można już zamknąć ^^

2

A w SQL klauzul nie zamienia na wielkie? Kicha... :)

0

Swift nie działa :( albo nie ma schematu kolorów dla niego.
A Prism go wspiera

struct Point {
    var x = 0.0, y = 0.0
    mutating func moveBy(x deltaX: Double, y deltaY: Double) {
        x += deltaX
        y += deltaY
    }
}

class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name: String?
    var count = 0

    func increment() {
        count += 1
    }
}

extension VideoMode {
}


let someResolution = Resolution()
let someVideoMode = VideoMode()

0

Swift jest na liście, może kwestia theme lub dopieszczenia implementacji.

https://prismjs.com/#languages-list

0

Tak, swift nie został dodany do listy :(

3

Niestety, ale będzie trzeba wyciągnąć konsekwencje :/

1

Brak załamania linii - brak suwaków, dla dłuższego kodu w jednej linii:

zrzut.png

Edit://
Brak suwaka występuje w PRYWATNEJ WIADOMOŚCI na forum działa.

0

Nie wiem jak u innych, ale na mikroblogach kolorowanie składni nie działa w ogóle. Kod co prawda jest w ramce, ale ani nie jest pokolorowany, ani nie posiada numerowania. :/

0

No dobra, a gdzie jest haczyk? ;-)

0

@Adam Boduch: Coś się sypie w komentarzach na mikroblogu.

0

@Hispano-Suiza: dobrze jest – na zrzucie widać, że użyto dwóch backticków zamiast jednego/trzech, dlatego formatowanie się popsuło. Odnalazłem ten wpis i widać został poprawiony, bo są trzy otwierające backticki, dzięki czemu formatowanie jest prawidłowe.

A skoro już o tym mowa – wystarczy jeden backtick otwierający i jeden zamykający, nie potrzeba trzech.

0

@Adam Boduch: odświeżam temat biblioteki Prism, ponieważ numery linii mają zbyt małe odstępy w pionie w stosunku do odstępów linii kodu; a więc przy kilku liniach kodu numery linii kończą się wizualnie przed końcem kodu. Ktoś o tym pisał na forum ostatnio, pamiętam, ale nie mogę znaleźć.

Tak to wygląda – zrzut ekranu (numerowanie kończy się wizualnie przed linią nr 16):

screenshot-20210219012332.png

Patrzę też obecnie na przykłady na stronie biblioteki Prism -> https://prismjs.com/plugins/line-numbers/. Nie jestem pewien, czy używają własnej biblioteki i tego pluginu, ale jeśli tak, to u nich wygląda to poprawnie. Zresztą na pierwszym zrzucie ekranu w tym wątku też wygląda to poprawnie -> Wymiana Geshi na Prism.

Czemu na screenie powyżej nie wygląda to poprawnie?

0

Jakbym miał obstawiać to jakaś właściwość CSS nadpisuje te z Prisma. Patrzę, patrzę i nie widzę. Czy ktoś widzi gdzie leży problem?

0

Chyba mam. Zobacz dla znacznika <pre> styl font-family: Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace (https://4programmers.net/css/core-fdceed833c745fc9dd34.css). Nie wiem, jak w innych przeglądarkach, ale na Firefoxie 85.0.1 jego wyłączenie zdaje się rozwiązywać problem.


PS Nie wiem jednak, czy problem jest z którąś konkretną czcionką, czy w ogóle z ustawieniem tego stylu, czy może z jakąś kombinacją czcionek.

0

@Marooned ma racje. Na Windows działa ok :) Sprawdzałem również na Chrome. Tutaj przykład: https://4programmers.net/Forum/Coyote/Test/349441-test?p=1748793#id1748793

1

Aczkolwiek na FF@Win7 mam pewne przesunięcie:
screenshot-20210223104910.png

1

Aktualizacja: jeśli chodzi o błąd nierównych linii z numerami linii i linii kodu, to jeśli chodzi o UX, wydaje się, że został on rozwiązany; tutaj link.

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