środa, 2 stycznia 2008

Kłopoty z Emacs i AWK

Emacs 22 nie współpracuje z pakietem session.el, który służy do zapisania do pliku na potrzeby następnej sesji iluś tam ostatnio wykonanych poleceń, otwartych plików itp. Ćwicząc Emacs 23 już to przerabiałem i na taką okoliczność wstawiłem do plików startowych tryb desktop-save:


(if (< emacs-major-version 22)
(progn
(require 'session)
(add-hook 'after-init-hook 'session-initialize))
(progn
(desktop-save-mode 1)
(setq history-length 250)
(add-to-list 'desktop-globals-to-save 'file-name-history)))

O tych wszystkich nastawach zdążyłem już zapomnieć. A że Emacs na starcie czyta kilkanaście plików to nie od razu doszedłem czemu wraz z przejściem na Emacsa 22 przestał działać session.el a włączyło się coś innego. (Ten blog jest w dużej części po to, aby takich sytuacji uniknąć w przyszłości:-)

Tryb desktop-save nie podoba mi się: przy starcie Emacsa ładuje się kilkadziesiąt plików, większość z nich zupełnie niepotrzebnie. Najgorzej wygląda sprawa z plikami edytowanymi poprzez trampa. Emacs łączy się z odległą maszyną. Nie wiem czemu robi to kilkakrotnie. Wszystko to trwa oczywiście a próba okiełznania desktop-save nie dała zadowalającego rezultatu. W dokumentacji jest zresztą niewiele na ten temat. Spróbowałem przykładowo ustawić zmienną desktop-restore-eager, ale to niewiele pomogło. Faktycznie Emacs szybciej startował, ale jak tylko chwilę nie dotykałem klawiatury zaczął otwierać resztę buforów. Nie szło tego przerwać... Jednym słowem mulił, tylko że nie na początku.

W ,,sprawie trampa'' wyczytałem w odpowiedzi na żale jakiegoś użytkownika żeby dać sobie z nim spokój i działać na maszynie odległej przez fuse-sshfs. Czy ja wiem? Jak przed uruchomieniem nie zamontuję odległego katalogu, to co zrobi desktop-save? To chyba nie jest dobre rozwiązanie.

Ostatecznie przełączyłem się na standardowy tryb savehist. Działa z grubsza jak session.el. Czemu ja w ogóle zacząłem używać tego ostatniego--nie pamiętam. Tryb desktop-save wyłączyłem.

W temacie AWK też pojawił się problemik. Dawno, dawno temu (ca 1994 mówiąc konkretnie) zrobiłem skrypcik do podliczania moich rocznych finansów. Działał. Aż w tym roku przestał (a może przestał wcześniej, tylko nie zwróciłem na to uwagi). Zaczęło się od komunikatu division by zero.

Miałem od dawna świadomość, że jakiś mądry tak przerobił gawka, iż przy ustawieniu lokali na PL traktuje on jako kropkę dziesiętną przecinek a nie kropkę. Po co to zrobiono--nie wiem. Wydaje mi się, że zrobiono bez sensu. Ponieważ mój skrypt był uruchamiany via skrypt basha, wystarczyło dopisać LANG=C:


#!/bin/bash
LANG=C exec gawk -f $AWKDIR/foo.awk $*

I działa znowu.

Dopisane 19 marca 2008: fuse_sshfs jest jednak świetnym rozwiązaniem. Ostatecznie nie pracuję na dziesiątkach maszyn, tylko na dwóch. W razie potrzeby montuję odległy katalog i już. Super wygodnie, nie tylko w połączeniu z Emacsem. Pakietu tramp już nie używam.

Brak komentarzy:

Prześlij komentarz