Niespecjalnie przepadam za webowymi edytorami. Zazwyczaj są brzydkie, niewygodne i powolne – a ten wbudowany MoinMoin Wiki też nie zachwyca. Możecie więc wyobrazić sobie, jaką przyjemność sprawiło mi odkrycie skryptu editmoin, pozwalającego edytować zawartość wspomnianego wiki za pomocą ulubionego edytora. Oto kilka podpowiedzi, które mogą odrobinę ułatwić nam pracę:

  • Editmoin bazuje na zawartości zmiennej EDITOR – przy jej braku używa vi
  • W dokumentacji troszkę niejasno opisano logowanie się do wiki z użyciem nazwy użytkownika: konfiguracja powinna być dokładnie taka sama, jak w przypadku użycia ID, tylko parę: https://naszew.wiki/ UserName wpisujemy do pliku ~/.moin_users.
  • Jeśli korzystamy z wiki w antycznej wersji 1.5.x i chcemy logować się z nazwą użytkownika, musimy wprowadzić drobną zmianę do skryptu. Odszukujemy w nim procedurę get_session_cookie() i zamienić jej ostatnie linie, wyglądające tak:
        for morsel in cookie.values():
            if morsel.key.startswith("MOIN_SESSION"):
                return morsel.key, morsel.value
        raise Error("Couldn't obtain session cookie from server")
    

    na następujące:

        for morsel in cookie.values():
            if morsel.key.startswith("MOIN_SESSION"):
                return morsel.key, morsel.value
            if morsel.key.startswith("MOIN_ID"):
                return morsel.key, morsel.value
        raise Error("Couldn't obtain session cookie from server")
    

    Gdyby ktoś chciał mi zwrócić uwagę na to, że startswith() można zapisać bardziej kompaktowo to już się tłumaczę: to nie zadziała w Pythonie 2.4.

    Poprawka przeznaczona jest dla skryptu w wersji 1.15.

  • Jeśli korzystamy w naszym wiki z innych formatów zapisu, takich jak Markdown czy ReST to możemy wspomóc się odrobinę rozszerzonym przykładem dla vima. Oczywiście zakładam, że odpowiednie pliki składni mamy już zainstalowane.

    au! BufRead,BufNewFile *.moin
         let s=search("^$", 'n')
         | if search('^#format rst$', 'n', s) > 0 | setf rst
         | elseif search('^#format markdown$', 'n', s) > 0 | setf mkd
         | elseif getline(1) =~ '^@@ Syntax: 1.5$' | setf moin1_5
         | else | setf moin1_6
         | endif
    

Wygodnej pracy!

Reklamy