Come aprire i file immagine con un'applicazione esterna in Dired?
Linux Mint 19, Emacs 26.1 Ho diverse app per mostrare l'immagine, come Drawing, Image Viewer, XnView.
E dal file manager Nemo ho aperto con successo tutte le immagini di questa app. Bello.
Ma voglio aprire l'immagine in modalità Dired. Quindi nel mio init.el ho questo:
(when (require 'openwith nil 'noerror)
(setq openwith-associations
(list
(list (openwith-make-extension-regexp '("doc" "docx" "rtf")) "word" '(file))
(list (openwith-make-extension-regexp '("mpg" "mpeg" "mp3" "mp4" "avi" "wmv" "wav" "mov" "mkv")) "vlc" '(file))
(list (openwith-make-extension-regexp '("pdf")) "FoxitReader" '(file))
(list (openwith-make-extension-regexp '("bmp" "gif" "jpeg" "jpg" "png" "tif")) "xnview" '(file))
(list (openwith-make-extension-regexp '("rdp")) "Remote Desctop Connection" '(file))
(list (openwith-make-extension-regexp '("xls" "xlsx")) "excel" '(file))
))
(openwith-mode 1))
Quindi, quando sono in modalità dired e premo Invio sul file immagine, ricevo il messaggio successivo e non succede nulla:
openwith-file-handler: Opened DEEPSP_little.JPG in external program
Voglio aprire l'immagine da un'app esterna quando sono in modalità dired.
Risposte
Basta caricare la libreria standard dired-x.el
, personalizzare l'opzione dired-guess-shell-alist-user
e utilizzare !
in Dired, per aprire qualsiasi programma desideri, per impostazione predefinita sui file contrassegnati o su un singolo file, per qualsiasi estensione di file immagine desideri.
C-x v dired-guess-shell-alist-user
:
dired-guess-shell-alist-user
è una variabile definita indired-x.el
.Il suo valore è nullo
Documentazione:
Elenco di regole definito dall'utente per i comandi suggeriti.
Queste regole hanno la precedenza sulle regole predefinite nella variabile
dired-guess-shell-alist-default
(a cui sono anteposte).Ogni elemento di questo elenco ha il seguente aspetto
(REGEXP COMMAND...)
dove ognuno
COMMAND
può essere una stringa o un'espressione Lisp che restituisce una stringa. Se questa espressione deve consultare il nome del file per il quale vengono richiesti i comandi della shell, può accedere a quel nome file come variabilefile
.Se
COMMAND
vengono forniti più messaggi, il primo sarà il valore predefinito e il resto verrà aggiunto temporaneamente alla cronologia e potrà essere recuperato conM-x previous-history-element
(M-p
).La variabile
dired-guess-shell-case-fold-search
controlla se REGEXP fa corrispondere la distinzione tra maiuscole e minuscole.Puoi personalizzare questa variabile.
Ho trovato una soluzione.
Devo installare l'app XnView dal terminale in questo modo:
sudo apt-get install gdebi
wget http://download.xnview.com/XnViewMP-linux-x64.deb
sudo gdebi XnViewMP-linux-x64.deb
Quindi l'immagine riuscita si apre in modalità Dired. E apri l'immagine dall'app XnView .
Bello.
Non è necessario eseguire alcuna impostazione aggiuntiva in init.el
È abbastanza:
(when (require 'openwith nil 'noerror)
(setq openwith-associations
(list
(list (openwith-make-extension-regexp '("doc" "docx" "rtf")) "word" '(file))
(list (openwith-make-extension-regexp '("mpg" "mpeg" "mp3" "mp4" "avi" "wmv" "wav" "mov" "mkv")) "vlc" '(file))
(list (openwith-make-extension-regexp '("pdf")) "FoxitReader" '(file))
(list (openwith-make-extension-regexp '("bmp" "gif" "jpeg" "jpg" "png" "tif")) "xnview" '(file))
(list (openwith-make-extension-regexp '("rdp")) "Remote Desctop Connection" '(file))
(list (openwith-make-extension-regexp '("xls" "xlsx")) "excel" '(file))
))
(openwith-mode 1))