Pregunta

There are 5 Elisp commands that can be run on an Emacs fileset, plus the ability to run any shell command. What about all the other Emacs commands? Just to give one example, it would be nice to be able to run M-x occur on a fileset.

I know its possible to mark several files in dired and then run any Emacs command on them (is that true, or am I confused with shell commands?), but it would be very convenient to define a fileset once and then be able to use it like one single file for all kinds of text editing.

Thanks for any advice

¿Fue útil?

Solución

The commands that can operate on file sets are specified in the global custom variable "filesets-commands". You can add your own commands to that list. The default value for this variable is:

("Isearch" multi-isearch-files
  (filesets-cmd-isearch-getargs))
 ("Isearch (regexp)" multi-isearch-files-regexp
  (filesets-cmd-isearch-getargs))
 ("Query Replace" perform-replace
  (filesets-cmd-query-replace-getargs))
 ("Query Replace (regexp)" perform-replace
  (filesets-cmd-query-replace-regexp-getargs))
 ("Grep <<selection>>" "grep"
  ("-n " filesets-get-quoted-selection " " "<<file-name>>"))
 ("Run Shell Command" filesets-cmd-shell-command
  (filesets-cmd-shell-command-getargs)))

The values consist of an association list of names, functions, and an argument list (or a function that returns one) to be run on a filesets' files. So, if you wanted to add a command that does an "occur" command on the file set, you could use the "Isearch" entry as an example to create your own new entry (that you would add to the "filesets-commands" global variable) that would look something like:

 ("Occur (regexp)" multi-occur-files-regexp
  (filesets-cmd-occur-getargs))

You would need to write the "multi-occur-files-regexp" and "filesets-cmd-occur-getargs" functions (you could use the existing "multi-isearch-files-regexp" and "filesets-cmd-isearch-getargs" functions as a basis since they would be similar). The same would apply for any additional Emacs command that you wanted to add to work on file sets.

Otros consejos

Dired has several operations on filesets. An example is dired-do-search (bound to A), where you can navigate through search results on several files with M-, just like with tags-search. Similarly, you can query-replace in tagged files (with Q).

The recent posts on irreal.org describe some nice dired features.

With Icicles you can use filesets for anything you might want to do with a set of files and directories. And you can create a fileset from any set of file and directory names in buffer Completions during completion. And you can use substring and regexp matching during completion to get such a set of file names in Completions.

These links might help:

http://www.emacswiki.org/emacs/Icicles_-_Persistent_Completions#Filesets

http://www.emacswiki.org/emacs/Icicles_-_Dired_Enhancements#OpenDiredOnSavedFiles

http://www.emacswiki.org/emacs/Icicles_-_Dired_Enhancements#MarkedFilesAsProject

http://www.emacswiki.org/emacs/Icicles_-_Customization_and_General_Tips#icicle-filesets-as-saved-completion-sets-flag

Dired+ has command diredp-fileset, which opens Dired on an Emacs fileset. You are prompted for the fileset to use.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top