URLs zusammenfalten

7

Ich bearbeite ein Dokument mit vielen URLs und möchte sie automatisch bis zum letzten Teil der URL falten, damit sie weniger Platz in der Zeile beanspruchen, ähnlich wie beim hideshowFalten von Codeblöcken. Zum Beispiel:

<http://www.foo.bar/baz.html>

Zu:

<baz.html>

Ich würde mich über Vorschläge dazu freuen, vorzugsweise auf eine Weise, die mit kompatibel ist goto-address. Ich frage mich auch, ob es möglich ist, ein +/-Symbol neben der URL wie in einzufügen hideshowvis.

Schloss-Bravo
quelle

Antworten:

6

Die URL-Analyse könnte wahrscheinlich enthalten sein. Nehmen Sie dies also nur als Beispiel, aber die allgemeine Idee lautet wie folgt:

(defun my/minify-urls (beg end)
  (interactive
   (if (region-active-p)
       (list (region-beginning) (region-end))
     (list (point-min) (point-max))))
  (save-excursion
    (goto-char beg)
    (while (re-search-forward "<\\w+:\\/\\/\\(:?[^>\\/]+\\/\\)*\\([^>\\/]+\\)>" end t)
      (message "matched")
      (let* ((all (match-string 0))
             (match (match-string 1))
             (ibeg (- (point) (length all) -1))
             (iend (- (point) (length match) -3)))
        (make-text-button iend (1- (point))
                          'len (- iend ibeg)
                          'state nil
                          'action (lambda (button)
                                    (let ((state (button-get button 'state))
                                          (len (button-get button 'len))
                                          (pos (button-start button)))
                                      (add-text-properties
                                       (- pos len) pos
                                       (if state '(invisible t) '(invisible nil)))
                                      (button-put button 'state (not state)))))
        (add-text-properties ibeg iend '(invisible t))))))

RET auf den URLs, um den erweiterten / minimierten Status umzuschalten.

wvxvw
quelle
2
Dies scheint ein nützliches Update für das integrierte System zu sein goto-address-mode. Bitte erwägen Sie einen Beitrag.
Abo-Abo