URLの折りたたみ


7

多数のURLが含まれているドキュメントを編集していhideshowます。コードのブロックを折りたたむのと同じように、URLの最後の部分まで自動的に折りたたんで、行のスペースを節約します。例えば:

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

に:

<baz.html>

これを行う方法については、できればと互換性のある方法で提案をいただければ幸いgoto-addressです。の+/-ようにURLの横に記号を含めることができるかどうかも疑問に思っていますhideshowvis

回答:


6

URL解析が含まれる可能性があるため、これを例として取り上げますが、一般的な考え方は次のようになります。

(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 URLで展開/縮小状態を切り替えます。


2
これは組み込みの便利なアップデートのようですgoto-address-mode。貢献をご検討ください。
abo-abo 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.