Chcę wywołać niektóre funkcje, gdy uruchomię emacsclient w emulatorze terminala. Kod, który mam działa, gdy Emacs jest uruchamiany w terminalu tekstowym. Kiedy uruchamiam Emacsa w trybie graficznym i uruchamiam emacsclient -t
w terminalu, funkcje nie działają, więc nie mogę używać myszy w emulatorze terminala.nawet gdy emacsclient jest uruchamiany w terminalu, system okien nie jest zerowy
Oto kod w pytaniu:
(defun my-terminal-config (&optional frame)
"Establish settings for the current terminal."
(message (format "%s" window-system)) ;; "ns" (Mac OS X) when Emacs is started graphically
(message (format "%s" (display-graphic-p))) ;; nil when Emacs is started graphically
(unless (display-graphic-p)
;; enable mouse reporting for terminal emulators
(xterm-mouse-mode 1)
(global-set-key [mouse-4] '(lambda()
(interactive)
(scroll-down 1)))
(global-set-key [mouse-5] '(lambda()
(interactive)
(scroll-up 1)))))
(add-hook 'after-make-frame-functions 'my-terminal-config)
To dziwne sytuacja. Emacsclient łączy się z serwerem i tworzy nową ramkę, ale ponieważ serwer działa w środowisku graficznym, raportuje, że system-okienko ma wartość "ns", podczas gdy w środowisku terminalowym będzie to zero. Dlatego po uruchomieniu emacsclient -t
w terminalu funkcje włączania raportowania myszy nie działają. Po uruchomieniu emacsclient, jeśli utworzę nową ramkę z C-x 5 2
, funkcje włączania raportowania myszy będą działać, ponieważ system okien będzie zerowy w tej ramce.
Wygląda na to, że podczas mieszania ramek między terminalami i systemami okiennymi wartością window-system
będzie zawsze wartość serwera Emacs.
Czy istnieje sposób, w jaki mogę uruchomić Emacs graficznie i emacsclient w trybie tekstowym i uruchomić funkcje myszy? Innymi słowy, czy możliwe jest wykrycie, że tworzona klatka znajdzie się w środowisku graficznym lub tekstowym?
Może powinienem zawsze uruchamiać te funkcje, gdy tworzona jest klatka niezależnie od wartości window-system
?
Interesujący problem. Używam Emacs 23.2.1 pod Linuksem (RHEL) i kiedy uruchamiam emacsclient -t na graficznym serwerze i sprawdzam system okien, to jest zerowe, podczas gdy w graficznym X Emacs to X. Innymi słowy, wydaje się działać poprawnie. Jakie są szczegóły twojej konfiguracji? –
Używam Emacsa 23.3 w systemie Mac OS X 10.6.8. Mam taki sam wynik. Po uruchomieniu emacsclient, system-okienko jest zerowe, * ale wewnątrz * funkcji hook-po-make-frame jest "ns". Wygląda na to, że ramka nie ma docelowego systemu okiennego do pewnego czasu po zakończeniu haka. – hekevintran
@hekevintran Czy możesz krótko wyjaśnić, dlaczego jest tak wiele pytań od użytkowników komputerów Mac o używaniu Emacsa pod emulacją terminalu? Czym dokładnie jest scenariusz użycia? Jestem naprawdę ciekawy, ponieważ widzę te pytania DUŻO. –