Створіть новий кадр із лише рядком режиму


13

Я хочу створити новий кадр, який не містить нічого, крім рядка режиму. Тим більше не буфер файлів.

Навіщо мені це потрібно? Я використовую годинник org-режиму, щоб час працювати. У Org-режимі відображається таймер для поточного завдання, над яким я працюю в режимі, і оновлює таймер у режимі реального часу. Я використовую додатки, відмінні від Emacs, тому коли я переключаюсь на них (наприклад, під час використання браузера або терміналу), я все ще хочу мати можливість переглянути таймер, що працює. Я думав, що можу створити новий кадр, але коли я натискаю таймер у рядку режимів, файл .org відкриється в новому кадрі (який вже змінив розмір, щоб відображати лише режим-рядок), а не переходити до це в першому кадрі.

Ось як виглядає моя лінійка режимів (синя смуга) - це все, що я хочу в новому кадрі:

введіть тут опис зображення

(Врешті-решт, мені доведеться з'ясувати, як зробити так, щоб новий кадр виглядав завжди зверху, але це не виходить за рамки цього питання)

Я використовую OS X, якщо це доречно.


1
Лише голова вгору, я працюю над сценарієм elisp та макрубі, який відображатиме інформацію про рядки в режимі org в рядку меню OSX. Це працює для мене, але я спробую це красиво завершити.
Джордон Біондо

@JordonBiondo - чудово! ваше рішення може виявитися навіть кращим, ніж те, що я тут роблю. з нетерпінням чекаю цього. будь ласка, інформуйте мене.
Шрідхар Ратнакумар

Вам слід переказати і перефразувати своє запитання, якщо ви справді відчуваєте, що відповіді, які ви говорите « Відмінно! », Відповісти на нього. Тому що, наскільки я можу сказати, вони не відповідають на ваш запит на кадр з " нічого, крім рядка режиму " - взагалі (і я сумніваюся, що будь-яка відповідь буде). IOW, якщо ви послабили свою мету з моменту первинного формулювання запиту, будь ласка, подумайте про оновлення питання відповідно.
Дрю

Я погоджуюсь, після прочитання здавалося, що ОП має конкретну проблему, але вимагає лише одного рішення, а не найкращого рішення.
Джордон Біондо

@Drew - Ви пропонуєте якісь конкретні зміни? Оригінальне рішення PythonNut відповідає на мій оригінальний запит. Зауважте, що я сказав "Особливо не буфер файлів.", І його рішення - хоча створює порожній буфер - не призводить до появи буферів файлів у новому кадрі.
Шрідхар Ратнакумар

Відповіді:


7

Розширення Йоргена Шафер відповіді з Метью Piziak по пропозицією проводить наступний фрагмент коду:

(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))

Наскільки я можу сказати, це правильно фіксує вікно в порожній буфер. Спроба переключитися на інший буфер відкриє буфер у наявному вікні батьківського кадру.


Чудово, я перевірив це на роботі. Будь-який спосіб зробити новий кадр успадкувати розмір шрифту (та ім'я шрифту) головного кадру? Чи *empty* All L1 (Fundamental)можна видалити надлишкові буферні частини рядка режиму - -? Ось як виглядає моя: i.imgur.com/iOLw57c.png
Шрідхар Ратнакумар

@SridharRatnakumar На щастя, зняття додаткової інформації про режим в режимі тривіально. Я змінив свою відповідь, щоб включити її. Я не зовсім впевнений, що ви маєте на увазі, зберігаючи шрифт? Чи не буфер порожній?
PythonNut

Я мав на увазі властивість шрифту тексту в рядку mode (не порожній буфер).
Шрідхар Ратнакумар

ах, ваш пізній код також очистив рядок режиму основного кадру! Якщо це неможливо, скасуємо цю зміну, і я прийму вашу відповідь (це задовольняє питання).
Шрідхар Ратнакумар

Я теж це помітив. Я це виправив. Шрифт рядка в режимі не змінюється, коли я це роблю, тому я не впевнений, що відбувається.
PythonNut

5

Це найкраще, що я міг придумати:

(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))))

Я не бачу способу відключити принаймні одне вікно з одним буфером там, але те, що відображається за допомогою цього фрагмента, не пов’язане з жодним файлом. buffer-predicateТам запобігає кадр з вибираються для відображення будь-яких (інших) буферів, так що якщо ви можете мати справу з однією додатковою символом нового рядка, це повинно зробити це.


Це не працює, як очікувалося. Буфери все ще активуються в новому кадрі. Ось анімований gif для ілюстрації: i.imgur.com/07Q3tcW.gifv
Шрідхар Ратнакумар

2
Використання display-buffer-alistможе бути вирішенням цього.
Каушал Моді

Я не знаю, чому використання органу тут не дотримується buffer-predicate. Використання display-buffer-alistсправді може бути ідеєю, але я не знаю, як її використати, щоб не допустити використання конкретного кадру.
Jorgen Schäfer

2
Чи можна це виправити set-window-dedicated-p?
Матвій Пізіак

1
buffer-predicate, Згідно з інформацією, використовується тільки other-bufferфункції, тобто це не заважає інші функції перегляду будь-якого з буфера в кадрі.
politza

3

Ще одне рішення для org-clock в ОСХ

Невелике поле в рядку стану. Він стає червоним, коли ви не годинник.

ілюстрації для червоного поля див. на сторінці github

https://github.com/koddo/org- clock-statusbar-app


1
Я трохи запізнююся і не відповідаю на точне запитання, але пропоную альтернативу, яка б працювала для когось.
кодо

3

Рішення для відображення інформації про or-clock у рядку меню OSX

Ось альтернативне рішення заданої вами проблеми:

Я використовую додатки, відмінні від Emacs, тому коли я переключаюсь на них (наприклад, під час використання браузера або терміналу), я все ще хочу мати змогу подивитися на запущений таймер.

Ви можете скористатися цією функцією для відображення інформації з орга-годин в меню OSX, яку ви майже завжди повинні бачити.

https://github.com/jordonbiondo/osx-org-clock-menubar Доступно на MELPA

Зауважте, що для цього потрібен макрубі.

Як це виглядає під час роботи в ньому.

введіть тут опис зображення


1
Проста реалізація, яка не покладається на макрубі, може бути виконана за допомогою emacsclient -e "(org-clock-get-clocked-time)"і bitbar: getbitbar.com
mankoff

Це дивовижно, ви повинні написати рішення!
Джордон Біондо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.