Xem trước các trường trong bảng org


11

Đôi khi thuận tiện để đặt độ rộng cột thủ công khi tạo bảng ở chế độ org. Điều này làm cho nó để các cột không phải tăng kích thước của mục dài nhất của chúng. Khi một mục trong bảng và chế độ tổ chức dài hơn cột được tìm thấy, mục đó sẽ bị cắt cụt bằng một =>biểu tượng ở cuối.

Tôi biết rằng tôi có thể làm C-c `để sử dụng org-table-edit-field, nhưng điều này đòi hỏi phải nhấn C-c C-cđể đóng cửa sổ xem trước và quay lại bộ đệm chế độ org. Gọi cùng một lệnh với một đối số tiền tố C-u C-c `làm cho trường đầy đủ hiển thị để có thể chỉnh sửa tại chỗ, nhưng vẫn còn tẻ nhạt nếu tôi muốn nhanh chóng xem trước 5-10 trường liên tiếp.

LibreScript Calc có trường xem trước ở đầu bảng tính (MS Excel cũng vậy) hiển thị giá trị của trường hiện được chọn:

trường xem trước trong LibreOffice Calc

Có thể có được bản xem trước tương tự khi chỉnh sửa bảng chế độ tổ chức không? Xe buýt nhỏ có vẻ như là một nơi tốt cho nó, mặc dù nó có thể có tác dụng phụ là làm đầy *Messages*bộ đệm một cách nhanh chóng. Một cửa sổ nhỏ chuyên dụng ở trên cùng hoặc dưới cùng của bộ đệm cũng sẽ hoạt động.


3
Như đã giải thích ở đây , bạn có thể xem trước nội dung của các trường bị cắt bằng cách di chuột qua chúng (không cần nhấp chuột). Nếu bạn đã tooltip-modebật, nội dung sẽ được hiển thị trong một chú giải công cụ; nếu không chúng sẽ được hiển thị trong khu vực tiếng vang.
itjeyd

Nếu tôi thích sử dụng chuột, tôi sẽ tạo các bảng của mình trong Excel ... ;-)
nispio

Chỉ muốn chắc chắn rằng bạn biết về tùy chọn này ...
itjeyd

Câu trả lời:


11

Lấy cảm hứng từ câu trả lời của Juancho , tôi quyết định sử dụng dòng tiêu đề để hiển thị giá trị của trường hiện tại. Trong khi tôi ở đó, tôi đã quyết định sẽ rất tuyệt khi hiển thị vị trí của trường trong tiêu đề:

Tiêu đề bảng Org đang hoạt động

Đây là mã tôi đã sử dụng để đạt được nó:

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

Nó đã chịu được một vài ngày thử nghiệm (tối thiểu), vì vậy tôi quyết định tiếp tục và chia sẻ nó. Nếu bất cứ ai khác kết thúc việc này, xin vui lòng cho tôi biết nếu bạn gặp bất kỳ vấn đề nào với nó.


9

Lấy cảm hứng từ câu trả lời của seth, bạn luôn có thể hiển thị văn bản chú giải công cụ trên dòng tiêu đề (là dòng chế độ ít được biết đến ở đầu cửa sổ).

Thực hiện như sau:

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

Bây giờ, mỗi khi văn bản dưới điểm có thuộc tính tooltip, nó sẽ được hiển thị trên dòng tiêu đề.

Trên thực tế, các chú giải công cụ bảng org chứa một tiền tố gây phiền nhiễu với các hướng dẫn, nhưng nó là một xấp xỉ cho vấn đề của bạn.


Cảm ơn bạn! Tôi đã mở rộng ý tưởng này để đưa ra một giải pháp cho thấy giá trị của bất kỳ lĩnh vực nào (không chỉ những lĩnh vực có chú giải công cụ).
nispio

8

Nếu bạn đặt con trỏ vào ô và nhấn C-h .nó sẽ hiển thị văn bản trợ giúp cho ô đó trong vùng tiếng vang. Văn bản trợ giúp chứa toàn bộ giá trị cũng như văn bản trợ giúp khác. Loại ồn ào nhưng nó cho thấy giá trị.

Xem display-local-helpgiúp Echo .


3

Đây là một câu hỏi cũ, nhưng hãy để tôi thêm điều này.

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

Đây là một cách trực tiếp hơn để thực hiện giải pháp của @nispio, tôi nghĩ vậy.


0

M-x org-table-follow-field-mode không chỉ cho phép xem mà còn chỉnh sửa từ xa, trong khi ở chế độ org trong tệp của bạn. Vì vậy, bạn có thể thực hiện nhiều việc khác nhau với các bảng và ô dễ dàng như cột hoán đổi mà không mất việc chỉnh sửa ô trong tầm nhìn.

Với tính năng bấm phím, tôi nhấn phím đó bất cứ khi nào tôi ở trong bàn và muốn kích hoạt chế độ này. Bây giờ chỉ, nếu tôi có thể tìm cách tự động kích hoạt nó bất cứ khi nào tôi ở trong bàn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.