├── .gitignore
├── screenshot.png
├── .github
└── workflows
│ └── test.yml
├── Makefile
├── README.md
└── diredfl.el
/.gitignore:
--------------------------------------------------------------------------------
1 | /diredfl.elc
2 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/purcell/diredfl/HEAD/screenshot.png
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | paths-ignore:
6 | - '**.md'
7 |
8 | jobs:
9 | lint:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: purcell/setup-emacs@master
13 | with:
14 | version: 29.4
15 | - uses: actions/checkout@v4
16 | - name: Run tests
17 | run: make package-lint
18 |
19 | build:
20 | runs-on: ubuntu-latest
21 | strategy:
22 | matrix:
23 | emacs_version:
24 | - 24.1
25 | - 24.5
26 | - 25.3
27 | - 26.3
28 | - 27.2
29 | - 28.2
30 | - 29.4
31 | - snapshot
32 | steps:
33 | - uses: purcell/setup-emacs@master
34 | with:
35 | version: ${{ matrix.emacs_version }}
36 |
37 | - uses: actions/checkout@v4
38 | - name: Run tests
39 | run: make compile
40 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | EMACS ?= emacs
2 |
3 | # A space-separated list of required package names
4 | DEPS =
5 |
6 | INIT_PACKAGES="(progn \
7 | (require 'package) \
8 | (push '(\"melpa\" . \"https://melpa.org/packages/\") package-archives) \
9 | (package-initialize) \
10 | (dolist (pkg '(PACKAGES)) \
11 | (unless (package-installed-p pkg) \
12 | (unless (assoc pkg package-archive-contents) \
13 | (package-refresh-contents)) \
14 | (package-install pkg))) \
15 | )"
16 |
17 | all: compile package-lint clean-elc
18 |
19 | package-lint:
20 | ${EMACS} -Q --eval $(subst PACKAGES,package-lint,${INIT_PACKAGES}) -batch -f package-lint-batch-and-exit diredfl.el
21 |
22 | compile: clean-elc
23 | ${EMACS} -Q --eval $(subst PACKAGES,${DEPS},${INIT_PACKAGES}) -L . -batch -f batch-byte-compile *.el
24 |
25 | clean-elc:
26 | rm -f f.elc
27 |
28 | .PHONY: all compile clean-elc package-lint
29 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](http://melpa.org/#/diredfl)
2 | [](http://stable.melpa.org/#/diredfl)
3 | [](https://github.com/purcell/diredfl/actions/workflows/test.yml)
4 |
5 |
6 | # Extra font lock rules for a more colourful dired
7 |
8 | This is adapted from the extra font lock rules provided by Drew Adams'
9 | `dired+` package, but published via a modern means, and with support
10 | for older Emacsen removed.
11 |
12 | 
13 |
14 | ## Installation
15 |
16 | If you're an Emacs 24 user or you have a recent version of
17 | `package.el` you can install `diredfl` from the
18 | [MELPA](http://melpa.org) repository. The version of `diredfl` there
19 | will always be up-to-date.
20 |
21 | Enable `diredfl-mode` in all `dired-mode` buffers by calling or
22 | customising `diredfl-global-mode` as desired.
23 |
24 | ## Related packages
25 |
26 | [dired-hacks](https://github.com/Fuco1/dired-hacks#dired-rainbow) also
27 | contains some enhanced font-lock support for `dired`, but with
28 | different goals from this package.
29 |
30 | ## About
31 |
32 | Author: Steve Purcell
33 |
34 | Homepage: https://github.com/purcell/diredfl
35 |
36 |
37 |
38 | Author links:
39 |
40 | [💝 Support this project and my other Open Source work](https://www.patreon.com/sanityinc)
41 |
42 | [💼 LinkedIn profile](https://uk.linkedin.com/in/stevepurcell)
43 |
44 | [✍ sanityinc.com](http://www.sanityinc.com/)
45 |
--------------------------------------------------------------------------------
/diredfl.el:
--------------------------------------------------------------------------------
1 | ;;; diredfl.el --- Extra font lock rules for a more colourful dired -*- lexical-binding: t; -*-
2 |
3 | ;; Copyright (C) 2017 Steve Purcell
4 |
5 | ;; Author: Steve Purcell
6 | ;; Author: Drew Adams
7 | ;; Keywords: faces
8 | ;; URL: https://github.com/purcell/diredfl
9 | ;; Package-Requires: ((emacs "24"))
10 | ;; Package-Version: 0.5
11 |
12 | ;; This program is free software; you can redistribute it and/or modify
13 | ;; it under the terms of the GNU General Public License as published by
14 | ;; the Free Software Foundation, either version 3 of the License, or
15 | ;; (at your option) any later version.
16 |
17 | ;; This program is distributed in the hope that it will be useful,
18 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 | ;; GNU General Public License for more details.
21 |
22 | ;; You should have received a copy of the GNU General Public License
23 | ;; along with this program. If not, see .
24 |
25 | ;;; Commentary:
26 |
27 | ;; This is adapted from the extra font lock rules provided by Drew
28 | ;; Adams' `dired+' package, but published via a modern means, and with
29 | ;; support for older Emacsen removed.
30 |
31 | ;; Enable in all Dired buffers by calling or customising `diredfl-global-mode'.
32 |
33 | ;; Alternatively:
34 |
35 | ;; (add-hook 'dired-mode-hook 'diredfl-mode)
36 |
37 | ;;; Code:
38 |
39 | (require 'dired)
40 |
41 | (defgroup diredfl ()
42 | "Extra font lock rules for a more colourful Dired."
43 | :group 'dired)
44 |
45 | (defcustom diredfl-compressed-extensions '(".tar" ".taz" ".tgz" ".arj" ".lzh"
46 | ".lzma" ".xz" ".zip" ".z" ".Z" ".gz" ".bz2")
47 | "*List of compressed-file extensions, for highlighting."
48 | :type '(repeat string) :group 'diredfl)
49 |
50 | (defcustom diredfl-ignore-compressed-flag t
51 | "*Non-nil means to font-lock names of compressed files as ignored files.
52 | This applies to filenames whose extensions are in
53 | `diredfl-compressed-extensions'. If nil they are highlighted using
54 | face `diredfl-compressed-file-name'."
55 | :type 'boolean :group 'diredfl)
56 |
57 | (defface diredfl-autofile-name
58 | '((((background dark)) (:background "#111313F03181")) ; Very dark blue
59 | (t (:background "#EEECEC0FCE7E"))) ; Very pale goldenrod
60 | "*Face used in Dired for names of files that are autofile bookmarks."
61 | :group 'diredfl)
62 | (defvar diredfl-autofile-name 'diredfl-autofile-name)
63 |
64 | (defface diredfl-compressed-file-name
65 | '((((background dark)) (:foreground "Blue"))
66 | (t (:foreground "Brown")))
67 | "*Face used for compressed file names."
68 | :group 'diredfl)
69 | (defvar diredfl-compressed-file-name 'diredfl-compressed-file-name)
70 |
71 | (defface diredfl-compressed-file-suffix
72 | '((((background dark)) (:foreground "Blue"))
73 | (t (:foreground "Yellow")))
74 | "*Face used for compressed file suffixes in Dired buffers.
75 | This means the `.' plus the file extension. Example: `.zip'."
76 | :group 'diredfl)
77 | (defvar diredfl-compressed-file-suffix 'diredfl-compressed-file-suffix)
78 |
79 | (defface diredfl-date-time
80 | '((((background dark)) (:foreground "#74749A9AF7F7")) ; ~ med blue
81 | (t (:foreground "DarkGoldenrod4")))
82 | "*Face used for date and time in Dired buffers."
83 | :group 'diredfl)
84 | (defvar diredfl-date-time 'diredfl-date-time)
85 |
86 | (defface diredfl-deletion
87 | '((t (:foreground "Yellow" :background "Red")))
88 | "*Face used for deletion flags (D) in Dired buffers."
89 | :group 'diredfl)
90 | (defvar diredfl-deletion 'diredfl-deletion)
91 |
92 | (defface diredfl-deletion-file-name
93 | '((t (:foreground "Red")))
94 | "*Face used for names of deleted files in Dired buffers."
95 | :group 'diredfl)
96 | (defvar diredfl-deletion-file-name 'diredfl-deletion-file-name)
97 |
98 | (defface diredfl-dir-heading
99 | '((((background dark)) (:foreground "Yellow" :background "#00003F3F3434")) ; ~ dark green
100 | (t (:foreground "Blue" :background "Pink")))
101 | "*Face used for directory headings in Dired buffers."
102 | :group 'diredfl)
103 | (defvar diredfl-dir-heading 'diredfl-dir-heading)
104 |
105 | (defface diredfl-dir-name
106 | '((((background dark))
107 | (:foreground "#7474FFFFFFFF" :background "#2C2C2C2C2C2C")) ; ~ cyan, dark gray
108 | (t (:foreground "DarkRed" :background "LightGray")))
109 | "*Face used for directory names."
110 | :group 'diredfl)
111 | (defvar diredfl-dir-name 'diredfl-dir-name)
112 |
113 | (defface diredfl-dir-priv
114 | '((((background dark))
115 | (:foreground "#7474FFFFFFFF" :background "#2C2C2C2C2C2C")) ; ~ cyan, dark gray
116 | (t (:foreground "DarkRed" :background "LightGray")))
117 | "*Face used for directory privilege indicator (d) in Dired buffers."
118 | :group 'diredfl)
119 | (defvar diredfl-dir-priv 'diredfl-dir-priv)
120 |
121 | (defface diredfl-exec-priv
122 | '((((background dark)) (:background "#4F4F3B3B2121")) ; ~ dark brown
123 | (t (:background "LightSteelBlue")))
124 | "*Face used for execute privilege indicator (x) in Dired buffers."
125 | :group 'diredfl)
126 | (defvar diredfl-exec-priv 'diredfl-exec-priv)
127 |
128 | ;; For this to show up, you need `F' among the options in `dired-listing-switches'.
129 | ;; For example, I use "-alF" for `dired-listing-switches'.
130 | (defface diredfl-executable-tag
131 | '((t (:foreground "Red")))
132 | "*Face used for executable tag (*) on file names in Dired buffers."
133 | :group 'diredfl)
134 | (defvar diredfl-executable-tag 'diredfl-executable-tag)
135 |
136 | (defface diredfl-file-name
137 | '((((background dark)) (:foreground "Yellow"))
138 | (t (:foreground "Blue")))
139 | "*Face used for file names (without suffixes) in Dired buffers.
140 | This means the base name. It does not include the `.'."
141 | :group 'diredfl)
142 | (defvar diredfl-file-name 'diredfl-file-name)
143 |
144 | (defface diredfl-file-suffix
145 | '((((background dark)) (:foreground "#7474FFFF7474")) ; ~ light green
146 | (t (:foreground "DarkMagenta")))
147 | "*Face used for file suffixes in Dired buffers.
148 | This means the `.' plus the file extension. Example: `.elc'."
149 | :group 'diredfl)
150 | (defvar diredfl-file-suffix 'diredfl-file-suffix)
151 |
152 | (defface diredfl-flag-mark
153 | '((((background dark)) (:foreground "Blue" :background "#7575D4D41D1D")) ; ~ olive green
154 | (t (:foreground "Yellow" :background "Blueviolet")))
155 | "*Face used for flags and marks (except D) in Dired buffers."
156 | :group 'diredfl)
157 | (defvar diredfl-flag-mark 'diredfl-flag-mark)
158 |
159 | (defface diredfl-flag-mark-line
160 | '((((background dark)) (:background "#787831311414")) ; ~ dark red brown
161 | (t (:background "Skyblue")))
162 | "*Face used for flagged and marked lines in Dired buffers."
163 | :group 'diredfl)
164 | (defvar diredfl-flag-mark-line 'diredfl-flag-mark-line)
165 |
166 | (defface diredfl-ignored-file-name
167 | '(;; (((background dark)) (:foreground "#FFFF921F921F")) ; ~ salmon
168 | ;; (((background dark)) (:foreground "#A71F5F645F64")) ; ~ dark salmon
169 | (((background dark)) (:foreground "#C29D6F156F15")) ; ~ salmon
170 | (t (:foreground "#00006DE06DE0"))) ; ~ dark cyan
171 | "*Face used for ignored file names in Dired buffers."
172 | :group 'diredfl)
173 | (defvar diredfl-ignored-file-name 'diredfl-ignored-file-name)
174 |
175 | (defface diredfl-link-priv
176 | '((((background dark)) (:foreground "#00007373FFFF")) ; ~ blue
177 | (t (:foreground "DarkOrange")))
178 | "*Face used for link privilege indicator (l) in Dired buffers."
179 | :group 'diredfl)
180 | (defvar diredfl-link-priv 'diredfl-link-priv)
181 |
182 | (defface diredfl-no-priv
183 | '((((background dark)) (:background "#2C2C2C2C2C2C")) ; ~ dark gray
184 | (t (:background "LightGray")))
185 | "*Face used for no privilege indicator (-) in Dired buffers."
186 | :group 'diredfl)
187 | (defvar diredfl-no-priv 'diredfl-no-priv)
188 |
189 | (defface diredfl-number
190 | '((((background dark)) (:foreground "#FFFFFFFF7474")) ; ~ light yellow
191 | (t (:foreground "DarkBlue")))
192 | "*Face used for numerical fields in Dired buffers.
193 | In particular, inode number, number of hard links, and file size."
194 | :group 'diredfl)
195 | (defvar diredfl-number 'diredfl-number)
196 |
197 | (defface diredfl-other-priv
198 | '((((background dark)) (:background "#111117175555")) ; ~ dark blue
199 | (t (:background "PaleGoldenrod")))
200 | "*Face used for l,s,S,t,T privilege indicators in Dired buffers."
201 | :group 'diredfl)
202 | (defvar diredfl-other-priv 'diredfl-other-priv)
203 |
204 | (defface diredfl-rare-priv
205 | '((((background dark)) (:foreground "Green" :background "#FFFF00008080")) ; ~ hot pink
206 | (t (:foreground "Magenta" :background "SpringGreen")))
207 | "*Face used for rare privilege indicators (b,c,s,m,p,S) in Dired buffers."
208 | :group 'diredfl)
209 | (defvar diredfl-rare-priv 'diredfl-rare-priv)
210 |
211 | (defface diredfl-read-priv
212 | '((((background dark)) (:background "#999932325555")) ; ~ burgundy / dark magenta
213 | (t (:background "MediumAquamarine")))
214 | "*Face used for read privilege indicator (w) in Dired buffers."
215 | :group 'diredfl)
216 | (defvar diredfl-read-priv 'diredfl-read-priv)
217 |
218 | (defface diredfl-symlink
219 | '((((background dark)) (:foreground "#00007373FFFF")) ; ~ blue
220 | (t (:foreground "DarkOrange")))
221 | "*Face used for symbolic links in Dired buffers."
222 | :group 'diredfl)
223 | (defvar diredfl-symlink 'diredfl-symlink)
224 |
225 | (defface diredfl-tagged-autofile-name
226 | '((((background dark)) (:background "#328C0411328C")) ; Very dark magenta
227 | (t (:background "#CD73FBEECD73"))) ; Very pale green
228 | "*Face used in Dired for names of files that are autofile bookmarks."
229 | :group 'diredfl)
230 | (defvar diredfl-tagged-autofile-name 'diredfl-tagged-autofile-name)
231 |
232 | (defface diredfl-write-priv
233 | '((((background dark)) (:background "#25258F8F2929")) ; ~ dark green
234 | (t (:background "Orchid")))
235 | "*Face used for write privilege indicator (w) in Dired buffers."
236 | :group 'diredfl)
237 | (defvar diredfl-write-priv 'diredfl-write-priv)
238 |
239 | (defun diredfl-match-ignored-extensions (limit)
240 | "A matcher of ignored filename extensions for use in `font-lock-keywords'.
241 | LIMIT is the extent of the search."
242 | (let ((ignored-extensions
243 | (append (if (boundp 'dired-omit-extensions)
244 | dired-omit-extensions
245 | completion-ignored-extensions)
246 | (when diredfl-ignore-compressed-flag
247 | diredfl-compressed-extensions))))
248 | (when ignored-extensions
249 | (re-search-forward
250 | (concat "^ \\(.*"
251 | (regexp-opt ignored-extensions)
252 | ;; Optional executable flag
253 | "[*]?\\)$")
254 | limit
255 | t))))
256 |
257 | ;;; Define second level of fontifying.
258 | (defconst diredfl-font-lock-keywords-1
259 | (list
260 | '("^ \\(.+:\\)$" 1 diredfl-dir-heading) ; Directory headers
261 | '("^ wildcard.*$" 0 'default) ; Override others, e.g. `l' for `diredfl-other-priv'.
262 | '("^ (No match).*$" 0 'default) ; Override others, e.g. `t' for `diredfl-other-priv'.
263 | '("[^ .]\\(\\.[^. /]+\\)$" 1 diredfl-file-suffix) ; Suffix, including `.'.
264 | '("\\([^ ]+\\) -> .+$" 1 diredfl-symlink) ; Symbolic links
265 |
266 | ;; 1) Date/time and 2) filename w/o suffix.
267 | ;; This is a bear, and it is fragile - Emacs can change `dired-move-to-filename-regexp'.
268 | `(,directory-listing-before-filename-regexp
269 | (7 diredfl-date-time t t) ; Date/time, locale (western or eastern)
270 | (2 diredfl-date-time t t) ; Date/time, ISO
271 | (,(concat "\\(.+\\)\\(" (concat (funcall #'regexp-opt diredfl-compressed-extensions)
272 | "\\)[*]?$"))
273 | nil nil (0 diredfl-compressed-file-name keep t))) ; Compressed-file suffix
274 | `(,directory-listing-before-filename-regexp
275 | (7 diredfl-date-time t t) ; Date/time, locale (western or eastern)
276 | (2 diredfl-date-time t t) ; Date/time, ISO
277 | ("\\(.+\\)$" nil nil (0 diredfl-file-name keep t))) ; Filename (not a compressed file)
278 |
279 | ;; Files to ignore
280 | '(diredfl-match-ignored-extensions 1 diredfl-ignored-file-name t)
281 |
282 | ;; Compressed-file (suffix)
283 | (list (concat "\\(" (concat (funcall #'regexp-opt diredfl-compressed-extensions) "\\)[*]?$"))
284 | 1 diredfl-compressed-file-suffix t)
285 | '("\\([*]\\)$" 1 diredfl-executable-tag t) ; Executable (*)
286 |
287 | ;; Inode, hard-links, & file size (. and , are for the decimal point, depending on locale)
288 | ;; See comment for `directory-listing-before-filename-regexp' in `files.el' or `files+.el'.
289 | '("\\_<\\(\\([0-9]+\\([.,][0-9]+\\)?\\)[BkKMGTPEZY]?[ /]?\\)" 1 'diredfl-number)
290 |
291 | ;; Directory names - exclude d:/..., Windows drive letter in a dir heading.
292 | (list (concat dired-re-maybe-mark dired-re-inode-size "\\(d\\)[^:]")
293 | '(1 diredfl-dir-priv t) '(".+" (dired-move-to-filename) nil (0 diredfl-dir-name t)))
294 |
295 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]........\\(x\\)") ; o x
296 | '(1 diredfl-exec-priv))
297 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]........\\([lsStT]\\)") ; o misc
298 | '(1 diredfl-other-priv))
299 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps].......\\(w\\).") ; o w
300 | '(1 diredfl-write-priv))
301 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]......\\(r\\)..") ; o r
302 | '(1 diredfl-read-priv))
303 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps].....\\(x\\)...") ; g x
304 | '(1 diredfl-exec-priv))
305 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps].....\\([lsStT]\\)...") ; g misc
306 | '(1 diredfl-other-priv))
307 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]....\\(w\\)....") ; g w
308 | '(1 diredfl-write-priv))
309 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]...\\(r\\).....") ; g r
310 | '(1 diredfl-read-priv))
311 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]..\\(x\\)...") ; u x
312 | '(1 diredfl-exec-priv))
313 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]..\\([lsStT]\\)...") ; u misc
314 | '(1 diredfl-other-priv))
315 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps].\\(w\\)....") ; u w
316 | '(1 diredfl-write-priv))
317 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]\\(r\\).....") ; u r
318 | '(1 diredfl-read-priv))
319 |
320 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]........\\([-rwxlsStT]\\)") ; o -
321 | '(1 diredfl-no-priv keep))
322 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps].......\\([-rwxlsStT]\\).") ; g -
323 | '(1 diredfl-no-priv keep))
324 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]......\\([-rwxlsStT]\\)..") ; u -
325 | '(1 diredfl-no-priv keep))
326 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps].....\\([-rwxlsStT]\\)...") ; o -
327 | '(1 diredfl-no-priv keep))
328 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]....\\([-rwxlsStT]\\)....") ; g -
329 | '(1 diredfl-no-priv keep))
330 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]...\\([-rwxlsStT]\\).....") ; u -
331 | '(1 diredfl-no-priv keep))
332 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]..\\([-rwxlsStT]\\)......") ; o -
333 | '(1 diredfl-no-priv keep))
334 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps].\\([-rwxlsStT]\\).......") ; g -
335 | '(1 diredfl-no-priv keep))
336 | (list (concat dired-re-maybe-mark dired-re-inode-size "[-bcdlps]\\([-rwxlsStT]\\)........") ; u -
337 | '(1 diredfl-no-priv keep))
338 | (list (concat dired-re-maybe-mark dired-re-inode-size "\\(-\\)")
339 | '(1 diredfl-no-priv keep))
340 |
341 | (list (concat dired-re-maybe-mark dired-re-inode-size "\\([bcsmpS]\\)") ; (rare)
342 | '(1 diredfl-rare-priv keep))
343 | (list (concat dired-re-maybe-mark dired-re-inode-size "\\(l\\)[-rwxlsStT]") ; l
344 | '(1 diredfl-link-priv keep))
345 |
346 | (list (concat "^\\([^\n " (char-to-string dired-del-marker) "].*$\\)")
347 | '(1 diredfl-flag-mark-line prepend)) ; Flag/mark lines
348 | (list (concat "^\\([^\n " (char-to-string dired-del-marker) "]\\)") ; Flags, marks (except D)
349 | '(1 diredfl-flag-mark prepend))
350 |
351 | (list (concat "^\\([" (char-to-string dired-del-marker) "].*$\\)") ; Deletion-flagged lines
352 | '(1 diredfl-deletion-file-name prepend))
353 | (list (concat "^\\([" (char-to-string dired-del-marker) "]\\)") ; Deletion flags (D)
354 | '(1 diredfl-deletion prepend)))
355 | "2nd level of Dired highlighting. See `font-lock-maximum-decoration'.")
356 |
357 |
358 | ;;;###autoload
359 | (define-minor-mode diredfl-mode
360 | "Enable additional font locking in `dired-mode'."
361 | :global nil
362 | (setq font-lock-defaults
363 | (if diredfl-mode
364 | '((dired-font-lock-keywords
365 | dired-font-lock-keywords
366 | diredfl-font-lock-keywords-1)
367 | t nil nil beginning-of-line)
368 | '(dired-font-lock-keywords t nil nil beginning-of-line)))
369 | (font-lock-refresh-defaults))
370 |
371 | ;;;###autoload
372 | (define-globalized-minor-mode diredfl-global-mode diredfl-mode
373 | (lambda ()
374 | (when (derived-mode-p 'dired-mode)
375 | (diredfl-mode)))
376 | :require 'diredfl)
377 |
378 |
379 | (provide 'diredfl)
380 | ;;; diredfl.el ends here
381 |
--------------------------------------------------------------------------------