Créer un nouveau cadre avec uniquement la ligne de mode

13

Je veux créer un nouveau cadre qui ne contient que la ligne de mode. Surtout pas un tampon de fichier.

Pourquoi ai-je besoin de ça? J'utilise la synchronisation du mode org pour chronométrer mon travail. Le mode organisationnel affiche le minuteur de la tâche en cours sur laquelle je travaille dans la ligne de mode et met à jour le minuteur en temps réel. J'utilise des applications autres qu'Emacs, donc lorsque je passe à celles-ci (par exemple lorsque j'utilise le navigateur ou le terminal), je veux toujours pouvoir regarder le chronomètre en cours d'exécution. Je pensais que je pouvais créer un nouveau cadre, mais lorsque je clique sur le minuteur dans la ligne de mode, le fichier .org s'ouvre dans le nouveau cadre (qui est déjà redimensionné pour afficher uniquement la ligne de mode) au lieu de revenir à dans la première image.

Voici à quoi ressemble ma ligne de mode (la barre bleue) - c'est tout ce que je veux sur le nouveau cadre:

entrez la description de l'image ici

(Finalement, je devrai trouver comment faire en sorte que le nouveau cadre apparaisse toujours en haut, mais cela sort du cadre de cette question)

J'utilise OS X si cela est pertinent.

Sridhar Ratnakumar
la source
1
Juste un avertissement, je travaille sur un elisp et un script macruby qui affichera les informations de ligne du mode org dans la barre de menus OSX. Cela fonctionne pour moi, mais je vais essayer de bien conclure.
Jordon Biondo
@JordonBiondo - excellent! votre solution peut s'avérer encore meilleure que ce que je fais ici. avec impatience. Tenez-moi au courant s'il vous plait.
Sridhar Ratnakumar
Vous devriez retitrer et reformuler votre question, si vous sentez vraiment que les réponses que vous dites " Excellent! " Pour y répondre. Parce que pour autant que je sache, ils ne répondent pas à votre demande de trame avec " rien d'autre qu'une ligne de mode " - du tout (et je doute que toute réponse le fera). IOW, si vous avez assoupli votre objectif depuis la formulation originale de votre demande, veuillez envisager de mettre à jour la question en conséquence.
Drew
Je suis d'accord, après avoir lu, il semblait vraiment que OP avait un problème spécifique, mais demandait une seule solution, pas la meilleure.
Jordon Biondo
@Drew - Proposez-vous des modifications spécifiques? La solution originale de PythonNut répond à ma demande d'origine. Notez que j'ai dit "Surtout pas un tampon de fichier.", Et sa solution - bien que crée un tampon vide - ne conduit pas à l'apparition de tampons de fichier sur le nouveau cadre.
Sridhar Ratnakumar

Réponses:

7

L'extension de la réponse de Jorgen Schäfer à la suggestion de Matthew Piziak produit l'extrait de code suivant:

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

Pour autant que je sache, cela verrouille correctement la fenêtre dans un tampon vide. Tenter de basculer vers un autre tampon ouvrira le tampon dans une fenêtre existante dans le cadre parent.

PythonNut
la source
Excellent, j'ai vérifié que cela fonctionne. Est-il possible de faire en sorte que le nouveau cadre hérite de la taille de police (et du nom de police) du cadre principal? De même, les parties redondantes spécifiques au tampon de la ligne de mode - *empty* All L1 (Fundamental)- peuvent-elles être supprimées? Voici à quoi ressemble la mienne: i.imgur.com/iOLw57c.png
Sridhar Ratnakumar
@SridharRatnakumar Heureusement, supprimer les informations supplémentaires sur la ligne de mode est trivial. J'ai modifié ma réponse pour l'inclure. Je ne sais pas trop ce que vous voulez dire en préservant la police? Le tampon n'est-il pas vide?
PythonNut
Je faisais référence à la propriété de police du texte dans la ligne de mode (pas le tampon vide).
Sridhar Ratnakumar
ah, votre code ultérieur a également effacé la ligne de mode du cadre principal! Si ce n'est pas possible, revenons sur ce changement et j'accepterai votre réponse (elle répond à la question).
Sridhar Ratnakumar
Je viens de le remarquer aussi. Je l'ai corrigé. La police de la ligne de mode ne change pas quand je le fais, donc je ne suis pas sûr de ce qui se passe.
PythonNut
5

C'est le mieux que j'ai pu trouver:

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

Je ne vois pas de moyen de désactiver au moins une fenêtre avec un tampon, mais celle affichée à l'aide de cet extrait n'est associée à aucun fichier. L' buffer-predicateil empêche le cadre d'être choisi pour afficher les tampons (autres), donc si vous pouvez traiter avec une ligne supplémentaire vide, cela devrait le faire.

Jorgen Schäfer
la source
Cela ne fonctionne pas comme prévu. Les tampons sont toujours activés dans le nouveau cadre. Voici un gif animé pour illustrer: i.imgur.com/07Q3tcW.gifv
Sridhar Ratnakumar
2
L'utilisation display-buffer-alistpourrait être la solution à cela.
Kaushal Modi
Je ne sais pas pourquoi l'utilisation de l'organisation ici ne respecte pas le buffer-predicate. L'utilisation display-buffer-alistpourrait être une idée en effet, mais je ne sais pas comment l'utiliser pour empêcher l'utilisation d'un cadre spécifique.
Jorgen Schäfer
2
Cela pourrait-il être résolu avec set-window-dedicated-p?
Matthew Piziak
1
Le buffer-predicateest, selon les informations, uniquement utilisé par la other-bufferfonction, c'est-à-dire qu'il n'empêche pas les autres fonctions d'afficher un tampon dans le cadre.
politza
3

Encore une autre solution pour org-clock dans osx

Une petite boîte dans la barre d'état. Il devient rouge lorsque vous ne vous êtes pas connecté.

illustration pour la boîte rouge, voir la page github

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

koddo
la source
1
Je suis un peu en retard et ne répond pas à la question exacte, mais je propose une alternative qui fonctionnerait pour quelqu'un.
koddo
3

Solution pour afficher les informations de l'horloge organisationnelle dans la barre de menus OSX

Voici une solution alternative au problème que vous avez spécifié:

J'utilise des applications autres qu'Emacs, donc lorsque je passe à celles-ci (par exemple lorsque j'utilise le navigateur ou le terminal), je veux toujours pouvoir regarder le chronomètre en cours d'exécution.

Vous pouvez l'utiliser pour afficher les informations de org-clock dans la barre de menus osx que vous devriez presque toujours pouvoir voir.

https://github.com/jordonbiondo/osx-org-clock-menubar Disponible sur MELPA

Notez que cela nécessite macruby.

À quoi il ressemble lorsqu'il est pointé.

entrez la description de l'image ici

Jordon Biondo
la source
1
Une implémentation simple qui ne repose pas sur macruby peut être effectuée avec emacsclient -e "(org-clock-get-clocked-time)"et bitbar: getbitbar.com
mankoff
C'est génial, vous devriez rédiger une solution!
Jordon Biondo