= Renaming to helm =

Anything.el was renamed to [[Helm]] in 2012.

= anything.el =

##anything.el## is a great application framework written by TamasPatrovics. It provides a totally new Emacs experience. While normal Emacs way is specifying action then selecting candidates, the ##anything## way is narrowing and selecting candidates then executing action for selected candidates. It is something like "über-extensible spotlight for emacs" or "!QuickSilver for emacs". The current maintainer of ##anything.el## is [[rubikitch]].

Starting with the command ##M-x anything##, all things matching a given pattern will be shown in a special buffer named ##*anything*##.

Initially all candidates are displayed. Then they are narrowed by a given query. A candidate can be selected with C-p/C-n/C-v/M-v (or up/down/pgup/pgdown). Hitting RET invokes the default action for that type, hitting TAB lists all possible actions.

[[image:AnythingScreenshotAllCandidates]]

[[image:AnythingScreenshotNarrowingCandidates]]

What's queried is given by a list of sources, namely ##anything-sources##, such as buffers, file names, bookmarks, and so on. It means that multiple Emacs commands are integrated in one command. You do not have to remember commands corresponding to actions, ##anything## does the right thing.

You can get ##anything.el## at [[anything.el]].

Here's an easy to follow [http://metasandwich.com/2010/07/30/what-can-i-get-for-10-dolla-anything-el/ introduction explaining how Anything works] and here's an introduction to [http://metasandwich.com/2010/08/01/anything-else/ creating new sources for Anything].

= anything-config.el =

##anything.el## only contains the basic framework and some example sources. ##anything-config.el## is intended to provide a rich set of additional sources and types that can be used by users to adapt ##anything.el## to their needs.

TassiloHorn, JasonMcBrayer, [[rubikitch]] and ThierryVolpiatto maintain and extend ##anything-config.el## and the best source for getting the most current version is to clone his ##git## repository. Everybody can push to it as a mob user.

    git clone git://repo.or.cz/anything-config.git

If you have enhancements please drop one of them a mail and they will pull your changes in. You can also submit patches, see the manual page of ##git format-patch##.

If you have any cool feature, write to AnythingSources page, push to mob repository, or mail me, i will apply it. :) -- [[rubikitch]]

##anything-config.el## can also be downloaded from [[anything-config.el]].

You will find many sources in AnythingSources page.

You can extend Anything by AnythingPlugins.

(It would be good to explain what a config, a source, and a
plugin are.  Are they different things?)

: I'll do that. -- [[rubikitch]]
:: See Glossary. Sorry for my poor English. -- [[rubikitch]]

There are a lot of goodies in RubikitchAnythingConfiguration, the current maintainer's configuration. Feel free to copy and paste!

AndyStewart has added some cool extensions : Lisp:anything-extension.el

= Glossary =
; Source : Anything searches objects from various information, such as buffers, recentf, bookmark, and so on. The information source is simply called `source'. You can easily define sources.
; Attribute : A `source' is a list of `attributes', Their names are pre-defined; such as name, candidates, and type.
; Plugin : Anything can be extended via `plugin'. For example, search method in anything itself is single regexp search, but with Lisp:anything-match-plugin.el anything supports multiple regexp search. User-defined `attributes' are also `plugin'.
; Config : Lisp:anything-config.el contains various pre-defined `sources' and `plugins'.

= Installation =

There are various ways to install [[Anything]].

You can clone the git repository:

    git clone git://repo.or.cz/anything-config.git

Then add this to your <tt>~/.emacs.el</tt>:

    (add-to-list 'load-path "/path/to/anything/")
    (require 'anything-config)

Or you if you want to start with a minimal configuration download just Lisp:anything.el and Lisp:anything-config.el and add the following to your <tt>~/.emacs.el</tt>:

    (add-to-list 'load-path "/path/to/anything/")
    (require 'anything-config)

If you do not want to use git but want several [[Anything]] packages, related [[Anything]] maintainer's user configs, as well as most of the [[Anything]] extension packages use the WgetSnarfAnything wget script.

Or you can use Lisp:auto-install.el (which you first have to install itself as described in AutoInstall) install [[Anything]] packages with following:

   M-x auto-install-batch RET a n y t h i n g RET

It would be great if it was installable with [[ELPA]] (as of 2011/01/25 I actually can install anything from [[ELPA]])

(As of 2011/12/06, on Emacs 24.0.50.1, Anything can be installed using ELPA)
= Getting Help =
Anything now has a its own mailing list at:

[https://groups.google.com/group/emacs-anything?hl=en]

It is visible also in gmane at gmane.emacs.anything
                
= Getting Started =

Enter emacs and run ##M-x anything-for-file##. It is preconfigured ##anything## to open files.

If you like it and feel the power of anything, set ##anything-sources## for your taste by copying and pasting bits and pieces from other people's anything-config files.
You may wish to bind 'anything to a easy-to-type key.

= Discussion =

[new]
are there any plans to clean up these files? the anything-config file and your own config file are both pretty monolithic, as such it's hard to modify or extend 'anything'. Maybe separating things into different files, and creating more 'helper' functions would help? for example, isn't the following a simpler way of creating anything functions, than having them build-in/preconfigured?:

 (defvar anything-command-list nil)
 (defmacro defanything (name sources)
   (list 'add-to-list '(intern "anything-command-list") (concat "anything-" name))
   (list 'defun (intern (concat "anything-" name)) (list)
 	(list 'interactive)
 	(list 'anything
 	      (list 'quote
 		    (map 'list
 			 (lambda (x) (intern (concat "anything-c-source-" x)))
 			 sources))
 	      'nil 'nil 'nil 'nil (concat "*" (concat "anything-" name) "*"))))

 (defanything "open-files"
   ("recentf" "file-cache" "files-in-current-dir" "locate"))

 (defanything "emacs-variables"
   ("emacs-variables"))

 (defanything "emacs-functions"
   ("emacs-functions"))

 --CH

:: Nice idea! But I think of better interface. -- [[rubikitch]]
::: You're thinking of a better interface? --CH

----
= Contents =

* AnythingSources -- souces not to be included in anything-config.el yet
* AnythingApplications -- applications using Anything framework
* AnythingPlugins -- add some features to Anything
* AnythingIntegrations -- integrations with other modes
* AnythingTips -- tips to use Anything
* AnythingProposals -- proposals for anything.el and anything-config.el
* AnythingIssues -- bug reports
* AnythingOldDiscussion -- discussion archive

----

CategoryAccessibility
CategoryBbdb
CategoryBufferSwitching
CategoryCalculators
CategoryCode
CategoryCommands 
CategoryCompletion
CategoryDirectories
CategoryDocumentation
CategoryEditing
CategoryExternalUtilities
CategoryFaces
CategoryFiles
CategoryGnus
CategoryHelp
CategoryInterface
CategoryMenus
CategoryModes
CategoryProgrammerUtils
CategoryRegexp
CategorySearchAndReplace
CategoryShell
CategoryWebBrowser
