Ryszard Kubiak <[EMAIL PROTECTED]> wrote:
> Jakub Narębski <[EMAIL PROTECTED]> napisał:
>> Czy ustawienia do Emacsa ułatwiające pisanie po polsku (sieroty) w LaTeX-u
>> (wrapper do tex-magic-space) też się nadają?

> Sierotki to świetne ułatwienie, z którego korzystam na co dzień. Byłoby
> jeszcze świetniejsze, gdyby nie wstawiało tyldy po niektórych zmianach
> wiersza, które są uznawane -- nie wiedzieć, czemu -- za sierotki tyldy
> godne. A ja takie tyldy muszę usuwać metodą cofania się na pierwszy znak
> i wpisywania Alt-Odstęp. A może mam złą wersję sierotek, bo to już zostało
> poprawione?

Jedyne wady używanego przeze mnie kodu jaki udawało mi się zauważyć to:

1. Czasami nie działa, np. dla "(i cośtam)". W query-replace można użyć
\b, tutaj nie wiem jak to naprawić (ale pewnie się da użyć lepszego
regexpa, patrz [nieprzetestowana] propozycja).

2. W trybie matematycznym tex-magic-space generalnie przeszkadza, stąd
napisałem makro do jego przełączania. Można pomyśleć o wykrywaniu trybu
matematycznego (np. za pomocą komend z Emacsowego pakietu AUCTeX do
latexa), ale to by pewnie znacznie spowolniło działanie.

3. W obecnej wersji nie działa automatyczne rozwijanie skrótów w
abbrev-mode. auto-fill-mode działa dzięki zaklęciu na końcu
tex-magic-space.

4. Ulepszona wersja mogłaby wstawiać &nbsp; w HTML.


> Ale nawet bez takiego wyprostowania sierotki powinny się znaleźć w archiwum.

Załączam używany przeze mnie kod:

;;; Magic space by Michal Jankowski <[EMAIL PROTECTED]>
;;; 'Ręcznie' można ją włączyć za pomocą M-x local-set-key SPC tex-magic-space.
;;; Można też użyć funkcji tex-toggle-magic-space, przypisanej do C-c SPC.
(defun tex-magic-space ()
  "Magic-space - inserts non-breakable space after a single-letter word."
  (interactive)
  (if (string-match
       "^\\(\\s \\|~\\)?[aeiouwz]$" ; może "\\b[aeiouwz]$" będzie lepsze?
       (buffer-substring (max (point-min) (- (point) 2)) (point)))
      (insert "~")
    (insert " ")
    (and auto-fill-function
         (funcall auto-fill-function))))


;;; Przypisuje/wyłącza (przełącza) przypisanie tex-magic-space do spacji,
;;; (przydatne przy pisaniu matematyki), tylko dla trybów LaTeX-owych
(defun tex-toggle-magic-space ()
  "Toggles TeX magic space, which inserts non-breakable TeX space
(i.e. ~) after a single-letter word"
  (interactive)
;; starsza wersja
;   (if (local-key-binding " " 'tex-magic-space)
;       (local-unset-key " ")
;     (local-set-key " " tex-magic-space)
;; nowsza wersja
  (progn
    (if (equal (lookup-key TeX-mode-map " ") 'tex-magic-space)
        (progn
          (define-key TeX-mode-map " " nil)
          (local-unset-key " ")) ; to be sure
      (define-key TeX-mode-map " " 'tex-magic-space))
    (message "SPC is binded to %s" (lookup-key TeX-mode-map " "))))



--
Jakub Narębski                      mailto:[EMAIL PROTECTED]
 ZTHiL IFT UW                       http://info.fuw.edu.pl/~jnareb/

Odpowiedź listem elektroniczym