Commit Graph

177 Commits

Author SHA1 Message Date
Stefan Kangas
e4c6673be6 image-dired: Set default-directory in thumbnail buffer
* lisp/image-dired.el (image-dired-show-all-from-dir): Set
default-directory.  This fixes e.g. 'dired-jump'.
2021-11-04 05:10:28 +01:00
Stefan Kangas
73a6c8f98f Make image-dired-display-image-mode inherit from image-mode
* lisp/image-dired.el (image-dired-display-image-mode):
Inherit from 'image-mode'.  (Bug#10758)
(image-dired-display-image): Don't generate a temporary image, which
is no longer needed with the above change.
(image-dired-display-thumbnail-original-image)
(image-dired-dired-display-image)
(image-dired-mouse-display-image): Simplify.

(image-dired-temp-image-file)
(image-dired-cmd-create-temp-image-program)
(image-dired-cmd-create-temp-image-options)
(image-dired-display-window-width-correction)
(image-dired-display-window-height-correction)
(image-dired-display-window-width)
(image-dired-display-window-height)
(image-dired-display-current-image-full)
(image-dired-display-current-image-sized)
(image-dired-window-height-pixels): Make obsolete.
(image-dired-create-display-image-buffer): Make into obsolete
function alias for 'ignore'.
(image-dired-display-image-mode-map): Simplify by removing things
duplicated from `image-mode-map'.  Disable some commands from
`image-mode-map' that doesn't make sense for Image-Dired.
(image-dired-display-image-mode-menu): Remove menu, as it no longer
contains anything useful.
(image-dired-minor-mode):
* doc/emacs/dired.texi (Image-Dired): Update documentation for the
above change.
2021-11-04 02:05:29 +01:00
Stefan Kangas
bf953694ad ; * lisp/image-dired.el: Remove redundant :group args. 2021-11-03 23:25:23 +01:00
Stefan Kangas
733eff49d3 image-dired: Add face for flagged files
* lisp/image-dired.el (image-dired-thumb-mark): New defface.
(image-dired-thumb-update-marks): Mark flagged file with above new defface.
(image-dired-dired-file-marked-p)
(image-dired-thumb-file-marked-p): Add optional argument to be
used by 'image-dired-*-flagged-p' functions below.
(image-dired-dired-file-flagged-p)
(image-dired-thumb-file-flagged-p): New defuns.
(image-dired-thumb-mark): Improve definition with color classes.
(image-dired-thumb-visible-marks): Doc fix.
2021-11-03 22:34:51 +01:00
Philipp Stephani
4422ed2c19 Fix declaration syntax of 'image-dired--on-file-in-dired-buffer'.
* lisp/image-dired.el (image-dired--on-file-in-dired-buffer): Fix
declaration syntax.
2021-11-03 21:48:13 +01:00
Stefan Kangas
f1770a68ae image-dired: Improve marking behavior
* lisp/image-dired.el (image-dired-thumb-mark): Use DarkOrange as
background to better match the 'dired-marked' face.
(image-dired-show-all-from-dir): Disable all marks when entering a
full directory.
(image-dired-unmark-all-marks): Add mode tag.
(image-dired-thumbnail-mode-map): Bind 'image-dired-unmark-all-marks'
to "U".
2021-11-03 08:02:56 +01:00
Stefan Kangas
73c3d622a8 image-dired: Cleanup of four commands
* lisp/image-dired.el
(image-dired--on-file-in-dired-buffer): New macro.
(image-dired-mark-thumb-original-file)
(image-dired-unmark-thumb-original-file)
(image-dired-flag-thumb-original-file)
(image-dired-toggle-mark-thumb-original-file): Rewrite using
above new macro.
(image-dired-modify-mark-on-thumb-original-file): Make obsolete in
favor of above new macro.
2021-11-03 07:02:13 +01:00
Stefan Kangas
16b46b9ee2 image-dired: Support wrap-around in display-next-thumbnail-original
* lisp/image-dired.el (image-dired-forward-image): Support negative
prefix argument.  Optionally wrap-around, which means to continue from
first image after reaching the last one and vice versa.
(image-dired-backward-image): Reimplement in terms of
'image-dired-forward-image'.
(image-dired-display-next-thumbnail-original)
(image-dired-display-previous-thumbnail-original): Wrap around; when
reaching the last image, continue from the first one.  Add optional
prefix argument to move more than one image at a time.
2021-11-03 05:10:24 +01:00
Stefan Kangas
67af04403c image-dired: Improve menus
* lisp/image-dired.el (image-dired-toggle-append-browsing)
(image-dired-toggle-movement-tracking): Improve messages.
(image-dired-thumbnail-mode-menu, image-dired-minor-mode-menu):
Make toggle entries into checkboxes.  Add separators.  Remove
obsoleted commands accidentally added back in merge.
2021-11-03 05:10:24 +01:00
Stefan Kangas
09a38b021b image-dired: Signal error if file is missing on display
* lisp/image-dired.el (image-dired-display-image): Signal error if
file is missing.
2021-11-03 05:10:24 +01:00
Stefan Kangas
91b6f49cdd image-dired: Move menu definitions to top level
* lisp/image-dired.el (image-dired-thumbnail-mode-map)
(image-dired-display-image-mode-map, image-dired-minor-mode-map):
Move menu definitions from here...
(image-dired-thumbnail-mode-menu)
(image-dired-display-image-mode-menu)
(image-dired-minor-mode-menu): ...to these new top level
definitions.
2021-11-03 05:10:24 +01:00
Glenn Morris
af22a0a083 Merge from origin/emacs-28
f52fa1c150 image-dired: Unreverse accidentally reversed menus

# Conflicts:
#	lisp/image-dired.el
2021-10-29 09:20:05 -07:00
Stefan Kangas
f52fa1c150 image-dired: Unreverse accidentally reversed menus
* lisp/image-dired.el (image-dired-thumbnail-mode-map)
(image-dired-display-image-mode-map, image-dired-minor-mode-map):
In Emacs 26.1 (commits b905454680 and bed0373855), the menus were
converted to use 'easy-menu-define', but they were reversed in the
process.  Unreverse the menus.  (Bug#51446)
2021-10-28 12:54:07 +02:00
Stefan Kangas
cb94996357 Do interactive mode tagging in image-dired.el
* lisp/image-dired.el (image-dired-restore-window-configuration)
(image-dired-next-line, image-dired-previous-line)
(image-dired-mark-thumb-original-file)
(image-dired-unmark-thumb-original-file)
(image-dired-flag-thumb-original-file)
(image-dired-toggle-mark-thumb-original-file)
(image-dired-jump-original-dired-buffer)
(image-dired-delete-char, image-dired-refresh-thumb)
(image-dired-display-next-thumbnail-original)
(image-dired-display-previous-thumbnail-original): Do interactive
tagging; these will only work in 'image-dired-thumbnail-mode'.
2021-10-28 02:10:09 +02:00
Stefan Kangas
bc4937539e image-dired: Make thumbnail rotation commands obsolete
* lisp/image-dired.el (image-dired-cmd-rotate-thumbnail-program)
(image-dired-cmd-rotate-thumbnail-options)
(image-dired-rotate-thumbnail)
(image-dired-rotate-thumbnail-left)
(image-dired-rotate-thumbnail-right): Make obsolete in favor of
'image-dired-refresh-thumb' and 'image-rotate'.  It makes no sense to
have destructive thumbnail rotation commands now that Emacs can rotate
thumbnails in memory, and it is very fast to just generate a new one
reflecting the rotation of the original.
(image-dired-thumbnail-mode-map): Remove menu entries and key bindings
for above obsolete commands.  The rotate right keybinding had already
been made ineffective by the local keymap added by 'insert-image'.
2021-10-28 02:03:05 +02:00
Stefan Kangas
722a9080db ; * lisp/image-dired.el: Be more consistent with spelling. 2021-10-27 22:10:04 +02:00
Stefan Kangas
75ebbc6a27 image-dired: Don't show thumbnails if there are no image files
* lisp/image-dired.el (image-dired-show-all-from-dir): Don't show
thumbnail buffer if there are no image files.
2021-10-27 21:05:16 +02:00
Stefan Kangas
c70fdcdd11 Increase image-dired-show-all-from-dir-max-files to 500
* lisp/image-dired.el (image-dired-show-all-from-dir-max-files):
Increase default to 500 to ask for confirmation much less frequently.
The old value was added before we had asynchronous generation of
thumbnails, when a large number of files would lock up Emacs.  Asking
for confirmation could probably be disabled completely these days, but
let's be conservative and set it to some large number of files for
which some users might want to see a prompt.  It can't hurt.
(image-dired-show-all-from-dir): Never warn if above variable is nil.
(image-dired-bookmark-jump): Let-bind above variable to nil instead of
'most-positive-fixnum'.
* doc/emacs/dired.texi (Image-Dired): Don't mention the above
variable, as it is no longer important enough to deserve the space.
* etc/NEWS: Announce the above change.
2021-10-27 20:39:10 +02:00
Glenn Morris
edcf9edc8c Merge from origin/emacs-28
2bdd5732aa (origin/emacs-28) ; * etc/NEWS: Fix last change.
492b927909 Fix help commands for menu-bar menus
9589be772d ; * etc/NEWS: Fix typos.
d353fc4a00 ; Explain why "kinds of atom" isn't a typo
47a3750162 ; * etc/NEWS: Improve wording of the Emoji entry.
b814712796 ; Checkdoc fixes in image-dired.el
e45b3fc521 Improve function documentation with text from XDG BDS spec
284c77eeb6 * lisp/transient.el: Update to package version 0.3.7.
40400e6977 ; Revert parts of "Use string-replace instead of replace-r...
214c2e268c ; Revert parts of "Use string-search instead of string-mat...

# Conflicts:
#	etc/NEWS
2021-10-27 07:59:28 -07:00
Stefan Kangas
484468a1af image-dired: Set line-spacing to match horizontal space
* lisp/image-dired.el (image-dired-thumbnail-mode): Set value of
'line-spacing' to approximately match horizontal space.  This makes
the thumbnail view look better.
2021-10-27 07:53:03 +02:00
Stefan Kangas
e88be49b9d image-dired: Add support for bookmark.el
* lisp/image-dired.el (image-dired-thumbnail-mode): Add bookmark.el support.
(bookmark-make-record-default, bookmark-prop-get): Declare.
(image-dired-bookmark-name, image-dired-bookmark-make-record)
(image-dired-bookmark-jump): New defuns.
2021-10-27 06:12:25 +02:00
Stefan Kangas
7f4afe1609 ; * lisp/image-dired.el: Move obsolete things to "Obsolete" section 2021-10-27 06:12:25 +02:00
Stefan Kangas
b814712796 ; Checkdoc fixes in image-dired.el 2021-10-27 04:55:37 +02:00
Stefan Kangas
236457e052 image-dired: Improve mouse behaviour
* lisp/image-dired.el (image-dired-thumbnail-mode-map): Improve mouse
behaviour: ignore dragging, as it currently doesn't do anything
useful, and make all clicks just select the thumbnail.
(image-dired-mouse-display-image)
(image-dired-mouse-select-thumbnail): Move point to closest image
after clicking in buffer.
2021-10-27 04:34:25 +02:00
Stefan Kangas
16bd8dce28 image-dired: Don't ding at beginning or end of buffer
* lisp/image-dired.el
(image-dired--display-thumb-properties-fun): New defun.
(image-dired-forward-image, image-dired-backward-image): Don't ding
when moving past first or last image; instead show a message, wait a
second and then show image properties.
2021-10-27 04:30:35 +02:00
Stefan Kangas
ab11a3adf9 image-dired: Add new commands for beginning/end of buffer
* lisp/image-dired.el (image-dired-beginning-of-buffer)
(image-dired-end-of-buffer): New commands.
(image-dired-thumbnail-mode-map): Bind new beginning of buffer command
to '<' and 'M-<', and end of buffer command to '>' and 'M->'.
2021-10-27 03:32:37 +02:00
Stefan Kangas
d22cd6d4c6 image-dired: Use an evenly spaced grid for thumbnails
* lisp/image-dired.el (image-dired-line-up): Use an evenly spaced
grid for thumbnails, even if image sizes differ.
2021-10-27 02:57:51 +02:00
Stefan Kangas
79c29ff8ff ; * lisp/image-dired.el (image-dired-cmd-pngnq-options): Fix :version. 2021-10-27 02:07:35 +02:00
Stefan Kangas
b37b080af1 image-dired: Use example.org in examples
* lisp/image-dired.el (image-dired-gallery-image-root-url)
(image-dired-gallery-thumb-image-root-url): Use example.org to be
RFC 2606 compliant.
2021-10-27 02:05:33 +02:00
Stefan Kangas
23d2e7d112 image-dired: Increase number of asynch thumbnail generation jobs
* lisp/image-dired.el (image-dired-queue-active-limit): Increase the
number of asynchronous thumbnail generation jobs to a maximum of 4 or
processor count divided by 2.  This makes thumbnail generation around
30 % faster when benchmarking this on my machine (8 cores/4 jobs).

(image-dired-debug): New defvar.
(image-dired-debug-message): New defun.

(image-dired--generate-thumbs-start): New defvar.
(image-dired-create-thumb-1, image-dired-display-thumbs): Display time
spent on thumbnail generation if 'image-dired-debug' is non-nil.
2021-10-27 01:52:05 +02:00
Glenn Morris
3378549572 Merge from origin/emacs-28
a2c17e115e (origin/emacs-28) Merge branch 'emacs-28' of git.savannah....
fde56eeb76 Revert "Fix a typo in emacs-lisp-intro.texi"
4779d3ba19 * doc/lispref/functions.texi (Mapping Functions): Use #' w...
85ea3f7f47 Fix issue with interpreting ANSI codes in eshell
50f9436146 image-dired: Doc fix to better explain thumbnail generation
bb475e10b9 Clarify two image-dired docstrings
f5b4bb4a6f Fix flymake example backend conditions in the manual
0771d8939a * etc/PROBLEMS: Mention problems with regexp matcher.  (Bu...
ee579033b9 * test/lisp/repeat-tests.el: New file.
7385a7667f * lisp/tab-bar.el (tab-bar-move-repeat-map): Fix alias bin...
56caf1c9b8 Use restrictive umask when creating image-dired data
3b5de7f991 ; lisp/transient.el: Revert some misguided stylistic fixes.
2021-10-25 09:34:37 -07:00
Glenn Morris
f2dfe1e780 Merge from origin/emacs-28
817c929eda Doc fix for concat
3eca2ad2a1 * lisp/image-dired.el (image-dired-external-viewer): Suppo...
2021-10-25 09:34:37 -07:00
Stefan Kangas
f8fed417a5 image-dired: Improve XDG compliance
* lisp/image-dired.el (xdg): Require.
(image-dired-main-image-directory): Prefer XDG_PICTURES_HOME.
(image-dired-thumb-name): Simplify by using 'xdg-cache-home'.
2021-10-25 07:54:11 +02:00
Stefan Kangas
5dd07e1ba1 Double value of image-dired-show-all-from-dir-max-files
* lisp/image-dired.el (image-dired-show-all-from-dir-max-files):
Double the amount of files in directory before prompting.  This could
be even higher, as the thumbnails are generated asynchronously and are
small by default.
2021-10-25 07:38:19 +02:00
Stefan Kangas
79f7e87da5 image-dired: Add support for GraphicsMagick
* lisp/image-dired.el (image-dired-cmd-create-thumbnail-program)
(image-dired-cmd-create-thumbnail-options)
(image-dired-cmd-create-temp-image-program)
(image-dired-cmd-create-temp-image-options)
(image-dired-cmd-rotate-thumbnail-program)
(image-dired-cmd-rotate-thumbnail-options): Add support for the
GraphicsMagick command line tool ("gm convert", "gm mogrify").
2021-10-25 03:50:04 +02:00
Stefan Kangas
057f45abec Support new Thumbnail Managing Standard sizes in image-dired
* lisp/image-dired.el
(image-dired--thumbnail-managing-standard-sizes): New defconst.
(image-dired-thumbnail-storage)
(image-dired-thumb-name, image-dired-insert-thumbnail)
(image-dired-thumb-size, image-dired-create-thumb-1): Support larger
thumbnail sizes mandated by new version of the Thumbnail Managing
Standard (December 2020, Version 0.9.0).
2021-10-25 02:12:48 +02:00
Stefan Kangas
bb475e10b9 Clarify two image-dired docstrings
* lisp/image-dired.el (image-dired-dir): Doc fix; clarify that
thumbnails will be saved in "$XDG_CACHE_HOME/thumbnails", as per the
Thumbnail Managing Standard.
(image-dired-thumb-size): Doc fix; clarify that this option will be
ignored when using the Thumbnail Managing Standard.
2021-10-25 02:12:34 +02:00
Stefan Kangas
608e694a30 Use SHA1 when creating thumbnail file name
* lisp/image-dired.el (image-dired-thumb-name): Improve docstring.
Use SHA1 for hashing when creating file name.  SHA1 is slightly faster
than MD5, and has a few more bits.
2021-10-24 23:26:25 +02:00
Stefan Kangas
56caf1c9b8 Use restrictive umask when creating image-dired data
* lisp/image-dired.el (image-dired-dir)
(image-dired-sane-db-file): Create thumbnail directory and
.image-dired_db with umask 077.  This avoids creating world readable
copies of private data, and is in fact mandated by the Thumbnail
Managing Standard that we aim to support.
2021-10-24 21:20:16 +02:00
Stefan Kangas
e6946bf5f2 Improve documentation of image-dired thumbnails
* lisp/image-dired.el: Fix documentation on thumbnail file format to
correctly say that it can be either PNG or JPEG; not just JPEG.  Also
fix inconsistent formatting in comments.
* lisp/image-dired.el (image-dired-thumbnail-storage): Improve
docstring.
2021-10-24 19:51:26 +02:00
Stefan Kangas
6498a1a3ad Add support for pngquant to image-dired
* lisp/image-dired.el (image-dired-cmd-pngnq-program)
(image-dired-cmd-pngnq-options): Add support for pngquant.
Prefer, in this order: pngquant, pngnq-s9, pngnq-s for reasons of
speed and how actively maintained the projects seem to be.
2021-10-24 19:51:26 +02:00
Stefan Kangas
c0ea1c8863 ; Unbreak creating thumbnails in image-dired
* lisp/image-dired.el (image-dired-insert-thumbnail): Unbreak
creating thumbnails after my previous commit.
2021-10-24 18:21:22 +02:00
Stefan Kangas
6b0a1b4fdf Don't hard-code image-dired thumbnail type
* lisp/image-dired.el (image-dired-insert-thumbnail): Detect thumbnail
image type instead of hard-coding it.
2021-10-24 12:26:58 +02:00
Stefan Kangas
3eca2ad2a1 * lisp/image-dired.el (image-dired-external-viewer): Support feh. 2021-10-24 12:21:13 +02:00
Stefan Kangas
ad7fd3cb47 Partially remove exiftool dependency from image-dired.el
* lisp/image-dired.el (exif): Require.
(image-dired-cmd-read-exif-data-program)
(image-dired-cmd-read-exif-data-options)
(image-dired-get-exif-data): Make obsolete in favour of using
exif.el.  This removes a dependency on external exiftool for some
operations.
(image-dired-get-exif-file-name)
(image-dired-thumbnail-set-image-description): Use exif.el
functions instead of exiftool.
* lisp/image/exif.el (exif-tag-alist): Add description and
copyright fields.
* test/lisp/image-dired-tests.el: New file.
2021-10-23 08:31:03 +02:00
Paul Eggert
8e072e6abe Merge from origin/emacs-28
efb1cd7fa9 ; * etc/charsets/README: Update the format documentation.
cc796b7409 Tramp doc cleanup
a338d46060 Make emacs-lisp-byte-compile-and-load load the .elc file a...
3eac7dc780 Fix point movement in image-dired
4e9452a399 Improve shortdoc for vector
f223ac6ef9 Fix test bug when calloc returns null
ebeaa54f19 Pacify GCC 11 -fanalyzer on x86-64
56d1f42f30 Improve handling of non-character events in input methods
3fbe6fd367 ; Fix mistakes in last doc rewording about shorthands
2021-10-13 11:19:12 -07:00
Peter Münster
3eac7dc780 Fix point movement in image-dired
* lisp/image-dired.el (image-dired-thumb-file-marked-p): Don't
move point in associated dired buffer.
(image-dired-delete-marked): Revert "Fix deletion of associated image"
because it was wrong and introduced another problem (bug#51152).
2021-10-13 13:41:32 +02:00
Peter Münster
a2a6c7abcb New command for unmarking all images in image-dired
* lisp/image-dired.el (image-dired-unmark-all-marks): Remove marks from
Dired buffer and update the view of the thumbnails (bug#50920).
2021-10-01 14:49:28 +02:00
Stefan Kangas
aebba085cb ; More minor stylistic fixes found by checkdoc 2021-09-22 20:26:40 +02:00
Lars Ingebrigtsen
1ff772e28a Simplify `image-dired-dired-file-marked-p'
* lisp/image-dired.el (image-dired-dired-file-marked-p): Use
`dired-re-mark' instead of open-coding the opposite regexp (bug#14925).
2021-09-06 12:10:37 +02:00