모드 라인만으로 새 프레임 만들기


13

모드 라인 만 포함하는 새 프레임을 만들고 싶습니다. 특히 파일 버퍼가 아닙니다.

왜 이것이 필요합니까? 나는 org-mode의 시계 를 사용하여 작업 시간을 정한다 . 조직 모드는 내가 작업중인 현재 작업에 대한 타이머를 모드 라인에 표시하고 타이머를 실시간으로 업데이트합니다. Emacs 이외의 앱을 사용하므로 브라우저 나 터미널을 사용할 때와 같이 전환 할 때 여전히 실행중인 타이머를보고 싶습니다. 새 프레임을 만들 수 있다고 생각했지만 이제 모드 줄에서 타이머를 클릭하면 .org 파일이 새 프레임에서 열립니다 (이미 모드 줄만 표시하도록 크기가 조정되어 있음). 첫 번째 프레임에서.

다음은 내 모드 선 모양 (파란색 막대)입니다. 새 프레임에서 원하는 전부입니다.

여기에 이미지 설명을 입력하십시오

(결국 새 프레임을 항상 맨 위에 표시하는 방법을 찾아야하지만이 질문의 범위를 벗어납니다)

관련이 있다면 OS X를 사용합니다.


1
OSX 메뉴 표시 줄에 조직 모드 줄 정보를 표시하는 일부 elisp 및 macruby 스크립트를 작성하고 있습니다. 그것은 나를 위해 일하고 있지만 멋지게 마무리하려고합니다.
Jordon Biondo

@JordonBiondo-우수! 귀하의 솔루션이 내가 여기서하고있는 것보다 훨씬 나을 수도 있습니다. 기대하고 있습니다. 계속 업데이트 해주세요.
Sridhar Ratnakumar

답변을 하기 위해 " 우수합니다! " 라는 답변이 실제로 있다고 생각되면 질문의 제목을 바꾸고 다시 바꿔야 합니다. 내가 말할 수있는 한 그들은 " 모드 라인 " 만있는 프레임에 대한 귀하의 요청에 전혀 응답 하지 않습니다 . 요청의 원래 공식 이후 목표를 완화 한 경우 이에 따라 질문을 업데이트하십시오.
Drew

읽은 후에는 OP에 특정 문제가있는 것처럼 보였지만 최상의 솔루션이 아닌 하나의 솔루션 만 요구하는 데 동의합니다.
Jordon Biondo

@Drew-특정 수정 사항을 제안 하시겠습니까? PythonNut의 원래 솔루션은 원래 요청에 응답합니다. "특히 파일 버퍼가 아닙니다."라고 말했고 그의 솔루션은 빈 버퍼를 생성하지만 파일 버퍼가 새 프레임에 나타나지는 않습니다.
Sridhar Ratnakumar 5

답변:


7

Matthew Piziak의 제안 으로 Jorgen Schäfer의 답변 을 확장 하면 다음과 같은 스 니펫이 생성됩니다.

(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
Sridhar Ratnakumar

다행히도 추가 모드 정보를 제거하는 것은 쉽지 않습니다. 나는 그것을 포함하기 위해 나의 대답을 수정했다. 글꼴을 유지하여 무슨 의미인지 잘 모르겠습니까? 버퍼가 비어 있지 않습니까?
PythonNut

모드 라인 (빈 버퍼가 아닌)에서 텍스트의 글꼴 속성을 언급하고있었습니다.
Sridhar Ratnakumar

아, 나중의 코드는 메인 프레임의 모드 라인을 클리어했습니다! 이것이 가능하지 않은 경우 해당 변경 사항을 되돌리고 답변을 수락하겠습니다 (질문이 충족 됨).
Sridhar Ratnakumar

나도 그 사실을 알아 차렸다. 나는 그것을 고쳤다. 모드 라인 글꼴은 변경해도 변경되지 않으므로 어떤 글꼴이 있는지 잘 모르겠습니다.
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
Sridhar Ratnakumar

2
이를 사용하는 display-buffer-alist것이 해결책 일 수 있습니다.
Kaushal Modi

나는 여기서 조직의 사용이를 준수하지 않는 이유를 모른다 buffer-predicate. 사용 display-buffer-alist하는 것이 실제로 아이디어 일 수는 있지만 특정 프레임이 사용되는 것을 방지하기 위해 사용하는 방법을 모르겠습니다.
Jorgen Schäfer

2
이 문제를 해결할 수 set-window-dedicated-p있습니까?
Matthew Piziak

1
buffer-predicate, 정보에 따라서 만에 의해 사용되는 other-buffer함수는 프레임 버퍼에서 모든 표시에서 다른 기능을 방해하지 않는, 즉.
politza

3

OSX의 조직 시계를위한 또 다른 솔루션

상태 표시 줄에 작은 상자가 있습니다. 시계에 들어 가지 않으면 빨간색으로 바뀝니다.

빨간 상자 그림, github 페이지를 참조하십시오

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


1
나는 조금 늦었고 정확한 질문에 대답하지 않지만 누군가에게 도움이되는 대안을 제공합니다.
koddo

3

OSX 메뉴 표시 줄에 조직 시계 정보를 표시하기위한 솔루션

지정한 문제에 대한 대안 솔루션은 다음과 같습니다.

Emacs 이외의 앱을 사용하므로 브라우저 나 터미널을 사용할 때와 같이 전환해도 여전히 실행중인 타이머를보고 싶습니다.

이를 사용하면 거의 항상 볼 수있는 osx 메뉴 표시 줄에 org-clock의 정보를 표시 할 수 있습니다.

https://github.com/jordonbiondo/osx-org-clock-menubar MELPA에서 사용 가능

macruby가 필요합니다.

시계에 보이는 모습

여기에 이미지 설명을 입력하십시오


1
macruby에 의존하지 않는 간단한 구현은 비트 바로 수행 할 수 있습니다 emacsclient -e "(org-clock-get-clocked-time)". getbitbar.com
mankoff

솔루션을 작성해야합니다.
Jordon Biondo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.