#pragma section-numbers on <> = Overview = Page modes, in the spirit of Emacs major modes and !GreaseMonkey scripts, allow site-specific functionality to be implemented in Conkeror. = Loading, Activating, Deactivating = When we talk about page modes, there are three terms that we would do well not to confuse: loading, activating, and enabling. Loading:: :: Loading a page-mode means evaluating the module that contains a page-mode, usually by calling `require` on its file. Activating:: :: Activating a page-mode means calling `page_mode_activate` on a loaded page-mode, thus causing it to auto-enable when we visit a covered site. The opposite of activating is deactivating, which is calling `page_mode_deactivate` on a loaded page-mode to prevent it from auto-enabling. Enabling:: :: Enabling a page-mode is when you turn a page-mode on, to have an effect on the current buffer. Activated page-modes are enabled automatically when a covered page is visited. Some page-modes are ''loaded'' by default, and some page-modes, when loaded, are ''auto-activated''. To deactivate a loaded page-mode, call `page_mode_deactivate` on it, like this: {{{ page_mode_deactivate(xkcd_mode); }}} To activate a loaded page-mode, call `page_mode_activate` on it, like this: {{{ page_mode_activate(xkcd_mode); }}} To load a non-default page-mode, call `require` on its module name, like this: {{{ require("duckduckgo"); }}} To find out how to prevent a default page-mode from being loaded, see [[Modules]]. = Changing Coverage = It is not only possible, but easy, to change the coverage of a page-mode, for instance, to add a site to have it auto-enable for. The 'test' property of a page-mode is an array that can be pushed and popped to customize the coverage of the page-mode. {{{ some_mode.test.push(build_url_regexp($domain = "example")); }}} = Note About Key Bindings = Some page modes bind keys that override important Conkeror bindings like `f` and `g`. When such a page mode is in effect, you can still access shadowed bindings by using the prefix key `C-z`. For example, to call the `follow` command when gmail-mode is in effect, press `C-z f`. = Modes = * [[DailyMotion]] * [[DuckDuckGo]] * [[Facebook]] * [[Github]] * [[GMail]] * [[GoogleCalendar|Google Calendar]] * [[GoogleMaps|Google Maps]] * [[GoogleReader|Google Reader]] * [[GoogleSearchResults|Google Search Results]] * [[GoogleVideo|Google Video]] * [[Grooveshark]] * [[Newsblur]] * [[Reddit]] * [[StackOverflow]] * [[Twitter]] * [[Wikipedia]] * [[XKCD]] * [[YouTube]]