Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-11-16 22:58:39

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

program typu pager, kolorowanie składni

Znam trzy tego typu programy, od bardzo prymitywnych (more), przez niewiele mniej prymitywne (less), po byłby-super-gdyby-tylko... (most).

Most zasadniczo mi się podoba, ale odczuwam brak jednej możliwości — kolorowania składni. Zna ktoś jakiś pager, który potrafi to robić?

Odpowiedź: hej, możesz otworzyć plik w emacsie w trybie tylko do odczytu! nie jest punktowana. :)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#2  2008-11-16 23:30:32

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: program typu pager, kolorowanie składni


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#3  2008-11-17 00:41:01

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: program typu pager, kolorowanie składni

Niezbyt uśmiechała mi się instalacja vima (całe 25 MB) tylko i wyłącznie by zrobić z niego pager. Jednak poszedłem tym tropem i znalazłem te dwa wpisy:
http://machine-cycle.blogspot.com/2007/10/syntax-hi … ng-pager.html
http://machine-cycle.blogspot.com/2008/02/syntax-hi … reloaded.html

Tak więc stanęło na:

Kod:

highlight -A plik | most

później zrobię sobie z tego funkcję. Szkoda jedynie, że highlight nie chce współpracować z most -C, ale cóż... (dopisek: właściwie nic w tym dziwnego :])

PS. Czemu w FAQ robisz dowiązania i zmieniasz PATH, skoro wystarczyłoby dać alias vless='/usr/share/vim/vimcurrent/macros/less.sh'?

Ostatnio edytowany przez azhag (2008-11-17 00:51:02)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#4  2008-11-17 08:17:28

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: program typu pager, kolorowanie składni

Hehe, to było ponad dwa lata temu jak pisałem to faq. Z resztą to nie był mój pomysł, co jest tam napisane. :)

BTW. Nie chcę uchodzić za malkontenta, ale highlight to mało co obsługuje i to jest zwykły konwerter. Vim w zestawie debianowym oferuje ponad 500 różnych składni - języków programowania, plików konfiguracyjnych, języków znaczników, changelogów, szblonów różnych framworków webowych. itp. IMHO warto poświęcić 25 MB dla takich możliwości. :)


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#5  2008-11-18 17:46:48

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: program typu pager, kolorowanie składni

Mimo wszystko nie potrzebuję dwudziestopięciomegowego pagera. Bo jako edytor vim zupełnie odpada. ;)

Nabazgrałem sobie taki skrypt, może komuś się przyda:

Kod:

#!/bin/sh

if which most >/dev/null 2>&1 ; then
    PAGER='most'
elif which less >/dev/null 2>&1 ; then
    PAGER='less -r'
elif which more >/dev/null 2>&1 ; then
    PAGER='more'
else
    echo "No pager found!"
    exit 1
fi

if [ -z "$2" ]; then
    # only one file
    highlight -A ${1} | eval $PAGER
else
    # more files
    while [ ! -z "$1" ]; do
        highlight -A ${1} > /tmp/${1}.pager.ansi
        shift 1
    done
    eval $PAGER /tmp/*.pager.ansi
    rm -f /tmp/*.pager.ansi
fi

Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#6  2008-11-18 19:17:20

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: program typu pager, kolorowanie składni

Jedna uwaga. Jak się chce wyświetlić plik, którego składni hightlight nie rozpozna, np. jakiś zwykły plik tekstowy to jest pusto w pagerze. Takie pliki mogło by puszczać bezpośrednio na pager.


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#7  2008-11-19 23:54:52

  Graffi - Użytkownik

Graffi
Użytkownik
Skąd: Sulejówek
Zarejestrowany: 2005-10-03
Serwis

Re: program typu pager, kolorowanie składni

a teraz naprawić mc żeby pod F4 był mcedit a nie vim?
bo mi się to zpsuło...

Offline

 

#8  2008-11-20 00:20:48

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: program typu pager, kolorowanie składni

Graffi napisał(-a):

a teraz naprawić mc żeby pod F4 był mcedit a nie vim?
bo mi się to zpsuło...

menu > opcje > konfiguracja > wewnętrzny edytor

czadman napisał(-a):

Jedna uwaga. Jak się chce wyświetlić plik, którego składni hightlight nie rozpozna, np. jakiś zwykły plik tekstowy to jest pusto w pagerze. Takie pliki mogło by puszczać bezpośrednio na pager.

opcja --force + przekierowanie stderr do null robi co trzeba :) (wcześniej jakoś mi umknął ten post)

Kod:

#!/bin/sh

if which most >/dev/null 2>&1 ; then
    PAGER='most'
elif which less >/dev/null 2>&1 ; then
    PAGER='less -r'
elif which more >/dev/null 2>&1 ; then
    PAGER='more'
else
    echo "No pager found!"
    exit 1
fi

if [ -z "$2" ]; then
    # only one file
    highlight --force -A ${1} 2>/dev/null | eval $PAGER
else
    # more files
    while [ ! -z "$1" ]; do
        highlight --force -A ${1} > /tmp/${1}.pager.ansi 2>/dev/null
        shift 1
    done
    eval $PAGER /tmp/*.pager.ansi
    rm -f /tmp/*.pager.ansi
fi

PS. highlight -w listuje wzory kolorów, wie ktoś z jaką flagą trzeba potem takowy podać? -s wydaje się nie działać :/

pomyślałem jeszcze, że bardziej elegancko byłoby korzystać z globalnej zmiennej PAGER, tylko zamieniać less na less -r, ale to później zmienię

Ostatnio edytowany przez azhag (2008-11-20 00:24:44)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#9  2008-11-20 17:33:59

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: program typu pager, kolorowanie składni

wersja (chyba) niemal finalna:

Kod:

(...)

korzysta z globalnej zmiennej $PAGER, poprawiłem segregowanie plików przy większej ilości — będą wyświetlane w podanej kolejności (ograniczenie do stu plików, ale nikt przy zdrowych zmysłach nie powinien się nawet zbliżyć do tej granicy), nie będzie błędu jeśli poda się w nazwie katalog/

jedna rzecz tylko nie daje mi spokoju:
jak najłatwiej zamienić liczbę jednocyfrową w dwucyforwą (przez dostawienie zera na początku) lub wykonać działanie 01 + 1 tak, żeby otrzymać 02 (ale potem już 10, 11)? Na razie poradziłem sobie w ten sposób: [ $(printf $FOO | wc -m) -eq 1 ] && FOO=0${FOO} — jak widać jest dość brzydki

---

dopisek: dzięki milygesowi wiem jak ładniej zamienić liczbę
teraz chyba wszytko co potrzebne:

Kod:

#!/bin/sh

if [ -z $PAGER ]; then
    # $PAGER is empty, can't believe it, but it's true
    if which most >/dev/null 2>&1 ; then
        PAGER='most'
    elif which less >/dev/null 2>&1 ; then
        PAGER='less -r'
    elif which more >/dev/null 2>&1 ; then
        PAGER='more'
    else
        echo "No pager found!" && exit 1
    fi
elif [ ${PAGER} = 'less' ]; then
    # less need '-r' flag
    PAGER='less -r'
fi

if [ -z "$2" ]; then
    # only one file
    highlight --force -A ${1} 2>/dev/null | eval $PAGER
else
    FOO=0
    # more files
    while [ ! -z "$1" ]; do
        highlight --force -A ${1} > /tmp/pager_$(printf '%02d\n' ${FOO})-$(echo ${1} | tr '/' '_').ansi 2>/dev/null
        shift 1
        FOO=$((FOO + 1))
    done
    eval $PAGER /tmp/pageri_*.ansi
    rm -f /tmp/pager_*.ansi
fi

Ostatnio edytowany przez azhag (2008-11-20 17:35:34)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#10  2008-11-20 17:37:30

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: program typu pager, kolorowanie składni

Kod:

printf %02d $FOO

(testowane w bashu, ale mysle ze w innych tez powinno dzialac)

Edit: troche sie spoznilem ...

Ostatnio edytowany przez bercik (2008-11-20 17:38:19)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)