Muszę być w stanie tworzyć ramki i programowo się do nich odwoływać.
Jak stworzyć nową ramkę Emacsa o danym imieniu, aby móc się do niej później odwoływać?
Wiem, jak tworzyć nowe ramki, interaktywnie lub programowo: https://www.gnu.org/software/emacs/manual/html_node/emacs/Creating-Frames.html
Możliwe jest wyświetlanie tytułu ramki na różne sposoby: http://www.emacswiki.org/emacs/FrameTitle, ale nie mogłem znaleźć sposobu na ustawienie i odniesienie do nazwy ramki.
Wystarczyłby wskaźnik kodu lub precyzyjne wyszukiwanie w wyszukiwarce.
Z góry dziękuję.
set-frame-name
, pomaga wyjaśnić problem. Z tym i całą pomocą wymyśliłem odpowiednią funkcję, która robi to, czego potrzebuję. Wymieniłem to jako odpowiedź, jeśli to w porządku.Odpowiedzi:
Wygląda na to, że chcesz uzyskać ramkę, biorąc pod uwagę jej nazwę. Aby to zrobić, użyj funkcji
get-a-frame
w biblioteceframe-fns.el
.A jeśli chcesz uzyskać nazwę ramki z ramki, użyj funkcji
get-frame-name
w tej samej bibliotece.(Zobacz także bibliotekę
frame-cmds.el
.)źródło
Zobacz
select-frame-set-input-focus
na http://www.gnu.org/software/emacs/manual/html_node/elisp/Input-Focus.html . Na przykład spróbujźródło
#<frame *scratch* 0x112ec2440>
. Więc(frame-list)
wracał(#<frame *scratch* 0x112ec2440> #<frame *scratch* 0x105013b98>)
. Następnie fragment kodu pozwoli mi przejść do drugiej ramki na tej liście. Chyba ktoś użyłby ostatniego elementu tej listy? Czy to byłaby najnowsza ramka?Dziękujemy wszystkim za linki i kod. Dużo się nauczyłem!
Po przestudiowaniu tych stron wydaje się, że Emacs nie pozwala przypisać niestandardowego identyfikatora do nowej ramki.
Tak więc, aby jednoznacznie odwoływać się do nowo utworzonej ramki, należy złapać identyfikator przypisany przez Emacsa podczas tworzenia.
Teraz mogę lepiej wyrazić to, czego szukałem za pomocą takiej funkcji:
Ta funkcja tworzy nową ramkę i zwraca jej identyfikator, dzięki czemu ramkę można wywołać w dowolnym momencie.
Byłbym wdzięczny za wszelkie komentarze dotyczące napisania tej lub podobnej funkcji z odpowiednim idiomem elisp.
Jeszcze raz dziękuję wszystkim za radę.
źródło
(selected-frame)
zwraca to, czego szukasz ?: gnu.org/software/emacs/manual/html_node/elisp/Input-Focus.html Jednak ta wartość nie jest przechowywana jako część(frame-parameters)
: gnu.org/software/emacs/manual / html_node / elisp /…(selected-frame)
zwraca identyfikator ramki. To może być inny sposób na zrobienie tego, dzwonienieselected-frame
zaraz pomake-frame-command
. Dziękuję Ci.