Faça um novo quadro apenas com a linha de modo


13

Quero criar um novo quadro que não contenha nada além da linha de modo. Especialmente não um buffer de arquivo.

Por que eu preciso disso? Uso o relógio do modo organizacional para cronometrar meu trabalho. O modo organizacional exibe o cronômetro da tarefa atual em que estou trabalhando na linha de modo e atualiza o cronômetro em tempo real. Eu uso outros aplicativos que não sejam o Emacs; portanto, quando mudo para eles (por exemplo, ao usar o navegador ou o terminal), ainda quero ver o cronômetro em execução. Eu pensei que poderia criar um novo quadro, mas quando agora clico no timer na linha de modo, o arquivo .org está sendo aberto no novo quadro (que já foi redimensionado para mostrar apenas a linha de modo) em vez de voltar para no primeiro quadro.

Aqui está a aparência da minha linha de modo (a barra azul) - é tudo o que quero no novo quadro:

insira a descrição da imagem aqui

(Eventualmente, terei que descobrir como fazer com que o novo quadro apareça sempre no topo, mas isso está fora do escopo desta pergunta)

Eu uso o OS X se isso for relevante.


1
Atenção, estou trabalhando em um elisp e um script macruby que exibirá as informações da linha de modo organizacional na barra de menus do OSX. Está funcionando para mim, mas vou tentar finalizar bem.
Jordon Biondo 02/02

@JordonBiondo - excellent! sua solução pode se tornar ainda melhor do que o que estou fazendo aqui. ansioso por isso. por favor me mantenha atualizado.
Sridhar Ratnakumar 02/02

Você deve redigitar e reformular sua pergunta, se realmente achar que as respostas estão dizendo " Excelente! " Para responder a ela. Porque, tanto quanto posso dizer, eles não atendem ao seu pedido de um quadro com " nada além de uma linha de modo " - de todo (e duvido que qualquer resposta o faça). IOW, se você relaxou seu objetivo desde a formulação original de sua solicitação, considere atualizar a pergunta de acordo.
Desenhou

Concordo que, depois de ler, parecia realmente que o OP tinha um problema específico, mas estava pedindo apenas uma solução, não a melhor solução.
Jordon Biondo 03/02

@Drew - Você sugere alguma edição específica? A solução original do PythonNut responde à minha solicitação original. Observe que eu disse "Especialmente não um buffer de arquivo.", E sua solução - embora crie um buffer vazio - não faz com que os buffers de arquivo apareçam no novo quadro.
Sridhar Ratnakumar

Respostas:


7

Estender a resposta de Jorgen Schäfer com a sugestão de Matthew Piziak produz o seguinte trecho:

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

Tanto quanto eu posso dizer, isso bloqueia corretamente a janela para um buffer vazio. Tentar mudar para um buffer diferente abrirá o buffer em uma janela existente no quadro pai.


Excelente, verifiquei que isso funciona. Alguma maneira de fazer com que o novo quadro herde o tamanho da fonte (e o nome da fonte) do quadro principal? Além disso, as partes redundantes específicas do buffer da linha mode - *empty* All L1 (Fundamental)- podem ser removidas? Veja como meus olha: i.imgur.com/iOLw57c.png
Sridhar Ratnakumar

@SridharRatnakumar Felizmente, retirar as informações extras da linha de modo é trivial. Eu alterei minha resposta para incluir isso. Não sei bem o que você quer dizer com preservar a fonte? O buffer não está vazio?
precisa saber é o seguinte

Eu estava me referindo à propriedade da fonte do texto na linha de modo (não no buffer vazio).
Sridhar Ratnakumar 02/02

ah, seu código posterior também limpou a linha de modo do quadro principal! Se isso não for possível, vamos reverter essa alteração e aceitarei sua resposta (ela satisfaz a pergunta).
Sridhar Ratnakumar 02/02

Eu também notei isso. Eu consertei isso. A fonte da linha de modo não muda quando eu faço, então não tenho certeza do que está acontecendo.
precisa saber é o seguinte

5

Este é o melhor que eu poderia ter:

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

Não vejo uma maneira de desativar pelo menos uma janela com um buffer lá, mas a exibida usando esse trecho não está associada a nenhum arquivo. A opção buffer-predicateimpede que o quadro seja escolhido para exibir quaisquer (outros) buffers; portanto, se você puder lidar com uma linha extra vazia, deve fazê-lo.


Não funciona como esperado. Os buffers ainda estão sendo ativados no novo quadro. Aqui está um gif animado para ilustrar: i.imgur.com/07Q3tcW.gifv
Sridhar Ratnakumar

2
Usar display-buffer-alistpode ser a solução para isso.
precisa saber é o seguinte

Não sei por que o uso da organização aqui não adere ao buffer-predicate. Usar display-buffer-alistpode ser uma ideia, mas não sei como usá-lo para impedir que um quadro específico seja usado.
Jorgen Schäfer

2
Isso poderia ser corrigido com set-window-dedicated-p?
Matthew Piziak

1
De buffer-predicateacordo com as informações, é usado apenas pela other-bufferfunção, ou seja, não impede que outras funções exibam nenhum buffer no quadro.
politza 02/02


3

Solução para exibir as informações do relógio organizacional na barra de menus do OSX

Aqui está uma solução alternativa para o problema que você especificou:

Eu uso outros aplicativos que não sejam o Emacs; portanto, quando mudo para eles (por exemplo, ao usar o navegador ou o terminal), ainda quero ver o cronômetro em execução.

Você pode usar isso para exibir as informações do org-clock na barra de menus osx que você quase sempre deve poder ver.

https://github.com/jordonbiondo/osx-org-clock-menubar Disponível no MELPA

Observe que isso requer macruby.

Como é a aparência enquanto o relógio entra.

insira a descrição da imagem aqui


1
Uma implementação simples que não depende de MacRuby pode ser feito com emacsclient -e "(org-clock-get-clocked-time)"e bitbar: getbitbar.com
Mankoff

Isso é incrível, você deve escrever uma solução!
Jordon Biondo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.