조직 테이블의 미리보기 필드


11

org-mode에서 테이블을 만들 때 수동 열 너비를 설정하는 것이 편리한 경우가 있습니다. 따라서 열이 가장 긴 항목 크기로 커질 필요가 없습니다. org-mode 테이블의 항목이 찾은 열보다 길면 =>끝에 기호 가 표시되어 시각적으로 잘립니다 .

C-c `을 사용할 수 org-table-edit-field있지만 C-c C-c미리보기 창을 닫고 조직 모드 버퍼로 돌아가 려면을 (를) 눌러야 합니다. 접두사 인수를 C-u C-c `사용 하여 동일한 명령을 호출하면 전체 필드가 ​​표시되어 제자리에서 편집 할 수 있지만 5-10 개의 필드를 빠르게 연속적으로 미리보고 싶다면 여전히 지루합니다.

LibreOffice Calc에는 스프레드 시트 상단에 미리보기 필드가 있으며 (MS Excel도 마찬가지 임) 현재 선택된 필드의 값을 보여줍니다.

LibreOffice Calc의 미리보기 필드

조직 모드 테이블을 편집 할 때 비슷한 미리보기를 얻을 수 있습니까? 미니 *Messages*버퍼 는 버퍼를 빠르게 채울 때 부작용이있을 수 있지만 좋은 장소처럼 보입니다 . 버퍼의 상단 또는 하단에있는 전용 미니 윈도우도 작동합니다.


3
여기 에 설명 된대로 잘린 필드의 내용을 마우스로 가져 가면 클릭 할 필요가 없습니다 (클릭 필요 없음). 당신이 경우 tooltip-mode켜져 내용이 툴팁에 표시됩니다; 그렇지 않으면 에코 영역에 표시됩니다.
itsjeyd

마우스 사용이 마음에 들면 Excel에서 테이블을 만들 수 있습니다 ... ;-)
nispio

이 옵션을 알고 있는지 확인하고 싶었습니다.
itsjeyd

답변:


11

Juancho의 답변 에서 영감을 받아 헤더 필드를 사용하여 현재 필드의 값을 표시하기로 결정했습니다. 내가 그것에있는 동안, 나는 헤더의 필드 위치를 보여주는 것이 좋겠다고 결정했다.

작동중인 조직 테이블 헤더

이것은 내가 그것을 달성하는 데 사용한 코드입니다.

(defun my-trim-string (arg) 
  "Simple function for trimming the whitespace from the ends of
 a string. Also removes any string properties such as font faces."
  (let ((str (substring-no-properties arg)))
    (when (string-match "^[ \t]+" str)
      (setq str (replace-match "" nil nil str)))
    (when (string-match "[ \t]+$" str)
      (setq str (replace-match "" nil nil str)))
    str))

(defun my-org-table-location (&optional arg)
  "Get the location of the current field in the table"
  (interactive "P")
  (when (eq 'org-mode major-mode)
    (org-table-get-specials)
    (let* ((row (org-table-current-dline))
           (col (org-table-current-column))
           (loc (if arg
                    (format "%c%02d" (+ 64 col) row)
                  (format "@%d$%d" row col))))
      (when (called-interactively-p 'any)
        (message "Field Location: %s" loc))
      loc)))

(defun my-org-table-field (&optional arg)
  "Get the value of the current field in the table"
  (interactive "P")
  (when (eq 'org-mode major-mode)
    (org-table-get-specials)
    (let* ((formula (org-table-current-field-formula))
           (value (my-trim-string (org-table-get-field)))
           (field (or (and arg formula) value)))
      (when (called-interactively-p 'any)
        (message "Field Value: %s" loc))
      field)))

;; Define the format for the header line in Org mode
(setq my-org-table-header
      (list '(:eval (let ((loc (my-org-table-location))
                          (field (my-org-table-field)))
                      (format " %s: %s" loc field)))))

(defun my-org-mode-setup ()
  "Apply custom setup to org-mode buffers"
  (setq-local header-line-format my-org-table-header))
(add-hook 'org-mode-hook 'my-org-mode-setup)

며칠간의 (최소한) 테스트를 견뎌냈으므로 계속 진행하기로 결정했습니다. 다른 사람이 이것을 사용하게되면 문제가 발생하면 알려주십시오.


9

seth의 답변에서 영감을 받아 항상 툴팁 텍스트를 머리글 줄 (창 상단의 거의 알려지지 않은 모드 줄)에 표시 할 수 있습니다.

다음을 실행하십시오.

(setq-default header-line-format (list '(:eval (help-at-pt-kbd-string))))

이제 포인트 아래의 텍스트에 툴팁 속성이있을 때마다 헤더 라인에 표시됩니다.

실제로 조직 테이블 툴팁에는 지침이있는 성가신 접두사가 포함되어 있지만 문제에 대한 근사치입니다.


감사합니다! 이 아이디어를 확장 하여 툴팁이있는 것뿐만 아니라 모든 필드의 가치를 보여주는 솔루션 을 제안했습니다 .
nispio

8

셀에 커서를 놓고 커서 C-h .를 누르면 에코 영역에 해당 셀의 도움말 텍스트가 표시됩니다. 도움말 텍스트에는 다른 도움말 텍스트뿐만 아니라 전체 값이 포함됩니다. 시끄러운 종류이지만 가치를 보여줍니다.

참조 display-local-help도움말 에코 .


3

이것은 오래된 질문이지만 이것을 추가하겠습니다.

(add-hook 'org-mode-hook
          '(lambda ()
             (setq-local header-line-format (list '(:eval (substring-no-properties (org-table-get-field)))))
           ))

이것은 @nispio 솔루션을 구현하는보다 직접적인 방법이라고 생각합니다.


0

M-x org-table-follow-field-mode 파일의 조직 모드에있는 동안 볼 수있을뿐 아니라 원격 편집도 허용되어야합니다. 따라서 셀 편집을 잃지 않고 스왑 열과 같은 테이블과 셀로 쉽게 다양한 작업을 수행 할 수 있습니다.

키 바인딩을 사용하면 테이블 내부에있을 때마다 해당 키를 누르고이 모드를 활성화하려고합니다. 이제 테이블 안에있을 때마다 자동으로 활성화하는 방법을 찾을 수있는 경우에만 가능합니다.

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