mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 12:32:40 +03:00
Port mc.ext to INI format.
Ticket #2773: 'include' keyword (for command class def) have no effect if it was defined before 'Include' keyword (for command def). Ticket #3742: update comment in mc.ext.ini. doc: remove mc.ext.ini format description from manual page. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
1cb66b82bd
commit
d9eeec9a5a
@ -605,7 +605,7 @@ misc/ext.d/misc.sh
|
||||
misc/ext.d/text.sh
|
||||
misc/ext.d/web.sh
|
||||
misc/macros.d/Makefile
|
||||
misc/mc.ext
|
||||
misc/mc.ext.ini
|
||||
|
||||
src/Makefile
|
||||
src/consaver/Makefile
|
||||
|
@ -1509,80 +1509,15 @@ comando cd interno\&.
|
||||
.\"NODE " Edit Extension File"
|
||||
.SH " Editar el Archivo de Extensiones"
|
||||
Abre el archivo
|
||||
.I ~/.config/mc/mc.ext
|
||||
en nuestro editor. El administrador puede optar por editar, en su lugar,
|
||||
el archivo de extensiones del sistema
|
||||
.IR %pkgdatadir%/mc.ext .
|
||||
El formato del archivo es como sigue:
|
||||
.PP
|
||||
Todas las líneas que empiecen con # o estén vacías serán ignoradas.
|
||||
.PP
|
||||
Las líneas que comiencen en la primera columna deberán tener el siguiente formato:
|
||||
.PP
|
||||
.IR PalabraClave/descripción ,
|
||||
i. e. todo lo que vaya tras la «/» hasta el fin de línea será la
|
||||
.IR descripción .
|
||||
.PP
|
||||
Las palabras clave son:
|
||||
.TP
|
||||
.I shell
|
||||
\-
|
||||
.I Descripción
|
||||
será una extensión (sin comodines). Un archivo coincide si su nombre acaba en
|
||||
.IR Descripción .
|
||||
Por ejemplo:
|
||||
.I shell/.tar
|
||||
corresponde a
|
||||
.IR *.tar .
|
||||
.TP
|
||||
.I regex
|
||||
\-
|
||||
.I Descripción
|
||||
es una expresión regular. Un archivo coincide si la salida de
|
||||
.I file %f
|
||||
encaja con la expresión regular
|
||||
.I Descripción
|
||||
(quitando la parte inicial «nombre de archivo:»)
|
||||
.TP
|
||||
.I default
|
||||
\- Coincide para cualquier archivo. Se ignora la
|
||||
.IR descripción .
|
||||
.TP
|
||||
.I include
|
||||
\- Incorpora una sección común.
|
||||
.I Descripción
|
||||
es el nombre de la sección.
|
||||
.PP
|
||||
El resto de líneas deben comenzar con un espacio o tabulador y usar el
|
||||
siguiente formato:
|
||||
.I PalabraClave=comando
|
||||
(sin espacios alrededor de «=»), donde
|
||||
.I PalabraClave
|
||||
debe ser:
|
||||
.I Open
|
||||
(si el usuario pulsa
|
||||
.I Intro
|
||||
o dos veces el ratón),
|
||||
.I View
|
||||
(F3),
|
||||
.I Edit
|
||||
(F4) o
|
||||
.I Include
|
||||
(para agregar reglas de la sección común).
|
||||
.I Comando
|
||||
es cualquier comando en línea del shell, con
|
||||
.\"LINK2"
|
||||
sustitución de macro
|
||||
.\"Macro Substitution"
|
||||
simple.
|
||||
.PP
|
||||
Las reglas se aplican en estricto orden. Aunque se produzca una
|
||||
coincidencia, si la acción solicitada no está disponible, se ignora y la
|
||||
búsqueda continúa (por ejemplo, si un archivo encaja con dos entradas,
|
||||
pero la acción Ver no está definida en la primera, al pulsar F3, se
|
||||
ejecuta la acción Ver de la segunda). Por eso, como último recurso
|
||||
.I default
|
||||
sí debe incluir todas las acciones.
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
en nuestro editor.
|
||||
If this file does not exist and you are not root, it will be copied from
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
If you are root, you can choose the file to edit: user's
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
or system\-wide
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
The format of this file is described in detail in it.
|
||||
.\"NODE " Background jobs"
|
||||
.SH " Trabajos en Segundo Plano"
|
||||
Nos permite controlar el estado de cualquier proceso de Midnight Commander
|
||||
@ -2900,7 +2835,7 @@ Buscar la próxima coincidencia.
|
||||
.PP
|
||||
.B F8
|
||||
Intercambia entre el modo crudo y procesado: esto mostrará el archivo como se encuentra en disco
|
||||
o si se ha especificado un filtro de visualización en el archivo mc.ext, entonces
|
||||
o si se ha especificado un filtro de visualización en el archivo mc.ext.ini, entonces
|
||||
la salida filtrada. El modo actual es siempre el contrario al mostrado
|
||||
en la etiqueta del botón, en tanto que el botón muestra el modo en el que entraremos
|
||||
con la pulsación de esa tecla.
|
||||
@ -3122,7 +3057,7 @@ de directorio empleando la siguiente sintaxis:
|
||||
.PP
|
||||
.I /archivo.tar/utar://[directorio\-dentro\-tar]
|
||||
.PP
|
||||
El archivo mc.ext también ofrece un atajo para los archivos tar, esto quiere decir
|
||||
El archivo mc.ext.ini también ofrece un atajo para los archivos tar, esto quiere decir
|
||||
que normalmente basta con apuntar a un archivo tar y pulsar Intro para entrar en el
|
||||
archivo tar. Véase la sección
|
||||
.\"LINK2"
|
||||
@ -4009,7 +3944,7 @@ ya estemos ahí, en cuyo caso moverá la selección al último nombre de archivo
|
||||
Si esta variable está activada (por defecto lo está) se recurrirá al
|
||||
comando «file» para reconocer los tipos de archivo referidos en el archivo
|
||||
.\"LINK2"
|
||||
mc.ext\&.
|
||||
mc.ext.ini\&.
|
||||
.\"Edit Extension File"
|
||||
.TP
|
||||
.I xtree_mode
|
||||
@ -4163,11 +4098,11 @@ que de estar definida se emplearía en vez de %pkgdatadir%.
|
||||
.IP
|
||||
Archivo de ayuda.
|
||||
.PP
|
||||
.I %pkgdatadir%/mc.ext
|
||||
.I %pkgdatadir%/mc.ext.ini
|
||||
.IP
|
||||
Archivo de extensiones por defecto del sistema.
|
||||
.PP
|
||||
.I ~/.config/mc/mc.ext
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
.IP
|
||||
Archivo de usuario de extensiones y configuración de visor y editor. Si
|
||||
está presente prevalece sobre el contenido de los archivos del sistema.
|
||||
|
@ -1299,66 +1299,16 @@ A cd belső parancs
|
||||
leírásánál.
|
||||
.\"NODE " Edit Extension File"
|
||||
.SH " Társítások"
|
||||
Ez az ~/.config/mc/mc.ext szerkesztéséhez segítségül fogja hívni a
|
||||
szövegszerkesztődet. A fájl formátuma a következő (a formátum a 3.0\-ás
|
||||
verzióval megváltozott):
|
||||
.PP
|
||||
Minden # jellel kezdődő sor, vagy üres sor kommentárnak tekinthető.
|
||||
.PP
|
||||
A sorok az első rovatban látható formátumnak megfelelően kezdődnek:
|
||||
.PP
|
||||
.IR kulcsszó/desc ,
|
||||
pl. akármi a
|
||||
.I kulcsszó/
|
||||
után úgy, hogy a sor vége karakter előtt a
|
||||
.I desc
|
||||
áll kulcsszó lehet:
|
||||
.PP
|
||||
.I shell
|
||||
.IP
|
||||
bármely kiterjesztés esetén, amely ponttal kezdődik (nem szükséges a
|
||||
helyettesítő karaktert beírni, például: .tar az *.tar párja)
|
||||
.PP
|
||||
.I regex
|
||||
.IP
|
||||
(szabványos kifejezés; regular expression esetén)
|
||||
.PP
|
||||
.I type
|
||||
.IP
|
||||
(azokra a fájlokra illeszkedik, amelyek tartalmazzák a `file %f`
|
||||
szöveget. A fájlnév a `file %f` résztől törlődik)
|
||||
.PP
|
||||
.I default
|
||||
.IP
|
||||
(illeszkedik bármely fájlra, kiterjesztésétől függetlenül)
|
||||
.PP
|
||||
A többi sor kezdődhet szóközzel, vagy tabulátorral, a formátumuk pedig a
|
||||
következő:
|
||||
.PP
|
||||
.I keyword=command
|
||||
(szóközt nem szabad az egyenlőségjel mellé írni), ahol a
|
||||
.I kulcsszó
|
||||
lehet:
|
||||
.PP
|
||||
.I Open
|
||||
(ha a felhasználó lenyomja az Enter\-t, vagy duplán kattint),
|
||||
.I View
|
||||
(F3) és
|
||||
.I Edit
|
||||
(F4).
|
||||
.PP
|
||||
.I command
|
||||
ez bármely egysoros shell parancs lehet, az egyszerű
|
||||
.\"LINK2"
|
||||
Macro Helyettesítővel\&.
|
||||
.\"Macro Substitution"
|
||||
.PP
|
||||
A feladatokatokat fentről lefelé értékeljük ki (tehát a sorrend nagyon
|
||||
fontos). Ha néhány műveletet keresünk, a keresés úgy folytatódik,
|
||||
mintha ez a cél nem létezne (pl. ha a fájl tartalmazza az első és a
|
||||
második bejegyzést és a Nézet művelet hiányzik az elsőből, akkor az F3
|
||||
lenyomására a Nézet művelet a második bejegyzést fogja használni.
|
||||
Alapértelmezésben végrehajt minden műveletet.
|
||||
Ez az
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
szerkesztéséhez segítségül fogja hívni a szövegszerkesztődet.
|
||||
If this file does not exist and you are not root, it will be copied from
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
If you are root, you can choose the file to edit: user's
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
or system\-wide
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
The format of this file is described in detail in it.
|
||||
.\"NODE " Background jobs"
|
||||
.SH " Háttérmunkák"
|
||||
Ezzel szabályozhatod néhány Commander háttérfolyamat állapotát (csak a
|
||||
@ -2393,7 +2343,7 @@ A következő egyezőt keresi.
|
||||
.PP
|
||||
.B F8
|
||||
Vált a Nyers és Feldolgozott mód között: ez a fájlt, úgy mutatja meg,
|
||||
ahogy megtalálta, vagy, ha folyamatszűrő meg van adva az mc.ext fájlban,
|
||||
ahogy megtalálta, vagy, ha folyamatszűrő meg van adva az mc.ext.ini fájlban,
|
||||
akkor a szűrő kimenetét. A Jelenlegi mód mindig a másik, mit amit a gomb
|
||||
felirata mutat.
|
||||
.PP
|
||||
@ -2663,7 +2613,7 @@ következő szintaktikájú parancs segítségével tudod átváltani könyvtár
|
||||
.PP
|
||||
.I /filename.tar:utar/[dir\-inside\-tar]
|
||||
.PP
|
||||
Az mc.ext fájl már tartalmaz gyorsbillentyűket a tar fájlokhoz, ezért
|
||||
Az mc.ext.ini fájl már tartalmaz gyorsbillentyűket a tar fájlokhoz, ezért
|
||||
csak rá kell mutatnod a tar fájlra és le kell nyomnod az entert ahhoz,
|
||||
hogy beléphess a tar fájlba, ehhez nézd meg a
|
||||
.\"LINK2"
|
||||
@ -3153,11 +3103,11 @@ ez vissza fog állítódni a /usr könyvtárra.
|
||||
.IP
|
||||
A program súgó fájlja.
|
||||
.PP
|
||||
.I %pkgdatadir%/mc.ext
|
||||
.I %pkgdatadir%/mc.ext.ini
|
||||
.IP
|
||||
Az alapértelmezett rendszerszintű kiterjesztés fájl.
|
||||
.PP
|
||||
.I ~/.config/mc/mc.ext
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
.IP
|
||||
A felhasználó saját kiterjesztései, nézet beállítások és szerkesztési
|
||||
beállítások. Ezek felülbírálják a rendszerszintű fájl bejegyzéseit, ha
|
||||
|
@ -1314,60 +1314,14 @@ comando cd interno\&.
|
||||
.\"NODE " Edit Extension File"
|
||||
.SH " Modifica file estensioni"
|
||||
Questo comando invocherà l'editor sul file
|
||||
.IR ~/.config/mc/mc.ext .
|
||||
Il fomato di questo file è il seguente (il formato è cambiato dalla
|
||||
versione 3.0):
|
||||
.PP
|
||||
Tutte le righe che iniziano per # vengono ignorate.
|
||||
.PP
|
||||
Le righe che cominciano dalla prima colonna devono avere il seguente formato:
|
||||
.PP
|
||||
.IR parolachiave/descrizione ,
|
||||
i.e. qualsiasi cosa dopo
|
||||
.I parolachiave/
|
||||
fino al fine riga è
|
||||
.I descrizione
|
||||
.PP
|
||||
parolachiave può essere:
|
||||
.TP
|
||||
.I shell
|
||||
(allora descrizione è qualsiasi estensione (no caratteri jolly),
|
||||
cioè corrisponde a tutti i file *descrizione. Esempio: .tar corrisponde a *.tar)
|
||||
.TP
|
||||
.I regex
|
||||
(descrizione è un'espressione regolare)
|
||||
.TP
|
||||
.I type
|
||||
(file corrisponde se `file %f` corrisponde all'espressione regolare descrizione
|
||||
(nome del file: a partire da `file %f` viene rimosso))
|
||||
.TP
|
||||
.I default
|
||||
(corrisponde a qualsiasi file indipendentemente dalla descrizione)
|
||||
.PP
|
||||
Le altre linee devono cominciare con uno spazio o una tabulazione e devono essere nel formato:
|
||||
.I parolachiave=comando
|
||||
(senza spazi intorno a =), dove
|
||||
.I parolachiave
|
||||
deve essere:
|
||||
.I Open
|
||||
(se l'utente preme Invio o fa doppio clic),
|
||||
.I View
|
||||
(F3),
|
||||
.I Edit
|
||||
(F4).
|
||||
.I command
|
||||
è qualsiasi comando shell di una riga, con la semplice
|
||||
.\"LINK2"
|
||||
sostituzione macro\&.
|
||||
.\"Macro Substitution"
|
||||
.PP
|
||||
Gli obiettivi sono valutati dalla cima al fondo, perciò l'ordine è
|
||||
importante. Se alcune azioni mancano, la ricerca continua come se
|
||||
la regola non corrispondesse, cioè se un file corrisponde alla prima e
|
||||
alla seconda voce e manca la voce View in cima, allora premendo F3 verrà
|
||||
usata l'azione View della seconda voce.
|
||||
.I Normalmente
|
||||
dovrebbero corrispondere tutte le azioni.
|
||||
.IR ~/.config/mc/mc.ext.ini .
|
||||
If this file does not exist and you are not root, it will be copied from
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
If you are root, you can choose the file to edit: user's
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
or system\-wide
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
The format of this file is described in detail in it.
|
||||
.\"NODE " Background jobs"
|
||||
.SH " Processi in background"
|
||||
Questo comando permette di controllare lo stato di ogni processo
|
||||
@ -2425,7 +2379,7 @@ un'espressione di ricerca, altrimenti trova la prossima occorrenza.
|
||||
.PP
|
||||
.B F8
|
||||
Cambia tra modalità Normale/Filtrata: questo mostrerà il file come si
|
||||
trova su disco o se è stato specificato un filtro nel file mc.ext, come
|
||||
trova su disco o se è stato specificato un filtro nel file mc.ext.ini, come
|
||||
esce dal filtro. La modalità corrente è sempre quella diversa da quella
|
||||
mostrata dall'etichetta del tasto, dato che il bottone rappresenta la
|
||||
modalità nella quale si entra premendolo.
|
||||
@ -2672,7 +2626,7 @@ al file tar usare la seguente sintassi:
|
||||
.PP
|
||||
.I /nomefile.tar/utar://[dir\-dentro\-tar]
|
||||
.PP
|
||||
Il file mc.ext già fornisce un collegamento per il file tar; ciò
|
||||
Il file mc.ext.ini già fornisce un collegamento per il file tar; ciò
|
||||
significa che normalmente basta selezionare un file tar e premere invio
|
||||
per entrare nel file tar, vedere la sezione
|
||||
.\"LINK2"
|
||||
@ -3082,7 +3036,7 @@ pannello.
|
||||
Se questa variabile è abilitata (valore predefinito) userà il comando
|
||||
file per trovare delle corrispondenze sui tipi di file elencati nel
|
||||
.\"LINK2"
|
||||
file mc.ext\&.
|
||||
file mc.ext.ini\&.
|
||||
.\"Edit Extension File"
|
||||
.TP
|
||||
.I xtree_mode
|
||||
@ -3146,11 +3100,11 @@ e se la variabile non è impostata, passerà alla directory %pkgdatadir% .
|
||||
.IP
|
||||
Il file di aiuto per il programma.
|
||||
.PP
|
||||
.I %pkgdatadir%/mc.ext
|
||||
.I %pkgdatadir%/mc.ext.ini
|
||||
.IP
|
||||
Il file delle estensioni di sistema predefinito.
|
||||
.PP
|
||||
.I ~/.config/mc/mc.ext
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
.IP
|
||||
Le estensioni dell'utente, la configurazione del visualizzatore e
|
||||
dell'editor di file. Se presenti, questi file si sovrappongono ai file di
|
||||
|
@ -1483,87 +1483,14 @@ description.
|
||||
.\"NODE " Edit Extension File"
|
||||
.SH " Edit Extension File"
|
||||
This will invoke your editor on the file
|
||||
.IR ~/.config/mc/mc.ext .
|
||||
The format of this file following:
|
||||
.PP
|
||||
All lines starting with # or empty lines are thrown away.
|
||||
.PP
|
||||
Lines starting in the first column should have following format:
|
||||
.PP
|
||||
.IR keyword/expr ,
|
||||
i.e. everything after the slash until new line is
|
||||
.IR expr .
|
||||
.PP
|
||||
.I keyword
|
||||
can be:
|
||||
.TP
|
||||
.I shell
|
||||
\-
|
||||
.I expr
|
||||
is an extension (no wildcards). File matches it its name ends
|
||||
with
|
||||
.IR expr .
|
||||
Example:
|
||||
.I shell/.tar
|
||||
matches
|
||||
.IR *.tar .
|
||||
.TP
|
||||
.I regex
|
||||
\-
|
||||
.I expr
|
||||
is a regular expression. File matches if its name matches the regular
|
||||
expression.
|
||||
.TP
|
||||
.I directory
|
||||
\-
|
||||
.I expr
|
||||
is a regular expression. File matches if it is a directory and its name
|
||||
matches the regular expression.
|
||||
.TP
|
||||
.I type
|
||||
\-
|
||||
.I expr
|
||||
is a regular expression. File matches if the output of
|
||||
.I file %f
|
||||
without the initial "filename:" part matches regular expression
|
||||
.IR expr .
|
||||
.TP
|
||||
.I default
|
||||
\- matches any file.
|
||||
.I expr
|
||||
is ignored.
|
||||
.TP
|
||||
.I include
|
||||
\- denotes a common section.
|
||||
.I expr
|
||||
is the name of the section.
|
||||
.PP
|
||||
Other lines should start with a space or tab and should be of the format:
|
||||
.I keyword=command
|
||||
(with no spaces around =), where
|
||||
.I keyword
|
||||
should be:
|
||||
.I Open
|
||||
(invoked on Enter or double click),
|
||||
.I View
|
||||
(F3),
|
||||
.I Edit
|
||||
(F4) or
|
||||
.I Include
|
||||
(to add rules from the common section).
|
||||
.I command
|
||||
is any one\-line shell command, with the simple
|
||||
.\"LINK2"
|
||||
macro substitution\&.
|
||||
.\"Macro Substitution"
|
||||
.PP
|
||||
Rules are matched from top to bottom, thus the order is important. If
|
||||
the appropriate action is missing, search continues as if this rule
|
||||
didn't match (i.e. if a file matches the first and second entry and View
|
||||
action is missing in the first one, then on pressing F3 the View action
|
||||
from the second entry will be used).
|
||||
.I default
|
||||
should match all the actions.
|
||||
.IR ~/.config/mc/mc.ext.ini .
|
||||
If this file does not exist and you are not root, it will be copied from
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
If you are root, you can choose the file to edit: user's
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
or system\-wide
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
The format of this file is described in detail in it.
|
||||
.\"NODE " Background jobs"
|
||||
.SH " Background Jobs"
|
||||
This lets you control the state of any background Midnight Commander
|
||||
@ -2975,7 +2902,7 @@ and vice versa.
|
||||
.TP
|
||||
.B F8
|
||||
Toggle Raw/Parsed mode: This will show the file as found on disk or if
|
||||
a processing filter has been specified in the mc.ext file, then the
|
||||
a processing filter has been specified in the mc.ext.ini file, then the
|
||||
output from the filter. Current mode is always the other than written
|
||||
on the button label, since on the button is the mode which you enter
|
||||
by that key.
|
||||
@ -3280,7 +3207,7 @@ tar file by using the following syntax:
|
||||
.PP
|
||||
.I /filename.tar/utar://[dir\-inside\-tar]
|
||||
.PP
|
||||
The mc.ext file already provides a shortcut for tar files, this means
|
||||
The mc.ext.ini file already provides a shortcut for tar files, this means
|
||||
that usually you just point to a tar file and press return to enter
|
||||
into the tar file, see the
|
||||
.\"LINK2"
|
||||
@ -4160,7 +4087,7 @@ the panel.
|
||||
If this variable is on (the default) it will spawn the file command to
|
||||
match the file types listed on the
|
||||
.\"LINK2"
|
||||
mc.ext file\&.
|
||||
mc.ext.ini file\&.
|
||||
.\"Edit Extension File"
|
||||
.TP
|
||||
.I xtree_mode
|
||||
@ -4308,11 +4235,11 @@ environment variable. If it's set, its value is used instead of
|
||||
.IP
|
||||
The help file for the program.
|
||||
.PP
|
||||
.I %pkgdatadir%/mc.ext
|
||||
.I %pkgdatadir%/mc.ext.ini
|
||||
.IP
|
||||
The default system\-wide extensions file.
|
||||
.PP
|
||||
.I ~/.config/mc/mc.ext
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
.IP
|
||||
User's own extension, view configuration and edit configuration
|
||||
file. They override the contents of the system wide files if present.
|
||||
|
@ -1095,65 +1095,16 @@ przemieszczanie.
|
||||
.PP
|
||||
.\"NODE " Edit Extension File"
|
||||
.SH " Edycja rozszerzeń pliów (Edit Extension File)"
|
||||
Ta komenda wywoła twój edytor na plik ~/.config/mc/mc.ext. Format tego pliku jest
|
||||
następujący (zmienił się on począwszy od wersji 3.0):
|
||||
.PP
|
||||
Wszystkie linie zaczynające się od #, lub puste, nie są brane pod uwagę.
|
||||
.PP
|
||||
Linie zaczynające się od pierwszej kolumny powinny mieć następujący format:
|
||||
.PP
|
||||
.IR "słowo kluczowe/wzorzec" ,
|
||||
tj. wszystko po
|
||||
.I słowie kluczowym/
|
||||
dopóki nową linią nie jest
|
||||
.I wzorzec
|
||||
.PP
|
||||
słowami kluczowymi mogą być:
|
||||
.PP
|
||||
.I shell
|
||||
.IP
|
||||
(wzorzec jest wtedy wyrażeniem (bez jokerów), tj. pasują wszystkie pliki
|
||||
*wzorzec. Np.: .tar znaczy *.tar)
|
||||
.PP
|
||||
.I regex
|
||||
.IP
|
||||
(wzorzec jest normalnym wyrażeniem)
|
||||
.PP
|
||||
.I type
|
||||
.IP
|
||||
(plik spełnia wymagania jeśli `file %f` zgadza się z wyrażeniem wzorca
|
||||
(nazwa: część z `file %f` jest usuwana))
|
||||
.PP
|
||||
.I default
|
||||
.IP
|
||||
(wszystkie pliki spełniają, nie ważne jaki jest wzorzec)
|
||||
.PP
|
||||
Inne linie powinny zaczynać się od spacji lub tabulacji i powinny
|
||||
mieć one następujący format:
|
||||
.PP
|
||||
.I słowo kluczowe=komenda
|
||||
(bez spacji przy znaku =), gdzie
|
||||
.I słowem kluczowym
|
||||
powinno być:
|
||||
.PP
|
||||
.I Open (Otwórz)
|
||||
(jeśli użytkownik naciśnie Enter lub kliknie dwukrotnie),
|
||||
.I View (Podgląd)
|
||||
(F3),
|
||||
.I Edit (Edytuj)
|
||||
(F4).
|
||||
.PP
|
||||
.I command
|
||||
jest jakąkolwiek jedną linią powłoki, z zastosowaniem
|
||||
prostego makra.
|
||||
.PP
|
||||
Cele są przeliczane od góry do dołu (porządek jest tu istotny). Jeśli
|
||||
jakiejś akcji brakuje, poszukiwanie kontynuuje się tak jakby wcześniej
|
||||
nie nastąpiła żadna zgodność (tj. jeśli zgadza się z wzorcem pierwszym
|
||||
i trzecim i brakuje w pierwszym akcji View, to naciskając F3 użyta będzie
|
||||
akcja z trzeciego wzorca). Opcja default powinna wychwycić wszystkie możliwe
|
||||
akcje.
|
||||
.PP
|
||||
Ta komenda wywoła twój edytor na plik
|
||||
.IR ~/.config/mc/mc.ext.ini .
|
||||
If this file does not exist and you are not root, it will be copied from
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
If you are root, you can choose the file to edit: user's
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
or system\-wide
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
The format of this file is described in detail in it.
|
||||
PP
|
||||
.\"NODE " Background Jobs"
|
||||
.SH " Prace w tle (Background jobs)"
|
||||
Pozwalają ci one kontrolować status jakichkolwiek procesów wykonywanych
|
||||
@ -2052,7 +2003,7 @@ Szuka następnego wystąpienia.
|
||||
.B F8
|
||||
Przełącza tryby Raw i Parsed. Pokaże to plik w postaci takiej w jakiej
|
||||
został znaleziony na dysku, lub jeśli został wybrany jakiś filtr, bądź
|
||||
też plik spełnia wymagania w pliku mc.ext, wyświetlane jest to co
|
||||
też plik spełnia wymagania w pliku mc.ext.ini, wyświetlane jest to co
|
||||
przekazuje filtr. Aktualne ustawienie jest zawsze przeciwne niż to napisane
|
||||
na przycisku, przycisk wskazuje zawsze to co się stanie po jego
|
||||
naciśnięciu.
|
||||
@ -2300,7 +2251,7 @@ następującej konstrukcji:
|
||||
.PP
|
||||
.I /nazwa_pliku.tar:utar/[katalogu\-wewnątrza\-archiwum]
|
||||
.PP
|
||||
Plik mc.ext pozwala już na tworzenie skrótów do plików tar, oznacza to, że
|
||||
Plik mc.ext.ini pozwala już na tworzenie skrótów do plików tar, oznacza to, że
|
||||
możesz wybrać jakiś plik tar i nacisnąć enter aby do niego wejść, zobacz
|
||||
sekcję Edycja pliku rozszerzeń po więcej szczegółów na temat tego jak
|
||||
zostało to pomyślane.
|
||||
@ -2791,7 +2742,7 @@ Podświetlenie uprawnień również pracuje w tym trybie.
|
||||
.I use_file_to_guess_type
|
||||
.IP
|
||||
Jeśli ta zmienna jest ustawiona (standardowo) próbuje się dostosować
|
||||
rozszerzenie pliku do tego wybranego w pliku mc.ext.
|
||||
rozszerzenie pliku do tego wybranego w pliku mc.ext.ini.
|
||||
.PP
|
||||
.I xtree_mode
|
||||
.IP
|
||||
@ -2854,11 +2805,11 @@ jeśli jest ona nie ustawiona to znowu przetwarzany jest katalog /usr.
|
||||
.IP
|
||||
Plik pomocy dla programu.
|
||||
.PP
|
||||
%pkgdatadir%/mc.ext
|
||||
%pkgdatadir%/mc.ext.ini
|
||||
.IP
|
||||
Standardowy plik rozszerzeń plików.
|
||||
.PP
|
||||
~/.config/mc/mc.ext
|
||||
~/.config/mc/mc.ext.ini
|
||||
.IP
|
||||
Własny plik użytkownika, konfiguruje podgląd i edycje plików. Ma wyższy
|
||||
priorytet niż plik systemowy.
|
||||
|
@ -1412,7 +1412,7 @@ Midnight Commander за счет добавления в личное меню
|
||||
.PP
|
||||
После выбора пункта меню
|
||||
.\"LINK2"
|
||||
.I "Файл расширений"
|
||||
.I "Редактировать файл расширений"
|
||||
.\"Edit Extension File"
|
||||
вы можете связать с определённым расширением файла (окончанием имени
|
||||
после последней точки) программу, которая будет запускаться для
|
||||
@ -1670,86 +1670,17 @@ CDPATH (смотрите описание
|
||||
встроенной команды cd\&.
|
||||
.\"The cd internal command"
|
||||
.\"NODE " Edit Extension File"
|
||||
.SH " Файл расширений"
|
||||
.SH " Редактировать файл расширений"
|
||||
Этот пункт меню "Команда" служит для вызова редактора и редактирования
|
||||
файла
|
||||
.BR ~/.config/mc/mc.ext .
|
||||
Этот файл имеет следующий формат (формат был изменен в версии 3.0):
|
||||
.PP
|
||||
Все строки, начинающиеся с #, или пустые строки игнорируются.
|
||||
.PP
|
||||
Строки, начинающиеся с первой колонки (будем говорить, что с таких строк
|
||||
начинаются секции файла расширений), должны иметь следующий формат:
|
||||
.PP
|
||||
.IR keyword/desc ,
|
||||
то есть всё, что стоит после
|
||||
.I keyword/
|
||||
и до конца строки, интерпретируется как
|
||||
.IR desc .
|
||||
.PP
|
||||
В качестве keyword может стоять одно из следующих слов:
|
||||
.TP
|
||||
.I shell
|
||||
если desc начинается с точки (мета\-символы не допускаются), то desc \-
|
||||
это расширение имени файла, то есть шаблону соответствуют все файлы,
|
||||
оканчивающиеся на desc. Пример: .tar будет означать *.tar. Если desc
|
||||
не начинается с точки, то desc трактуется как полное имя файла.
|
||||
.TP
|
||||
.I regex
|
||||
desc \- регулярное выражение. Обратите внимание на то, что используется
|
||||
библиотека GNU regex, в силу чего "\\|" соответствует просто символу
|
||||
"|", а "|" имеет специальное значение (логическое ИЛИ). Аналогично,
|
||||
вместо скобок "(" и ")" надо использовать "\\(" и "\\)".
|
||||
.TP
|
||||
.I directory
|
||||
Файл является каталогом, и его имя соответствует регулярному выражению desc.
|
||||
.TP
|
||||
.I type
|
||||
в этом случае выбираются такие файлы, для которых `file %f`
|
||||
соответствует регулярному выражению desc (часть filename: из `file %f`
|
||||
удалена).
|
||||
.TP
|
||||
.I default
|
||||
подходит любой файл, независимо от того, какое значение принимает desc.
|
||||
.TP
|
||||
.I include
|
||||
\- означает общую секцию.
|
||||
.PP
|
||||
Все строки в секции, кроме первой, должны начинаться с пробела или
|
||||
символа табуляции и иметь следующий формат:
|
||||
.PP
|
||||
.I keyword=command
|
||||
(без пробелов возле "="), где
|
||||
.I keyword
|
||||
должно быть:
|
||||
.PP
|
||||
.I Open
|
||||
(строка задаёт действия, выполняемые в том случае, когда пользователь
|
||||
нажимает Enter или дважды щёлкает мышкой по имени файла),
|
||||
.I View
|
||||
(F3),
|
||||
.I Edit
|
||||
(F4) или
|
||||
.I Include
|
||||
(для добавления правил из общей секции).
|
||||
.PP
|
||||
.I command
|
||||
\- любая однострочная команда оболочки, в которой допускаются простые
|
||||
.\"LINK2"
|
||||
макроподстановки\&.
|
||||
.\"Macro Substitution"
|
||||
.PP
|
||||
Действие вычисляется сверху вниз (таким образом порядок следования
|
||||
важен). Если некоторое действие пропущено, поиск продолжается как в
|
||||
случае, если это действие не соответствует условию. Другими словами если
|
||||
файл соответствует первой и второй секции, но действие View пропущено в
|
||||
первой секции, то при нажатии клавиши
|
||||
.B F3
|
||||
будет использовано действие
|
||||
.I View
|
||||
из второй секции.
|
||||
.B default
|
||||
должно описывать все действия.
|
||||
.BR ~/.config/mc/mc.ext.ini .
|
||||
Если этот файл не существует и вы не root, этот файл будет скопирован с
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
Если вы root, вы можете выбрать, какой из файлов редактировать: пользовательский
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
или системный
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
Формат этого файла подробно описан в нём самом.
|
||||
.\"NODE " Background Jobs"
|
||||
.SH " Фоновые задания"
|
||||
Этот пункт меню позволяет вам управлять фоновыми заданиями, запущенными
|
||||
@ -3394,7 +3325,7 @@ ASCII и шестнадцатеричный (hex). Для переключени
|
||||
.B F8
|
||||
Переключение между режимами Raw/Parsed: файл отображается либо в том
|
||||
виде, как он записан на диске, либо пропущенным через фильтр, который
|
||||
задан для этого типа файлов в mc.ext. Текущий режим отображения всегда
|
||||
задан для этого типа файлов в mc.ext.ini. Текущий режим отображения всегда
|
||||
обратный по отношению к тому, который указан на экранной кнопке
|
||||
.BR F8 ,
|
||||
поскольку на кнопке указывается режим, к которому осуществляется переход
|
||||
@ -3777,7 +3708,7 @@ tar\-файлам, используя команду chdir. Для перехо
|
||||
.PP
|
||||
.I cd ./filename.tar/utar://[dir\-inside\-tar]
|
||||
.PP
|
||||
Файл mc.ext по умолчанию содержит команды для просмотра
|
||||
Файл mc.ext.ini по умолчанию содержит команды для просмотра
|
||||
tar\-файлов, то есть обычно для получения списка файлов tar\-архива
|
||||
достаточно просто переместить указатель на имя tar\-файла и нажать
|
||||
.BR Enter .
|
||||
@ -4688,7 +4619,7 @@ subshell. Если она установлена, то при нажатии
|
||||
.B file
|
||||
для определения типа файла в соответствии с типами файлов, указанными в файле
|
||||
.\"LINK2"
|
||||
mc.ext\&.
|
||||
mc.ext.ini\&.
|
||||
.\"Edit Extension File"
|
||||
.PP
|
||||
.I xtree_mode
|
||||
@ -4837,11 +4768,11 @@ insert=\\e[Op
|
||||
.IP
|
||||
Файл подсказки для программы.
|
||||
.PP
|
||||
.I %pkgdatadir%/mc.ext
|
||||
.I %pkgdatadir%/mc.ext.ini
|
||||
.IP
|
||||
Используемый по умолчанию общесистемный файл расширений.
|
||||
.PP
|
||||
.I ~/.config/mc/mc.ext
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
.IP
|
||||
Файл расширений пользователя. Если этот файл существует, он используется
|
||||
вместо общесистемного файла расширений.
|
||||
|
@ -1282,84 +1282,14 @@ awk '$9 ~! /incoming/ { print $9 }' < /var/log/xferlog
|
||||
.\"NODE " Edit Extension File"
|
||||
.SH " Уреди датотеку врста"
|
||||
Ово покреће ваш уређивач над датотеком
|
||||
.IR ~/.config/mc/mc.ext .
|
||||
Формат ове датотеке је следећи:
|
||||
.PP
|
||||
Сви редови који почињу на # или празни редови се одбацују.
|
||||
.PP
|
||||
Редови који почињу у првој колони би требало да су у следећем формату:
|
||||
.PP
|
||||
.IR кључна_реч/израз ,
|
||||
тј. све од косе црте до знака за нови ред је
|
||||
.IR израз .
|
||||
.PP
|
||||
.I кључна_реч
|
||||
може да буде:
|
||||
.TP
|
||||
.I shell
|
||||
\-
|
||||
.I израз
|
||||
је врста (без џокерских знакова). Датотека задовољава услов ако се
|
||||
њено име завршава на
|
||||
.IR израз .
|
||||
На пример, израз:
|
||||
.I shell/.tar
|
||||
задовољава
|
||||
.IR *.tar .
|
||||
.TP
|
||||
.I regex
|
||||
\-
|
||||
.I израз
|
||||
је регуларни израз. Датотека задовољава услов ако њен назив задовољава
|
||||
регуларни израз.
|
||||
.TP
|
||||
.I type
|
||||
\-
|
||||
.I израз
|
||||
је регуларни израз. Датотека задовољава услов ако излаз наредбе
|
||||
.I file %f
|
||||
без почетног дела `назив_датотеке:' задовољава регуларни израз
|
||||
.IR израз .
|
||||
.TP
|
||||
.I default
|
||||
\- (подразумевано) задовољава било која датотека.
|
||||
.I израз
|
||||
се занемарује.
|
||||
.TP
|
||||
.I include
|
||||
\- означава општи одељак.
|
||||
.I израз
|
||||
је назив одељка.
|
||||
.PP
|
||||
Други редови би требало да почињу размаком или табулатором и требало
|
||||
би да су у формату:
|
||||
.I кључна_реч=наредба
|
||||
(без размака око знака =), где би
|
||||
.I кључна_реч
|
||||
требало да буде:
|
||||
.I Open
|
||||
(покретање при притиску на тастер `Enter' или двоструком притиску
|
||||
дугмета миша),
|
||||
.I View
|
||||
(преглед са F3),
|
||||
.I Edit
|
||||
(уређивање са F4) или
|
||||
.I Include
|
||||
(за додавање правила из општег одељка).
|
||||
.I наредба
|
||||
је било која наредба љуске од једног реда, уз једноставну
|
||||
.\"LINK2"
|
||||
замену макроа\&.
|
||||
.\"Macro Substitution"
|
||||
.PP
|
||||
Правила се задовољавају од врха до дна, па је стога редослед битан.
|
||||
Ако одговарајућа радња не постоји, претрага се наставља, као да
|
||||
правило није ни постојало (нпр. ако датотека задовољава први и други
|
||||
унос а радња под `View' (Преглед) недостаје у првом уносу, онда ће се
|
||||
при притиску на F3 користити радња под `View' из другог уноса).
|
||||
Правило
|
||||
.I default
|
||||
(подразумевано) би требало да задовољи све радње.
|
||||
.IR ~/.config/mc/mc.ext.ini .
|
||||
If this file does not exist and you are not root, it will be copied from
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
If you are root, you can choose the file to edit: user's
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
or system\-wide
|
||||
.IR %sysconfdir%/mc/mc.ext.ini .
|
||||
The format of this file is described in detail in it.
|
||||
.\"NODE " Background jobs"
|
||||
.SH " Позадински послови"
|
||||
Ово вам омогућава да управљате стањем било ког позадинског процеса
|
||||
@ -2416,7 +2346,7 @@ linux би вас одвело у /usr/src/linux).
|
||||
.PP
|
||||
.B F8
|
||||
Смењује сирови/рашчлањени режим: ово ће приказати датотеку онако каква
|
||||
је она на диску или, у случају да је у датотеци mc.ext задан филтар за
|
||||
је она на диску или, у случају да је у датотеци mc.ext.ini задан филтар за
|
||||
обраду, као излаз филтра. Текући режим је увек онај други од оног
|
||||
који стоји на натпису дугмета, пошто се на дугмету налази режим који
|
||||
укључујете тим тастером.
|
||||
@ -2677,7 +2607,7 @@ if the
|
||||
.PP
|
||||
.I /datoteka.tar/utar://[дир\-унутар\-дат]
|
||||
.PP
|
||||
Датотека `mc.ext' већ садржи пречицу за датотеке врсте `tar', што
|
||||
Датотека `mc.ext.ini' већ садржи пречицу за датотеке врсте `tar', што
|
||||
значи да можете само показати на датотеку врсте `tar' и притиснути
|
||||
`Return' или `Enter' да бисте ушли у њу; погледајте одељак
|
||||
.\"LINK2"
|
||||
@ -3089,7 +3019,7 @@ base_color=normal=white,default:marked=magenta,default
|
||||
Уколико је ова променљива укључена (подразумевано), ПН ће покренути
|
||||
наредбу `file' за одређивање врсте датотека које су задане у
|
||||
.\"LINK2"
|
||||
датотеци `mc.ext'\&.
|
||||
датотеци `mc.ext.ini'\&.
|
||||
.\"Edit Extension File"
|
||||
.TP
|
||||
.I xtree_mode
|
||||
@ -3151,11 +3081,11 @@ insert=\\e[Op
|
||||
.IP
|
||||
Датотека помоћи за програм.
|
||||
.PP
|
||||
.I %pkgdatadir%/mc.ext
|
||||
.I %pkgdatadir%/mc.ext.ini
|
||||
.IP
|
||||
Подразумевана системска датотека врста.
|
||||
.PP
|
||||
.I ~/.config/mc/mc.ext
|
||||
.I ~/.config/mc/mc.ext.ini
|
||||
.IP
|
||||
Корисничке датотеке врста, подешавања прегледача и уређивача. Уколико
|
||||
постоје, оне заобилазе системске датотеке.
|
||||
|
@ -55,7 +55,8 @@
|
||||
#define MC_ASHRC_FILE "ashrc"
|
||||
#define MC_INPUTRC_FILE "inputrc"
|
||||
#define MC_CONFIG_FILE "ini"
|
||||
#define MC_EXT_FILE "mc.ext"
|
||||
#define MC_EXT_FILE "mc.ext.ini"
|
||||
#define MC_EXT_OLD_FILE "mc.ext"
|
||||
#define MC_FILEPOS_FILE "filepos"
|
||||
#define MC_HISTORY_FILE "history"
|
||||
#define MC_HOTLIST_FILE "hotlist"
|
||||
|
@ -70,6 +70,7 @@ static const struct
|
||||
|
||||
/* User should move this file with applying some changes in file */
|
||||
{ &mc_config_str, MC_EXT_FILE },
|
||||
{ &mc_config_str, MC_EXT_OLD_FILE },
|
||||
|
||||
/* data */
|
||||
{ &mc_data_str, MC_SKINS_DIR },
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
SUBDIRS = ext.d macros.d skins syntax
|
||||
|
||||
LIBFILES_OUT = mc.ext
|
||||
LIBFILES_OUT = mc.ext.ini
|
||||
|
||||
noinst_DATA = xterm.ad
|
||||
|
||||
|
850
misc/mc.ext.in
850
misc/mc.ext.in
@ -1,850 +0,0 @@
|
||||
# Midnight Commander 3.0 extension file
|
||||
# Warning: Structure of this file has changed completely with version 3.0
|
||||
#
|
||||
# All lines starting with # or empty lines are thrown away.
|
||||
# Lines starting in the first column should have following format:
|
||||
#
|
||||
# keyword/descNL, i.e. everything after keyword/ until new line is desc
|
||||
#
|
||||
# keyword can be:
|
||||
#
|
||||
# shell (desc is, when starting with a dot, any extension (no wildcars),
|
||||
# i.e. matches all the files *desc . Example: .tar matches *.tar;
|
||||
# if it doesn't start with a dot, it matches only a file of that name)
|
||||
#
|
||||
# shell/i (desc is, when starting with a dot, any extension (no wildcars),
|
||||
# The same as shell but with case insensitive.
|
||||
#
|
||||
# regex (desc is an extended regular expression)
|
||||
# Please note that we are using the GNU regex library and thus
|
||||
# \| matches the literal | and | has special meaning (or) and
|
||||
# () have special meaning and \( \) stand for literal ( ).
|
||||
#
|
||||
# regex/i (desc is an extended regular expression)
|
||||
# The same as regex but with case insensitive.
|
||||
#
|
||||
# type (file matches this if `file %f` matches regular expression desc
|
||||
# (the filename: part from `file %f` is removed))
|
||||
# Ignored if the "file" utility isn't used (not found in configure
|
||||
step or disabled in ini file).
|
||||
#
|
||||
# type/i (file matches this if `file %f` matches regular expression desc)
|
||||
# The same as type but with case insensitive.
|
||||
#
|
||||
# directory (matches any directory matching regular expression desc)
|
||||
#
|
||||
# include (matches an include directive)
|
||||
#
|
||||
# default (matches any file no matter what desc is)
|
||||
#
|
||||
# Other lines should start with a space or tab and should be in the format:
|
||||
#
|
||||
# keyword=commandNL (with no spaces around =), where keyword should be:
|
||||
#
|
||||
# Open (if the user presses Enter or doubleclicks it),
|
||||
#
|
||||
# View (F3), Edit (F4)
|
||||
#
|
||||
# Include is the keyword used to add any further entries from an include/
|
||||
# section
|
||||
#
|
||||
# command is any one-line shell command, with the following substitutions:
|
||||
#
|
||||
# %% -> % character
|
||||
# %p -> name of the current file (without path, but pwd is its path).
|
||||
# Also provided to external application as MC_EXT_BASENAME
|
||||
# global variable
|
||||
# %f -> name of the current file. Unlike %p, if file is located on a
|
||||
# non-local virtual filesystem, i.e. either tarfs or ftpfs,
|
||||
# then the file will be temporarily copied into a local directory
|
||||
# and %f will be the full path to this local temporal file.
|
||||
# If you don't want to get a local copy and want to get the
|
||||
# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then
|
||||
# use %d/%p instead of %f.
|
||||
# Also provided to external application as MC_EXT_FILENAME
|
||||
# global variable
|
||||
# %d -> name of the current directory (pwd, without trailing slash)
|
||||
# Also provided to external application as MC_EXT_CURRENTDIR
|
||||
# global variable
|
||||
# %s -> "selected files", i.e. space separated list of tagged files if any
|
||||
# or name of the current file.
|
||||
# Also provided to external application as MC_EXT_SELECTED
|
||||
# global variable
|
||||
# %t -> list of tagged files
|
||||
# Also provided to external application as MC_EXT_ONLYTAGGED
|
||||
# global variable
|
||||
# %u -> list of tagged files (they'll be untaged after the command)
|
||||
#
|
||||
# (If these 6 letters are in uppercase, they refer to the other panel.
|
||||
# But you shouldn't have to use it in this file.)
|
||||
#
|
||||
#
|
||||
# %cd -> the rest is a path mc should change into (cd won't work, since it's
|
||||
# a child process). %cd handles even vfs names.
|
||||
#
|
||||
# %view -> the command you type will be piped into mc's internal file viewer
|
||||
# if you type only the %view and no command, viewer will load %f file
|
||||
# instead (i.e. no piping, so it is different to %view cat %f)
|
||||
# %view may be directly followed by {} with a list of any of
|
||||
# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for
|
||||
# text using backspace for bold and underscore) and unform
|
||||
# (no highlighting for nroff sequences) separated by commas.
|
||||
#
|
||||
# %var -> You use it like this: %var{VAR:default}. This macro will expand
|
||||
# to the value of the VAR variable in the environment if it's set
|
||||
# otherwise the value in default will be used. This is similar to
|
||||
# the Bourne shell ${VAR-default} construct.
|
||||
#
|
||||
# Rules are applied from top to bottom, thus the order is important.
|
||||
# If some actions are missing, search continues as if this target didn't
|
||||
# match (i.e. if a file matches the first and second entry and View action
|
||||
# is missing in the first one, then on pressing F3 the View action from
|
||||
# the second entry will be used. default should catch all the actions.
|
||||
#
|
||||
# Any new entries you develop for you are always welcome if they are
|
||||
# useful on more than one system. You can post your modifications
|
||||
# as tickets at www.midnight-commander.org
|
||||
|
||||
|
||||
### Changes ###
|
||||
#
|
||||
# Reorganization: 2012-03-07 Slava Zanko <slavazanko@gmail.com>
|
||||
# 2021-03-28 Andrew Borodin <aborodin@vmail.ru>
|
||||
# 2021-08-24 Tomas Szepe <szepe@pinerecords.com>
|
||||
|
||||
|
||||
### GIT Repo ###
|
||||
# gitfs changeset
|
||||
regex/^\[git\]
|
||||
Open=%cd %p/changesetfs://
|
||||
View=%cd %p/patchsetfs://
|
||||
|
||||
|
||||
### Archives ###
|
||||
# Since we use "file -z", we should use regex/ and shell/ at first, then type/.
|
||||
|
||||
# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk, .gem
|
||||
regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk$|\.gem$
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.gz
|
||||
|
||||
shell/.tar.bz
|
||||
# Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip
|
||||
|
||||
regex/\.t(ar\.bz2|bz2?|b2)$
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip2
|
||||
|
||||
# .tar.lzma, .tlz
|
||||
regex/\.t(ar\.lzma|lz)$
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lzma
|
||||
|
||||
# .tar.lz
|
||||
shell/.tar.lz
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz
|
||||
|
||||
# .tar.lz4, .tlz4
|
||||
regex/\.t(ar\.lz4|lz4)$
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz4
|
||||
|
||||
# .tar.xz, .txz
|
||||
regex/\.t(ar\.xz|xz)$
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.xz
|
||||
|
||||
# .tar.zst, .tzst
|
||||
regex/\.t(ar\.zst|zst)$
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.zst
|
||||
|
||||
# .tar.F - used in QNX
|
||||
shell/.tar.F
|
||||
# Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.F
|
||||
|
||||
# .qpr/.qpk - QNX Neutrino package installer files
|
||||
regex/\.qp[rk]$
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.qpr
|
||||
|
||||
# tar
|
||||
shell/i/.tar
|
||||
Open=%cd %p/utar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar
|
||||
|
||||
# arj
|
||||
regex/i/\.a(rj|[0-9][0-9])$
|
||||
Open=%cd %p/uarj://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arj
|
||||
|
||||
# cab
|
||||
shell/i/.cab
|
||||
Open=%cd %p/ucab://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cab
|
||||
|
||||
# ha
|
||||
shell/i/.ha
|
||||
Open=%cd %p/uha://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ha
|
||||
|
||||
# rar
|
||||
regex/i/\.r(ar|[0-9][0-9])$
|
||||
Open=%cd %p/urar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view rar
|
||||
|
||||
# ALZip
|
||||
shell/i/.alz
|
||||
Open=%cd %p/ualz://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view alz
|
||||
|
||||
# cpio
|
||||
shell/.cpio.Z
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.z
|
||||
|
||||
shell/.cpio.lz
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz
|
||||
|
||||
shell/.cpio.lz4
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz4
|
||||
|
||||
shell/.cpio.xz
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.xz
|
||||
|
||||
shell/.cpio.zst
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.zst
|
||||
|
||||
shell/.cpio.gz
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.gz
|
||||
|
||||
shell/i/.cpio
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio
|
||||
|
||||
# initrd
|
||||
regex/^(initramfs.*\.img|initrd(-.+)?\.img(-.+)?)$
|
||||
Open=%cd %p/ucpio://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio
|
||||
|
||||
# 7zip archives (they are not man pages)
|
||||
shell/i/.7z
|
||||
Open=%cd %p/u7z://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view 7z
|
||||
|
||||
# patch
|
||||
regex/\.(diff|patch)(\.bz2)$
|
||||
Open=%cd %p/patchfs://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2
|
||||
|
||||
regex/\.(diff|patch)(\.(gz|Z))$
|
||||
Open=%cd %p/patchfs://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
|
||||
|
||||
regex/\.(diff|patch)(\.xz)$
|
||||
Open=%cd %p/patchfs://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz
|
||||
|
||||
regex/\.(diff|patch)(\.zst)$
|
||||
Open=%cd %p/patchfs://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst
|
||||
|
||||
# ls-lR
|
||||
regex/(^|\.)ls-?lR(\.gz|Z|bz2)$
|
||||
Open=%cd %p/lslR://
|
||||
|
||||
# trpm
|
||||
shell/.trpm
|
||||
Open=%cd %p/trpm://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/package.sh view trpm
|
||||
|
||||
# RPM packages (SuSE uses *.spm for source packages)
|
||||
regex/\.(src\.rpm|spm)$
|
||||
Open=%cd %p/rpm://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/package.sh view src.rpm
|
||||
|
||||
shell/.rpm
|
||||
Open=%cd %p/rpm://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/package.sh view rpm
|
||||
|
||||
# deb
|
||||
regex/\.u?deb$
|
||||
Open=%cd %p/deb://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/package.sh view deb
|
||||
|
||||
# dpkg
|
||||
shell/.debd
|
||||
Open=%cd %p/debd://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/package.sh view debd
|
||||
|
||||
# apt
|
||||
shell/.deba
|
||||
Open=%cd %p/deba://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/package.sh view deba
|
||||
|
||||
# ISO9660
|
||||
shell/i/.iso
|
||||
Open=%cd %p/iso9660://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view iso9660
|
||||
|
||||
regex/\.(diff|patch)$
|
||||
Open=%cd %p/patchfs://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view cat
|
||||
|
||||
# ar library
|
||||
regex/\.s?a$
|
||||
Open=%cd %p/uar://
|
||||
#Open=%view{ascii} ar tv %f
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view ar
|
||||
|
||||
# gplib
|
||||
shell/i/.lib
|
||||
Open=%cd %p/ulib://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lib
|
||||
|
||||
# Mailboxes
|
||||
type/^ASCII\ mail\ text
|
||||
Open=%cd %p/mailfs://
|
||||
|
||||
|
||||
### Sources ###
|
||||
|
||||
# C/C++
|
||||
regex/i/\.(c|cc|cpp)$
|
||||
Include=editor
|
||||
|
||||
# C/C++ header
|
||||
regex/i/\.(h|hh|hpp)$
|
||||
Include=editor
|
||||
|
||||
# Fortran
|
||||
shell/i/.f
|
||||
Include=editor
|
||||
|
||||
# Assembler
|
||||
regex/i/\.(s|asm)$
|
||||
Include=editor
|
||||
|
||||
# .so libraries
|
||||
regex/\.(so|so\.[0-9\.]*)$
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view so
|
||||
|
||||
# Object
|
||||
type/^ELF
|
||||
#Open=%var{PAGER:more} %f
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view elf
|
||||
|
||||
|
||||
### Documentation ###
|
||||
|
||||
# Texinfo
|
||||
#regex/\.(te?xi|texinfo)$
|
||||
|
||||
# GNU Info page
|
||||
type/^Info\ text
|
||||
Open=@EXTHELPERSDIR@/text.sh open info
|
||||
|
||||
shell/.info
|
||||
Open=@EXTHELPERSDIR@/text.sh open info
|
||||
|
||||
# Exception: .3gp are video files not manual pages
|
||||
shell/i/.3gp
|
||||
Include=video
|
||||
|
||||
# Troff with me macros.
|
||||
# Exception - "read.me" is not a nroff file.
|
||||
shell/read.me
|
||||
Open=
|
||||
View=
|
||||
|
||||
shell/.me
|
||||
Open=@EXTHELPERSDIR@/text.sh open nroff.me %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.me %var{PAGER:more}
|
||||
|
||||
# Troff with ms macros.
|
||||
shell/.ms
|
||||
Open=@EXTHELPERSDIR@/text.sh open nroff.ms %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.ms %var{PAGER:more}
|
||||
|
||||
# Manual page - compressed
|
||||
type/troff.*gzip compressed
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.gz %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.gz %var{PAGER:more}
|
||||
|
||||
type/troff.*bzip compressed
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.bz %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz %var{PAGER:more}
|
||||
|
||||
type/troff.*bzip2 compressed
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.bz2 %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz2 %var{PAGER:more}
|
||||
|
||||
# Manual page
|
||||
type/troff or preprocessor input
|
||||
Open=@EXTHELPERSDIR@/text.sh open man %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man %var{PAGER:more}
|
||||
|
||||
regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz$
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.lz %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz %var{PAGER:more}
|
||||
|
||||
regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz4$
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.lz4 %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz4 %var{PAGER:more}
|
||||
|
||||
regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.lzma %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzma %var{PAGER:more}
|
||||
|
||||
regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.xz %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.xz %var{PAGER:more}
|
||||
|
||||
regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.zst$
|
||||
Open=@EXTHELPERSDIR@/text.sh open man.zst %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.zst %var{PAGER:more}
|
||||
|
||||
# Perl pod page
|
||||
shell/.pod
|
||||
Open=@EXTHELPERSDIR@/text.sh open pod %var{PAGER:more}
|
||||
View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view pod %var{PAGER:more}
|
||||
|
||||
# CHM
|
||||
shell/i/.chm
|
||||
Open=@EXTHELPERSDIR@/text.sh open chm
|
||||
|
||||
|
||||
### Images ###
|
||||
|
||||
type/^GIF
|
||||
Include=image
|
||||
|
||||
type/^JPEG
|
||||
View=%view{ascii} @EXTHELPERSDIR@/image.sh view jpeg
|
||||
Include=image
|
||||
|
||||
type/^PC\ bitmap
|
||||
Include=image
|
||||
|
||||
type/^PNG
|
||||
Include=image
|
||||
|
||||
type/^JNG
|
||||
Include=image
|
||||
|
||||
type/^MNG
|
||||
Include=image
|
||||
|
||||
type/^TIFF
|
||||
Include=image
|
||||
|
||||
type/^PBM
|
||||
Include=image
|
||||
|
||||
type/^PGM
|
||||
Include=image
|
||||
|
||||
type/^PPM
|
||||
Include=image
|
||||
|
||||
type/^Netpbm
|
||||
Include=image
|
||||
|
||||
shell/.xcf
|
||||
Open=@EXTHELPERSDIR@/image.sh open xcf
|
||||
|
||||
shell/.xbm
|
||||
Open=@EXTHELPERSDIR@/image.sh open xbm
|
||||
|
||||
shell/.xpm
|
||||
Include=image
|
||||
View=@EXTHELPERSDIR@/image.sh view xpm %f
|
||||
|
||||
shell/.ico
|
||||
Include=image
|
||||
|
||||
shell/i/.svg
|
||||
View=%view{ascii} @EXTHELPERSDIR@/image.sh view svg
|
||||
Open=@EXTHELPERSDIR@/image.sh open svg
|
||||
|
||||
|
||||
### Sound files ###
|
||||
|
||||
regex/i/\.(wav|snd|voc|au|smp|aiff|snd|m4a|ape|aac|wv)$
|
||||
Open=@EXTHELPERSDIR@/sound.sh open common
|
||||
View=%view{ascii} @EXTHELPERSDIR@/sound.sh view common
|
||||
|
||||
regex/i/\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$
|
||||
Open=@EXTHELPERSDIR@/sound.sh open mod
|
||||
|
||||
shell/i/.waw22
|
||||
Open=@EXTHELPERSDIR@/sound.sh open wav22
|
||||
|
||||
shell/i/.mp3
|
||||
Open=@EXTHELPERSDIR@/sound.sh open mp3
|
||||
View=%view{ascii} @EXTHELPERSDIR@/sound.sh view mp3
|
||||
|
||||
regex/i/\.og[gax]$
|
||||
Open=@EXTHELPERSDIR@/sound.sh open ogg
|
||||
View=%view{ascii} @EXTHELPERSDIR@/sound.sh view ogg
|
||||
|
||||
shell/i/.opus
|
||||
Open=@EXTHELPERSDIR@/sound.sh open opus
|
||||
View=%view{ascii} @EXTHELPERSDIR@/sound.sh view opus
|
||||
|
||||
regex/i/\.(spx|flac)$
|
||||
Open=@EXTHELPERSDIR@/sound.sh open common
|
||||
|
||||
regex/i/\.(midi?|rmid?)$
|
||||
Open=@EXTHELPERSDIR@/sound.sh open midi
|
||||
|
||||
shell/i/.wma
|
||||
Open=@EXTHELPERSDIR@/sound.sh open wma
|
||||
View=%view{ascii} @EXTHELPERSDIR@/sound.sh view wma
|
||||
|
||||
|
||||
### Play lists ###
|
||||
|
||||
regex/i/\.(m3u|pls)$
|
||||
Open=@EXTHELPERSDIR@/sound.sh open playlist
|
||||
|
||||
|
||||
### Video ###
|
||||
|
||||
shell/i/.avi
|
||||
Include=video
|
||||
|
||||
regex/i/\.as[fx]$
|
||||
Include=video
|
||||
|
||||
shell/i/.divx
|
||||
Include=video
|
||||
|
||||
shell/i/.mkv
|
||||
Include=video
|
||||
|
||||
regex/i/\.(mov|qt)$
|
||||
Include=video
|
||||
|
||||
regex/i/\.(mp4|m4v|mpe?g)$
|
||||
Include=video
|
||||
|
||||
# MPEG-2 TS container + H.264 codec
|
||||
shell/i/.mts
|
||||
Include=video
|
||||
|
||||
shell/i/.ts
|
||||
Include=video
|
||||
|
||||
shell/i/.vob
|
||||
Include=video
|
||||
|
||||
shell/i/.wmv
|
||||
Include=video
|
||||
|
||||
regex/i/\.fl[icv]$
|
||||
Include=video
|
||||
|
||||
shell/i/.ogv
|
||||
Include=video
|
||||
|
||||
regex/i/\.ra?m$
|
||||
Open=@EXTHELPERSDIR@/video.sh open ram
|
||||
|
||||
# WebM
|
||||
shell/i/.webm
|
||||
Include=video
|
||||
|
||||
type/WebM
|
||||
Include=video
|
||||
|
||||
|
||||
### Documents ###
|
||||
|
||||
# Postscript
|
||||
type/^PostScript
|
||||
Open=@EXTHELPERSDIR@/doc.sh open ps
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ps
|
||||
|
||||
# PDF
|
||||
type/^PDF
|
||||
Open=@EXTHELPERSDIR@/doc.sh open pdf
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view pdf
|
||||
|
||||
# html
|
||||
regex/i/\.html?$
|
||||
Open=@EXTHELPERSDIR@/web.sh open html
|
||||
View=%view{ascii} @EXTHELPERSDIR@/web.sh view html
|
||||
|
||||
# StarOffice 5.2
|
||||
shell/.sdw
|
||||
Open=@EXTHELPERSDIR@/doc.sh open ooffice
|
||||
|
||||
# StarOffice 6 and OpenOffice.org formats
|
||||
regex/i/\.(odt|fodt|ott|sxw|stw|ods|fods|ots|sxc|stc|odp|fodp|otp|sxi|sti|odg|fodg|otg|sxd|std|odb|odf|sxm|odm|sxg)$
|
||||
Open=@EXTHELPERSDIR@/doc.sh open ooffice
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view odt
|
||||
|
||||
# AbiWord
|
||||
shell/.abw
|
||||
Open=@EXTHELPERSDIR@/doc.sh open abw
|
||||
|
||||
# Gnumeric
|
||||
shell/i/.gnumeric
|
||||
Open=@EXTHELPERSDIR@/doc.sh open gnumeric
|
||||
|
||||
# Microsoft Word Document
|
||||
regex/i/\.(do[ct]|wri|docx)$
|
||||
Open=@EXTHELPERSDIR@/doc.sh open msdoc
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc
|
||||
type/^Microsoft\ Word
|
||||
Open=@EXTHELPERSDIR@/doc.sh open msdoc
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc
|
||||
|
||||
# RTF document
|
||||
shell/i/.rtf
|
||||
Open=@EXTHELPERSDIR@/doc.sh open msdoc
|
||||
|
||||
# Microsoft Excel Worksheet
|
||||
regex/i/\.(xl[sw]|xlsx)$
|
||||
Open=@EXTHELPERSDIR@/doc.sh open msxls
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls
|
||||
type/^Microsoft\ Excel
|
||||
Open=@EXTHELPERSDIR@/doc.sh open msxls
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls
|
||||
|
||||
# Microsoft PowerPoint Presentation
|
||||
regex/i/\.(pp[ts]|pptx)$
|
||||
Open=@EXTHELPERSDIR@/doc.sh open msppt
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msppt
|
||||
|
||||
# Use OpenOffice.org/LibreOffice to open any MS Office documents
|
||||
type/^Microsoft\ Office\ Document
|
||||
Open=@EXTHELPERSDIR@/doc.sh open ooffice
|
||||
type/^Microsoft\ OOXML
|
||||
Open=@EXTHELPERSDIR@/doc.sh open ooffice
|
||||
|
||||
# Framemaker
|
||||
type/^FrameMaker
|
||||
Open=@EXTHELPERSDIR@/doc.sh open framemaker
|
||||
|
||||
# DVI
|
||||
shell/i/.dvi
|
||||
Open=@EXTHELPERSDIR@/doc.sh open dvi
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view dvi
|
||||
|
||||
# TeX
|
||||
shell/i/.tex
|
||||
Include=editor
|
||||
|
||||
# Markdown
|
||||
shell/i/.md
|
||||
Include=editor
|
||||
|
||||
# DjVu
|
||||
regex/i/\.djvu?$
|
||||
Open=@EXTHELPERSDIR@/doc.sh open djvu
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view djvu
|
||||
|
||||
# Comic Books
|
||||
regex/i/\.cb[zr]$
|
||||
Open=@EXTHELPERSDIR@/doc.sh open comic
|
||||
|
||||
# Epup, mobi, fb2
|
||||
regex/i/\.(epub|mobi|fb2)$
|
||||
Open=@EXTHELPERSDIR@/doc.sh open ebook
|
||||
View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ebook
|
||||
|
||||
|
||||
### Miscellaneous ###
|
||||
|
||||
# Compiled Java classes
|
||||
shell/.class
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view javaclass
|
||||
|
||||
# Imakefile
|
||||
shell/Imakefile
|
||||
Open=xmkmf -a
|
||||
|
||||
# Makefile.PL (MakeMaker)
|
||||
regex/^Makefile\.(PL|pl)$
|
||||
Open=%var{PERL:perl} %f
|
||||
|
||||
# Makefile
|
||||
regex/[Mm]akefile
|
||||
Open=make -f %f %{Enter parameters}
|
||||
|
||||
# sqlite3.db
|
||||
type/^SQLite 3.x database
|
||||
Open=@EXTHELPERSDIR@/misc.sh open sqlite
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view sqlite
|
||||
|
||||
# dbf
|
||||
shell/i/.dbf
|
||||
Open=@EXTHELPERSDIR@/misc.sh open dbf
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view dbf
|
||||
|
||||
# REXX script
|
||||
regex/\.(rexx?|cmd)$
|
||||
Open=rexx %f %{Enter parameters};echo "Press ENTER";read y
|
||||
|
||||
# Disk images for Commodore computers (VIC20, C64, C128)
|
||||
shell/i/.d64
|
||||
Open=%cd %p/uc1541://
|
||||
View=%view{ascii} c1541 %f -list
|
||||
Extract=c1541 %f -extract
|
||||
|
||||
# Glade, a user interface designer for GTK+ and GNOME
|
||||
shell/i/.glade
|
||||
Open=@EXTHELPERSDIR@/misc.sh open glade
|
||||
|
||||
# Gettext Catalogs
|
||||
regex/\.g?mo$
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view mo
|
||||
|
||||
# po
|
||||
shell/.po
|
||||
Open=@EXTHELPERSDIR@/misc.sh open po
|
||||
|
||||
# lyx
|
||||
shell/i/.lyx
|
||||
Open=@EXTHELPERSDIR@/misc.sh open lyx
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lyx
|
||||
|
||||
# torrent
|
||||
shell/i/.torrent
|
||||
View=%view{ascii} @EXTHELPERSDIR@/misc.sh view torrent
|
||||
|
||||
|
||||
### Plain compressed files ###
|
||||
|
||||
# ace
|
||||
shell/i/.ace
|
||||
Open=%cd %p/uace://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ace
|
||||
Extract=unace x %f
|
||||
|
||||
# arc
|
||||
shell/i/.arc
|
||||
Open=%cd %p/uarc://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arc
|
||||
Extract=arc x %f '*'
|
||||
Extract (with flags)=I=%{Enter any Arc flags:}; if test -n "$I"; then arc x $I %f; fi
|
||||
|
||||
# zip
|
||||
shell/i/.zip
|
||||
Open=%cd %p/uzip://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
|
||||
|
||||
# zoo
|
||||
shell/i/.zoo
|
||||
Open=%cd %p/uzoo://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zoo
|
||||
|
||||
# lz4
|
||||
shell/i/.lz4
|
||||
Open=@EXTHELPERSDIR@/archive.sh view lz4 %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz4
|
||||
|
||||
# WIM
|
||||
shell/i/\.wim
|
||||
Open=%cd %p/uwim://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view wim
|
||||
|
||||
# gzip
|
||||
type/\(gzip compressed
|
||||
Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
|
||||
|
||||
# bzip2
|
||||
type/\(bzip2 compressed
|
||||
Open=@EXTHELPERSDIR@/archive.sh view bzip2 %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2
|
||||
|
||||
# bzip
|
||||
type/\(bzip compressed
|
||||
Open=@EXTHELPERSDIR@/archive.sh view bzip %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bzip
|
||||
|
||||
# compress
|
||||
type/\(compress'd
|
||||
Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
|
||||
|
||||
# lz
|
||||
type/\(lzip compressed
|
||||
Open=@EXTHELPERSDIR@/archive.sh view lz %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz
|
||||
|
||||
# lzma
|
||||
type/\(LZMA compressed
|
||||
Open=@EXTHELPERSDIR@/archive.sh view lzma %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lzma
|
||||
|
||||
# xz
|
||||
type/\(XZ compressed
|
||||
Open=@EXTHELPERSDIR@/archive.sh view xz %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz
|
||||
|
||||
# zstd
|
||||
type/\(Zstandard compressed
|
||||
Open=@EXTHELPERSDIR@/archive.sh view zst %var{PAGER:more}
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst
|
||||
|
||||
# zip
|
||||
type/\(Zip archive
|
||||
Open=%cd %p/uzip://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
|
||||
|
||||
# jar(zip)
|
||||
type/i/\(Java\ (Jar\ file|archive)\ data\ \((zip|JAR)\)
|
||||
Open=%cd %p/uzip://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
|
||||
|
||||
# lha
|
||||
type/^LHa\ .*archive
|
||||
Open=%cd %p/ulha://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lha
|
||||
|
||||
# PAK
|
||||
type/^PAK\ .*archive
|
||||
Open=%cd %p/unar://
|
||||
View=%view{ascii} @EXTHELPERSDIR@/archive.sh view pak
|
||||
|
||||
# Parity Archive
|
||||
type/^Parity\ Archive\ Volume\ Set
|
||||
Open=@EXTHELPERSDIR@/archive.sh open par2
|
||||
|
||||
|
||||
### Includes
|
||||
# includes should be at end of bindings
|
||||
|
||||
include/editor
|
||||
Open=%var{EDITOR:vi} %f
|
||||
|
||||
include/image
|
||||
Open=@EXTHELPERSDIR@/image.sh open ALL_FORMATS
|
||||
View=%view{ascii} @EXTHELPERSDIR@/image.sh view ALL_FORMATS
|
||||
|
||||
include/video
|
||||
Open=@EXTHELPERSDIR@/video.sh open ALL_FORMATS
|
||||
View=%view{ascii} @EXTHELPERSDIR@/video.sh view ALL_FORMATS
|
||||
|
||||
|
||||
### Default ###
|
||||
|
||||
# Default target for anything not described above
|
||||
default/*
|
||||
Open=
|
||||
View=
|
||||
|
||||
|
||||
### EOF ###
|
1126
misc/mc.ext.ini.in
Normal file
1126
misc/mc.ext.ini.in
Normal file
File diff suppressed because it is too large
Load Diff
@ -91,7 +91,8 @@ typedef char *(*quote_func_t) (const char *name, gboolean quote_percent);
|
||||
* With this we avoid loading/parsing the file each time we
|
||||
* need it
|
||||
*/
|
||||
static char *data = NULL;
|
||||
static mc_config_t *ext_ini = NULL;
|
||||
static gchar **ext_ini_groups = NULL;
|
||||
static vfs_path_t *localfilecopy_vpath = NULL;
|
||||
static char buffer[BUF_1K];
|
||||
|
||||
@ -103,6 +104,9 @@ static gboolean is_cd = FALSE;
|
||||
static gboolean written_nonspace = FALSE;
|
||||
static gboolean do_local_copy = FALSE;
|
||||
|
||||
static const char *descr_group = "mc.ext.ini";
|
||||
static const char *default_group = "Default";
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
/*** file scope functions ************************************************************************/
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
@ -428,8 +432,6 @@ exec_extension (WPanel * panel, void *target, const vfs_path_t * filename_vpath,
|
||||
FILE *cmd_file;
|
||||
char *cmd = NULL;
|
||||
|
||||
g_return_val_if_fail (lc_data != NULL, NULL);
|
||||
|
||||
pbuffer = NULL;
|
||||
localmtime = 0;
|
||||
quote_func = name_quote;
|
||||
@ -761,6 +763,22 @@ regex_check_type (const vfs_path_t * filename_vpath, const char *ptr, gboolean c
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
static void
|
||||
check_old_extension_file (void)
|
||||
{
|
||||
char *extension_old_file;
|
||||
|
||||
extension_old_file = mc_config_get_full_path (MC_EXT_OLD_FILE);
|
||||
if (exist_file (extension_old_file))
|
||||
message (D_ERROR, _("Warning"),
|
||||
_("You have an outdated %s file.\nMidnight Commander now uses %s file.\n"
|
||||
"Please copy your modifications of the old file to the new one."),
|
||||
extension_old_file, MC_EXT_FILE);
|
||||
g_free (extension_old_file);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
static gboolean
|
||||
load_extension_file (void)
|
||||
{
|
||||
@ -772,6 +790,9 @@ load_extension_file (void)
|
||||
if (!exist_file (extension_file))
|
||||
{
|
||||
g_free (extension_file);
|
||||
|
||||
check_old_extension_file ();
|
||||
|
||||
check_stock_mc_ext:
|
||||
extension_file = mc_build_filename (mc_global.sysconfig_dir, MC_EXT_FILE, (char *) NULL);
|
||||
if (!exist_file (extension_file))
|
||||
@ -779,40 +800,41 @@ load_extension_file (void)
|
||||
g_free (extension_file);
|
||||
extension_file =
|
||||
mc_build_filename (mc_global.share_data_dir, MC_EXT_FILE, (char *) NULL);
|
||||
if (!exist_file (extension_file))
|
||||
MC_PTR_FREE (extension_file);
|
||||
}
|
||||
mc_user_ext = FALSE;
|
||||
}
|
||||
|
||||
g_file_get_contents (extension_file, &data, NULL, NULL);
|
||||
g_free (extension_file);
|
||||
if (data == NULL)
|
||||
if (extension_file != NULL)
|
||||
{
|
||||
ext_ini = mc_config_init (extension_file, TRUE);
|
||||
g_free (extension_file);
|
||||
}
|
||||
if (ext_ini == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (strstr (data, "default/") == NULL)
|
||||
/* Check version */
|
||||
if (!mc_config_has_group (ext_ini, descr_group))
|
||||
{
|
||||
if (strstr (data, "regex/") == NULL && strstr (data, "shell/") == NULL &&
|
||||
strstr (data, "type/") == NULL)
|
||||
flush_extension_file ();
|
||||
|
||||
if (!mc_user_ext)
|
||||
{
|
||||
MC_PTR_FREE (data);
|
||||
char *title;
|
||||
|
||||
if (!mc_user_ext)
|
||||
{
|
||||
char *title;
|
||||
|
||||
title =
|
||||
g_strdup_printf (_(" %s%s file error"), mc_global.sysconfig_dir, MC_EXT_FILE);
|
||||
message (D_ERROR, title,
|
||||
_("The format of the %s%s file has changed with version 3.0. "
|
||||
"It seems that the installation failed. Please fetch a fresh copy "
|
||||
"from the Midnight Commander package."),
|
||||
mc_global.sysconfig_dir, MC_EXT_FILE);
|
||||
g_free (title);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
home_error = TRUE;
|
||||
goto check_stock_mc_ext;
|
||||
title = g_strdup_printf (_(" %s%s file error"), mc_global.sysconfig_dir, MC_EXT_FILE);
|
||||
message (D_ERROR, title,
|
||||
_("The format of the %s%s file has changed with version 4.0. "
|
||||
"It seems that the installation has failed. Please fetch a fresh copy "
|
||||
"from the Midnight Commander package."),
|
||||
mc_global.sysconfig_dir, MC_EXT_FILE);
|
||||
g_free (title);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
home_error = TRUE;
|
||||
goto check_stock_mc_ext;
|
||||
}
|
||||
|
||||
if (home_error)
|
||||
@ -822,7 +844,7 @@ load_extension_file (void)
|
||||
extension_file = mc_config_get_full_path (MC_EXT_FILE);
|
||||
title = g_strdup_printf (_("%s file error"), extension_file);
|
||||
message (D_ERROR, title,
|
||||
_("The format of the %s file has changed with version 3.0. You may either want "
|
||||
_("The format of the %s file has changed with version 4.0. You may either want "
|
||||
"to copy it from %s%s or use that file as an example of how to write it."),
|
||||
extension_file, mc_global.sysconfig_dir, MC_EXT_FILE);
|
||||
g_free (extension_file);
|
||||
@ -839,7 +861,11 @@ load_extension_file (void)
|
||||
void
|
||||
flush_extension_file (void)
|
||||
{
|
||||
MC_PTR_FREE (data);
|
||||
g_strfreev (ext_ini_groups);
|
||||
ext_ini_groups = NULL;
|
||||
|
||||
mc_config_deinit (ext_ini);
|
||||
ext_ini = NULL;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
@ -861,19 +887,19 @@ int
|
||||
regex_command_for (void *target, const vfs_path_t * filename_vpath, const char *action,
|
||||
vfs_path_t ** script_vpath)
|
||||
{
|
||||
char *p, *q, *r, c;
|
||||
const char *filename;
|
||||
size_t file_len;
|
||||
size_t filename_len;
|
||||
gboolean found = FALSE;
|
||||
gboolean error_flag = FALSE;
|
||||
int ret = 0;
|
||||
struct stat mystat;
|
||||
int view_at_line_number = 0;
|
||||
char *include_target = NULL;
|
||||
size_t include_target_len = 0;
|
||||
#ifdef USE_FILE_CMD
|
||||
gboolean have_type = FALSE; /* Flag used by regex_check_type() */
|
||||
#endif
|
||||
char **group_iter;
|
||||
char *include_group = NULL;
|
||||
const char *current_group;
|
||||
|
||||
if (filename_vpath == NULL)
|
||||
return 0;
|
||||
@ -888,184 +914,170 @@ regex_command_for (void *target, const vfs_path_t * filename_vpath, const char *
|
||||
action = "View";
|
||||
}
|
||||
|
||||
if (data == NULL && !load_extension_file ())
|
||||
if (ext_ini == NULL && !load_extension_file ())
|
||||
return 0;
|
||||
|
||||
mc_stat (filename_vpath, &mystat);
|
||||
|
||||
filename = vfs_path_get_last_path_str (filename_vpath);
|
||||
filename = x_basename (filename);
|
||||
file_len = strlen (filename);
|
||||
filename_len = strlen (filename);
|
||||
|
||||
for (p = data; *p != '\0'; p++)
|
||||
if (ext_ini_groups == NULL)
|
||||
ext_ini_groups = mc_config_get_groups (ext_ini, NULL);
|
||||
|
||||
/* find matched type, regex or shell pattern */
|
||||
for (group_iter = ext_ini_groups; *group_iter != NULL && !found; group_iter++)
|
||||
{
|
||||
for (q = p; whitespace (*q); q++)
|
||||
;
|
||||
if (*q == '\n' || *q == '\0')
|
||||
p = q; /* empty line */
|
||||
if (*p == '#') /* comment */
|
||||
while (*p != '\0' && *p != '\n')
|
||||
p++;
|
||||
if (*p == '\n')
|
||||
continue;
|
||||
if (*p == '\0')
|
||||
break;
|
||||
if (p == q)
|
||||
enum
|
||||
{
|
||||
/* i.e. starts in the first column, should be keyword/descNL */
|
||||
gboolean case_insense;
|
||||
TYPE_UNUSED,
|
||||
TYPE_NOT_FOUND,
|
||||
TYPE_FOUND
|
||||
} type_state = TYPE_UNUSED;
|
||||
|
||||
found = FALSE;
|
||||
q = strchr (p, '\n');
|
||||
if (q == NULL)
|
||||
q = strchr (p, '\0');
|
||||
c = *q;
|
||||
*q = '\0';
|
||||
if (include_target != NULL)
|
||||
{
|
||||
if ((strncmp (p, "include/", 8) == 0)
|
||||
&& (strncmp (p + 8, include_target, include_target_len) == 0))
|
||||
found = TRUE;
|
||||
}
|
||||
else if (strncmp (p, "regex/", 6) == 0)
|
||||
{
|
||||
mc_search_t *search;
|
||||
const gchar *g = *group_iter;
|
||||
gchar *pattern;
|
||||
gboolean ignore_case;
|
||||
|
||||
p += 6;
|
||||
case_insense = (strncmp (p, "i/", 2) == 0);
|
||||
if (case_insense)
|
||||
p += 2;
|
||||
if (strcmp (g, descr_group) == 0 || strncmp (g, "Include/", 8) == 0
|
||||
|| strcmp (g, default_group) == 0)
|
||||
continue;
|
||||
|
||||
search = mc_search_new (p, DEFAULT_CHARSET);
|
||||
if (search != NULL)
|
||||
{
|
||||
search->search_type = MC_SEARCH_T_REGEX;
|
||||
search->is_case_sensitive = !case_insense;
|
||||
found = mc_search_run (search, filename, 0, file_len, NULL);
|
||||
mc_search_free (search);
|
||||
}
|
||||
}
|
||||
else if (strncmp (p, "directory/", 10) == 0)
|
||||
{
|
||||
if (S_ISDIR (mystat.st_mode)
|
||||
&& mc_search (p + 10, DEFAULT_CHARSET, vfs_path_as_str (filename_vpath),
|
||||
MC_SEARCH_T_REGEX))
|
||||
found = TRUE;
|
||||
}
|
||||
else if (strncmp (p, "shell/", 6) == 0)
|
||||
{
|
||||
int (*cmp_func) (const char *s1, const char *s2, size_t n) = strncmp;
|
||||
/* The "Directory" parameter is a special case: if it's present then
|
||||
"Type", "Regex", and "Shell" parameters are ignored */
|
||||
pattern = mc_config_get_string_raw (ext_ini, g, "Directory", NULL);
|
||||
if (pattern != NULL)
|
||||
{
|
||||
found = S_ISDIR (mystat.st_mode)
|
||||
&& mc_search (pattern, DEFAULT_CHARSET, vfs_path_as_str (filename_vpath),
|
||||
MC_SEARCH_T_REGEX);
|
||||
g_free (pattern);
|
||||
|
||||
p += 6;
|
||||
case_insense = (strncmp (p, "i/", 2) == 0);
|
||||
if (case_insense)
|
||||
{
|
||||
p += 2;
|
||||
cmp_func = strncasecmp;
|
||||
}
|
||||
continue; /* stop if found */
|
||||
}
|
||||
|
||||
if (*p == '.' && file_len >= (size_t) (q - p))
|
||||
{
|
||||
if (cmp_func (p, filename + file_len - (q - p), q - p) == 0)
|
||||
found = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((size_t) (q - p) == file_len && cmp_func (p, filename, file_len) == 0)
|
||||
found = TRUE;
|
||||
}
|
||||
}
|
||||
#ifdef USE_FILE_CMD
|
||||
else if (use_file_to_check_type && strncmp (p, "type/", 5) == 0)
|
||||
if (use_file_to_check_type)
|
||||
{
|
||||
pattern = mc_config_get_string_raw (ext_ini, g, "Type", NULL);
|
||||
if (pattern != NULL)
|
||||
{
|
||||
GError *mcerror = NULL;
|
||||
|
||||
p += 5;
|
||||
ignore_case = mc_config_get_bool (ext_ini, g, "TypeIgnoreCase", FALSE);
|
||||
type_state =
|
||||
regex_check_type (filename_vpath, pattern, ignore_case, &have_type, &mcerror)
|
||||
? TYPE_FOUND : TYPE_NOT_FOUND;
|
||||
g_free (pattern);
|
||||
|
||||
case_insense = (strncmp (p, "i/", 2) == 0);
|
||||
if (case_insense)
|
||||
p += 2;
|
||||
|
||||
found = regex_check_type (filename_vpath, p, case_insense, &have_type, &mcerror);
|
||||
if (mc_error_message (&mcerror, NULL))
|
||||
error_flag = TRUE; /* leave it if file cannot be opened */
|
||||
}
|
||||
#endif /* USE_FILE_CMD */
|
||||
else if (strncmp (p, "default/", 8) == 0)
|
||||
found = TRUE;
|
||||
|
||||
*q = c;
|
||||
if (type_state == TYPE_NOT_FOUND)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif /* USE_FILE_CMD */
|
||||
|
||||
pattern = mc_config_get_string_raw (ext_ini, g, "Regex", NULL);
|
||||
if (pattern != NULL)
|
||||
{
|
||||
mc_search_t *search;
|
||||
|
||||
ignore_case = mc_config_get_bool (ext_ini, g, "RegexIgnoreCase", FALSE);
|
||||
search = mc_search_new (pattern, DEFAULT_CHARSET);
|
||||
g_free (pattern);
|
||||
|
||||
if (search != NULL)
|
||||
{
|
||||
search->search_type = MC_SEARCH_T_REGEX;
|
||||
search->is_case_sensitive = !ignore_case;
|
||||
found = mc_search_run (search, filename, 0, filename_len, NULL);
|
||||
mc_search_free (search);
|
||||
}
|
||||
|
||||
found = found && (type_state == TYPE_UNUSED || type_state == TYPE_FOUND);
|
||||
}
|
||||
else
|
||||
{ /* List of actions */
|
||||
p = q;
|
||||
q = strchr (p, '\n');
|
||||
if (q == NULL)
|
||||
q = strchr (p, '\0');
|
||||
if (found && !error_flag)
|
||||
{
|
||||
pattern = mc_config_get_string_raw (ext_ini, g, "Shell", NULL);
|
||||
if (pattern != NULL)
|
||||
{
|
||||
r = strchr (p, '=');
|
||||
if (r != NULL)
|
||||
{
|
||||
c = *r;
|
||||
*r = '\0';
|
||||
if (strcmp (p, "Include") == 0)
|
||||
{
|
||||
char *t;
|
||||
int (*cmp_func) (const char *s1, const char *s2, size_t n);
|
||||
size_t pattern_len;
|
||||
|
||||
include_target = p + 8;
|
||||
t = strchr (include_target, '\n');
|
||||
ignore_case = mc_config_get_bool (ext_ini, g, "ShellIgnoreCase", FALSE);
|
||||
cmp_func = ignore_case ? strncasecmp : strncmp;
|
||||
pattern_len = strlen (pattern);
|
||||
|
||||
if (t != NULL)
|
||||
include_target_len = (size_t) (t - include_target);
|
||||
else
|
||||
include_target_len = strlen (include_target);
|
||||
if (*pattern == '.' && filename_len >= pattern_len)
|
||||
found =
|
||||
cmp_func (pattern, filename + filename_len - pattern_len, pattern_len) == 0;
|
||||
else
|
||||
found = pattern_len == filename_len
|
||||
&& cmp_func (pattern, filename, filename_len) == 0;
|
||||
|
||||
*r = c;
|
||||
p = q;
|
||||
found = FALSE;
|
||||
g_free (pattern);
|
||||
|
||||
if (*p == '\0')
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strcmp (action, p) != 0)
|
||||
*r = c;
|
||||
else
|
||||
{
|
||||
*r = c;
|
||||
|
||||
for (p = r + 1; whitespace (*p); p++)
|
||||
;
|
||||
|
||||
/* Empty commands just stop searching
|
||||
* through, they don't do anything
|
||||
*/
|
||||
if (p < q)
|
||||
{
|
||||
vfs_path_t *sv;
|
||||
|
||||
sv = exec_extension (current_panel, target, filename_vpath, r + 1,
|
||||
view_at_line_number);
|
||||
if (script_vpath != NULL)
|
||||
*script_vpath = sv;
|
||||
else
|
||||
exec_cleanup_script (sv);
|
||||
|
||||
ret = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
found = found && (type_state == TYPE_UNUSED || type_state == TYPE_FOUND);
|
||||
}
|
||||
else
|
||||
found = type_state == TYPE_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
/* group is found, process actions */
|
||||
if (found)
|
||||
{
|
||||
char *include_value;
|
||||
|
||||
group_iter--;
|
||||
|
||||
/* "Include" parameter has the highest priority over any actions */
|
||||
include_value = mc_config_get_string_raw (ext_ini, *group_iter, "Include", NULL);
|
||||
if (include_value != NULL)
|
||||
{
|
||||
/* find "Include/include_value" group */
|
||||
include_group = g_strconcat ("Include/", include_value, (char *) NULL);
|
||||
g_free (include_value);
|
||||
found = mc_config_has_group (ext_ini, include_group);
|
||||
}
|
||||
}
|
||||
|
||||
if (found)
|
||||
current_group = include_group != NULL ? include_group : *group_iter;
|
||||
else
|
||||
{
|
||||
current_group = default_group;
|
||||
found = mc_config_has_group (ext_ini, current_group);
|
||||
}
|
||||
|
||||
if (found && !error_flag)
|
||||
{
|
||||
gchar *action_value;
|
||||
|
||||
action_value = mc_config_get_string_raw (ext_ini, current_group, action, NULL);
|
||||
/* Empty commands just stop searching through, they don't do anything */
|
||||
if (action_value != NULL && *action_value != '\0')
|
||||
{
|
||||
vfs_path_t *sv;
|
||||
|
||||
sv = exec_extension (current_panel, target, filename_vpath, action_value,
|
||||
view_at_line_number);
|
||||
if (script_vpath != NULL)
|
||||
*script_vpath = sv;
|
||||
else
|
||||
exec_cleanup_script (sv);
|
||||
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
p = q;
|
||||
if (*p == '\0')
|
||||
break;
|
||||
g_free (action_value);
|
||||
}
|
||||
|
||||
g_free (include_group);
|
||||
|
||||
return (error_flag ? -1 : ret);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user