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


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.