Function: dired-insert-set-properties
dired-insert-set-properties is a byte-compiled function defined in
dired.el.gz.
Signature
(dired-insert-set-properties BEG END)
Documentation
Add various text properties to the lines in the region, from BEG to END.
Overlays could be added when some user options are enabled, e.g.,
dired-filename-display-length.
Source Code
;; Defined in /usr/src/emacs/lisp/dired.el.gz
(defun dired-insert-set-properties (beg end)
"Add various text properties to the lines in the region, from BEG to END.
Overlays could be added when some user options are enabled, e.g.,
`dired-filename-display-length'."
(remove-overlays beg end 'invisible 'dired-filename-hide)
(save-excursion
(goto-char beg)
(let ((ell-len (dired--get-ellipsis-length)) maxlen filename-col)
(while (< (point) end)
(ignore-errors
(if (not (dired-move-to-filename))
(unless (or (looking-at-p "^$")
(looking-at-p dired-subdir-regexp))
(put-text-property (line-beginning-position)
(1+ (line-end-position))
'invisible 'dired-hide-details-information))
(save-excursion
(let ((end (1- (point)))
(opoint (goto-char (1+ (pos-bol))))
(i 0))
(put-text-property opoint end 'invisible 'dired-hide-details-detail)
(while (re-search-forward "[^ ]+" end t)
(when (member (incf i) dired-hide-details-preserved-columns)
(put-text-property opoint (point) 'invisible nil))
(setq opoint (point)))))
(let ((beg (point)) (end (save-excursion
(dired-move-to-end-of-filename)
(1- (point)))))
(if dired-click-to-select-mode
(put-text-property beg end 'keymap
dired-click-to-select-map)
(when (and dired-mouse-drag-files (fboundp 'x-begin-drag))
(put-text-property beg end 'keymap
dired-mouse-drag-files-map)))
(when dired-filename-display-length
(let ((len (string-width (buffer-substring beg (1+ end))))
ell-beg)
(or maxlen (setq maxlen (dired--get-filename-display-length)))
(when (and (integerp maxlen) (> len maxlen (+ ell-len 2)))
(or filename-col (setq filename-col (current-column)))
(move-to-column (+ filename-col (/ maxlen 2)))
(setq ell-beg (point))
(move-to-column (+ filename-col (/ maxlen 2)
(- len maxlen) ell-len))
;; Here we use overlays because isearch by default
;; doesn't support finding matches in hidden text
;; made invisible via text properties.
(let ((ov (make-overlay ell-beg (point))))
(overlay-put ov 'invisible 'dired-filename-hide)
(overlay-put ov 'isearch-open-invisible #'delete-overlay)
(overlay-put ov 'evaporate t)))))
(add-text-properties
beg (1+ end)
`(mouse-face
highlight
dired-filename t
help-echo ,(if dired-click-to-select-mode
"mouse-2: mark or unmark this file"
(if (and dired-mouse-drag-files
(fboundp 'x-begin-drag))
"down-mouse-1: drag this file to another program
mouse-2: visit this file in other window"
"mouse-2: visit this file in other window"))))
(when (< (+ end 5) (line-end-position))
(put-text-property (+ end 5) (line-end-position)
'invisible 'dired-hide-details-link)))))
(forward-line 1)))))