Podgląd pól w tabeli organizacji

11

Czasami wygodnie jest ustawić ręczną szerokość kolumny podczas tworzenia tabeli w trybie org. Dzięki temu kolumny nie muszą rosnąć do rozmiaru najdłuższego wpisu. Gdy pozycja w tabeli trybu org i jest dłuższa niż kolumna, w której się znajduje, pozycja zostaje wizualnie obcięta z =>symbolem na końcu.

Wiem, że mogę C-c `używać org-table-edit-field, ale to wymaga prasowania C-c C-c, aby zamknąć okno podglądu i wrócić do bufora org-mode. Wywołanie tego samego polecenia z argumentem przedrostka C-u C-c `powoduje, że pełne pole jest widoczne, dzięki czemu można je edytować na miejscu, ale nadal jest nudne, jeśli chcę szybko wyświetlić podgląd 5-10 pól w krótkich odstępach czasu.

LibreOffice Calc ma pole podglądu u góry arkusza kalkulacyjnego (podobnie jak MS Excel), który pokazuje wartość aktualnie wybranego pola:

pole podglądu w LibreOffice Calc

Czy można uzyskać podobny podgląd podczas edycji tabeli w trybie organizacji? Minibufor wydaje się być dla niego dobrym miejscem, chociaż może mieć efekt uboczny *Messages*szybkiego zapełniania bufora. Działa również dedykowane mini okno u góry lub u dołu bufora.

nispio
źródło
3
Jak wyjaśniono tutaj , możesz wyświetlić podgląd skróconych pól, najeżdżając na nich myszką (nie trzeba klikać). Jeśli tooltip-modewłączyłeś, zawartość będzie wyświetlana w podpowiedzi; w przeciwnym razie zostaną wyświetlone w obszarze echa.
itsjeyd
Gdybym lubił używać myszy,
robiłbym
Chciałem tylko upewnić się, że znasz tę opcję ...
itsjeyd

Odpowiedzi:

11

Zainspirowany odpowiedzią Juancho postanowiłem użyć linii nagłówka do wyświetlenia wartości bieżącego pola. Kiedy tam byłem, zdecydowałem, że miło będzie również pokazać lokalizację pola w nagłówku:

Nagłówek tabeli organizacji w akcji

Oto kod, którego użyłem, aby to osiągnąć:

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

Wytrzymał kilka dni (minimalnych) testów, więc postanowiłem je udostępnić. Jeśli ktoś inny skorzysta z tego, daj mi znać, jeśli napotkasz jakieś problemy.

nispio
źródło
9

Zainspirowany odpowiedzią setha, zawsze możesz wyświetlić tekst podpowiedzi w linii nagłówka (która jest mało znaną linią trybu u góry okna).

Wykonaj następujące czynności:

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

Teraz za każdym razem, gdy tekst pod punktem ma właściwość podpowiedzi, będzie wyświetlany w wierszu nagłówka.

W rzeczywistości podpowiedzi tabeli organizacyjnej zawierają irytujący przedrostek z instrukcjami, ale jest to przybliżenie twojego problemu.

Juancho
źródło
Dziękuję Ci! Rozwinąłem ten pomysł, aby znaleźć rozwiązanie, które pokazuje wartość dowolnego pola (nie tylko z etykietkami narzędzi).
nispio
8

Jeśli umieścisz kursor w komórce i naciśniesz, C-h .wyświetli tekst pomocy dla tej komórki w obszarze echa. Tekst pomocy zawiera pełną wartość, a także inny tekst pomocy. Trochę głośno, ale pokazuje wartość.

Zobacz display-local-helpi pomóż Echo .

seth
źródło
3

To stare pytanie, ale dodam to.

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

To chyba bardziej bezpośredni sposób na wdrożenie rozwiązania @nispio.

diadochos
źródło
0

M-x org-table-follow-field-mode powinien nie tylko umożliwiać przeglądanie, ale także zdalną edycję, będąc w trybie organizacji w twoim pliku. Dzięki temu możesz łatwo wykonywać różne czynności z tabelami i komórkami, takie jak zamiana kolumn, bez utraty edycji komórek w zasięgu wzroku.

Podczas przypisywania klawiszy naciskam ten klawisz, gdy jestem w tabeli i chcę aktywować ten tryb. Tylko teraz, jeśli znajdę sposób na automatyczną aktywację, gdy tylko będę w środku stołu.

Aartist
źródło