Utwórz nową ramkę z tylko linią trybu


13

Chcę utworzyć nową ramkę, która nie zawiera nic oprócz linii trybu. Zwłaszcza nie bufor pliku.

Dlaczego tego potrzebuję? Używam taktowania org-mode, aby mierzyć czas mojej pracy. Tryb organizacji wyświetla licznik dla bieżącego zadania, nad którym pracuję, w wierszu trybu i aktualizuje licznik w czasie rzeczywistym. Korzystam z aplikacji innych niż Emacs, więc po przełączeniu się na nie (np. Podczas korzystania z przeglądarki lub terminala) nadal chcę mieć możliwość sprawdzenia uruchomionego timera. Pomyślałem, że mogę utworzyć nową ramkę, ale kiedy teraz klikam licznik czasu w linii trybu, plik .org otwiera się w nowej ramce (która jest już przeskalowana, aby wyświetlać tylko linię trybu) zamiast przeskakiwać z powrotem do to w pierwszej klatce.

Oto jak wygląda moja linia trybu (niebieski pasek) - to wszystko, czego chcę na nowej ramce:

wprowadź opis zdjęcia tutaj

(W końcu będę musiał wymyślić, jak sprawić, by nowa ramka była zawsze na wierzchu, ale to nie wchodzi w zakres tego pytania)

Używam OS X, jeśli jest to istotne.


1
Tylko heads-up, pracuję nad jakimś elisp i makrowym skryptem, który wyświetli informacje o wierszu trybu org na pasku menu OSX. Działa dla mnie, ale postaram się ładnie to podsumować.
— Jordon Biondo

@JordonBiondo - doskonale! Twoje rozwiązanie może okazać się jeszcze lepsze niż to, co tutaj robię. nie mogę się doczekać. proszę informuj mnie na bieżąco.
— Sridhar Ratnakumar

Powinieneś zmienić nazwę i sformułować swoje pytanie, jeśli naprawdę czujesz, że odpowiedzi, na które odpowiadasz, brzmią „ Doskonałe! ”. Ponieważ, o ile mogę powiedzieć, nie odpowiadają na twoją prośbę o ramkę z „ niczym innym jak linią trybu ” - w ogóle (i wątpię, czy jakakolwiek odpowiedź będzie). IOW, jeśli złagodziłeś swój cel od czasu pierwotnego sformułowania wniosku, rozważ odpowiednią aktualizację pytania.
— Drew

Zgadzam się, po przeczytaniu naprawdę wydawało się, że OP miał konkretny problem, ale prosił tylko o jedno rozwiązanie, a nie najlepsze.
— Jordon Biondo

@Drew - Czy sugerujesz jakieś konkretne zmiany? Oryginalne rozwiązanie PythonNut odpowiada na moje pierwotne żądanie. Zauważ, że powiedziałem „Zwłaszcza bufor plików.”, A jego rozwiązanie - chociaż tworzy pusty bufor - nie prowadzi do pojawienia się buforów plików w nowej ramce.
— Sridhar Ratnakumar

Odpowiedzi:


7

Rozszerzanie Jorgen Schäfer za odpowiedź z Matthew Piziak za sugestią produkuje następujący fragment:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                 (unsplittable . t)
                 (buffer-predicate . (lambda (x) nil))
                 (height . 2)
                 (left-fringe . 0)
                 (right-fringe . 0)
                 (tool-bar-lines . 0)
                 (menu-bar-lines . 0)))
  (set-window-dedicated-p
    (get-buffer-window (current-buffer) t) t))

O ile wiem, to poprawnie blokuje okno do pustego bufora. Próba przełączenia na inny bufor otworzy bufor w istniejącym oknie w ramce nadrzędnej.


Doskonale, sprawdziłem, czy to działa. Czy jest jakiś sposób, aby nowa ramka dziedziczyła rozmiar czcionki (i nazwę czcionki) ramki głównej? Czy można również *empty* All L1 (Fundamental)usunąć nadmiarowe części linii trybu specyficzne dla bufora - -? Oto jak wygląda mój: i.imgur.com/iOLw57c.png
— Sridhar Ratnakumar

@SridharRatnakumar Na szczęście usunięcie dodatkowych informacji o linii trybu jest banalne. Poprawiłem swoją odpowiedź, aby to uwzględnić. Nie jestem do końca pewien, co masz na myśli mówiąc o zachowaniu czcionki? Czy bufor nie jest pusty?
— PythonNut

Miałem na myśli właściwość font tekstu w wierszu trybu (a nie pusty bufor).
— Sridhar Ratnakumar

ah, twój późniejszy kod wyczyścił również linię trybu ramki głównej! Jeśli nie jest to możliwe, cofnijmy tę zmianę i zaakceptuję twoją odpowiedź (spełnia pytanie).
— Sridhar Ratnakumar

Właśnie to zauważyłem. Naprawiłem to. Czcionka linii trybu nie zmienia się, gdy to robię, więc nie jestem pewien, co jest grane.
— PythonNut

5

To najlepsze, co mogłem wymyślić:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                (unsplittable . t)
                (buffer-predicate . (lambda (x) nil))
                (height . 2)
                (left-fringe . 0)
                (right-fringe . 0)
                (tool-bar-lines . 0)
                (menu-bar-lines . 0))))

Nie widzę sposobu, aby wyłączyć przynajmniej jedno okno z jednym buforem, ale okno wyświetlane przy użyciu tego fragmentu nie jest powiązane z żadnym plikiem. buffer-predicateNie chroni ramę przed wybrano wyświetlanie żadnych buforów (inne), więc jeśli można czynienia z jedną dodatkową pustą linią, to powinno wystarczyć.


To nie działa zgodnie z oczekiwaniami. Bufory są nadal aktywowane w nowej ramce. Oto animowany gif do zilustrowania: i.imgur.com/07Q3tcW.gifv
— Sridhar Ratnakumar

2
display-buffer-alistRozwiązaniem może być użycie .
— Kaushal Modi

Nie wiem, dlaczego użycie org tutaj nie przestrzega buffer-predicate. Korzystanie display-buffer-alistmoże być pomysłem, ale nie wiem, jak go użyć, aby zapobiec użyciu określonej ramki.
— Jorgen Schäfer

2
Czy można to naprawić za pomocą set-window-dedicated-p?
— Matthew Piziak

1
buffer-predicateJest, według informacji, używany tylko przez other-bufferfunkcję, to znaczy nie wyklucza innych funkcji wyświetlanie dowolnego bufora w ramce.
— politza


3

Rozwiązanie do wyświetlania informacji o org-clock na pasku menu OSX

Oto alternatywne rozwiązanie określonego problemu:

Korzystam z aplikacji innych niż Emacs, więc po przełączeniu się na nie (np. Podczas korzystania z przeglądarki lub terminala) nadal chcę mieć możliwość sprawdzenia uruchomionego timera.

Możesz użyć tego do wyświetlenia informacji z zegara org w zegarze OSX, które prawie zawsze powinny być widoczne.

https://github.com/jordonbiondo/osx-org-clock-menubar Dostępne w MELPA

Zauważ, że wymaga to makruby.

Jak to wygląda po włączeniu.

wprowadź opis zdjęcia tutaj


1
Prosta implementacja, że nie opiera się na macruby można zrobić z emacsclient -e "(org-clock-get-clocked-time)"i bitbar: getbitbar.com
— mankoff

To niesamowite, powinieneś napisać rozwiązanie!
— Jordon Biondo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.