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