1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-31 10:05:47 +01:00

imported patch dactylify

--HG--
rename : common/content/liberator-overlay.js => common/content/dactyl-overlay.js
rename : common/content/liberator.js => common/content/dactyl.js
rename : common/content/liberator.xul => common/content/dactyl.xul
rename : common/skin/liberator.css => common/skin/dactyl.css
rename : muttator/content/compose/liberator.dtd => muttator/content/compose/dactyl.dtd
rename : muttator/content/compose/liberator.xul => muttator/content/compose/dactyl.xul
rename : muttator/content/liberator.dtd => muttator/content/dactyl.dtd
rename : vimperator/AUTHORS => pentadactyl/AUTHORS
rename : vimperator/Donors => pentadactyl/Donors
rename : vimperator/Makefile => pentadactyl/Makefile
rename : vimperator/NEWS => pentadactyl/NEWS
rename : vimperator/TODO => pentadactyl/TODO
rename : vimperator/chrome.manifest => pentadactyl/chrome.manifest
rename : vimperator/components/about-handler.js => pentadactyl/components/about-handler.js
rename : vimperator/components/commandline-handler.js => pentadactyl/components/commandline-handler.js
rename : vimperator/components/protocols.js => pentadactyl/components/protocols.js
rename : vimperator/content/about.html => pentadactyl/content/about.html
rename : vimperator/content/about_background.png => pentadactyl/content/about_background.png
rename : vimperator/content/config.js => pentadactyl/content/config.js
rename : vimperator/content/liberator.dtd => pentadactyl/content/dactyl.dtd
rename : vimperator/content/logo.png => pentadactyl/content/logo.png
rename : vimperator/content/vimperator.svg => pentadactyl/content/pentadactyl.svg
rename : vimperator/content/vimperator.xul => pentadactyl/content/pentadactyl.xul
rename : vimperator/contrib/vim/Makefile => pentadactyl/contrib/vim/Makefile
rename : vimperator/contrib/vim/ftdetect/vimperator.vim => pentadactyl/contrib/vim/ftdetect/pentadactyl.vim
rename : vimperator/contrib/vim/mkvimball.txt => pentadactyl/contrib/vim/mkvimball.txt
rename : vimperator/contrib/vim/syntax/vimperator.vim => pentadactyl/contrib/vim/syntax/pentadactyl.vim
rename : vimperator/install.rdf => pentadactyl/install.rdf
rename : vimperator/locale/en-US/all.xml => pentadactyl/locale/en-US/all.xml
rename : vimperator/locale/en-US/autocommands.xml => pentadactyl/locale/en-US/autocommands.xml
rename : vimperator/locale/en-US/liberator.dtd => pentadactyl/locale/en-US/dactyl.dtd
rename : vimperator/locale/en-US/gui.xml => pentadactyl/locale/en-US/gui.xml
rename : vimperator/locale/en-US/intro.xml => pentadactyl/locale/en-US/intro.xml
rename : vimperator/locale/en-US/options.xml => pentadactyl/locale/en-US/options.xml
rename : vimperator/locale/en-US/tutorial.xml => pentadactyl/locale/en-US/tutorial.xml
rename : vimperator/vimperatorrc.example => pentadactyl/pentadactylrc.example
rename : vimperator/regressions.js => pentadactyl/regressions.js
rename : vimperator/skin/about.css => pentadactyl/skin/about.css
rename : vimperator/skin/icon.png => pentadactyl/skin/icon.png
rename : xulmus/content/liberator.dtd => xulmus/content/dactyl.dtd
rename : xulmus/locale/en-US/liberator.dtd => xulmus/locale/en-US/dactyl.dtd
This commit is contained in:
Kris Maglione
2010-08-28 18:02:03 -04:00
parent 2e830d380a
commit 924863cd61
141 changed files with 1836 additions and 1850 deletions

42
pentadactyl/AUTHORS Normal file
View File

@@ -0,0 +1,42 @@
Developers:
* Kris Maglione
Inactive/former developers:
* Viktor Kojouharov (Виктор Кожухаров)
* Marco Candrian (mac@calmar.ws)
* Daniel Bainton (dpb .AT. driftaway .DOT. org)
* Doug Kearns (dougkearns@gmail.com)
* Konstantin Stepanov (milezv@yandex.ru)
* Tim Hammerquist (penryu@gmail.com)
* Ted Pavlic <ted@tedpavlic.com>
* anekos <anekos@snca.net>
* teramako <teramako@gmail.com>
* janus_wel <janus.wel.3@gmail.com>
* Martin Stubenschrott (stubenschrott@vimperator.org)
* Conrad Irwin
Patches (in no special order):
* Ruud Grosmann ('followhints' option)
* Xie&Tian (multibyte support for hints, doc fixes)
* Juergen Descher
* Kazuo (count support for ctrl-^)
* Daniel Schaffrath (;b support)
* Dominik Meister (:b# support and other buffer related commands)
* Lukas Mai
* Guido Van Hoecke
* Daniel Trstenjak (various things with hints)
* M.Terada (suggest engines)
* Muthu Kannan (ctrl-v support)
* Lars Kindler (:buffer(s) functionality)
* Lee Hinman (:open ./.. support)
* Bart Trojanowski (Makefile)
* Hannes Rist (:set titlestring support)
* Nikolai Weibull ($PENTADACTYL_HOME)
* Joseph Xu (supporting multiple top level windows better)
* Raimon Grau Cuscó (document relationship navigation - ]], [[)
* Ryan Zheng (ctrl-x/a support)
* Dan Boger (:set online support)
* Štěpán Němec (help copy-editing and favicon support)
* Jarkko Oranen ('maxitems' option)
* Gary Katsevman ('private' option)
* Srinath Krishna (disable password field editing)

139
pentadactyl/Donors Normal file
View File

@@ -0,0 +1,139 @@
2009:
* Francois-Xavier Gsell
* Ken Takano
* Daniel Bainton (web hosting for about a year - thanks a lot!)
* 渡邉 丈洋 (takehiro78)
* Tony Rein
* Daniel Bentsur
* Ganesh Hegde
* Elbert Hannah
* Oliver Schaefer (2nd donation this year, and largest one in 2009! - Thanks!)
* James Davis
* Gregg Archer
* James Henderson
* Hiroshi Okada
* Imron Alston
* Luke Wagner
* Deepan Gandhi
* Guilherme Freitas
* Robert Johnston
* Jim Aragon
* Norio Sugimoto
* Catatonic Recording
* Wataru Inoue (first one donating via addons.mozilla.org)
* Krishnakumar Subramanian
* Natan Zohar
* Frederic Hebert
* kursad karatas
* Thomas Svensen (the first donor who donated 3 times! (once every year))
* Máté Nagy
* Jessica Pavlin
* David Wolfe
* Sigurdur Finnsson
* Pixel G
* Joel Rosario
* Alvaro Novo
* Robert Heckel
* Daniel Collin
* Lucien Grondin
* Christoph Petzold
* Bjoern Steinbrink
* Erlend Hamberg
* Fabien Benetou
* Arvin Moezzi
* Calogero Lo Leggio
* Sapan Bhatia
* Gavin Sinclair
* Stephen Borchert
* Convolution
* Brian Hall
* Daniel Hahler
* Per-Henrik Lundblom
* David C Foor
* Oliver Schaefer
* Paul Moss
* Yongji Zhang
* Brian Peiris
* Peleg Michaeli ("Every hand revealed" from my amazon.de wishlist)
* InspireFocus
* Michael Fremont
* Kamil Dworakowski
* Jonathan Austin
* Steven Romanow
2008:
* John Baber
* Mark Orr
* George Lowell (biggest donor so far!)
* Keith Waclena
* Christopher Glazner
* Mats Vestin
* Berni Joss
* Peter Rufer
* Yann Le Du
* Wilson Bilkovich
* Galen Taylor
* Ben Hoffstein
* Luc St-Louis
* Robert Meerman
* Silvio Di Stefano
* Lance Feagan
* Alexander Klink
* Chaz McGarvey
* Jesse Hathaway
* Takayuki Tsukitani
* Victor Nemkov
* John Lusth
* Thomas Svensen
* Ryan McBride
* Brian Clark
* Gavin Gilmour
* Sivaraj Doddannan
* Michael Hrabanek
* Nigel McNie
* Ben Damm
* Anton Kovalenko
* Paulo Tanimoto
* Paul Sobey
* Olivier Guéry
* Dotan Cohen
* Daniel Schaffrath
* Sam Griffin
* Ivan Pantuyev
* Spike Spiegal
* Mark Hashimoto
* Anirudh Sanjeev
* Ted Pavlic
* Jacqueline Wegscheid
* Kashyap Paidimarri
* Gabriel Gellner
* Marco Candrian
* Ovidiu Curcan
* Ivo-Jose Jimenez-Ramos (2x)
* Andrew Pantyukhin
* Kurtis Rader
2007:
* Richard Terrell
* Benjamin Sergeant
* Frank Schiebel
* Cillian de Roiste (2x)
* David Thompson
* Christian Walther
* Ivo-Jose Jimenez-Ramos
* Robert Heckel
* Ramana Kumar
* Thomas Svensen
* Ian Taylor
* Albert Menkveld
* Nathan Saper
* Paulo Tanimoto
* Nigel McNie
* Richard Dooling
* Giuseppe Guida
* Stefan Krauth
* Robert Heckel
* Miron Tewfik
* Sjoerd Siebinga
* Ben Klemens
* Andrew Pantyukhin

6
pentadactyl/Makefile Normal file
View File

@@ -0,0 +1,6 @@
#### configuration
VERSION = 2.3a1pre
NAME = pentadactyl
include ../common/Makefile

481
pentadactyl/NEWS Executable file
View File

@@ -0,0 +1,481 @@
2009-XX-XX:
* Replaced 'focuscontent' with 'strictfocus'
* Replaced previous incremental search implementation
* :open now only opens files begining with / or ./
* Page zoom information is now shown in the status bar
* Added ZO, ZI, ZM, and ZR as aliases for zO, zI, zM, and zR
* Add basic plugin authorship documentation
* Plugins may now provide full-fleged ':help' documentation
* The help system is newly modularized
* Asciidoc is no longer for building
* Remove [c]:edit[c], [c]:tabedit[c], and [c]:winedit[c]
* Add 'jsdebugger' option - switch on/off javascript debugger service
* Add "addons", "downloads", "extoptions" and "help" to the 'activate' option.
2009-10-28:
* version 2.2
* IMPORTANT: Pentadactyl's licence has changed from the MPL/GPL/LGPL
tri-license to the MIT license.
* IMPORTANT: Map.flags has been replaced with individual properties.
Mappings defined in plugins with mappings.add will need to be updated.
...................................
E.g.
mappings.add(...,
{ flags: Mappings.flags.ARGUMENT |
Mappings.flags.COUNT |
Mappings.flags.MOTION |
Mappings.flags.ALLOW_EVENT_ROUTING });
is now
mappings.add(...,
{ arg: true, count: true, motion: true, route: true });
...................................
* IMPORTANT: shifted key notation now matches Vim's behaviour. E.g. <C-a>
and <C-A> are equivalent, to map the uppercase character use <C-S-A>.
* IMPORTANT: 'popups' now takes a stringlist rather than a number.
* add [c]:winonly[c]
* add [c]:tabattach[c]
* add [c]:keepalt[c]
* add [c]:styledisable[c], [c]:styleenable[c], and [c]:styletoggle[c]
* add [c]:sanitize[c], 'sanitizetimespan' and 'sanitizeitems'
* add [c]:verbose[c]
* add [c]:window[c] to run a command in a new window
* add ! version of [c]:delbmarks[c] to delete all bookmarks
* add [c]:toolbaropen[c], [c]:toolbarclose[c], and [c]:toolbartoggle[c]
* make [c]:open[c] behavior match that of [c]:tabopen[c] and [c]:winopen[c]
when no argument is specified
* add extension related commands - [c]:extadd[c], [c]:extdelete[c],
[c]:extdisable[c], [c]:extenable[c], [c]:extensions[c], [c]:extoptions[c]
* add *-javascript* flag to [c]:autocommand[c]
* add 'private' - enter private browsing mode, matching *PrivateMode*
autocommand
* add *-description* option to [c]:command[c]
* command-line options are now supported via the host application's
*-dactyl* option
* add [m];i[m] and [m];I[m] for opening image location (in new tab)
* add [j]all.html[j] to show all help sections in a single page - available via
[c]:helpall[c]
* add [m];c[m] extended hint mode - open the context menu
* add [m]@:[m] mapping - repeat the last Ex command
* add [m]|[m] mapping - toggle between rendered and source view
2009-05-21:
* version 2.1
* IMPORTANT: Default value of 'complete' has been changed from "sfl" to "slf"
* massively speed up [c]:open[c] completions
* TabMixPlus (and other tab extensions) should work much better now
together with Pentadactyl unless you [c]:set guioptions+=[nN][c]
* remove 'preload' option. You can fake it by some custom JavaScript in your RC file.
* add [c]:frameonly[c]
* add [c]:stopall[c]
* add [c]:tabdo[c]
* add 'encoding'
* add 'hintinputs'
* add [c]:silent[c]
* add [j]$MY_PENTADACTYLRC[j]
* add ' and " local marks
* add [m]w[m] and [m]W[m] Normal mode mappings for symmetry with
[m]o[m]/[m]O[m] and [m]t[m]/[m]T[m]
* add [c]:messclear[c]
* add 'maxitems'
* as usual many small bug fixes
2009-03-28:
* version 2.0
* IMPORTANT: For compatibility with Vim, the 'guioptions' "b" value has been renamed
"B". "b" now represents the bottom scrollbar.
* IMPORTANT: [c]:set[c] now sets multiple options, as in Vim. Spaces in values
must be quoted or escaped.
* IMPORTANT: Due to much improved autocompletion, changed default 'complete' option
value to "sfl", listing intelligent Firefox location bar results. Using "b" or "h"
might cause problems/massive slowdowns, use with care!
* IMPORTANT: AlwaysHint mode with [m];F[m] mode changed the semantics slightly.
* IMPORTANT: command actions now take an args object, returned from
commands.parseArgs, as their first argument. This will break any commands
not using the args parser explicitly. The old string value is now
available via args.string.
* IMPORTANT: 'verbose' is now used for message levels. Logging is
controlled by the *extensions.dactyl.loglevel* preference.
* IMPORTANT: [c]:viusage[c] and [c]:exusage[c] now jump to the help index, use the
special versions for the old behavior.
* IMPORTANT: renamed Startup and Quit autocmd events to *PentadactylEnter* and
*PentadactylLeave* respectively.
* IMPORTANT: 'verbose' is now by default at 1, set to 0 to not show any status messages.
* IMPORTANT: $PENTADACTYL_HOME is no longer used.
* Selecting an <input type="file"> with hints now causes the command line to prompt
for file input (instead of doing nothing).
* [count][m]<C-n>[m] now goes to the [count]th next tab rather than the [count]th tab.
* add ~/.pentadactyl/info/{profile}/, similar to viminfo
* add [j]$PENTADACTYL_RUNTIME[j], [j]$PENTADACTYL_INIT[j]
* [c]:hardcopy[c] now supports output redirection to a file on Unix and MacUnix
* add [m];f[m] extended hint mode to focus a frame
* add "r", "l", and "b" to 'guioptions' to toggle the scrollbars.
* remove spaces and newlines when open urls starting with http:// or similar
before :o http://linux .com would search for http://linux and for .com, now
it just opens linux.com. Also handy when pasting broken urls with [m]p[m] or [m]P[m].
* add 'wildcase' option
* 'linkbgcolor', 'linkfgcolor', ... have been replaced with highlight
groups, *HintElem* and *HintActive*
* new 'followhints' option
* [c]:buffers[c] supports a filter now to only list buffers matching filter (Vim
incompatible, but consistent with other commands)
* Favicon support in many places
* add *Fullscreen* autocommmand
* add [c]:colorscheme[c]
* multibyte support for hints (thanks Xie&Tian)
* add 'exrc'
* add 'errorbells'
* add shell command completion for [c]:![c]
* add [c]:map <silent>[c] to prevent a mapping from being echoed (might be slow currently, however)
* add guioptions=nN to number tabs
* add [c]:loadplugins[c] command
* add [m].[m] mapping
* add [m]N%[m] normal mode command
* add interpolation for items such as *<url>* to autocommands
* add *-nargs*, *-complete*, *-bang*, and *-count* attribute support to [c]:command[c]
* much improved completion support, including javascript, option, and search keyword
* add [m]<PageUp>[m]/[m]<S-Up>[m] and [m]<PageDown>[m]/[m]<S-Down>[m] command-line mappings for
selecting the previous and next history items
* remove 'hintstyle', 'hlsearchstyle', 't_vb' and 'visualbellstyle' - use
[c]:highlight {Hint,Search,Bell}[c]
* add [c]:highlight[c]
* add [c]:optionusage[c]
* add [c]:doautocmd[c] and [c]:doautoall[c]
* add [c]:style[c] and [c]:delstyle[c] commands, allow [c]:so[c] to source stylesheets
* add *DOMLoad* autocmd event
* add [c]:messages[c] and 'messages'
* add [c]:runtime[c]
* add 'runtimepath'
* allow [m];[m] hints to work in the multiline output widget
* add [c]:scriptnames[c]
* add command-line completion to 'activate', 'cpt', 'defsearch', 'pageinfo',
'newtab' and 'popups'
* add 'helpfile' option
* add 'wildignore' option
* add [c]:finish[c] command
* new events *BookmarkAdd*, *ShellCmdPost*, *PentadactylLeavePre*, *DownloadPost*
* add 'cdpath' option
* allow [c]:dialog[c] to open the cookies manager
* add 'loadplugins' option
* add count support to [m]<C-^>[m] (Kazuo)
* add 'eventignore' option
* add [c]:tabdetach[c] command
* new [m];b[m] extended hint mode (thanks Daniel Schaffrath)
* [c]:qa![c] and [c]:q![c] quit forcefully, as in Vim
* stop macro playback on [m]<C-c>[m]
* [c]:bmark[c] now updates a bookmark, if possible. [c]:bmark![c] adds a new one
* [c]:dialog[c] and [c]:sidebar[c] arguments are now case-insensitive
* many bug fixes
2008-08-16:
* version 1.2
* IMPORTANT: changed [c]:command[c] to behave like Vim's version.
...................................
Eg. An alert command specified previously as
:command AlertMe alert(args)
should now be defined as
:command AlertMe :js alert(<args>)
...................................
* IMPORTANT: changed (again) the default keybinding to temporarily disable all
Pentadactyl keybindings from [m]<C-q>[m] to [m]<C-z>[m] since many users complained
about hitting [m]<C-q>[m] twice and exiting Pentadactyl
* IMPORTANT: removed old [c]:buffers![c] buffer window, as it was ugly and slightly broken
use [m]B[m] or [c]:buffers[c] instead
* IMPORTANT: input fields are not blured anymore by default after a page has loaded
use [c]:set [no]focuscontent[c] to control the behavior (thanks Paul Sobey for the
generous donation which made this behavior possible)
* IMPORTANT: [m]<C-x>[m]/[m]<C-a>[m] never take possible negative URLs into account, it was just
too unpredictable
* performance fix by using cached history, should save about 5ms on each pageload
* add [c]:emenu[c] for accessing the Firefox main menu items from the command line
* add 'shell' and 'shellcmdflag' options
* [c]:tabprevious[c], [c]:bprevious[c], [c]:tabnext[c], [c]:bnext[c] and friends now accept a prefix count
* add [c]:comclear[c] and [c]:delcommand[c]
* add a special version to [c]:hardcopy[c] to skip the Print dialog
* add [c]:bl[ast][c], [c]:bf[irst][c], [c]:br[ewind][c] to go to first/last tab
* add [c]:bn[ext][c], [c]:bp[revious][c], [c]:bN[ext][c] to switch to next/previous tab
* add [c]:pagestyle[c] command to allow for switching between alternate style sheets
* add [c]:b[c]# to select the alternate buffer
* add [c]:tabduplicate[c] command
* new 'urlseparator' option for specifying the regex used to split the arg to
[c]:open[c], [c]:tabopen[c] and [c]:winopen[c]
* 'editor' now accepts quoting/escaping to use an editor with spaces in the path
* support for *:%foo* as a count for commands (not yet widely used)
* show informative message when a background tab was loaded, especially useful
with a hidden tab bar.
* new "l" flag for 'complete' to reuse the Firefox awesome bar for getting better
completions for [c]:open[c]. Works only when 'wildoptions' contains "auto" and can
be a little buggy if you are typing too fast.
* new 'wildoptions' option (default off for now), to automatically list
completions without the need to press the tab key
* new argument parser for Ex commands, should tell better error messages when
you do things like [c]:bmark -tag=a,b[c] instead of [c]:bmark -tags=a,b[c]
* some option values can be tab-completed now; e.g., [c]:set wim=<tab>[c]
* [c]:bdelete[c] accepts an optional argument now
* renamed some [c]:autocmd[c], mainly BrowserStartup -> Startup and BrowserExit -> Quit
* don't pass certain keys like [m]<C-o>[m] or [m]<C-n>[m] to Firefox in insert mode
* keywords in [c]:open <arg>[c] have higher priority than local files now
* add 'online' to control the "work offline" menu item
* add [c]:jumps[c] command to list current tab's history
* add [c]:setlocal[c] & [c]:setglobal[c] commands, so options can be local (per tab) & global
* many small bug fixes
2008-06-03:
* version 1.1
* IMPORTANT: security update for suggest engines
* try to add .exe automatically to filenames on windows, so [c]:set editor=gvim -f[c]
will automatically invoke gvim.exe (if it's in the path). Thanks to
Guido Van Hoecke
* readded 'visualbellstyle' (thanks mauke)
* new 'popups' option
* many bug fixes as usual
2008-05-14:
* version 1.0
* IMPORTANT: THIS VERSION ONLY WORKS WITH FIREFOX 3.0 beta3 or newer
* IMPORTANT: Major hints rewrite
read up the new help for the [m]f[m], [m]F[m] and [m];[m] commands for details
removed the following hint options: 'hintchars' 'maxhints'
added the following hint options: 'hinttimeout', 'hintmatching', 'wordseperators'
* IMPORTANT: changed [m]I[m] key to [m]<C-q>[m] to also work in textboxes
* IMPORTANT: [c]:bmarks[c]! and [c]:history[c]! open the matching items now in a tab, instead
of bringing up the bookmarks/history window
* IMPORTANT: [m]B[m] mapping now works just like [c]:buffers[c], old bufferwindow will be removed
at some time. Use B5gt to jump to the 5th tab.
* also go to INSERT mode for HTMLSelectElements, so you can type text to go to element
in drop down boxes
* new "S" flag for 'complete' to list google suggestions in [c]:open vimp[c] and
pressing tab (disabled by default). Also added new 'suggestengines' option.
* [m]gi[m] accepts now a count to jump to the nth input field
* [m]<C-t>[m] on input fields starts a very basic vi-mode
* [c]:play[c] for playing a recorded macro
* [c]:[del]macros [regex][c] for listing/deleting recorded macros
* [c]:set![c] now lets you change about:config prefs similar to [c]:set[c]
* new [c]:command[c] to add user defined commands
* new setCustomMode for plugin writers
* [c]:au[tocmd][c] executes commands on events (only 'PageLoad' actually) on websites
* [m]@@[m] to repeat last macro
* new macro commands [m]q[a-z0-9][m] and [m]@[a-z0-9][m] to replay them (thanks Marco!)
* scroll commands like [m]j[m]/[m]k[m]/[m]gg[m]/etc. have a much better heuristic to find a scrollable frame
* [c]:imap[c], [c]:inoremap[c], [c]:iunmap[c] and [c]:imapclear[c] added
* new [m]g0[m] and [m]g$[m] mappings to go to the first/last tab
* new [m]gf[m] and [m]gF[m] mappings and [m];v[m] and [m];V[m] hints mode to view the source code
* new 'history' option for specifying the number of Ex commands and
search patterns to store in the command-line history
* new [m]<C-x>[m] and [m]<C-a>[m] mappings to increment the last number in the URL
* new ~ mapping to open the home directory
* [c]:open[c] tries to open a relative filename now, if you do a [c]:open foo.html[c]
or [c]:open ../hello.txt[c]
* new [c]:cd[c] and [c]:pwd[c] commands
* new [c]:dialog[c] command to open various Firefox dialogs
* new [m]a[m] and [m]A[m] mappings to deal with bookmarks
* added [m]+++]]+++[m] and [m][[[m] to navigate to the next/previous document based on
the regex specified in 'nextpattern' and 'previouspattern' (thanks kidd)
* abbreviations for text fields ([c]:abbr[c] etc.) (thanks calmar)
* you can edit textfields with [m]<C-i>[m] now using an external editor (thanks to Joseph Xu)
* [c]:open[c], [c]:bmarks[c], etc. filter on space separated tokens now, so you can
search with [c]:open linux windows <Tab>[c] all your bookmarks/history
which contain linux AND windows in the url or title
* tags and keyword support for [c]:bmark[c]
* added full zoom, and changed keybindings slightly for text zoom
* improvements for scrollable -- more -- prompt
* sites like msn.com or yahoo.com don't focus search field anymore on keydown
* new gi browser command to focus last used (or the first as a fallback) input box
* edit TEXTAREAs with many Vim commands in a Vim and even visual mode if you set 'noinsertmode'
* support for emacs/bash-like [m]<C-e>[m]/[m]a[m]/[m]u[m]/[m]k[m]/[m]h[m] keys in single line text fields
* support for [m]*[m] and [m]#[m] mappings to search for the text selection or the text under the cursor
* Escape finally clears any selection made in the document
* initial start of caret mode. Start with [m]i[m], stop with [m]<Esc>[m]
* new 'newtab' option for opening the command output in a new tab and better [c]:tab[c] support
* many small bug fixes and enhancements
2007-12-21:
* version 0.5.3
* IMPORTANT: options are no longer automatically stored - use the
~/.pentadactylrc file instead for persistent options
* [c]:tabnext[c] and [c]:tabprevious[c] now accept an argument
* the count to [m]gT[m] now specifies a relative tab motion like Vim
* new [c]:pa[geinfo][c] command, and [m]<C-g>[m] and [m]g<C-g>[m] mappings (thanks Marco Candrian)
* added new [c]:mkpentadactylrc[c] command
* remove [c]:redraw[c] and [m]<C-L>[m] commands as they rely on FF3 features
* [c]:ls[c], [c]:history[c] and [c]:bmarks[c] output is now hyperlinked
* new [m]gb[m] and [m]gB[m] mappings to repeat the last [c]:buffer[!][c] command,
* [c]:q[c] doesn't close the whole browser, if there are more than one windows
* new [c]:winclose[c] command
* [m]b[m] calls [c]:buffer![c] now instead of [c]:buffer[c]
* [+], [-] and [+-] in the statusline, whether we can go back, forward, or both
* [c]:set showtabline[c] now finally works as expected for all values
* many other small bug fixes
2007-10-11:
* version 0.5.2
* changed semantics of [c]:set[!][c] and [c]:prefs[!][c] a little, [c]:set[c] shows now all non-default
options, use [c]:prefs![c] to get the about:config window
* added "s" and "a" mappings to extended hints mode for saving hint targets
* [m]d[m], [m]D[m] and [c]:bdelete[c] support count now
* [c]:back[c]/[c]:forward[c] can use tab-completion
* [c]:undoall[c] support, and tab-completion for [c]:undo <Tab>[c]
* new [c]:redraw[c] and [m]<C-L>[m] commands for forced redrawing of the screen
* added new 'laststatus' option and removed "s" value from 'guioptions'
* Tab-completion improvements for [c]:javascript[c] and [c]:open[c]
* IMPORTANT: changed semantics of [c]:echo[c] and [c]:echoerr:[c] strings must be quoted with " or ' now,
but you can do things like [c]:echo 3+2[c] or [c]:echo window.document[c] now
* statusline is now white on black with bold font by default (like in (g)vim)
(change with userChrome.css if you don't like it until we have [c]:colorscheme[c])
* [c]:let mapleader=","[c] and [m]<Leader>[m] in [c]:map[c] support
* added new [c]:let[c] and [c]:unlet[c] commands
* [c]:b2[c] now allowed, no space required before the 2 anymore
* [c]:![c] to run commands through system()
* separated search and Ex command history
* added 'visualbellstyle' for styling/hiding the visual bell
* merge the existing status bar with the standard FF status bar so that
security information and extension buttons are included
* [c]:buffer[c] partial_string works now as in Vim, and with ! even better
* new [c]:time[c] command for profiling
* added new [c]:sidebar[c] and [c]:sbclose[c] commands
* added 'more' and standard more-prompt key mappings to control
behaviour of the message list pager
* added 'hlsearchstyle' option to allow for user CSS styling of the
highlighted text strings when 'hlsearch' is set
* added 'linksearch' option to restrict page searches to link text - *\L*
and *\l* can be used in the search pattern to override 'linksearch'
* Pentadactyl trys to stay in command mode after loading pages instead
of having a text field focused
* added a visual bell and replaced 'beep' with 'visualbell'
* added Pentadactyl logo (can be seen in the addons manager)
* added 'hlsearch','incsearch', 'ignorecase' and 'smartcase' options
* many small bug fixes and enhancments
2007-09-03:
* version 0.5.1
* native [m]/[m] and [m]?[m] search and [m]n[m] and [m]N[m] working again
* the URL in the status line can be selected with the mouse again
* the Windows default RC file is now ~/_pentadactylrc and the plugin
directory is ~/pentadactyl/plugin
* command-line history now works properly on Windows
* filename completion now works on Windows
* the Bookmarks Toolbar Folder is now read when bookmarks are first
loaded - it was skipped entirely in the past
* fixed search for [c]:open[c] (previously needed to do [c]:o <Tab>[c] ONCE to
initialize them)
* added [c]:set {option}![c] support to toggle a boolean option's value
* added [c]:set all[c] and [c]:set all&[c] support to show the current value of all
options and to reset all options to their default value
* [c]:tabmove![c] wrapping works again
2007-08-16:
* version 0.5
* [c]:map[c] support (also [c]:noremap[c], [c]:unmap[c])
* [c]:bmarks[c] and [c]:history[c] now use the multiline message window for output
* rename [c]:bm[c], [c]:bmadd[c], and [c]:bmdel[c] to [c]:bmarks[c], [c]:bmark[c], and [c]:delbmarks[c] respectively
* new [c]:normal[c] command
* the command line keeps focus now, even when clicking outside of it
* pentadactyl.events.feedkeys("2zi") support for scripts
* [m]<C-u>[m]/[m]<C-d>[m] for scrolling the window up/down and the associated
'scroll' option
* files in ~/.pentadactyl/plugin/ are auto-sourced
* [c]:winopen[c] support (multiple windows still very very experimental)
* 'activate' option implemented
* search engines which use POST instead of GET work now
* [c]:javascript <<EOF[c] uses a better multiline input widget now
* new [c]:map[c], [c]:noremap[c], [c]:mapclear[c] and [c]:unmap[c] commands
* [c]:saveas[c] finally works (by calmar)
* [m]<S-Insert>[m] pastes the X11 selection content in text fields now
* Changed "|" to ", " as a URL seperator in [c]:open[c]
* [m]<C-^>[m] mapping for selecting the alternate tab/buffer
* QuickMarks support (new commands [c]:qmark[c]/[c]:qmarks[c]/[c]:delqmarks[c] and
mappings [m]go{a-z}[m], [m]gn{a-z}[m] and [m]M{a-z}[m]
* Multiline echo support
* Command line is now cleared on most redraws like in Vim
* The RSS feed button in the address bar works again
* reload/stop buttons update enabled state again
* added local/url marks support (thanks Viktor Kojouharov)
* temporary shortcut [m]Y[m] to yank current selection (for non X11-users)
* Flashing frame with [m]]f[m] now works as expected
* many help fixes (most of them by Doug Kearns)
* new [c]:reloadall[c] command
* [c]:hardcopy[c] works now and shows the printing dialog
* changed [m]R[m] to reload without cache instead of reload all due to popular request
* changed secure sites -> green, broken sites -> red in the statusbar
* Pentadactyl now sets the window title, so it's "pentadactyl.mozdev.org -
Pentadactyl" instead of "pentadactyl.mozdev.org - Mozilla Firefox"
Use [c]:set titlestring=...[c] to change it back (help from Hannes Rist)
* [c]:tabmove[c] command (by Doug Kearns)
* 'showstatuslinks' option to control where/if we show the destination of
a hovered link
* [c]:version![c] shows Firefox version page
* hovered links appear in the command line again, not statusbar
* [c]:help[c] now opens in the current tab even for XHTML pages like "about:"
* hints work on xhtml pages now (you need to reset the 'hinttags' and
'extendedhinttags' settings with [c]:set hinttags&[c] and [c]:set extendedhinttags&[c])
* [c]:set option&[c] resets the option to the default value
* added [c]:tabonly[c] and [c]:tabrewind[c] and [c]:tablast[c] commands and some futher aliases [c]:tabNext[c], etc. (by Doug Kearns)
* added vimparator.vim for .pentadactylrc syntax highlighting in the XPI (by Doug Kearns)
* Added keyword support for bookmarks to the [c]:[tab]open[c] commands
* many small bug fixes and enhancements
2007-05-02:
* version 0.4.1
* Fixed bug that [c]:open google.com/mail[c] opened ".com/mail" in google search
* made [m]<Tab>[m], [m]<Up>[m], [m]<Down>[m] etc. perform the default action, so menus kinda
work, and it doesn't beep anymore on tab.
* added 'defsearch' setting for setting default search engine
2007-05-01:
* version 0.4
* extension GUID was changed to \'pentadactyl@mozdev.net' -> YOU WILL HAVE
TO UNINSTALL ANY OLD PENTADACTYL INSTALLATION BEFORE INSTALLING THIS VERSION
* support for internal search engines was dropped. Now we use Firefox search engines.
* support for 'wildmode' completion setting with support for matching the
longest common substring. Also new 'wildoptions' setting.
* added "f" to the 'complete' option to allow listing of filenames in [c]:open[c] prompt
* changed regex search to normal text search for completion -> massive speedup, but limited functionality
* support for [c]:open ./[c] , [c]:open ..[c] and [c]:open ...[c] (patch from Lee Hinman)
[m]gu[m] and [m]<BS>[m] goes up a directory component, [m]gU[m] and [m]<C-BS>[m] to the root directory
* [m]<Esc>[m] now doesn't stop loading the webpage, use [m]<C-c>[m] instead, [c]:stop [c]command added
* changed 'hinttags' to work with dict.leo.org and hintstyle to work with digg.com
* [c]:back![c] goes to beginning of history now
* disabled Firefox 3.0 support for now, as there are just too many small
bugs
* new Makefile instead of build.sh (only important for developers)
* newly designed help page
* [c]:help section[c] supported, [c]:help :set[c] will show help for the [c]:set[c] command
(patch from Viktor Kojouharov)
* [c]:source[c] support, and auto-sourcing ~/.pentadactylrc on startup
* [c]:javascript <<EOF[c] support to execute multiline JavaScript code
also changed [c]:exec[c] to behave more Vim like
* fixed saving of session
* fixed hints display when zooming in/out of a web page
* added [m]B[m] command for continous buffer display
* changed 'hintsize' to 12px by default
* 'previewheight' setting to set the maximum size for the preview window
* showmode setting which shows the current mode in the command line (patch from Виктор Кожухаров)
* [m]gh[m] goes home :) [m]gH[m] in a new tab
* [c]:open![c] bypasses cache
* [c]:buffer[c] and [c]:buffers[c] support (patch from Lars Kindler)
* added [c]:edit[c], [c]:e[c] and [c]:tabedit[c] aliases for [c]:open[c], [c]:tabopen[c]
* settings can now be changed with += and -= like in Vim (patch from Виктор Кожухаров)
* Support for [m]<Space>[m]/[m]<S-Space>[m]/[m]<A-Left>[m]/[m]<A-Right>[m] keys without beeping
* [c]:open[c] without argument reloads current page, [c]:tabopen[c] opens an empty tab
* added [m]n[m] and [m]N[m] to repeat a search
* many small bug fixes
2007-04-17:
* version 0.3
* added [m]<C-v>[m] support to pass one key to Firefox (patch by Muthu Kannan)
* also [m]I[m] will go to "ignorekeys" mode until [m]<Esc>[m] is pressed, presenting a workaround
for many JavaScript form fields like GMail, until something better comes along
* Pentadactyl can now be automatically updated in the [c]:addons[c] screen like other extensions
* fixed [c]:tabnext[c]/[c]:tabprevious[c] commands
* documented "s" and "b" 'guioptions' flags for statusbar/bookmark bar
* implemented the possibility to use [m]<C-[>[m] as an alternative to [m]<Esc>[m], to leave the command line
* added [m]<C-Tab>[m] and [m]<C-S-Tab>[m] support for switching tabs without beeping
* ability to use shift and ctrl with special keys like [m]<F1>[m] in mappings
* small documentation and other fixes
2007-04-11:
* version 0.2
* first public release
// vim: set filetype=asciidoc:

104
pentadactyl/TODO Normal file
View File

@@ -0,0 +1,104 @@
Priority list:
1-9 as in Vim (9 = required for next release, 5 = would be nice, 1 = probably not)
ARCHITECTURE:
- decide on how to document Arrays in our jsdoc(ish) documentation. Host docs
on the website - is there even a documentation tool that can parse our source
sensibly?
There are a few that can, to some extent. We more or less follow the
ScriptDoc standard, and we're very close to a few other standards.
Unfortunately, nearly all of the parsers are lacking in some way, bloated to
hell, and/or lack support for JS 1.8. --Kris
REFACTORING:
- remove unnecessary usage of "self"
BUGS:
- Class#closure seems to be throwing [Exception... "Could not convert
JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)"]
in as yet underdetermined circumstances.
- add window resize support to hints
- searching backwards incrementally does not work i.e. with 'incsearch' set
- insert abbreviations broken on <space>
- :sidebar improvements (:sidebar! Downloads while downloads is open should refocus the sidebar)
- ;s saves the page rather than the image
- RC file is sourced once per window
- :undo seems to be effected by the tabstrip state
- the :help version-information page is no longer generated
(recent CVS regressions):
- visual caret mode is broken, requires a manual page focus first anyway or
else it chucks, I haven't investigated --djk
- messages is still broken in several ways - needs testing.
=> :ls | :echomsg "Foobar" doesn't add "Foobar" to the already open MOW.
(NOTE: an intentional design decision by MS - Boo!)
=> it often overwrites the open command line while editing etc.
- <tags> and <keyword> autocmd 'keywords' are not available when adding a
bookmark - they're being set after the observer triggers the autocmd event.
- :messages is _very_ slow for message history of several thousand lines ->
Unresponsive Script: util.js:79 (sometimes xmlToDom() and elsewhere)
- The MOW shouldn't close when executing hints and ;F isn't working.
FEATURES:
8 Document Textarea, Caret and Visual modes.
8 Replace config.name tests in dactyl with more specific feature
tests or overridable APIs where at all feasible.
8 change the extension ID to pentadactyl@vimperator.org rather than
pentadactyl@mozdev.org
8 finish :help TODOs
8 fix local options
8 adaptive timeout for auto-completions, :set completions can be updated more often than
:open foo
8 use the storage module for autocommands
8 support 'activate' in buffer.followLink?
Leave this to the bookmarks.tabs.loadInBackground. Hint activation
should be nearly equivalent to the corresponding mouse motion, and that
mouse movement would be governed by the FF pref. However, :tabopen is
something Vimp specific, and so it needs a specific setting (i.e.,
activate). OTOH, I think it would be better if ";t" *always* opens a
new foreground tab and ";b" *always* opensa new background tab. So "F"
should be the only hint mode that changes based on loadInBackground.
--Ted
8 add support for filename special characters such as %
8 :redir and 'verbosefile'
8 middleclick in content == p, and if command line is open, paste there the clipboard buffer
8 all search commands should start searching from the top of the visible viewport
8 allow for multiple ex commands separated with | (see #24)
8 <C-o>/<C-i> should work as in vim (i.e., save page positions as well as
locations in the history list).
8 jump to the next heading with ]h, next image ]i, previous textbox [t and so on
8 pipe selected text/link/website to an external command
7 use ctrl-n/p in insert mode for word completion
7 implement QuickFix window based on ItemList
7 wherever possible: get rid of dialogs and ask console-like dialog questions
or write error prompts directly on the webpage or with :echo()
7 [d could go to the last domain in the history stack. So if I browse from
google to another page and click 10 links there, [d would take me back to the google page
opera's fast forward does something like this
7 make an option to disable session saving by default when you close Firefox
7 The output of the pageinfo-command should contain the security-information of ssl-encrypted sites
7 :grep support (needs location list)
6 :mksession
6 add [count] support to :b* and :tab* commands where missing
6 registers
Here, unlike Vim, y and "*y would be equivalent. That is, the pasteboard would
always be the default register. --Ted
6 check/correct spellings in insert mode with some mappings
6 add more autocommands (TabClose, TabOpen, TabChanged etc)
6 Use ctrl-w+j/k/w to switch between sidebar, content, preview window
6 Command :tags for getting a list of used tags
6 ;?<hint> should show more information
6 Add information to dactyl/HACKING file about testing and optimization
5 when looking at a zoomed out image (because it's large), zi should zoom in
maybe with this? : http://mxr.mozilla.org/seamonkey/source/content/html/document/public/nsIImageDocument.idl
5 make a command to search within google search results
(http://gadelkareem.com/2007/01/28/using-google-ajax-api-as-an-array/)
maybe impossible, needs a per-site key from google
4 } { should jump to the next paragraph of the page
3 A format for 'guitablabel' and 'statusline'
3 add a command-line window (:help cmdline-window in Vim).
3 Splitting Windows with [:sp :vsp ctrl-w,s ctrl-w,v] and closing with [ctrl-w,q], moving with [ctrl-w,w or tab]
have a look into the split browser extension
1 Reformat dactyl/HACKING so that git diff can find sections and report changes @ somewhere

View File

@@ -0,0 +1,28 @@
# Firefox
content pentadactyl content/
skin pentadactyl classic/1.0 skin/
locale pentadactyl en-US locale/en-US/
locale dactyl en-US ../common/locale/en-US/
content dactyl ../common/content/
resource dactyl ../common/modules/
skin dactyl classic/1.0 ../common/skin/
override chrome://dactyl/content/dactyl.dtd chrome://pentadactyl/content/dactyl.dtd
override chrome://dactyl/content/config.js chrome://pentadactyl/content/config.js
overlay chrome://browser/content/browser.xul chrome://dactyl/content/dactyl.xul
overlay chrome://browser/content/browser.xul chrome://pentadactyl/content/pentadactyl.xul
component {81495d80-89ee-4c36-a88d-ea7c4e5ac63f} components/about-handler.js
contract @mozilla.org/network/protocol/about;1?what=pentadactyl {81495d80-89ee-4c36-a88d-ea7c4e5ac63f}
component {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} components/commandline-handler.js
contract @mozilla.org/commandlinehandler/general-startup;1?type=pentadactyl {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}
category command-line-handler m-pentadactyl @mozilla.org/commandlinehandler/general-startup;1?type=pentadactyl
component {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} components/protocols.js
contract @mozilla.org/network/protocol;1?name=chrome-data {c1b67a07-18f7-4e13-b361-2edcc35a5a0d}
component {9c8f2530-51c8-4d41-b356-319e0b155c44} components/protocols.js
contract @mozilla.org/network/protocol;1?name=dactyl {9c8f2530-51c8-4d41-b356-319e0b155c44}

View File

@@ -0,0 +1,47 @@
// Header:
"use strict";
const Name = "Pentadactyl";
/*
* We can't load our modules here, so the following code is sadly
* duplicated: .w !sh
vimdiff ../../*'/components/about-handler.js'
*/
// Copyright (c) 2009 by Doug Kearns
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
const Cc = Components.classes;
const Ci = Components.interfaces;
const name = Name.toLowerCase();
function AboutHandler() {}
AboutHandler.prototype = {
classDescription: "About " + Name + " Page",
classID: Components.ID("81495d80-89ee-4c36-a88d-ea7c4e5ac63f"),
contractID: "@mozilla.org/network/protocol/about;1?what=" + name,
QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule]),
newChannel: function (uri) {
let channel = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService)
.newChannel("chrome://" + name + "/content/about.html", null, null);
channel.originalURI = uri;
return channel;
},
getURIFlags: function (uri) Ci.nsIAboutModule.ALLOW_SCRIPT,
};
if (XPCOMUtils.generateNSGetFactory)
const NSGetFactory = XPCOMUtils.generateNSGetFactory([AboutHandler]);
else
const NSGetModule = XPCOMUtils.generateNSGetModule([AboutHandler]);
// vim: set fdm=marker sw=4 ts=4 et:

View File

@@ -0,0 +1,52 @@
// Header:
"use strict";
const Name = "Pentadactyl";
/*
* We can't load our modules here, so the following code is sadly
* duplicated: .w !sh
vimdiff ../../*'/components/commandline-handler.js'
*/
// Copyright (c) 2009 by Doug Kearns
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
const name = Name.toLowerCase();
function CommandLineHandler() {
this.wrappedJSObject = this;
}
CommandLineHandler.prototype = {
classDescription: Name + " Command-line Handler",
classID: Components.ID("{16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}"),
contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=" + name,
_xpcom_categories: [{
category: "command-line-handler",
entry: "m-" + name
}],
QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsICommandLineHandler]),
handle: function (commandLine) {
// TODO: handle remote launches differently?
try {
this.optionValue = commandLine.handleFlagWithParam(name, false);
}
catch (e) {
dump(name + ": option '-" + name + "' requires an argument\n");
}
}
};
if (XPCOMUtils.generateNSGetFactory)
const NSGetFactory = XPCOMUtils.generateNSGetFactory([CommandLineHandler]);
else
const NSGetModule = XPCOMUtils.generateNSGetModule([CommandLineHandler]);
// vim: set ft=javascript fdm=marker sw=4 ts=4 et:

View File

@@ -0,0 +1 @@
../../common/components/protocols.js

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>About:Pentadactyl</title>
<link rel="stylesheet" href="chrome://pentadactyl/skin/about.css" type="text/css" />
<link rel="icon" href="chrome://pentadactyl/skin/icon.png" type="image/png" />
</head>
<body>
<div id="main-container">
<div id="img-container">
<div id="text-container">
<div style="text-align: center;">
<img src="chrome://pentadactyl/content/logo.png" alt="Pentadactyl" />
version ###VERSION###
by Martin Stubenschrott et al.
Pentadactyl is open source and freely distributable
Sponsor Pentadactyl development!</div><div style="padding-left: 5em;">type :help sponsor&lt;<span class="key">Enter</span>&gt; for information
type :q&lt;<span class="key">Enter</span>&gt; to exit
type :help&lt;<span class="key">Enter</span>&gt; or &lt;<span class="key">F1</span>&gt; for on-line help
type :help version-2.1&lt;<span class="key">Enter</span>&gt; for version info
</div>
</div>
</div>
</div>
</body>
</html>
<!-- vim: set fdm=marker sw=4 ts=4 et: -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

View File

@@ -0,0 +1,302 @@
// Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org>
// Copyright (c) 2007-2009 by Doug Kearns <dougkearns@gmail.com>
// Copyright (c) 2008-2009 by Kris Maglione <maglione.k at Gmail>
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
const Config = Module("config", ConfigBase, {
init: function () {
},
/*** required options, no checks done if they really exist, so be careful ***/
name: "Pentadactyl",
hostApplication: "Firefox",
/*** optional options, there are checked for existence and a fallback provided ***/
features: ["bookmarks", "hints", "history", "marks", "quickmarks", "sanitizer", "session", "tabs", "tabs_undo", "windows"],
defaults: {
complete: "slf",
guioptions: "rb",
showtabline: 2,
titlestring: "Pentadactyl"
},
guioptions: {
m: ["Menubar", ["toolbar-menubar"]],
T: ["Toolbar", ["nav-bar"]],
B: ["Bookmark bar", ["PersonalToolbar"]]
},
get visualbellWindow() getBrowser().mPanelContainer,
styleableChrome: ["chrome://browser/content/browser.xul"],
autocommands: [["BookmarkAdd", "Triggered after a page is bookmarked"],
["ColorScheme", "Triggered after a color scheme has been loaded"],
["DOMLoad", "Triggered when a page's DOM content has fully loaded"],
["DownloadPost", "Triggered when a download has completed"],
["Fullscreen", "Triggered when the browser's fullscreen state changes"],
["LocationChange", "Triggered when changing tabs or when navigation to a new location"],
["PageLoadPre", "Triggered after a page load is initiated"],
["PageLoad", "Triggered when a page gets (re)loaded/opened"],
["PrivateMode", "Triggered when private mode is activated or deactivated"],
["Sanitize", "Triggered when a sanitizeable item is cleared"],
["ShellCmdPost", "Triggered after executing a shell command with :!cmd"],
["PentadactylEnter", "Triggered after Firefox starts"],
["PentadactylLeavePre","Triggered before exiting Firefox, just before destroying each module"],
["PentadactylLeave", "Triggered before exiting Firefox"]],
dialogs: {
about: ["About Firefox",
function () { window.openDialog("chrome://browser/content/aboutDialog.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
addbookmark: ["Add bookmark for the current page",
function () { PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksRootId); }],
addons: ["Manage Add-ons",
function () { window.BrowserOpenAddonsMgr(); }],
bookmarks: ["List your bookmarks",
function () { window.openDialog("chrome://browser/content/bookmarks/bookmarksPanel.xul", "Bookmarks", "dialog,centerscreen,width=600,height=600"); }],
checkupdates: ["Check for updates",
function () { window.checkForUpdates(); }],
cleardata: ["Clear private data",
function () { Cc[GLUE_CID].getService(Ci.nsIBrowserGlue).sanitize(window || null); }],
cookies: ["List your cookies",
function () { window.toOpenWindowByType("Browser:Cookies", "chrome://browser/content/preferences/cookies.xul", "chrome,dialog=no,resizable"); }],
console: ["JavaScript console",
function () { window.toJavaScriptConsole(); }],
customizetoolbar: ["Customize the Toolbar",
function () { window.BrowserCustomizeToolbar(); }],
dominspector: ["DOM Inspector",
function () { try { window.inspectDOMDocument(content.document); } catch (e) { dactyl.echoerr("DOM Inspector extension not installed"); } }],
downloads: ["Manage Downloads",
function () { window.toOpenWindowByType("Download:Manager", "chrome://mozapps/content/downloads/downloads.xul", "chrome,dialog=no,resizable"); }],
history: ["List your history",
function () { window.openDialog("chrome://browser/content/history/history-panel.xul", "History", "dialog,centerscreen,width=600,height=600"); }],
import: ["Import Preferences, Bookmarks, History, etc. from other browsers",
function () { window.BrowserImport(); }],
openfile: ["Open the file selector dialog",
function () { window.BrowserOpenFileWindow(); }],
pageinfo: ["Show information about the current page",
function () { window.BrowserPageInfo(); }],
pagesource: ["View page source",
function () { window.BrowserViewSourceOfDocument(content.document); }],
places: ["Places Organizer: Manage your bookmarks and history",
function () { PlacesCommandHook.showPlacesOrganizer(ORGANIZER_ROOT_BOOKMARKS); }],
preferences: ["Show Firefox preferences dialog",
function () { window.openPreferences(); }],
printpreview: ["Preview the page before printing",
function () { PrintUtils.printPreview(onEnterPrintPreview, onExitPrintPreview); }],
printsetup: ["Setup the page size and orientation before printing",
function () { PrintUtils.showPageSetup(); }],
print: ["Show print dialog",
function () { PrintUtils.print(); }],
saveframe: ["Save frame to disk",
function () { window.saveFrameDocument(); }],
savepage: ["Save page to disk",
function () { window.saveDocument(window.content.document); }],
searchengines: ["Manage installed search engines",
function () { window.openDialog("chrome://browser/content/search/engineManager.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
selectionsource: ["View selection source",
function () { buffer.viewSelectionSource(); }]
},
hasTabbrowser: true,
ignoreKeys: {},
scripts: [
"browser.js",
"bookmarks.js",
"history.js",
"quickmarks.js",
"sanitizer.js",
"tabs.js"
],
get tempFile() {
let prefix = this.name.toLowerCase();
try {
prefix += "-" + window.content.document.location.hostname;
}
catch (e) {}
return prefix + ".tmp";
}
}, {
}, {
commands: function () {
commands.add(["winon[ly]"],
"Close all other windows",
function () {
dactyl.windows.forEach(function (win) {
if (win != window)
win.close();
});
},
{ argCount: "0" });
commands.add(["pref[erences]", "prefs"],
"Show " + config.hostApplication + " preferences",
function (args) {
if (args.bang) { // open Firefox settings GUI dialog
dactyl.open("about:config",
(options["newtab"] && options.get("newtab").has("all", "prefs"))
? dactyl.NEW_TAB : dactyl.CURRENT_TAB);
}
else
window.openPreferences();
},
{
argCount: "0",
bang: true
});
commands.add(["sbcl[ose]"],
"Close the sidebar window",
function () {
if (!document.getElementById("sidebar-box").hidden)
window.toggleSidebar();
},
{ argCount: "0" });
commands.add(["sideb[ar]", "sb[ar]", "sbope[n]"],
"Open the sidebar window",
function (args) {
let arg = args.literalArg;
function compare(a, b) util.compareIgnoreCase(a, b) == 0
// focus if the requested sidebar is already open
if (compare(document.getElementById("sidebar-title").value, arg)) {
document.getElementById("sidebar-box").focus();
return;
}
let menu = document.getElementById("viewSidebarMenu");
for (let [, panel] in Iterator(menu.childNodes)) {
if (compare(panel.label, arg)) {
panel.doCommand();
return;
}
}
dactyl.echoerr("No sidebar " + arg + " found");
},
{
argCount: "1",
completer: function (context) {
context.ignoreCase = true;
return completion.sidebar(context);
},
literal: 0
});
commands.add(["wind[ow]"],
"Execute a command and tell it to output in a new window",
function (args) {
dactyl.forceNewWindow = true;
dactyl.execute(args.string, null, true);
dactyl.forceNewWindow = false;
},
{
argCount: "+",
completer: function (context) completion.ex(context),
literal: 0
});
commands.add(["winc[lose]", "wc[lose]"],
"Close window",
function () { window.close(); },
{ argCount: "0" });
commands.add(["wino[pen]", "wo[pen]"],
"Open one or more URLs in a new window",
function (args) {
args = args.string;
if (args)
dactyl.open(args, dactyl.NEW_WINDOW);
else
dactyl.open("about:blank", dactyl.NEW_WINDOW);
},
{
completer: function (context) completion.url(context),
literal: 0,
privateData: true
});
},
completion: function () {
var searchRunning = false; // only until Firefox fixes https://bugzilla.mozilla.org/show_bug.cgi?id=510589
completion.location = function location(context) {
if (!services.get("autoCompleteSearch"))
return;
context.anchored = false;
context.compare = CompletionContext.Sort.unsorted;
context.filterFunc = null;
context.hasItems = context.completions.length > 0; // XXX
context.incomplete = true;
context.keys.icon = 2;
context.title = ["Smart Completions"];
context.cancel = function () {
if (searchRunning) {
services.get("autoCompleteSearch").stopSearch();
searchRunning = false;
}
};
if (searchRunning)
services.get("autoCompleteSearch").stopSearch();
let timer = new Timer(50, 100, function (result) {
context.incomplete = result.searchResult >= result.RESULT_NOMATCH_ONGOING;
context.completions = [
[result.getValueAt(i), result.getCommentAt(i), result.getImageAt(i)]
for (i in util.range(0, result.matchCount))
];
});
services.get("autoCompleteSearch").startSearch(context.filter, "", context.result, {
onSearchResult: function onSearchResult(search, result) {
timer.tell(result);
if (result.searchResult <= result.RESULT_SUCCESS) {
searchRunning = false;
timer.flush();
}
}
});
searchRunning = true;
};
completion.sidebar = function sidebar(context) {
let menu = document.getElementById("viewSidebarMenu");
context.title = ["Sidebar Panel"];
context.completions = Array.map(menu.childNodes, function (n) [n.label, ""]);
};
completion.addUrlCompleter("l",
"Firefox location bar entries (bookmarks and history sorted in an intelligent way)",
completion.location);
},
modes: function () {
this.ignoreKeys = {
"<Return>": modes.NORMAL | modes.INSERT,
"<Space>": modes.NORMAL | modes.INSERT,
"<Up>": modes.NORMAL | modes.INSERT,
"<Down>": modes.NORMAL | modes.INSERT
};
},
options: function () {
options.add(["online"],
"Set the 'work offline' option",
"boolean", true,
{
setter: function (value) {
const ioService = services.get("io");
if (ioService.offline == value)
BrowserOffline.toggleOfflineStatus();
return value;
},
getter: function () !services.get("io").offline
});
}
});
// vim: set fdm=marker sw=4 ts=4 et:

View File

@@ -0,0 +1,13 @@
<!ENTITY % dactylBranding SYSTEM "chrome://branding/locale/brand.dtd">
%dactylBranding;
<!ENTITY dactyl.mainWindow "main-window">
<!ENTITY dactyl.name "pentadactyl">
<!ENTITY dactyl.idname "PENTADACTYL">
<!ENTITY dactyl.appname "Pentadactyl">
<!ENTITY dactyl.host "&brandShortName;">
<!ENTITY dactyl.hostbin "firefox">
<!ENTITY dactyl.statusBefore "statusbar-display">
<!ENTITY dactyl.statusAfter "">

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="162"
height="40"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.46"
version="1.0"
sodipodi:docbase="/home/maxauthority/code/pentadactyl"
sodipodi:docname="pentadactyl.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/maxauthority/code/pentadactyl/pentadactyl.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 29 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="185 : 29 : 1"
inkscape:persp3d-origin="92.5 : 19.333333 : 1"
id="perspective2392" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4.04"
inkscape:cx="84.114858"
inkscape:cy="55.052209"
inkscape:document-units="px"
inkscape:current-layer="layer1"
width="185px"
height="58px"
showgrid="false" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-5.4392018,-9.6624603)">
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans Mono"
x="6.2673268"
y="29.896835"
id="text2229"><tspan
sodipodi:role="line"
id="tspan2231"
x="6.2673268"
y="29.896835">pentadactyl_</tspan></text>
<text
xml:space="preserve"
style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans Mono"
x="6.4079518"
y="53.183945"
id="text2233"><tspan
sodipodi:role="line"
id="tspan2235"
x="6.4079518"
y="53.183945">~</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,58 @@
<?xml version="1.0"?>
<!-- ***** BEGIN LICENSE BLOCK ***** {{{
Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org>
This work is licensed for reuse under an MIT license. Details are
given in the LICENSE.txt file included with this file.
}}} ***** END LICENSE BLOCK ***** -->
<!-- <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?> -->
<overlay id="pentadactyl"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:nc="http://home.netscape.com/NC-rdf#"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<menupopup id="viewSidebarMenu">
<menuitem observes="pentadactyl-viewAddonsSidebar" label="Add-ons" accesskey="A"/>
<menuitem observes="pentadactyl-viewConsoleSidebar" label="Console" accesskey="C"/>
<menuitem observes="pentadactyl-viewDownloadsSidebar" label="Downloads" accesskey="D"/>
<menuitem observes="pentadactyl-viewPreferencesSidebar" label="Preferences" accesskey="P"/>
</menupopup>
<broadcasterset id="mainBroadcasterSet">
<broadcaster id="pentadactyl-viewAddonsSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="chrome://mozapps/content/extensions/extensions.xul"
sidebartitle="Add-ons"
oncommand="toggleSidebar('pentadactyl-viewAddonsSidebar');"/>
<broadcaster id="pentadactyl-viewConsoleSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="chrome://global/content/console.xul"
sidebartitle="Console"
oncommand="toggleSidebar('pentadactyl-viewConsoleSidebar');"/>
<broadcaster id="pentadactyl-viewDownloadsSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="chrome://mozapps/content/downloads/downloads.xul"
sidebartitle="Downloads"
oncommand="toggleSidebar('pentadactyl-viewDownloadsSidebar');"/>
<broadcaster id="pentadactyl-viewPreferencesSidebar"
autoCheck="false"
type="checkbox"
group="sidebar"
sidebarurl="about:config"
sidebartitle="Preferences"
oncommand="toggleSidebar('pentadactyl-viewPreferencesSidebar');"/>
</broadcasterset>
</overlay>
<!-- vim: set fdm=marker sw=4 ts=4 et: -->

View File

@@ -0,0 +1,9 @@
VIMBALL = pentadactyl.vba
vimball: mkvimball.txt syntax/pentadactyl.vim ftdetect/pentadactyl.vim
-echo '%MkVimball! ${VIMBALL} .' | vim -u NORC -N -e -s mkvimball.txt
all: vimball
clean:
rm -f ${VIMBALL}

View File

@@ -0,0 +1 @@
au BufNewFile,BufRead *pentadactylrc*,*.vimp set filetype=pentadactyl

View File

@@ -0,0 +1,2 @@
syntax/pentadactyl.vim
ftdetect/pentadactyl.vim

View File

@@ -0,0 +1,111 @@
" Vim syntax file
" Language: Pentadactyl configuration file
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2009 Nov 14
" TODO: make this pentadactyl specific - shared dactyl config?
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syn include @javascriptTop syntax/javascript.vim
unlet b:current_syntax
syn include @cssTop syntax/css.vim
unlet b:current_syntax
syn match pentadactylCommandStart "\%(^\s*:\=\)\@<=" nextgroup=pentadactylCommand,pentadactylAutoCmd
syn keyword pentadactylCommand ab[breviate] ab[clear] addo[ns] bN[ext] b[uffer] ba[ck] bd[elete] beep bf[irst] bl[ast] bma[rk]
\ bmarks bn[ext] bp[revious] br[ewind] bufd[o] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] cd chd[ir] cm[ap] cmapc[lear]
\ cno[remap] colo[rscheme] com[mand] comc[lear] cu[nmap] cuna[bbrev] delbm[arks] delc[ommand] delm[arks] delmac[ros]
\ delqm[arks] dels[tyle] dia[log] dl do[autocmd] doautoa[ll] downl[oads] ec[ho] echoe[rr] echom[sg] em[enu] exe[cute]
\ exta[dd] extd[isable] extde[lete] exte[nable] extens[ions] exto[ptions] extp[references] exu[sage] files fini[sh] fo[rward]
\ frameo[nly] fw h[elp] helpa[ll] ha[rdcopy] hi[ghlight] hist[ory] hs ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap]
\ iu[nmap] iuna[bbrev] javas[cript] js ju[mps] keepa[lt] let loadplugins lpl ls ma[rk] macros map mapc[lear] marks mes[sages]
\ messc[lear] mkv[imperatorrc] nm[ap] nmapc[lear] nno[remap] no[remap] noh[lsearch] norm[al] nu[nmap] o[pen] optionu[sage]
\ pa[geinfo] pagest[yle] pas pl[ay] pref[erences] prefs pw[d] q[uit] qa[ll] qma[rk] qmarks quita[ll] re[draw] re[load]
\ reloada[ll] res[tart] run runt[ime] sa[nitize] sav[eas] sb[ar] sb[open] sbcl[ose] scrip[tnames] se[t] setg[lobal] setl[ocal]
\ sideb[ar] sil[ent] so[urce] st[op] stopa[ll] sty[le] styd[isable] styled[isable] stye[nable] stylee[nable] styt[oggle]
\ stylet[oggle] tN[ext] t[open] tab taba[ttach] tabN[ext] tabc[lose] tabd[o] tabde[tach] tabdu[plicate] tabfir[st] tabl[ast]
\ tabm[ove] tabn[ext] tabnew tabo[nly] tabopen tabp[revious] tabr[ewind] tabs tbh[ide] tbs[how] tbt[oggle] time tn[ext]
\ toolbarh[ide] toolbars[how] toolbart[oggle] tp[revious] u[ndo] una[bbreviate] undoa[ll] unl[et] unm[ap] verb[ose] ve[rsion]
\ vie[wsource] viu[sage] vm[ap] vmap[clear] vno[remap] vu[nmap] w[rite] wc[lose] win[open] winc[lose] wind[ow] winon[ly]
\ wo[pen] wq wqa[ll] xa[ll] zo[om]
\ contained
syn match pentadactylCommand "!" contained
syn keyword pentadactylAutoCmd au[tocmd] contained nextgroup=pentadactylAutoEventList skipwhite
syn keyword pentadactylAutoEvent BookmarkAdd ColorSheme DOMLoad DownloadPost Fullscreen LocationChange PageLoadPre PageLoad
\ PrivateMode Sanitize ShellCmdPost VimperatorEnter VimperatorLeavePre VimperatorLeave
\ contained
syn match pentadactylAutoEventList "\(\a\+,\)*\a\+" contained contains=pentadactylAutoEvent
syn region pentadactylSet matchgroup=pentadactylCommand start="\%(^\s*:\=\)\@<=\<\%(setl\%[ocal]\|setg\%[lobal]\|set\=\)\=\>"
\ end="$" keepend oneline contains=pentadactylOption,pentadactylString
syn keyword pentadactylOption act activate cd cdpath complete cpt defsearch ds editor eht ei enc encoding eventignore
\ extendedhinttags fenc fileencoding fh followhints go guioptions helpfile hf hi hin hintinputs hintmatching hinttags
\ hinttimeout history hm ht hto laststatus ls maxitems messages msgs newtab nextpattern pa pageinfo popups pps previouspattern
\ rtp runtimepath si sanitizeitems sts sanitizetimespan scr scroll sh shcf shell shellcmdflag showstatuslinks showtabline ssli
\ stal suggestengines titlestring urlseparator vbs verbose wic wig wildcase wildignore wildmode wildoptions wim wop
\ wordseparators wsp
\ contained nextgroup=pentadactylSetMod
" toggle options
syn match pentadactylOption "\<\%(no\|inv\)\=\%(errorbells\|eb\|exrc\|ex\|focuscontent\|fc\|fullscreen\|fs\|ignorecase\|ic\)\>!\="
\ contained nextgroup=pentadactylSetMod
syn match pentadactylOption "\<\%(no\|inv\)\=\%(incsearch\|is\|insertmode\|im\|hlsearch\|hls\|linksearch\|lks\)\>!\="
\ contained nextgroup=pentadactylSetMod
syn match pentadactylOption "\<\%(no\|inv\)\=\%(loadplugins\|lpl\|more\|online\|private\|showmode\|smd\|smartcase\|scs\)\>!\="
\ contained nextgroup=pentadactylSetMod
syn match pentadactylOption "\<\%(no\|inv\)\=\%(online\|visualbell\|vb\|usermode\|um\)\>!\="
\ contained nextgroup=pentadactylSetMod
syn match pentadactylSetMod "\%(\<[a-z_]\+\)\@<=&" contained
syn region pentadactylJavaScript start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=" end="$" contains=@javascriptTop keepend oneline
syn region pentadactylJavaScript matchgroup=pentadactylJavascriptDelimiter
\ start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@javascriptTop fold
let s:cssRegionStart = '\%(^\s*sty\%[le]!\=\s\+\%(-\%(n\|name\)\%(\s\+\|=\)\S\+\s\+\)\=[^-]\S\+\s\+\)\@<='
execute 'syn region pentadactylCss start="' . s:cssRegionStart . '" end="$" contains=@cssTop keepend oneline'
execute 'syn region pentadactylCss matchgroup=pentadactylCssDelimiter'
\ 'start="' . s:cssRegionStart . '<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@cssTop fold'
syn match pentadactylNotation "<[0-9A-Za-z-]\+>"
syn match pentadactylComment +".*$+ contains=pentadactylTodo,@Spell
syn keyword pentadactylTodo FIXME NOTE TODO XXX contained
syn region pentadactylString start="\z(["']\)" end="\z1" skip="\\\\\|\\\z1" oneline
syn match pentadactylLineComment +^\s*".*$+ contains=pentadactylTodo,@Spell
" NOTE: match vim.vim highlighting group names
hi def link pentadactylAutoCmd pentadactylCommand
hi def link pentadactylAutoEvent Type
hi def link pentadactylCommand Statement
hi def link pentadactylComment Comment
hi def link pentadactylJavascriptDelimiter Delimiter
hi def link pentadactylCssDelimiter Delimiter
hi def link pentadactylNotation Special
hi def link pentadactylLineComment Comment
hi def link pentadactylOption PreProc
hi def link pentadactylSetMod pentadactylOption
hi def link pentadactylString String
hi def link pentadactylTodo Todo
let b:current_syntax = "pentadactyl"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: tw=130 et ts=4 sw=4:

28
pentadactyl/install.rdf Normal file
View File

@@ -0,0 +1,28 @@
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>pentadactyl@dactyl.googlecode.com</em:id>
<em:name>Pentadactyl</em:name>
<em:version>@VERSION@</em:version>
<em:description>Make Firefox behave like Vim</em:description>
<em:creator>Kris Maglione</em:creator>
<em:homepageURL>http://pentadactyl.sf.net/</em:homepageURL>
<em:iconURL>chrome://pentadactyl/skin/icon.png</em:iconURL>
<em:optionsURL>chrome://dactyl/content/preferences.xul</em:optionsURL>
<em:file>
<Description about="urn:mozilla:extension:file:pentadactyl.jar">
<em:package>content/dactyl/</em:package>
</Description>
</em:file>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>3.5</em:minVersion>
<em:maxVersion>4.0</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
<!-- vim: set fdm=marker sw=4 ts=4 et: -->

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="chrome://dactyl/content/help.xsl"?>
<!DOCTYPE overlay SYSTEM "chrome://dactyl/content/dactyl.dtd">
<overlay
xmlns="http://vimperator.org/namespaces/liberator"
xmlns:html="http://www.w3.org/1999/xhtml">
<include href="tutorial" tag="tutorial.html" insertafter="intro.html" />
</overlay>
<!-- vim:se sts=4 sw=4 et: -->

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="chrome://dactyl/content/help.xsl"?>
<!DOCTYPE overlay SYSTEM "chrome://dactyl/content/dactyl.dtd">
<overlay
xmlns="http://vimperator.org/namespaces/liberator"
xmlns:html="http://www.w3.org/1999/xhtml">
<dl tag="autocommand-list" replace="autocommand-list">
<dt>BookmarkAdd</dt> <dd>Triggered after a page is bookmarked</dd>
<dt>ColorScheme</dt> <dd>Triggered after a color scheme has been loaded</dd>
<dt>DOMLoad</dt> <dd>Triggered when a page's DOM content has fully loaded</dd>
<dt>DownloadPost</dt> <dd>Triggered when a download has completed</dd>
<dt>Fullscreen</dt> <dd>Triggered when the browser's fullscreen state changes</dd>
<dt>LocationChange</dt> <dd>Triggered when changing tabs or when navigating to a new location</dd>
<dt>PageLoadPre</dt> <dd>Triggered after a page load is initiated</dd>
<dt>PageLoad</dt> <dd>Triggered when a page gets (re)loaded/opened</dd>
<dt>PrivateMode</dt> <dd>Triggered when private mode is activated or deactivated</dd>
<dt>Sanitize</dt> <dd>Triggered when privata data are sanitized</dd>
<dt>ShellCmdPost</dt> <dd>Triggered after executing a shell command with <ex>:!</ex><a>cmd</a></dd>
<dt>&dactyl.appname;Enter</dt> <dd>Triggered after &dactyl.host; starts</dd>
<dt>&dactyl.appname;LeavePre</dt><dd>Triggered before exiting &dactyl.host;, just before destroying each module</dd>
<dt>&dactyl.appname;Leave</dt> <dd>Triggered before exiting &dactyl.host;</dd>
</dl>
<dl tag="autocommand-args" replace="autocommand-args">
<dt>&lt;url></dt> <dd>The URL against which the event was selected.</dd>
<dt>&lt;title></dt> <dd>The page, bookmark or download title.</dd>
<dt>&lt;doc></dt> <dd>The document for which the event occurred. Only for <em>DOMLoad</em>, <em>PageLoad</em> and <em>PageLoadPre</em>.</dd>
<dt>&lt;tab></dt> <dd>The tab in which the event occurred. Only for <em>DOMLoad</em>, <em>PageLoad</em> and <em>PageLoadPre</em>.</dd>
<dt>&lt;tags></dt> <dd>The tags applied to &lt;url>. Only for <em>BookmarkAdd</em>.</dd>
<dt>&lt;keyword></dt> <dd>The keywords applied to the bookmark. Only for <em>BookmarkAdd</em>.</dd>
<dt>&lt;icon></dt> <dd>The icon associated with &lt;url>. Only for <em>BookmarkAdd</em>.</dd>
<dt>&lt;size></dt> <dd>The size of a downloaded file. Only for <em>DownloadPost</em>.</dd>
<dt>&lt;file></dt> <dd>The target destination of a download. Only for <em>DownloadPost</em>.</dd>
<dt>&lt;state></dt> <dd>The new state. Only for "Fullscreen" and <em>PrivateMode</em>.</dd>
<dt>&lt;name></dt> <dd>The name of the item. Only for <em>ColorScheme</em> and <em>Sanitize</em>.</dd>
</dl>
</overlay>
<!-- vim:se sts=4 sw=4 et: -->

View File

@@ -0,0 +1,4 @@
<!ENTITY appname "Pentadactyl">
<!ENTITY hostapp "Firefox">

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="chrome://dactyl/content/help.xsl"?>
<!DOCTYPE overlay SYSTEM "chrome://dactyl/content/dactyl.dtd">
<overlay
xmlns="http://vimperator.org/namespaces/liberator"
xmlns:html="http://www.w3.org/1999/xhtml">
<dl tag="dialog-list" replace="dialog-list">
<dt>about</dt> <dd>About Mozilla &dactyl.host;;</dd>
<dt>addbookmark</dt> <dd>Add bookmark for the current page</dd>
<dt>addons</dt> <dd>Manage Add-ons</dd>
<dt>bookmarks</dt> <dd>List your bookmarks</dd>
<dt>checkupdates</dt> <dd>Check for updates</dd>
<dt>cleardata</dt> <dd>Clear private data</dd>
<dt>cookies</dt> <dd>List your cookies</dd>
<dt>console</dt> <dd>JavaScript console</dd>
<dt>customizetoolbar</dt><dd>Customize the Toolbar</dd>
<dt>dominspector</dt> <dd>DOM Inspector</dd>
<dt>downloads</dt> <dd>Manage Downloads</dd>
<dt>history</dt> <dd>List your history</dd>
<dt>import</dt> <dd>Import Preferences, Bookmarks, History, etc. from other browsers</dd>
<dt>openfile</dt> <dd>Open the file selector dialog</dd>
<dt>pageinfo</dt> <dd>Show information about the current page</dd>
<dt>pagesource</dt> <dd>View page source</dd>
<dt>places</dt> <dd>Places Organizer: Manage your bookmarks and history</dd>
<dt>preferences</dt> <dd>Show &dactyl.host; preferences dialog</dd>
<dt>printpreview</dt> <dd>Preview the page before printing</dd>
<dt>printsetup</dt> <dd>Setup the page size and orientation before printing</dd>
<dt>print</dt> <dd>Show print dialog</dd>
<dt>saveframe</dt> <dd>Save frame to disk</dd>
<dt>savepage</dt> <dd>Save page to disk</dd>
<dt>searchengines</dt> <dd>Manage installed search engines</dd>
<dt>selectionsource</dt> <dd>View selection source</dd>
</dl>
</overlay>
<!-- vim:se sts=4 sw=4 et: -->

View File

@@ -0,0 +1,203 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="chrome://dactyl/content/help.xsl"?>
<!DOCTYPE document SYSTEM "chrome://dactyl/content/dactyl.dtd">
<document
name="intro"
title="&dactyl.appname; Introduction"
xmlns="http://vimperator.org/namespaces/liberator"
xmlns:html="http://www.w3.org/1999/xhtml">
<h1 tag="intro">Introduction</h1>
<link topic="http://vimperator.org">&dactyl.appname;</link> is a free browser add-on for &dactyl.host;,
which makes it look and behave like the
<link topic="http://www.vim.org">Vim</link>
text editor. It has similar key bindings, and you could call it a modal
web browser, as key bindings differ according to which mode you are in.
<warning tag="warning">
To provide the most authentic Vim experience, the &dactyl.host; menubar and toolbar are hidden.
</warning>
<p>If you really need them, type: <ex>:set guioptions+=mT</ex> to get them back.</p>
<p>
If you don't like &dactyl.appname; at all, you can uninstall it by typing
<ex>:extdelete &dactyl.appname;</ex> or <ex>:extdisable &dactyl.appname;</ex> to disable it.
</p>
<p>
If you like it but can't remember the shortcuts, then press
<key name="F1"/> or <ex>:help</ex> to get this help window back.
</p>
<tags>author donaton sponsor</tags>
<strut/>
<p>
&dactyl.appname; was initially written by
<link topic="mailto:stubenschrott@vimperator.org">Martin
Stubenschrott</link> but has found many other
<link topic="http://vimperator.org/trac/wiki/&dactyl.appname;/Authors">contributors</link>
in the meanwhile. If you appreciate the work on &dactyl.appname; and want to
encourage us working on it more, you can send us greetings, patches, or
donations (thanks a lot to
<link topic="http://vimperator.org/trac/wiki/&dactyl.appname;/Donors">these
people</link>
who already did):
</p>
<pan><handle/></pan>
<p>
If you prefer getting some nice products for your money, you can also support
us by buying some cool
<link topic="http://www.zazzle.com/maxauthority*">merchandise</link> like
t-shirts or mugs. Of course, as we believe in free, open source software, only
support us financially if you really like &dactyl.appname; and the money doesn't hurt
— otherwise just use it, recommend it, and like it :)
</p>
<h2 tag="overview">Help topics</h2>
<ol>
<li>
<link topic="tutorial">Quick-start tutorial</link>:
A quick-start tutorial for new users.
</li>
<li>
<link topic="starting">Starting &dactyl.appname;</link>:
How &dactyl.appname; starts up, where it reads the config file…
</li>
<li>
<link topic="browsing">Browsing</link>:
Basic mappings and commands needed for a browsing session (how to open
a web page or go back in history).
</li>
<li>
<link topic="buffer">Buffer</link>:
Operations on the current document like scrolling or copying text.
</li>
<li>
<link topic="cmdline">Command-line mode</link>:
Command-line editing.
</li>
<li>
<link topic="insert">Insert mode</link>:
Insert-mode editing.
</li>
<li>
<link topic="options">Options</link>:
A description of all options.
</li>
<li>
<link topic="pattern">Text search commands</link>:
Searching for text in the current buffer.
</li>
<li>
<link topic="tabs">Tabs</link>:
Managing your tabbed browsing session.
</li>
<li>
<link topic="hints">Hints</link>:
Selecting hyperlinks and other page elements.
</li>
<li>
<link topic="">Key mappings, abbreviations, and user-defined commands</link>:
Defining new key mappings, abbreviations and user commands.
</li>
<li>
<link topic="eval">Expression evaluation</link>:
Executing JavaScript.
</li>
<li>
<link topic="marks">Marks</link>:
Using bookmarks, QuickMarks, history and local marks.
</li>
<li>
<link topic="repeat">Repeating commands</link>:
Using macros to repeat recurring workflows.
</li>
<li>
<link topic="autocommands">Automatic commands</link>:
Automatically executing code on certain events.
</li>
<li>
<link topic="print">Printing</link>:
Printing pages.
</li>
<li>
<link topic="gui">&dactyl.appname;'s GUI</link>:
Accessing &dactyl.host; menus, dialogs and the sidebar.
</li>
<li>
<link topic="styling">Styling the GUI and web pages</link>:
Changing the styling of content pages and &dactyl.appname; itself.
</li>
<li>
<link topic="message">Error and informational messages</link>:
A description of messages and error messages.
</li>
<li>
<link topic="developer">Developer information</link>:
How to write docs or plugins.
</li>
<li>
<link topic="various">Various commands</link>:
Other help which didn't fit into any other category.
</li>
<li>
<link topic="plugins">Plugins</link>:
Documentation for any plugins you may have installed.
</li>
<li>
<link topic="index">Index</link>:
An index of all commands and options.
</li>
</ol>
<p>
You can also jump directly to the help of a specific command with <ex>:help o</ex>
or <ex>:help :set</ex>.
</p>
<h2 tag="features">Features</h2>
<ul>
<li>Vim-like keybindings (<k>h</k>, <k>j</k>, <k>k</k>, <k>l</k>, <k>gg</k>, <k>G</k>, <k>0</k>, <k>$</k>, <k>ZZ</k>, <k name="C-f"/>, etc.)</li>
<li>Ex commands (<ex>:quit</ex>, <ex>:open www.foo.com</ex>, …)</li>
<li>Tab completion available for all commands with support for "longest" matching when set in 'wildmode'</li>
<li>Hit-a-hint like navigation of links (start with <k>f</k> to follow a link)</li>
<li>Advanced completion of bookmark and history URLs (searching also in title, not only URL)</li>
<li>Vim-like statusline with a Wget-like progress bar</li>
<li>Minimal GUI (easily hide useless menubar and toolbar with <ex>:set guioptions=</ex>)</li>
<li>Ability to <ex>:source</ex> JavaScript files, and to use a <em>~/.pentadactylrc</em> file with syntax highlighting if you install pentadactyl.vim</li>
<li>Easy quick searches (<ex>:open foo</ex> will search for "foo" in google, <ex>:open ebay terminator</ex> will search for "terminator" on ebay) with support for &dactyl.host; keyword bookmarks and search engines</li>
<li>Count supported for many commands (<em>3</em><k name="C-o"/> will go back 3 pages)</li>
<li>Beep on errors</li>
<li>Marks support (<k>m</k><em>a</em> to set mark a on a web page, <k>'</k><em>a</em> to go there)</li>
<li>QuickMarks support (quickly go to previously marked web pages with <k>go</k><a>a-zA-Z0-9</a>)</li>
<li><ex>:map</ex> and <ex>:command</ex> support (and feedkeys() for script writers)</li>
<li><ex>:time</ex> support for profiling</li>
<li>Move the text cursor and select text with Vim keys and a Visual mode</li>
<li>External editor support</li>
<li>Macros to replay key strokes</li>
<li>AutoCommands to execute actions on certain events</li>
<li>A comprehensive help system, explaining all commands, mappings and options</li>
</ul>
<h2 tag="contact">Contact</h2>
<p>
Please send comments/bug reports/patches to the mailing list, where we will
properly answer any questions. You can also join the
<link topic="irc://irc.freenode.net/pentadactyl">#pentadactyl</link> IRC channel
on <link target="http://www.freenode.net/">Freenode</link> or check the
<link topic="http://vimperator.org/trac/wiki/&dactyl.appname;/Wiki">Wiki</link> for
<link topic="http://vimperator.org/trac/wiki/&dactyl.appname;/FAQ">
frequently asked questions (FAQ)
</link>. Make sure, you have read the TODO file first, as we are aware of many
things which can be improved when we find time for it or receive patches.
</p>
</document>
<!-- vim:se sts=4 sw=4 et: -->

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="chrome://dactyl/content/help.xsl"?>
<!DOCTYPE overlay SYSTEM "chrome://dactyl/content/dactyl.dtd">
<overlay
xmlns="http://vimperator.org/namespaces/liberator"
xmlns:html="http://www.w3.org/1999/xhtml">
<item insertbefore=":set">
<tags>:seg :way</tags>
<spec>:se[a]</spec>
<description>
<p>Show all options that differ from their default value.</p>
</description>
</item>
<item insertafter=":set-default">
<tags>:sturm :drang</tags>
<spec>:und</spec>
<description>
<p>Show all options that differ from their default value.</p>
</description>
</item>
</overlay>
<!-- vim:se sts=4 sw=4 et: -->

View File

@@ -0,0 +1,369 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="chrome://dactyl/content/help.xsl"?>
<!DOCTYPE document SYSTEM "chrome://dactyl/content/dactyl.dtd">
<document
name="tutorial"
title="&dactyl.appname; Tutorial"
xmlns="http://vimperator.org/namespaces/liberator"
xmlns:html="http://www.w3.org/1999/xhtml">
<!-- Initial revision: Sun Jun 8 10:07:05 UTC 2008 (penryu) -->
<h1 tag="tutorial">Quick-start tutorial</h1>
<html:p style="text-align: center">
This is a quickstart tutorial to help get new users up and running
in &dactyl.appname;. It is not intended as a full reference explaining all
features.
</html:p>
<p>
If you've started using &dactyl.appname; from scratch (i.e., without any
customization), you should be looking at this help page in a relatively
bare-looking window. The menubar, navigation bar, and bookmark bars are hidden.
In case you missed the notice in the <t>intro</t>, you can
regain these by issuing the command
</p>
<code><ex>:set go+=mTB<key name="CR"/></ex></code>
<p>
where <k name="CR"/> represents pressing the <key name="Enter"/> or <key name="Return"/> key.
If you're a veteran Vim user, this may look familiar. It should.
</p>
<p>
However, in this author's opinion, the best way to get familiar with
&dactyl.appname; is to leave these disabled for now. (The above action can be
reversed with <ex>:set go=<key name="CR"/></ex>) You can look at the entry for <o>guioptions</o> in
<t>options</t> for more information on this.
</p>
<h2 tag="modal">&dactyl.appname;'s modal interface</h2>
<p>
&dactyl.appname;'s power, like Vim's, comes from it's modal interface. Keys have
different meanings depending on which mode the browser is in. &dactyl.appname; has
several modes, but the 2 most important are <em>Normal</em> mode and
<em>Command-line</em> mode.
</p>
<p>
When &dactyl.appname; starts, it is in Normal mode by default. This is probably where
you will spend the majority of your time.
</p>
<p>
The other core mode of &dactyl.appname;, Command-line mode, can be entered from
Normal mode by typing a <k>:</k> (colon). You will frequently see &dactyl.appname;
commands start with a <k>:</k>, indicating that what follows is a command.
</p>
<p>
To return to Normal mode from Command-line mode, type <k name="Esc"/>. Pressing
<k name="Esc"/> will also return you to Normal mode from most other modes in
&dactyl.appname;.
</p>
<h2 tag="getting-help">Getting help</h2>
<p>
Vim is a great editor but it's not much of a web browser. So even seasoned Vim
users will probably have to look at &dactyl.appname; documentation sooner or later.
Most of the documentation for &dactyl.appname;'s features are easily found using the
<ex>:help</ex> command. For example, you can find help on the <ex>:help</ex> command
by typing
</p>
<code><ex>:help :help<key name="CR"/></ex></code>
<p>
Similarly, help on configurable options is available with
<ex>:help '<a>option_name</a>'</ex>. (Note the single quotes
around the option name as in Vim.) Information on all available
options is, predictably, <ex>:help options</ex>.
</p>
<p>
And you can find out about the <k>gt</k> and <k>gT</k> mapping with
</p>
<code>
<ex>:help gt<key name="CR"/></ex>
<ex>:help gT<key name="CR"/></ex>
</code>
<p>
Finally, in addition to the help system itself, <ex>:exusage</ex>, <ex>:viusage</ex>
and <ex>:optionusage</ex> are useful quick-reference commands.
</p>
<h2 tag="living-mouseless">Mouseless</h2>
<em> or how I learned to stop worrying and love the 80+ buttons I already have.</em>
<p>
The efficiency of &dactyl.appname;, as with the legendary editor it was inspired by,
relies on the user being able to keep his fingers on the keyboard where they
can do the most good. While there are some areas where the mouse is clearly
superior at, such as GUI design or some games, &dactyl.appname; acts on the
assumption that a web browser doesn't have to be one of those.
</p>
<p>
Here are some areas where the mouse is typically considered indisposable, and
how &dactyl.appname; challenges this preconception.
</p>
<h2 tag="keyboard-scrolling">Scrolling</h2>
<p>
Scrolling the browser window is done with simple keystrokes:
</p>
<ul>
<li><k>j</k>/<k>k</k>
scroll window down/up by one line, respectively
</li>
<li><k>h</k>/<k>l</k>
scroll window left/right
</li>
<li><k name="Space"/>/<k name="C-b"/>
scroll down/up by one page
</li>
<li><k name="C-d"/>/<k name="C-u"/>
scroll down/up by 1/2 page
</li>
</ul>
<p>
Your standard buttons (<k name="Up"/>/<k name="Down"/>/<k name="PgUp"/>/<k name="PgDn"/>) will
also work as expected.
</p>
<h2 tag="history-navigation tab-navigation">History and tabs</h2>
<p>
History navigation (e.g., <em>Back</em>, <em>Forward</em>) are done similarly to
scrolling.
</p>
<ul>
<li><k name="C-o"/>/<k name="C-i"/>
move Back/Forward in the current window/tab's history, respectively
</li>
</ul>
<p>
Move between tabs using these keystrokes which may also be familiar to tabbing
Vimmers.
</p>
<ul>
<li><k>gt</k>/<k name="C-n"/>
go to the next tab
</li>
<li><k>gT</k>/<k name="C-p"/>
go to the previous tab
</li>
<li><k>g0</k>/<k>g$</k>
go to the first/last tab
</li>
<li><k>d</k>
close the active tab (delete the buffer)
</li>
</ul>
<p>
To open a web page in a new tab, use the <ex>:tabopen <a>url</a></ex>. To open a URL in
the current tab, use <ex>:open</ex>. The Normal mode mappings <k>t</k> and <k>o</k>,
respectively, map to these commands, so the following pairs of sequences are
equivalent:
</p>
<code>
<ex>:open my.webmail.com<key name="CR"/></ex>
<k>o</k>my.webmail.com<key name="CR"/>
<ex>:tabopen vimperator.org<key name="CR"/></ex>
<k>t</k>vimperator.org<key name="CR"/>
</code>
<h2 tag="hints-tutorial">Some hints about surfing…</h2>
<p>
So now you can navigate around in &dactyl.appname;. But wait… how do you <em>open</em> a
page or tab linked in a web page? How do you <em>click</em> on all those links
without your tailed friend?
</p>
<p>
The answer is <em>hints</em>. Activating hints displays a number next to every link
&dactyl.appname; can find. To follow the link, simply type the number corresponding
to the hint, a white number inside a red square by default.
</p>
<p>
For text links, there's an additional shortcut; you can type some text
contained in the link and &dactyl.appname; will search all the links it can find and
only hint the matching links, further narrowing down the list. If the text you
type uniquely identifies any given link, &dactyl.appname; will follow that link
immediately without any further user input.
</p>
<p>
Whichever way you choose to indicate your target link, once &dactyl.appname; has
highlighted the link you want, simply hit <k name="Enter"/> to open it.
</p>
<p>
The most common hint mode is called <t>quick-hints</t>.
To activate QuickHint mode, press either <k>f</k> or <k>F</k>. The lower-case
<k>f</k> will open the resulting link in the current tab, while the upper-case
<k>F</k> will open it in a new tab.
</p>
<p>
To test it, try this link: <link target="http://vimperator.org/">&dactyl.appname; Homepage</link>.
Activate QuickHint mode with <k>f</k> or <k>F</k> to highlight all currently
visible links. Then start typing the text of the link. The link should be
uniquely identified soon, and &dactyl.appname; will open it. Once you're done,
remember to use <k name="C-o"/> (<em>History Back</em>) or <k>d</k> (<em>Delete Buffer</em>)
to return here, depending on which key you used to activate QuickHint mode.
</p>
<h2 tag="common-issues">Common issues</h2>
<p>
Say you get half-way done typing in a new URL, only to remember that you've
already got that page open in the previous tab. Your command line might look
something like this:
</p>
<code><ex>:open my.partial.url/fooba</ex></code>
<p>
You can exit the command line and access the already loaded page with the
following:
</p>
<code><k name="Esc"/></code>
<h2 tag="pentadactylrc">Saving for posterity - pentadactylrc</h2>
<p>
Once you get &dactyl.appname; set up with your desired options, maps, and commands,
you'll probably want them to be available the next time you open &dactyl.appname;.
Continuing the Vim theme, this is done with a pentadactylrc file.
</p>
<p>
To save your current settings and allow them to be loaded automatically
next time you start &dactyl.appname;, issue the <ex>:mkv</ex> command.
</p>
<p>
This will create the file <em>$HOME/.pentadactylrc</em> containing your settings.
It is a simple text file, just like a vimrc file and can be easily
edited to suit your preferences.
</p>
<h2 tag="quitting-without-menus">Find the exit nearest you</h2>
<p>
&dactyl.appname; supports all of Vim's classic methods of exiting.
</p>
<ul>
<li><ex>:xall</ex> command to quit and save the current browsing
session for next time; the default.
</li>
<li><ex>:qall</ex> command to quit <em>without</em> saving the session
</li>
<li><k>ZZ</k> Normal mode mapping equivalent to <ex>:xall</ex>
</li>
<li><k>ZQ</k> Normal mode mapping equivalent to <ex>:qall</ex>
</li>
</ul>
<h2 tag="whither-&dactyl.host;">Where did &dactyl.host; go?</h2>
<p>
You might feel pretty disoriented now. Don't worry. This is still &dactyl.host;
underneath. Here are some ways &dactyl.appname; allows &dactyl.host; to shine through. See
the <ex>:help</ex> for these commands and mappings for more information on how to
make the best use of them.
</p>
<ul>
<li><ex>:dialog</ex>
To access some of &dactyl.host;'s many dialog windows, you can use the
<ex>:dialog</ex> command. See <ex>:help :dialog</ex>.
</li>
<li><ex>:bmarks</ex>
&dactyl.appname; provides a new interface to bookmarks, but they're still your
standard &dactyl.host; bookmarks under the hood. <ex>:bmark</ex> will add a new
bookmark, while <ex>:bmarks</ex> will list the bookmarks currently defined.
</li>
<li><ex>:history</ex>
It's exactly what it sounds like. This command will display a colorized,
scrollable and clickable list of the locations in &dactyl.appname;'s history.
</li>
<li><ex>:emenu</ex>
Access the &dactyl.host; menus through the &dactyl.appname; command line.
</li>
</ul>
<p>
Feel free to explore at this point. If you use the <ex>:tabopen</ex> command,
remember to use the <k>gt</k>/<k>gT</k> mappings to get back to this page. If
using the <ex>:open</ex> command, use the history keys (e.g., <k>H</k>) to return.
If you get hopelessly lost, just type <ex>:help<key name="CR"/></ex> and click the
<em>Tutorial</em> link to return.
</p>
<!-- TODO: other sections? -->
<h2 tag="removal">Get me out of here!</h2>
<p>
If you've given it a fair shot and determined … TODO
</p>
<p>
The &dactyl.appname; way to do this is with the command <ex>:addons</ex>. Issuing this
command brings up the &dactyl.host; Add-ons dialog window; you can then remove it as
normal, selecting &dactyl.appname; from the list and clicking (yes, clicking)
<em>Uninstall</em>.
</p>
<p>
Alternatively, you can do this the old-fashioned way: re-enable the menubar,
as above, with <ex>:set go+=m</ex>, and select <em>Add-ons</em> from the <em>Tools</em> menu.
</p>
<h2 tag="support">I'm interested… but lost!</h2>
<p>
&dactyl.appname; has an energetic and growing user base. If you've run into a problem
that you can't seem to solve with &dactyl.appname;, or if you think you might have
found a bug, please let us know! There is support available on the
<link target="http://code.google.com/p/pentadactyl-labs/w/list?q=label%3Aproject-pentadactyl">wiki</link>
or in the <link target="irc://irc.freenode.net/pentadactyl">#pentadactyl</link> IRC
channel on <link target="http://freenode.net/">freenode</link>.
</p>
<p>
If you have any feature requests or (even better) offers to help, we'd love to
hear from you as well. Developers work on &dactyl.appname; whenever possible, but we
are neither infinite nor omnipotent; please bear with us. If you can't wait for
us to get around to it, rest assured patches are welcome! See the
<t>developer</t> page for more information.
</p>
</document>
<!-- vim:se sts=4 sw=4 et: -->

View File

@@ -0,0 +1,21 @@
" TODO: add some useful examples
" I don't like beeps
set visualbell
" autoignore mode on certain pages
:autocmd PageLoad .* :js modes.passAllKeys = /gmail\.com/.test(buffer.URL)
" embedded javascript is possible
" You can even add new functions which are then available in the :js command
javascript <<EOF
hello = function(name)
{
alert("Hello world: " + name);
}
EOF
echo "pentadactylrc sourced"
" vim: ft=pentadactyl:

244
pentadactyl/regressions.js Normal file
View File

@@ -0,0 +1,244 @@
// Copyright (c) 2009 by Martin Stubenschrott <stubenschrott@vimperator.org>
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
// Script to find regressions
//
// It should use as few dactyl methods as possible, but fall back to standard mozilla/DOM methods
// The reason is, we don't want to find regressions in the regressions script, and it should survive
// massive changes in the internal dactyl API, but just test for functionality of
// user-visible commands/mappings
//
// NOTE: It is preferable to run this script in a clean profile or at least do NOT use
// :mkpentadactylrc afterwards, as it can remove commands/mappings, etc.
//
// Usage: :[count]regr[essions]
// When [count] is given, just run this test. TODO: move to :regressions [spec]?
// all tests
var skipTests = [":bmarks", "gg"];
/////////////////////////////////////////////////////////////////////////////////////////
// Put definitions here which might change due to internal dactyl refactoring
/////////////////////////////////////////////////////////////////////////////////////////
var doc; // document where we output status messages
var multilineOutput = document.getElementById("dactyl-multiline-output");
var singlelineOutput = document.getElementById("dactyl-message");
/////////////////////////////////////////////////////////////////////////////////////////
// TESTS
//
// They are run in order, so you can specify commands which expect side effects of a
// previous command
/////////////////////////////////////////////////////////////////////////////////////////
// A series of Ex commands or mappings, each with a
// function checking whether the command succeeded
// If the string starts with a ":" it is executed as an Ex command, otherwise as a mapping
// You can also mix commands and mappings
let tests = [
{ cmds: [":!dir"],
verify: function () getMultilineOutput().length > 10 },
{ cmds: [":abbr VIMP pentadactyl labs", ":abbr"],
verify: function () getOutput().indexOf("pentadactyl labs") >= 0 },
{ cmds: [":unabbr VIMP", ":abbr"],
verify: function () getOutput().indexOf("pentadactyl labs") == -1 },
{ cmds: [":bmarks"],
verify: function () getMultilineOutput().length > 100 },
{ cmds: [":echo \"test\""],
verify: function () getSinglelineOutput() == "test" },
{ cmds: [":qmark V http://test.vimperator.org", ":qmarks"],
verify: function () getMultilineOutput().indexOf("test.vimperator.org") >= 0 },
{ cmds: [":javascript dactyl.echo('test', commandline.FORCE_MULTILINE)"],
verify: function () getMultilineOutput() == "test" },
// { cmds: [":echomsg \"testmsg\""],
// verify: function () getOutput() == "testmsg" },
// { cmds: [":echoerr \"testerr\""],
// verify: function () getOutput() == "testerr" },
{ cmds: ["gg", "<C-f>"], // NOTE: does not work when there is no page to scroll, we should load a large page before doing these tests
verify: function () this._initialPos.y != getBufferPosition().y,
init: function () this._initialPos = getBufferPosition() }
// testing tab behavior
];
// these functions highly depend on the dactyl API, so use Ex command tests whenever possible
let functions = [
function () { return bookmarks.get("").length > 0 }, // will fail for people without bookmarks :( Might want to add one before
function () { return history.get("").length > 0 }
];
/////////////////////////////////////////////////////////////////////////////////////////
// functions below should be as generic as possible, and not require being rewritten
// even after doing major Pentadactyl refactoring
/////////////////////////////////////////////////////////////////////////////////////////
function resetEnvironment() {
multilineOutput.contentDocument.body.innerHTML = "";
singlelineOutput.value = "";
commandline.close();
modes.reset();
}
function getOutput() multilineOutput.contentDocument.body.textContent || singlelineOutput.value;
function getMultilineOutput() multilineOutput.contentDocument.body.textContent;
function getSinglelineOutput() singlelineOutput.value;
function getTabIndex() getBrowser().mTabContainer.selectedIndex;
function getTabCount() getBrowser().mTabs.length;
function getBufferPosition() {
let win = window.content;
return { x: win.scrollMaxX ? win.pageXOffset / win.scrollMaxX : 0,
y: win.scrollMaxY ? win.pageYOffset / win.scrollMaxY : 0 }
};
function getLocation() window.content.document.location.href;
function echoLine(str, group) {
if (!doc)
return;
doc.body.appendChild(util.xmlToDom(
<div highlight={group} style="border: 1px solid gray; white-space: pre; height: 1.5em; line-height: 1.5em;">{str}</div>,
doc));
}
function echoMulti(str, group) {
if (!doc)
return;
doc.body.appendChild(util.xmlToDom(<div class="ex-command-output"
style="white-space: nowrap; border: 1px solid black; min-height: 1.5em;"
highlight={group}>{template.maybeXML(str)}</div>,
doc));
}
commands.addUserCommand(["regr[essions]"],
"Run regression tests",
function (args) {
// TODO: might need to increase the 'messages' option temporarily
// TODO: count (better even range) support to just run test 34 of 102
// TODO: bang support to either: a) run commands like deleting bookmarks which
// should only be done in a clean profile or b) run functions and not
// just Ex command tests; Yet to be decided
let updateOutputHeight = null;
function init() {
dactyl.registerObserver("echoLine", echoLine);
dactyl.registerObserver("echoMultiline", echoMulti);
dactyl.open("chrome://dactyl/content/buffer.xhtml", dactyl.NEW_TAB);
events.waitForPageLoad();
doc = content.document;
doc.body.setAttributeNS(NS.uri, "highlight", "CmdLine");
updateOutputHeight = commandline.updateOutputHeight;
commandline.updateOutputHeight = function (open) {
let elem = document.getElementById("dactyl-multiline-output");
if (open)
elem.collapsed = false;
elem.height = 0;
};
}
function cleanup() {
dactyl.unregisterObserver("echoLine", echoLine);
dactyl.unregisterObserver("echoMultiline", echoMulti);
commandline.updateOutputHeight = updateOutputHeight;
}
function run() {
let now = Date.now();
let totalTests = tests.length + functions.length;
let successfulTests = 0;
let skippedTests = 0;
let currentTest = 0;
init();
// TODO: might want to unify 'tests' and 'functions' handling
// 1.) run commands and mappings tests
outer:
for (let [, test] in Iterator(tests)) {
currentTest++;
if (args.count >= 1 && currentTest != args.count)
continue;
let testDescription = util.clip(test.cmds.join(" -> "), 80);
for (let [, cmd] in Iterator(test.cmds)) {
if (skipTests.indexOf(cmd) != -1) {
skippedTests++;
dactyl.echomsg("Skipping test " + currentTest + " of " + totalTests + ": " + testDescription, 0);
continue outer;
}
};
commandline.echo("Running test " + currentTest + " of " + totalTests + ": " + testDescription, "Filter", commandline.APPEND_TO_MESSAGES);
resetEnvironment();
if ("init" in test)
test.init();
test.cmds.forEach(function (cmd) {
if (cmd[0] == ":")
dactyl.execute(cmd);
else
events.feedkeys(cmd);
});
if (!test.verify())
dactyl.echoerr("Test " + currentTest + " failed: " + testDescription);
else
successfulTests++;
}
// 2.) Run function tests
for (let [, func] in Iterator(functions)) {
currentTest++;
if (args.count >= 1 && currentTest != args.count)
continue;
commandline.echo("Running test " + currentTest + " of " + totalTests + ": " + util.clip(func.toString().replace(/[\s\n]+/gm, " "), 80), "Filter", commandline.APPEND_TO_MESSAGES);
resetEnvironment();
if (!func())
dactyl.echoerr("Test " + currentTest + " failed!");
else
successfulTests++;
}
cleanup();
let runTests = (args.count >= 1 ? 1 : totalTests) - skippedTests;
XML.ignoreWhitespace = false;
dactyl.echomsg(<e4x>
<span style="font-weight: bold">{successfulTests}</span> of <span style="font-weight: bold">{runTests}</span>
tests successfully completed (<span style="font-weight: bold">{skippedTests}</span> tests skipped) in
<span class="time-total">{((Date.now() - now) / 1000.0)}</span> msec
</e4x>.*);
dactyl.execute(":messages");
}
if (!args.bang) {
dactyl.echo(<e4x>
<span style="font-weight: bold">Running tests should always be done in a new profile.</span><br/>
It should not do any harm to your profile, but your current settings like options,
abbreviations or mappings might not be in the same state as before running the tests.
Just make sure, you don't :mkpentadactylrc, after running the tests.<br/><br/>
<!--' vim. -->
Use :regressions! to skip this prompt.
</e4x>.*);
commandline.input("Type 'yes' to run the tests: ", function (res) { if (res == "yes") run(); } );
return;
}
run();
},
{
bang: true,
argCount: "0",
count: true
});
// vim: set et sts=4 sw=4 :

View File

@@ -0,0 +1,37 @@
/* Based on vimperator.org home page layout. */
#main-container {
width: 775px;
margin: 55px auto;
}
#img-container {
display: table-cell;
vertical-align: middle;
width: 775px;
height: 440px;
border: 5px solid black;
background-repeat: no-repeat;
background-image: url(chrome://pentadactyl/content/about_background.png);
background-color: green;
border-spacing: 0px 10px;
-moz-border-radius: 10px;
}
#text-container {
float: right;
border: solid black;
white-space: pre-wrap;
font-family: monospace;
font-size: 13px;
font-weight: bold;
width: 500px;
height: 275px;
color: black;
background-color: rgb(176, 196, 222);
opacity: 0.75;
}
.key { color: blue; }
/* vim: set fdm=marker sw=4 ts=4 et: */

BIN
pentadactyl/skin/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B