Jeśli nie masz nic przeciwko, żebym zapytał, co próbujesz zrobić?
Luke Shimkus
@King Tworzę proces asynchroniczny i chcę wysłać zawartość bufora jako standardowe wejście. Pomyślałem, że mogę użyć process-send-stringi utknąłem.
Maciej Goszczycki
Odpowiedzi:
25
Wiele rzeczy w Emacsie działa na bieżącym buforze. Musisz zmienić bieżący bufor i przywrócić go, gdy skończysz. Służy with-current-bufferdo prostych przypadków, w których wystarczy zrobić coś w innym buforze, oraz save-current-bufferdo bardziej skomplikowanych przypadków, w których trzeba nawigować między kilkoma buforami.
Jeśli musisz również zapisać punkt, zadzwoń save-excursionrównież. Pamiętaj, że save-excursionprzywraca punkt tylko w bieżącym buforze, więc jeśli chcesz przełączyć się na inny bufor i się tam poruszać, zadzwoń do save-excursionśrodka save-current-bufferlub with-current-buffer.
process-send-string
i utknąłem.Odpowiedzi:
Wiele rzeczy w Emacsie działa na bieżącym buforze. Musisz zmienić bieżący bufor i przywrócić go, gdy skończysz. Służy
with-current-buffer
do prostych przypadków, w których wystarczy zrobić coś w innym buforze, orazsave-current-buffer
do bardziej skomplikowanych przypadków, w których trzeba nawigować między kilkoma buforami.Jeśli chcesz zawartość tekstową bufora bez właściwości, zadzwoń
buffer-substring-no-properties
.buffer-string
zwraca tylko zwężoną część bufora. Jeśli potrzebujesz całej zawartości, poszerz ją po zapisaniu zwężenia.Jeśli musisz również zapisać punkt, zadzwoń
save-excursion
również. Pamiętaj, żesave-excursion
przywraca punkt tylko w bieżącym buforze, więc jeśli chcesz przełączyć się na inny bufor i się tam poruszać, zadzwoń dosave-excursion
środkasave-current-buffer
lubwith-current-buffer
.źródło