빈 반향 영역을 사용하여 정보 표시


10

반향 영역은 대부분 비어 있으므로 일부 정보를 표시하는 데 사용할 수 있다고 생각합니다. 예를 들어, org-clock현재 작업, 남은 시간 및 총 경과 시간을 모델에 표시합니다. 이 정보가 정말 읽을 수없는, (가 전체 이맥스 세션에 적용되기 때문에) 각 modeline 줄에 반복되지 않고있다합니다 (modeline 줄 오히려 짧은 될 수 있습니다) 나는 그것을 위해 귀중한 modeline 줄 공간을 희생 기꺼이 것을 유용 . 반면에 여기에 표시 할 것이 없으면 에코 영역에 나타날 수 있습니다.

이것을 달성하는 정식 방법이 있습니까? 삽입 기능을 해킹한다고 생각 minibuffer-inactive-mode-hook했지만 (예 : 에코 영역을 다시 사용하자마자 메시지가 사라지는 것처럼 안정적으로 작동하지 않습니다.) 또는 로그되지 않은 메시지를 스팸 처리 합니다 (그러나 다른 용도로는 혼란 스러울 것입니다) 에코 영역 및 미니 버퍼).

빈약 한 버전은 유휴 타이머를 사용하지만 이맥이 유휴 상태없이 에코 영역이 비어있을 수 있습니다 (예 : 일부 텍스트를 입력 할 때).


1
표시되는 에코 영역은`* Echo Area 0 *`또는`* Echo Area 1 *`의 내용이며 "일반"버퍼입니다. 이 버퍼가 "플러시"될 때마다 (또는 표시되고 비어있을 때마다) 훅 실행을 제공하도록 Emacs를 패치 할 수 있어야이 기능이 효율적이고 안정적으로 구현 될 수 있습니다.
Stefan

정확하게 기억하고 계신 것은 아니지만 Bastien Guerry는 특히 프레임 제목에 모드 행을 표시하여 화면 영역을 절약하기 위해 몇 가지 흥미로운 작업을 수행했습니다. bzg.fr/emacs-strip-tease.html
Dieter.Wilhelm

답변:


4

이 질문 에 대한 의견은 symon 이라는 패키지 가 그러한 기능을 사용 한다고 언급 합니다.

미니 버퍼가 비활성 상태 일 때 로그되지 않은 메시지를 스팸으로 처리하고 명령이 실행될 때마다 다시 표시를 중지하면됩니다. 이에 대한 상용구는 다소 짧으며 몇 분의 사용 후에도 메시지와 미니 버퍼 사용이 여전히 메시지보다 우선합니다.

주요 구성 요소는 다음과 같습니다.

  • 유휴 타이머를 실행 표시 기능은, (함께 메시지를 호출 message-log-max로 설정 nil표시된 문자열이 얻을하지 않습니다 그래서, *Messages*버퍼)
  • 타이머에서 실행되는 재표시 기능
  • 디스플레이를 정지시키는 기능 pre-command-hook

유일한 문제는 입력 할 때를 포함하여 명령이 실행될 때마다 표시가 중지된다는 것입니다.

관심있는 사람들을 위해 관련 코드를 github에서 사용할 수있는 상용구 패키지로 추출했습니다 .


1

대답은, IMO,하지 아니 . 에코 영역은 임시 메시지 용 입니다. 그리고 많은 것들이 그곳에서 반향을 일으킨 것을 명시 적으로 지 웁니다 . 따라서 합리적인 방식으로 요청한 것을 실현하는 것은 문제가됩니다.

요컨대, 대안을 사용하십시오. 여기 몇 가지가 있습니다 :

  1. 다른 버퍼 (예 :이 목적을 위해 열린 작은 프레임 또는 창)를 사용하십시오. 간단한 작업으로 이동, 편집, 삭제 또는 원하는 다른 작업을 수행 할 수 있습니다.

  2. 모드 라인의 일부 또는 전부를 사용하십시오 (이미 고려한 것 같습니다).

  3. 헤더 라인을 사용하십시오.

  4. 프레임 제목을 사용하십시오.

그것이 내가 있다면, 아마도 # 1을 선택했을 것입니다. (그러나 나는 상태 정보의 그러한 풀 타임 디스플레이를 정말로 원하거나 필요로하지 않습니다. 필요할 때 정보 (이력 / 로그조차도)를 보여주는 명령을 정의 할 가능성이 큽니다.)


귀하의 의견에 따라 업데이트 :

귀하는 이미 " 에코 영역을 다시 사용하자마자 메시지가 사라집니다 "라고 질문했습니다 . 따라서 에코 영역이 필요에 맞지 않는 임시 공간을 사용하는 것처럼 들렸습니다. 귀하의 의견 답변은 이것과 모순되는 것 같습니다.

에코 영역을 실제로 사용 minibuffer-inactive-mode-hook하려면 언급 한대로을 사용하거나 타이머를 사용하여 message다른 방법으로 에코 영역에 시간 메시지 를 호출 하거나 삽입하십시오. 그러나 이미 그 문제를 지적했습니다. 그 문제는 (에서 추적 (삭제 덮어 쓰기) 구성 ) 에코 영역의 덧없음을 .

요약하면 임시 메시지 용 영역을 사용하려고하지만 해당 영역을 다시 사용하자마자 메시지가 사라지는 것을 원하지 않습니다.

(BTW-모드 라인 정보가 모든 모드 라인에서 반복된다는 언급을하셨습니다 : 반드시 그럴 필요는 없습니다. 모드 라인을 특정 버퍼 등에 특정하게 만들 수 있습니다. IOW, 항상 하나의 모드 라인을 선택할 수 있습니다 (또는 주기적으로) 시계 등을 보여줍니다.


제안 해 주셔서 감사합니다! 먼저 이해가되지 않습니다. 왜 문제가 있습니까? 에코 영역의 다른 사용을 재정의하기 위해 에코 영역 ATM으로 이동하는 것을 원하므로 지우는 것이 좋습니다. 추가 정보는 에코 영역이 비어있을 때만 표시되므로 지울 것이 없습니다. 합리적인 사양처럼 들리지 않습니까? # 1에 관한 문제는 화면 공간을 낭비하고 싶지 않다는 것입니다. 에코 영역은 비어 있어도 항상 있습니다. # 2와 관련된 몇 가지 문제를 나열했으며 # 3과 # 4는 이러한 문제를 많이 공유합니다.
T. Verron 2016 년

나는 정보의 전임 표시를하려는 이유에 대해, 예를 들어 가지고 org-clock질문에서 예를 : 나는 일을해야 무엇을 생각 나게 아래로 똑딱 타이머를 원하고, 내가 생각하고 있다는 그 일을 할 지금 권리 로, 가능한 자주.
T. Verron 2016 년

"에코 영역을 다시 사용하자마자 메시지가 사라집니다." 내가 의미하는 것은 minibuffer-inactive-mode-hook미니 버퍼를 사용 하고 종료하면 메시지가 표시 된다는 것 입니다. 그런 다음 다른 명령이 에코 영역에 무언가를 인쇄하면이 새로운 메시지가 추가되고 임시 메시지가 다시 나타나지 않습니다 (미니 버퍼가 이번에는 관여하지 않았기 때문).
T. Verron 2019 년

modeline에 관해서, 주요 문제는 거기에 사용 가능한 작은 공간입니다 (나는 종종 많은 창문이 있고, 가로로 나뉘어 있기 때문에 매우 짧은 모델입니다).
T. Verron 2018

다시 - " 결론적으로, 당신은 임시 메시지를위한 영역을 사용하려면,하지만 당신은 그 지역을 다시 사용되는 메시지가 즉시 사라 싶지 않아요. "사용에 타이머를 message또는 post-command-hook당신 같은 경우. 그러나 일시적인 표시를 원하지 않는 부분에 임시 표시 영역을 사용하려고하기 때문에 사라지거나 덮어 쓰기의 필수 문제는 때때로 머리를 뒤로 젖 히게됩니다.
Drew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.