Vorschaufelder in der Organisationstabelle


11

Manchmal ist es praktisch, eine manuelle Spaltenbreite festzulegen, wenn eine Tabelle im Organisationsmodus erstellt wird. Dadurch müssen Spalten nicht auf die Größe ihres längsten Eintrags wachsen. Wenn ein Eintrag in einer Tabelle im Organisationsmodus länger ist als die Spalte, in der er sich befindet, wird der Eintrag visuell mit einem =>Symbol am Ende abgeschnitten .

Ich weiß , dass ich tun kann , C-c `zu verwenden org-table-edit-field, aber dies erfordert drückt C-c C-cdas Vorschaufenster zu schließen und zum org-Modus Puffern zurück. Wenn Sie denselben Befehl mit einem Präfixargument aufrufen, C-u C-c `wird das gesamte Feld sichtbar, sodass es an Ort und Stelle bearbeitet werden kann. Es ist jedoch immer noch mühsam, wenn ich schnell hintereinander eine Vorschau von 5-10 Feldern anzeigen möchte.

LibreOffice Calc verfügt über ein Vorschaufeld am oberen Rand einer Tabelle (ebenso wie MS Excel), in dem der Wert des aktuell ausgewählten Felds angezeigt wird:

Vorschaufeld in LibreOffice Calc

Ist es möglich, beim Bearbeiten einer Tabelle im Organisationsmodus eine ähnliche Vorschau zu erhalten? Der Minibuffer scheint ein guter Ort dafür zu sein, obwohl er den Nebeneffekt haben könnte, den *Messages*Puffer schnell aufzufüllen . Ein dediziertes Mini-Fenster oben oder unten im Puffer würde ebenfalls funktionieren.


3
Wie hier erläutert , können Sie eine Vorschau des Inhalts abgeschnittener Felder anzeigen, indem Sie mit der Maus darüber fahren (keine Klicks erforderlich). Wenn Sie aktiviert haben tooltip-mode, wird der Inhalt in einem Tooltip angezeigt. Andernfalls werden sie im Echo-Bereich angezeigt.
Itsjeyd

Wenn ich gerne mit der Maus würde, würde ich meine Tabellen in Excel
erstellen

Ich

Antworten:


11

Inspiriert von Juanchos Antwort entschied ich mich, die Kopfzeile zu verwenden, um den Wert des aktuellen Feldes anzuzeigen. Während ich dabei war, entschied ich, dass es schön wäre, die Position des Feldes auch in der Kopfzeile anzuzeigen:

Org-Tabellenkopf in Aktion

Dies ist der Code, mit dem ich es erreicht habe:

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

Es hat ein paar Tage (minimalen) Tests standgehalten, also habe ich beschlossen, es zu teilen. Wenn jemand anderes dies verwendet, lassen Sie es mich bitte wissen, wenn Sie Probleme damit haben.


9

Inspiriert von Seths Antwort können Sie den QuickInfo-Text immer in der Kopfzeile anzeigen (dies ist eine wenig bekannte Moduszeile oben im Fenster).

Führen Sie Folgendes aus:

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

Jedes Mal, wenn der Text unter dem Punkt eine QuickInfo-Eigenschaft hat, wird er in der Kopfzeile angezeigt.

Org-Table-Tooltips enthalten ein nerviges Präfix mit Anweisungen, aber es ist eine Annäherung an Ihr Problem.


Vielen Dank! Ich habe diese Idee erweitert, um eine Lösung zu finden , die den Wert jedes Felds anzeigt (nicht nur die mit QuickInfos).
Nispio

8

Wenn Sie den Cursor in die Zelle setzen und C-h .drücken, wird der Hilfetext für diese Zelle im Echobereich angezeigt. Der Hilfetext enthält den vollständigen Wert sowie den anderen Hilfetext. Etwas laut, aber es zeigt den Wert.

Echo anzeigen display-local-helpund helfen .


3

Dies ist eine alte Frage, aber lassen Sie mich dies hinzufügen.

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

Ich denke, dies ist ein direkterer Weg, um die Lösung von @nispio zu implementieren.


0

M-x org-table-follow-field-mode sollte nicht nur das Anzeigen, sondern auch das Remote-Bearbeiten ermöglichen, während Sie sich in Ihrer Datei im Organisationsmodus befinden. So können Sie mit Tabellen und Zellen ganz einfach verschiedene Dinge tun, z. B. Spalten austauschen, ohne die Zellbearbeitung in Sichtweite zu verlieren.

Bei der Tastenkombination drücke ich diese Taste, wenn ich mich in der Tabelle befinde und diesen Modus aktivieren möchte. Nur jetzt, wenn ich einen Weg finde, es automatisch zu aktivieren, wenn ich mich in der Tabelle befinde.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.