X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a23ccdf282ca784fd817b7d17a85c57ac3792bef..acc5b122f069f32773c372abef250cb3a6b10c7a:/lisp/image-file.el diff --git a/lisp/image-file.el b/lisp/image-file.el index 979120a192..87314f3b90 100644 --- a/lisp/image-file.el +++ b/lisp/image-file.el @@ -25,7 +25,7 @@ ;;; Commentary: ;; Defines a file-name-handler hook that transforms visited (or -;; inserted) image files so that they are by displayed as emacs as +;; inserted) image files so that they are displayed by emacs as ;; images. This is done by putting a `display' text-property on the ;; image data, with the image-data still present underneath; if the ;; resulting buffer file is saved to another name it will correctly save @@ -36,8 +36,9 @@ (require 'image) +;;;###autoload (defcustom image-file-name-extensions - '("png" "jpeg" "jpg" "gif" "tiff" "xbm" "xpm") + '("png" "jpeg" "jpg" "gif" "tiff" "xbm" "xpm" "pbm" "pgm" "ppm") "*A list of image-file filename extensions. Filenames having one of these extensions are considered image files, in addition to those matching `image-file-name-regexps'. @@ -55,13 +56,14 @@ variable is set using \\[customize]." :initialize 'custom-initialize-default :group 'image) +;;;###autoload (defcustom image-file-name-regexps nil "*List of regexps matching image-file filenames. Filenames matching one of these regexps are considered image files, in addition to those with an extension in `image-file-name-extensions'. -See `auto-image-file-mode'; if `auto-image-file-mode' is enabled, -setting this variable directly does not take effect unless +See function `auto-image-file-mode'; if `auto-image-file-mode' is +enabled, setting this variable directly does not take effect unless `auto-image-file-mode' is re-enabled; this happens automatically the variable is set using \\[customize]." :type '(repeat regexp) @@ -80,7 +82,10 @@ variable is set using \\[customize]." (let ((exts-regexp (and image-file-name-extensions (concat "\\." - (regexp-opt image-file-name-extensions t) + (regexp-opt (nconc (mapcar #'upcase + image-file-name-extensions) + image-file-name-extensions) + t) "\\'")))) (if image-file-name-regexps (mapconcat 'identity @@ -91,32 +96,6 @@ variable is set using \\[customize]." exts-regexp))) -;;;###autoload -(define-minor-mode auto-image-file-mode - "Toggle visiting of image files as images. -With prefix argument ARG, turn on if positive, otherwise off. -Returns non-nil if the new state is enabled. - -Image files are those whose name has an extension in -`image-file-name-extensions', or matches a regexp in -`image-file-name-regexps'." - nil - nil - nil - :global t - :group 'image - ;; Remove existing handler - (let ((existing-entry - (rassq 'image-file-handler file-name-handler-alist))) - (when existing-entry - (setq file-name-handler-alist - (delq existing-entry file-name-handler-alist)))) - ;; Add new handler, if enabled - (when auto-image-file-mode - (push (cons (image-file-name-regexp) 'image-file-handler) - file-name-handler-alist))) - - ;;;###autoload (defun insert-image-file (file &optional visit beg end replace) "Insert the image file FILE into the current buffer. @@ -139,9 +118,10 @@ the command `insert-file-contents'." (props `(display ,image intangible ,image - rear-nonsticky (display) + rear-nonsticky (display intangible) ;; This a cheap attempt to make the whole buffer - ;; read-only when we're visiting the file. + ;; read-only when we're visiting the file (as + ;; opposed to just inserting it). ,@(and visit (= ibeg (point-min)) (= iend (point-max)) @@ -170,6 +150,33 @@ Optional argument ARGS are the arguments to call FUNCTION with." (apply function args))) +;;; Note this definition must be at the end of the file, because +;;; `define-minor-mode' actually calls the mode-function if the +;;; associated variable is non-nil, which requires that all needed +;;; functions be already defined. [This is arguably a bug in d-m-m] +;;;###autoload +(define-minor-mode auto-image-file-mode + "Toggle visiting of image files as images. +With prefix argument ARG, turn on if positive, otherwise off. +Returns non-nil if the new state is enabled. + +Image files are those whose name has an extension in +`image-file-name-extensions', or matches a regexp in +`image-file-name-regexps'." + :global t + :group 'image + ;; Remove existing handler + (let ((existing-entry + (rassq 'image-file-handler file-name-handler-alist))) + (when existing-entry + (setq file-name-handler-alist + (delq existing-entry file-name-handler-alist)))) + ;; Add new handler, if enabled + (when auto-image-file-mode + (push (cons (image-file-name-regexp) 'image-file-handler) + file-name-handler-alist))) + + (provide 'image-file) ;;; image-file.el ends here