├── .gitignore ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── License.txt ├── Makefile ├── README.md ├── assets └── logos │ ├── muttator.png │ ├── vimperator-labs-favicon-64x64.png │ ├── vimperator-labs-favicon.svg │ ├── vimperator-labs-white.png │ ├── vimperator-labs.svg │ └── vimperator.png ├── common ├── Makefile ├── components │ └── protocols.js ├── content │ ├── abbreviations.js │ ├── autocommands.js │ ├── base.js │ ├── bindings.xml │ ├── bookmarks.js │ ├── browser.js │ ├── buffer.js │ ├── buffer.xhtml │ ├── commandline.js │ ├── commands.js │ ├── completion.js │ ├── configbase.js │ ├── editor.js │ ├── eval.js │ ├── events.js │ ├── finder.js │ ├── help-single.xsl │ ├── help.css │ ├── help.js │ ├── help.xsl │ ├── hints.js │ ├── history.js │ ├── io.js │ ├── javascript.js │ ├── liberator-overlay.js │ ├── liberator.js │ ├── liberator.xul │ ├── mappings.js │ ├── marks.js │ ├── modes.js │ ├── modules.js │ ├── options.js │ ├── preferences.xul │ ├── quickmarks.js │ ├── sanitizer.js │ ├── services.js │ ├── statusline.js │ ├── style.js │ ├── tabs.js │ ├── template.js │ ├── util.js │ └── x-click-but21.png ├── javascript.vim ├── locale │ ├── en-US │ │ ├── all.xml │ │ ├── autocommands.xml │ │ ├── browsing.xml │ │ ├── buffer.xml │ │ ├── cmdline.xml │ │ ├── developer.xml │ │ ├── eval.xml │ │ ├── gui.xml │ │ ├── hints.xml │ │ ├── insert.xml │ │ ├── map.xml │ │ ├── marks.xml │ │ ├── message.xml │ │ ├── options.xml │ │ ├── pattern.xml │ │ ├── print.xml │ │ ├── repeat.xml │ │ ├── starting.xml │ │ ├── styling.xml │ │ ├── tabs.xml │ │ └── various.xml │ └── ja │ │ ├── all.xml │ │ ├── autocommands.xml │ │ ├── browsing.xml │ │ ├── buffer.xml │ │ ├── cmdline.xml │ │ ├── developer.xml │ │ ├── eval.xml │ │ ├── gui.xml │ │ ├── hints.xml │ │ ├── index.xml │ │ ├── insert.xml │ │ ├── map.xml │ │ ├── marks.xml │ │ ├── message.xml │ │ ├── options.xml │ │ ├── pattern.xml │ │ ├── print.xml │ │ ├── repeat.xml │ │ ├── starting.xml │ │ ├── styling.xml │ │ ├── tabs.xml │ │ └── various.xml ├── modules │ ├── storage.jsm │ └── template-tag.js ├── skin │ ├── liberator.css │ └── prompt.png └── updateURL.rdf.in ├── muttator ├── AUTHORS ├── Donors ├── Makefile ├── NEWS ├── TODO ├── chrome.manifest ├── components │ ├── commandline-handler.js │ └── protocols.js ├── content │ ├── addressbook.js │ ├── compose │ │ ├── compose.js │ │ ├── compose.xul │ │ ├── liberator.dtd │ │ └── liberator.xul │ ├── config.js │ ├── liberator.dtd │ ├── logo.png │ ├── mail.js │ ├── muttator.svg │ └── muttator.xul ├── contrib │ └── vim │ │ ├── Makefile │ │ ├── ftdetect │ │ └── muttator.vim │ │ ├── mkvimball.txt │ │ └── syntax │ │ └── muttator.vim ├── install.rdf ├── locale │ └── en-US │ │ ├── Makefile │ │ ├── all.xml │ │ ├── autocommands.xml │ │ ├── gui.xml │ │ ├── intro.xml │ │ └── tutorial.xml └── skin │ └── icon.png └── vimperator ├── AUTHORS ├── Donors ├── Makefile ├── NEWS ├── TODO ├── chrome.manifest ├── components ├── commandline-handler.js └── protocols.js ├── content ├── config.js ├── ignorekeys.js ├── liberator.dtd ├── logo.png ├── tabgroup.js ├── vimperator.svg └── vimperator.xul ├── install.rdf ├── locale ├── en-US │ ├── all.xml │ ├── autocommands.xml │ ├── browsing.xml │ ├── gui.xml │ ├── intro.xml │ ├── liberator.dtd │ ├── options.xml │ ├── tabs.xml │ └── tutorial.xml └── ja │ ├── all.xml │ ├── autocommands.xml │ ├── gui.xml │ ├── intro.xml │ ├── liberator.dtd │ ├── options.xml │ └── tutorial.xml ├── private.properties.in ├── skin └── icon.png └── vimperatorrc.example /.gitignore: -------------------------------------------------------------------------------- 1 | ## To see if new rules exclude any existing files, run 2 | ## 3 | ## git ls-files -i --exclude-standard 4 | ## 5 | ## after modifying this file. 6 | 7 | ## Generated by the build process 8 | *.xpi 9 | */locale/*/*.html 10 | */chrome 11 | */contrib/vim/*.vba 12 | downloads/ 13 | 14 | ## Editor backup and swap files 15 | *~ 16 | .\#* 17 | \#**\# 18 | .*.sw[op] 19 | .sw[op] 20 | 21 | ## Generated by Mac filesystem 22 | .DS_Store 23 | 24 | ## For rejects 25 | *.orig 26 | *.rej 27 | *.ancestor 28 | *.current 29 | *.patched 30 | 31 | ## Generated by StGit 32 | patches-* 33 | .stgit-*.txt 34 | 35 | ## Local configuration 36 | private.properties 37 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ##### Issue type: 2 | 3 | 4 | - Bug report 5 | - Feature request 6 | - Version compatibility 7 | 8 | ##### Version: 9 | 10 | ``` 11 | 12 | ``` 13 | 14 | ##### Description: 15 | 16 | 17 | 18 | ##### Expected behavior: 19 | 20 | 21 | 22 | ##### Steps to reproduce: 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006-2009 by Martin Stubenschrott 2 | 2007-2009 by Doug Kearns 3 | 2008-2009 by Kris Maglione 4 | 5 | For a full list of authors, refer the AUTHORS file. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a 8 | copy of this software and associated documentation files (the "Software"), 9 | to deal in the Software without restriction, including without limitation 10 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 11 | and/or sell copies of the Software, and to permit persons to whom the 12 | Software is furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20 | THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | DIRS = muttator vimperator 2 | TARGETS = clean help info xpi sign 3 | .SILENT: 4 | 5 | all: xpi ; 6 | 7 | $(TARGETS:%=\%.%): 8 | echo MAKE $@ 9 | $(MAKE) -C $* $(@:$*.%=%) TOPLEVEL=yes 10 | 11 | $(TARGETS): 12 | $(MAKE) $(DIRS:%=%.$@) 13 | 14 | -------------------------------------------------------------------------------- /assets/logos/muttator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/assets/logos/muttator.png -------------------------------------------------------------------------------- /assets/logos/vimperator-labs-favicon-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/assets/logos/vimperator-labs-favicon-64x64.png -------------------------------------------------------------------------------- /assets/logos/vimperator-labs-favicon.svg: -------------------------------------------------------------------------------- 1 | ~ -------------------------------------------------------------------------------- /assets/logos/vimperator-labs-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/assets/logos/vimperator-labs-white.png -------------------------------------------------------------------------------- /assets/logos/vimperator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/assets/logos/vimperator.png -------------------------------------------------------------------------------- /common/Makefile: -------------------------------------------------------------------------------- 1 | #### configuration 2 | 3 | BUILD_DATE = $(shell date "+%Y/%m/%d %H:%M:%S") 4 | COMMON_DIR = ../common 5 | 6 | DOC_FILES = $(foreach dir,locale/en-US,$(wildcard $(dir)/*.xml)) 7 | 8 | XPI_FILES = install.rdf TODO AUTHORS NEWS chrome.manifest ../License.txt 9 | XPI_DIRS = components $(COMMON_DIR)/components 10 | CHROME_DIRS = content skin 11 | COMMON_CHROME_DIRS = content skin modules 12 | 13 | XPI_NAME = $(NAME)-$(VERSION) 14 | XPI_PATH = ../downloads/$(XPI_NAME) 15 | XPI = $(XPI_PATH).xpi 16 | XPI_SIGNED = $(XPI_PATH)-signed.xpi 17 | UPD_RDF_PATH = ../downloads/$(NAME)-update.rdf 18 | 19 | ifeq ($(TOPLEVEL),) 20 | XPI_FILE = $(XPI) 21 | else 22 | XPI_FILE = downloads/$(XPI_NAME).xpi 23 | endif 24 | 25 | ### Locales 26 | L1 = $(shell ls locale) 27 | L2 = $(shell ls ../common/locale) 28 | L1_LEN = $(shell echo $(L1) | wc -c) 29 | L2_LEN = $(shell echo $(L2) | wc -c) 30 | OPTION = $(shell test $(L1_LEN) -gt $(L2_LEN) && echo 1) 31 | 32 | ifeq ($(OPTION),1) 33 | SUPPORTED_LOCALES = $(L1) 34 | else 35 | SUPPORTED_LOCALES = $(L2) 36 | endif 37 | 38 | LOCALE_MAP = . locale $(NAME)\n.. common/locale liberator\n 39 | 40 | .SILENT: 41 | 42 | #### rules 43 | 44 | TARGETS = all help info xpi clean sign 45 | $(TARGETS:%=\%.%): 46 | @echo MAKE $* $(@:$*.%=%) 47 | $(MAKE) -C $* $(@:$*.%=%) 48 | 49 | .PHONY: $(TARGETS) 50 | all: help 51 | 52 | help: 53 | @echo "$(NAME) $(VERSION) build" 54 | @echo 55 | @echo " make help - display this help" 56 | @echo " make info - show some info about the system" 57 | @echo " make xpi - build an XPI ($(XPI_NAME))" 58 | @echo " make clean - clean up" 59 | @echo " make sign - sign XPI (requires private.properties)" 60 | 61 | info: 62 | @echo "version $(VERSION)" 63 | @echo "release file $(XPI)" 64 | @echo "doc files $(DOC_FILES)" 65 | @echo "supported locales $(SUPPORTED_LOCALES)" 66 | @echo "xpi files $(XPI_FILES)" 67 | 68 | clean: 69 | @echo "General $(NAME) cleanup..." 70 | rm -f $(XPI) 71 | 72 | xpi: 73 | @echo "Building XPI..." 74 | # Create folder structure 75 | mkdir -p $(XPI_PATH)/common/locale 76 | mkdir -p $(XPI_PATH)/locale 77 | 78 | # Copy updateURL.rdf template 79 | cp -Lf ../common/updateURL.rdf.in $(UPD_RDF_PATH) 80 | 81 | # Copy top level files 82 | cp -L $(XPI_FILES) $(XPI_PATH) 83 | 84 | # Copy components and modules directories 85 | cp -LR $(XPI_DIRS) $(XPI_PATH) 86 | 87 | # Copy all chrome files from commmon/ folder 88 | cd $(COMMON_DIR) && \ 89 | cp -LR $(COMMON_CHROME_DIRS) $(XPI_PATH)/common 90 | 91 | # Copy all chrome files from vimperator|muttator folder 92 | cp -LR $(CHROME_DIRS) $(XPI_PATH) 93 | 94 | # Remove existing locale entries from the manifest file 95 | for locale in $(SUPPORTED_LOCALES); do \ 96 | sed -i'' -e "/$$locale/d" $(XPI_PATH)/chrome.manifest; \ 97 | done 98 | 99 | # Package up locale specific documentation files 100 | # * Create a folder for the requested locale in the build directory 101 | # * Copy the English version of the documentation files there 102 | # * Overwrite them with documentation files from the requested locale 103 | # * Add an entry for the requested locale in the chrome.manifest file 104 | for locale in $(SUPPORTED_LOCALES); do \ 105 | echo "Including $$locale documentation"; \ 106 | printf "$(LOCALE_MAP)" | \ 107 | while read parent dir name; do\ 108 | src=$$parent/$$dir/$$locale; \ 109 | dest=$(XPI_PATH)/$$dir/$$locale; \ 110 | mkdir -p $$dest; \ 111 | cp -LR $$parent/$$dir/en-US/. $$dest; \ 112 | test -d $$src && \ 113 | cp -LR $$src/. $$dest; \ 114 | echo "locale $$name $$locale $$dir/$$locale/" >> $(XPI_PATH)/chrome.manifest; \ 115 | done;\ 116 | done 117 | 118 | # Update locale paths in manifest file 119 | sed -i'' -e 's# ./locale/# locale/#' $(XPI_PATH)/chrome.manifest 120 | sed -i'' -e 's#../common/#common/#' $(XPI_PATH)/chrome.manifest 121 | 122 | @echo "Replacing UUID, VERSION, DATE and UPDATEURL tags" 123 | for file in `grep -rl -e "###UUID###" -e "###VERSION###" -e "###DATE###" $(XPI_PATH)` $(UPD_RDF_PATH); do \ 124 | sed -i'' -e "s,###UUID###,$(UUID),g" $${file}; \ 125 | sed -i'' -e "s,###VERSION###,$(VERSION),g" $${file}; \ 126 | sed -i'' -e "s,###MINVERSION###,$(MIN_VERSION),g" $${file}; \ 127 | sed -i'' -e "s,###MAXVERSION###,$(MAX_VERSION),g" $${file}; \ 128 | sed -i'' -e "s,###DATE###,$(BUILD_DATE),g" $${file}; \ 129 | sed -i'' -e "s,###UPDATEXPI###,$(UPDATE_URL_XPI),g" $${file}; \ 130 | if [ -n "$(UPDATE_URL)" ]; then \ 131 | sed -i'' -e "s,###UPDATEURL###,$(UPDATE_URL),g" $${file}; \ 132 | else \ 133 | sed -i'' -e "/###UPDATEURL###/d" $${file}; \ 134 | fi; \ 135 | done 136 | 137 | # Delete unknown file types 138 | find $(XPI_PATH) -type f \ 139 | ! -name 'AUTHORS' \ 140 | -a ! -name 'TODO' \ 141 | -a ! -name 'NEWS' \ 142 | -a ! -name 'install.rdf' \ 143 | -a ! -name 'chrome.manifest' \ 144 | -a ! -name 'License.txt' \ 145 | -a ! -name 'Makefile' \ 146 | -a ! -name '*.css' \ 147 | -a ! -name '*.dtd' \ 148 | -a ! -name '*.xml' \ 149 | -a ! -name '*.xul' \ 150 | -a ! -name '*.html' \ 151 | -a ! -name '*.xhtml' \ 152 | -a ! -name '*.xsl' \ 153 | -a ! -name '*.png' \ 154 | -a ! -name '*.svg' \ 155 | -a ! -name '*.js' \ 156 | -a ! -name '*.jsm' \ 157 | -delete 158 | 159 | # Zip the whole directory and remove dist folder 160 | @echo Packaging up $(XPI_NAME).xpi 161 | cd $(XPI_PATH) && zip -q -9r ../$(XPI_NAME).xpi * 162 | 163 | # Clean out build files 164 | rm -rf $(XPI_PATH) 165 | rm -rf ../downloads/common 166 | 167 | @echo "SUCCESS: $(XPI_FILE)" 168 | 169 | sign: xpi 170 | @echo "Signing XPI" 171 | jpm sign --api-key $(AMO_API_KEY) --api-secret $(AMO_API_SECRET) --xpi $(XPI) 172 | 173 | # Move downloaded file, see https://github.com/mozilla-jetpack/jpm/pull/544 174 | if [ `ls *-fx.xpi 2>/dev/null | wc -l` -eq 1 ]; then \ 175 | mv *-fx.xpi $(XPI_SIGNED); \ 176 | else \ 177 | exit 1; \ 178 | fi 179 | -------------------------------------------------------------------------------- /common/components/protocols.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2008-2009 Kris Maglione 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | 7 | /* Adds support for data: URIs with chrome privileges 8 | * and fragment identifiers. 9 | * 10 | * "chrome-data:" [; ]* "," [] 11 | * 12 | * By Kris Maglione, ideas from Ed Anuff's nsChromeExtensionHandler. 13 | */ 14 | 15 | const { classes: Cc, interfaces: Ci, utils: Cu } = Components; 16 | 17 | Cu.import("resource://gre/modules/Services.jsm"); 18 | Cu.import("resource://gre/modules/XPCOMUtils.jsm"); 19 | 20 | const NS_BINDING_ABORTED = 0x804b0002; 21 | const nsIProtocolHandler = Ci.nsIProtocolHandler; 22 | 23 | const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); 24 | 25 | let channel = Components.classesByID["{61ba33c0-3031-11d3-8cd0-0060b0fc14a3}"] 26 | .getService(Ci.nsIProtocolHandler) 27 | .newChannel(ioService.newURI("chrome://liberator/content/data", null, null)) 28 | .QueryInterface(Ci.nsIRequest); 29 | const systemPrincipal = channel.owner; 30 | channel.cancel(NS_BINDING_ABORTED); 31 | delete channel; 32 | 33 | function dataURL(type, data) "data:" + (type || "application/xml;encoding=UTF-8") + "," + encodeURIComponent(data) 34 | function makeChannel(url, orig) { 35 | if (typeof url == "function") 36 | url = dataURL.apply(null, url()); 37 | let uri = ioService.newURI(url, null, null); 38 | let channel = ioService.newChannelFromURI(uri); 39 | channel.owner = systemPrincipal; 40 | channel.originalURI = orig; 41 | return channel; 42 | } 43 | function fakeChannel(orig) makeChannel("chrome://liberator/content/does/not/exist", orig) 44 | function redirect(to, orig) { 45 | //xxx: escape 46 | let html = ''; 47 | return makeChannel(dataURL('text/html', html), ioService.newURI(to, null, null)); 48 | } 49 | 50 | function ChromeData() {} 51 | ChromeData.prototype = { 52 | contractID: "@mozilla.org/network/protocol;1?name=chrome-data", 53 | classID: Components.ID("{c1b67a07-18f7-4e13-b361-2edcc35a5a0d}"), 54 | classDescription: "Data URIs with chrome privileges", 55 | QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolHandler]), 56 | _xpcom_factory: { 57 | createInstance: function (outer, iid) { 58 | if (!ChromeData.instance) 59 | ChromeData.instance = new ChromeData(); 60 | if (outer != null) 61 | throw Components.results.NS_ERROR_NO_AGGREGATION; 62 | return ChromeData.instance.QueryInterface(iid); 63 | } 64 | }, 65 | 66 | scheme: "chrome-data", 67 | defaultPort: -1, 68 | allowPort: function (port, scheme) false, 69 | protocolFlags: nsIProtocolHandler.URI_NORELATIVE 70 | | nsIProtocolHandler.URI_NOAUTH 71 | | nsIProtocolHandler.URI_IS_UI_RESOURCE, 72 | 73 | newURI: function (spec, charset, baseURI) { 74 | var uri = Cc["@mozilla.org/network/standard-url;1"] 75 | .createInstance(Ci.nsIStandardURL) 76 | .QueryInterface(Ci.nsIURI); 77 | uri.init(uri.URLTYPE_STANDARD, this.defaultPort, spec, charset, null); 78 | return uri; 79 | }, 80 | 81 | newChannel: function (uri) { 82 | try { 83 | if (uri.scheme == this.scheme) 84 | return makeChannel(uri.spec.replace(/^.*?:\/*(.*)(?:#.*)?/, "data:$1"), uri); 85 | } 86 | catch (e) {} 87 | return fakeChannel(); 88 | } 89 | }; 90 | 91 | function Liberator() { 92 | this.wrappedJSObject = this; 93 | 94 | const self = this; 95 | this.HELP_TAGS = {}; 96 | this.FILE_MAP = {}; 97 | this.OVERLAY_MAP = {}; 98 | } 99 | Liberator.prototype = { 100 | contractID: "@mozilla.org/network/protocol;1?name=liberator", 101 | classID: Components.ID("{9c8f2530-51c8-4d41-b356-319e0b155c44}"), 102 | classDescription: "Liberator utility protocol", 103 | QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolHandler]), 104 | _xpcom_factory: { 105 | createInstance: function (outer, iid) { 106 | if (!Liberator.instance) 107 | Liberator.instance = new Liberator(); 108 | if (outer != null) 109 | throw Components.results.NS_ERROR_NO_AGGREGATION; 110 | return Liberator.instance.QueryInterface(iid); 111 | } 112 | }, 113 | 114 | init: function (obj) { 115 | for each (let prop in ["HELP_TAGS", "FILE_MAP", "OVERLAY_MAP"]) { 116 | this[prop] = this[prop].constructor(); 117 | for (let [k, v] in Iterator(obj[prop] || {})) 118 | this[prop][k] = v 119 | } 120 | }, 121 | 122 | scheme: "liberator", 123 | defaultPort: -1, 124 | allowPort: function (port, scheme) false, 125 | protocolFlags: 0 126 | | nsIProtocolHandler.URI_IS_UI_RESOURCE 127 | | nsIProtocolHandler.URI_IS_LOCAL_RESOURCE, 128 | 129 | newURI: function (spec, charset, baseURI) { 130 | var uri = Cc["@mozilla.org/network/standard-url;1"] 131 | .createInstance(Ci.nsIStandardURL) 132 | .QueryInterface(Ci.nsIURI); 133 | uri.init(uri.URLTYPE_STANDARD, this.defaultPort, spec, charset, baseURI); 134 | 135 | return uri; 136 | }, 137 | 138 | newChannel: function (uri) { 139 | try { 140 | let url; 141 | switch(uri.host) { 142 | case "help": 143 | url = this.FILE_MAP[uri.path.replace(/^\/|#.*/g, "")]; 144 | return makeChannel(url, uri); 145 | case "help-overlay": 146 | url = this.OVERLAY_MAP[uri.path.replace(/^\/|#.*/g, "")]; 147 | return makeChannel(url, uri); 148 | case "help-tag": 149 | let tag = uri.path.substr(1); 150 | if (tag in this.HELP_TAGS) 151 | return redirect("liberator://help/" + this.HELP_TAGS[tag] + "#" + tag, uri); 152 | } 153 | } 154 | catch (e) { Cu.reportError(e); } 155 | return fakeChannel(uri); 156 | } 157 | }; 158 | 159 | var components = [ChromeData, Liberator]; 160 | 161 | if(XPCOMUtils.generateNSGetFactory) 162 | var NSGetFactory = XPCOMUtils.generateNSGetFactory(components); 163 | else 164 | function NSGetModule(compMgr, fileSpec) XPCOMUtils.generateModule(components) 165 | 166 | // vim: set fdm=marker sw=4 ts=4 et: 167 | -------------------------------------------------------------------------------- /common/content/bindings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /common/content/buffer.xhtml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | <style><![CDATA[ 8 | html { 9 | overflow: hidden; 10 | } 11 | ]]></style> 12 | </head> 13 | <body/> 14 | </html> 15 | -------------------------------------------------------------------------------- /common/content/configbase.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | const ConfigBase = Class(ModuleBase, { 7 | /** 8 | * @property {[["string", "string"]]} A sequence of names and descriptions 9 | * of the autocommands available in this application. Primarily used 10 | * for completion results. 11 | */ 12 | autocommands: [], 13 | 14 | get browser() window.gBrowser, 15 | get tabbrowser() window.gBrowser, 16 | 17 | get browserModes() [modes.NORMAL], 18 | 19 | /** 20 | * @property {Object} Application specific defaults for option values. The 21 | * property names must be the options' canonical names, and the values 22 | * must be strings as entered via :set. 23 | */ 24 | defaults: { toolbars: "" }, 25 | 26 | /** 27 | * @property {[["string", "string", "function"]]} An array of 28 | * dialogs available via the :dialog command. 29 | * [0] name - The name of the dialog, used as the first 30 | * argument to :dialog. 31 | * [1] description - A description of the dialog, used in 32 | * command completion results for :dialog. 33 | * [2] action - The function executed by :dialog. 34 | */ 35 | dialogs: [], 36 | 37 | /** 38 | * @property {string[]} A list of features available in this 39 | * application. Used extensively in feature test macros. Use 40 | * liberator.has(feature) to check for a feature's presence 41 | * in this array. 42 | */ 43 | features: new Set, 44 | 45 | guioptions: {}, 46 | 47 | hasTabbrowser: false, 48 | 49 | /** 50 | * @property {string} The name of the application that hosts the 51 | * “liberated” application. E.g., "Firefox" or "Xulrunner". 52 | */ 53 | hostApplication: null, 54 | 55 | /** 56 | * @property {function} Called on liberator startup to allow for any 57 | * arbitrary application-specific initialization code. 58 | */ 59 | init: function () {}, 60 | 61 | /** 62 | * @property {Object} A map between key names for key events should be ignored, 63 | * and a mask of the modes in which they should be ignored. 64 | */ 65 | ignoreKeys: {}, // XXX: be aware you can't put useful values in here, as "modes.NORMAL" etc. are not defined at this time 66 | 67 | /** 68 | * @property {string} The ID of the application's main XUL window. 69 | */ 70 | mainWindowId: document.documentElement.id, 71 | 72 | /** 73 | * @property {[[]]} An array of application specific mode specifications. 74 | * The values of each mode are passed to modes.addMode during 75 | * liberator startup. 76 | */ 77 | modes: [], 78 | 79 | /** 80 | * @property {string} The name of “liberated” application. 81 | * Required. 82 | */ 83 | name: null, 84 | 85 | /** 86 | * @property {number} The height (px) that is available to the output 87 | * window. 88 | */ 89 | get outputHeight() config.browser.mPanelContainer.boxObject.height, 90 | 91 | /** 92 | * @property {[string]} A list of extra scripts in the liberator or 93 | * application namespaces which should be loaded before liberator 94 | * initialization. 95 | */ 96 | scripts: [], 97 | 98 | /** 99 | * @property {Object} A list of toolbars which can be shown/hidden 100 | * with :set toolbars 101 | */ 102 | toolbars: {}, 103 | 104 | /** 105 | * @property {string} The leaf name of any temp files created by 106 | * {@link io.createTempFile}. 107 | */ 108 | get tempFile() this.name.toLowerCase() + ".tmp", 109 | 110 | updateTitlebar: function () {}, 111 | }); 112 | 113 | // vim: set fdm=marker sw=4 ts=4 et: 114 | -------------------------------------------------------------------------------- /common/content/eval.js: -------------------------------------------------------------------------------- 1 | try { __liberator_eval_result = eval(__liberator_eval_string); 2 | } 3 | catch (e) { 4 | __liberator_eval_error = e; 5 | } 6 | // IMPORTANT: The eval statement *must* remain on the first line 7 | // in order for line numbering in any errors to remain correct. 8 | 9 | // Copyright (c) 2008-2009 by Kris Maglione <maglione.k at Gmail> 10 | // 11 | // This work is licensed for reuse under an MIT license. Details are 12 | // given in the License.txt file included with this file. 13 | 14 | // vim: set fdm=marker sw=4 ts=4 et: 15 | -------------------------------------------------------------------------------- /common/content/help-single.xsl: -------------------------------------------------------------------------------- 1 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 2 | 3 | <xsl:stylesheet version="1.0" 4 | xmlns="http://www.w3.org/1999/xhtml" 5 | xmlns:html="http://www.w3.org/1999/xhtml" 6 | xmlns:liberator="http://vimperator.org/namespaces/liberator" 7 | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 8 | xmlns:str="http://exslt.org/strings" 9 | xmlns:exsl="http://exslt.org/common" 10 | extension-element-prefixes="exsl str"> 11 | 12 | <xsl:output method="xml" indent="no"/> 13 | 14 | <xsl:variable name="root" select="/liberator:document | /liberator:overlay"/> 15 | <xsl:variable name="tags"> 16 | <xsl:text> </xsl:text> 17 | <xsl:for-each select="$root//@tag|$root//liberator:tags/text()|$root//liberator:tag/text()"> 18 | <xsl:value-of select="concat(., ' ')"/> 19 | </xsl:for-each> 20 | </xsl:variable> 21 | 22 | <xsl:template name="parse-tags"> 23 | <xsl:param name="text"/> 24 | <div liberator:highlight="HelpTags"> 25 | <xsl:for-each select="str:tokenize($text)"> 26 | <a id="{.}" liberator:highlight="HelpTag"><xsl:value-of select="."/></a> 27 | </xsl:for-each> 28 | </div> 29 | </xsl:template> 30 | 31 | <xsl:template match="/"> 32 | <xsl:call-template name="parse-tags"> 33 | <xsl:with-param name="text" select="$tags"/> 34 | </xsl:call-template> 35 | </xsl:template> 36 | </xsl:stylesheet> 37 | -------------------------------------------------------------------------------- /common/content/help.css: -------------------------------------------------------------------------------- 1 | .main { 2 | font-family: -moz-fixed; 3 | white-space: -moz-pre-wrap; 4 | width: 800px; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | 9 | h1 { 10 | text-align: center; 11 | } 12 | 13 | .tagline { 14 | text-align: center; 15 | font-weight: bold; 16 | } 17 | 18 | table.vimperator { 19 | border-width: 1px; 20 | border-style: dotted; 21 | border-color: gray; 22 | /*margin-bottom: 2em; /* FIXME: just a quick hack until we have proper pages */ 23 | } 24 | table.vimperator td { 25 | border: none; 26 | padding: 3px; 27 | } 28 | .separator { 29 | height: 10px; 30 | } 31 | hr { 32 | height: 1px; 33 | background-color: white; 34 | border-style: none; 35 | margin-top: 0; 36 | margin-bottom: 0; 37 | } 38 | td.taglist { 39 | text-align: right; 40 | vertical-align: top; 41 | border-spacing: 13px 10px; 42 | } 43 | td.taglist td { 44 | width: 100px; 45 | padding: 3px 0; 46 | } 47 | tr.taglist code, td.usage code { 48 | margin: 0 2px; 49 | } 50 | td.usage code { 51 | white-space: nowrap; 52 | } 53 | td.taglist code { 54 | margin-left: 2em; 55 | } 56 | .tag { 57 | font-weight: bold; 58 | color: rgb(255, 0, 255); /* magenta */ 59 | padding-left: 5px; 60 | } 61 | .description { 62 | margin-bottom: 4px; 63 | } 64 | .commands { 65 | background-color: rgb(250, 240, 230); 66 | color: black; 67 | } 68 | .mappings { 69 | background-color: rgb(230, 240, 250); 70 | color: black; 71 | } 72 | .options { 73 | background-color: rgb(240, 250, 230); 74 | color: black; 75 | } 76 | 77 | .paypal { 78 | border: none; 79 | } 80 | 81 | .argument { 82 | color: #6A97D4; 83 | } 84 | 85 | .command { 86 | font-weight: bold; 87 | color: #632610; 88 | } 89 | 90 | .mapping { 91 | font-weight: bold; 92 | color: #102663; 93 | } 94 | 95 | .option { 96 | font-weight: bold; 97 | color: #106326; 98 | } 99 | 100 | .code { 101 | color: #108826; 102 | } 103 | 104 | .shorthelp { 105 | font-weight: bold; 106 | } 107 | 108 | .version { 109 | position: absolute; 110 | top: 10px; 111 | right: 2%; 112 | color: #C0C0C0; 113 | text-align: right; 114 | } 115 | 116 | .warning { 117 | font-weight: bold; 118 | color: red; 119 | } 120 | 121 | /* vim: set fdm=marker sw=4 ts=4 et: */ 122 | -------------------------------------------------------------------------------- /common/content/help.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 by Kris Maglione <kris@vimperator.org> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | 7 | function checkFragment() { 8 | document.title = document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "title")[0].textContent; 9 | var frag = document.location.hash.substr(1); 10 | var elem = document.getElementById(frag); 11 | if (elem) 12 | window.content.scrollTo(0, window.content.scrollY + elem.getBoundingClientRect().top - 10); // 10px context 13 | } 14 | 15 | document.addEventListener("load", checkFragment, true); 16 | window.addEventListener("message", function (event) { 17 | if (event.data == "fragmentChange") 18 | checkFragment(); 19 | }, true); 20 | 21 | // vim: set fdm=marker sw=4 ts=4 et: 22 | -------------------------------------------------------------------------------- /common/content/liberator-overlay.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2008-2009 Kris Maglione <maglione.k at Gmail> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | (function () { 7 | const modules = {}; 8 | const BASE = "chrome://liberator/content/"; 9 | 10 | modules.modules = modules; 11 | 12 | const loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] 13 | .getService(Components.interfaces.mozIJSSubScriptLoader); 14 | function load(script) { 15 | for (let [i, base] in Iterator(prefix)) { 16 | try { 17 | loader.loadSubScript(base + script, modules); 18 | return; 19 | } 20 | catch (e) { 21 | if (i + 1 < prefix.length) 22 | continue; 23 | if (Components.utils.reportError) 24 | Components.utils.reportError(e); 25 | dump("liberator: Error loading script " + script + ": " + e + "\n"); 26 | dump(e.stack + "\n"); 27 | } 28 | } 29 | } 30 | 31 | let prefix = [BASE]; 32 | 33 | Components.utils.import("resource://liberator/template-tag.js", modules); 34 | 35 | // TODO: This list is much too long, we should try to minimize 36 | // the number of required components for easier porting to new applications 37 | ["base.js", 38 | "modules.js", 39 | "abbreviations.js", 40 | "autocommands.js", 41 | "buffer.js", 42 | "commandline.js", 43 | "commands.js", 44 | "completion.js", 45 | "configbase.js", 46 | "config.js", 47 | "liberator.js", 48 | "editor.js", 49 | "events.js", 50 | "finder.js", 51 | "hints.js", 52 | "io.js", 53 | "javascript.js", 54 | "mappings.js", 55 | "marks.js", 56 | "modes.js", 57 | "options.js", 58 | "services.js", 59 | "statusline.js", 60 | "style.js", 61 | "template.js", 62 | "util.js", 63 | ].forEach(load); 64 | 65 | prefix.unshift("chrome://" + modules.Config.prototype.name.toLowerCase() + "/content/"); 66 | modules.Config.prototype.scripts.forEach(load); 67 | 68 | })(); 69 | 70 | // vim: set fdm=marker sw=4 ts=4 et: 71 | -------------------------------------------------------------------------------- /common/content/modules.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 by Kris Maglione <maglione.k@gmail.com> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | /** 7 | * @class ModuleBase 8 | * The base class for all modules. 9 | */ 10 | const ModuleBase = Class("ModuleBase", { 11 | /** 12 | * @property {[string]} A list of module prerequisites which 13 | * must be initialized before this module is loaded. 14 | */ 15 | requires: [], 16 | 17 | toString: function () "[module " + this.constructor.name + "]" 18 | }); 19 | 20 | /** 21 | * @constructor Module 22 | * 23 | * Constructs a new ModuleBase class and makes arrangements for its 24 | * initialization. Arguments marked as optional must be either 25 | * entirely elided, or they must have the exact type specified. 26 | * Loading semantics are as follows: 27 | * 28 | * - A module is guaranteed not to be initialized before any of its 29 | * prerequisites as listed in its {@see ModuleBase#requires} member. 30 | * - A module is considered initialized once it's been instantiated, 31 | * its {@see Class#init} method has been called, and its 32 | * instance has been installed into the top-level {@see modules} 33 | * object. 34 | * - Once the module has been initialized, its module-dependent 35 | * initialization functions will be called as described hereafter. 36 | * @param {string} name The module's name as it will appear in the 37 | * top-level {@see modules} object. 38 | * @param {ModuleBase} base The base class for this module. 39 | * @optional 40 | * @param {Object} prototype The prototype for instances of this 41 | * object. The object itself is copied and not used as a prototype 42 | * directly. 43 | * @param {Object} classProperties The class properties for the new 44 | * module constructor. 45 | * @optional 46 | * @param {Object} moduleInit The module initialization functions 47 | * for the new module. Each function is called as soon as the named module 48 | * has been initialized, but after the module itself. The constructors are 49 | * guaranteed to be called in the same order that the dependent modules 50 | * were initialized. 51 | * @optional 52 | * 53 | * @returns {function} The constructor for the resulting module. 54 | */ 55 | function Module(name, prototype, classProperties, moduleInit) { 56 | var base = ModuleBase; 57 | if (callable(prototype)) 58 | base = Array.splice(arguments, 1, 1)[0]; 59 | const module = Class(name, base, prototype, classProperties); 60 | module.INIT = moduleInit || {}; 61 | module.requires = prototype.requires || []; 62 | Module.list.push(module); 63 | Module.constructors[name] = module; 64 | return module; 65 | } 66 | Module.list = []; 67 | Module.constructors = {}; 68 | 69 | window.addEventListener("load", function onload() { 70 | window.removeEventListener("load", onload, false); 71 | 72 | function dump(str) window.dump(String.replace(str, /\n?$/, "\n").replace(/^/m, Config.prototype.name.toLowerCase() + ": ")) 73 | const start = Date.now(); 74 | const deferredInit = { load: [] }; 75 | const seen = new Set(); 76 | const loaded = []; 77 | 78 | function load(module, prereq) { 79 | try { 80 | if (module.name in modules) 81 | return; 82 | if (seen.has(module.name)) 83 | throw Error("Module dependency loop"); 84 | seen.add(module.name); 85 | 86 | for (let dep of module.requires) 87 | load(Module.constructors[dep], module.name); 88 | 89 | dump("Load" + (isstring(prereq) ? " " + prereq + " dependency: " : ": ") + module.name); 90 | modules[module.name] = module(); 91 | loaded.push(module.name); 92 | 93 | function init(mod, module) 94 | function () module.INIT[mod].call(modules[module.name], modules[mod]) 95 | for (let mod of loaded) { 96 | try { 97 | if (mod in module.INIT) 98 | init(mod, module)(); 99 | delete module.INIT[mod]; 100 | } 101 | catch (e) { 102 | if (modules.liberator) 103 | liberator.echoerr(e); 104 | } 105 | } 106 | for (let mod of Object.keys(module.INIT)) { 107 | deferredInit[mod] = deferredInit[mod] || []; 108 | deferredInit[mod].push(init(mod, module)); 109 | } 110 | for (let fn of deferredInit[module.name] || []) 111 | fn(); 112 | } 113 | catch (e) { 114 | dump("Loading " + (module && module.name) + ": " + e + "\n"); 115 | if (e.stack) 116 | dump(e.stack); 117 | } 118 | } 119 | Module.list.forEach(load); 120 | deferredInit.load.forEach(call); 121 | 122 | for (let module of Module.list) 123 | delete module.INIT; 124 | 125 | dump("Loaded in " + (Date.now() - start) + "ms\n"); 126 | }, false); 127 | 128 | window.addEventListener("unload", function onunload() { 129 | window.removeEventListener("unload", onunload, false); 130 | for (let [, mod] in iter(modules)) 131 | if (mod instanceof ModuleBase && "destroy" in mod) 132 | mod.destroy(); 133 | }, false); 134 | 135 | // vim: set fdm=marker sw=4 ts=4 et: 136 | -------------------------------------------------------------------------------- /common/content/preferences.xul: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 3 | <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 4 | <script type="application/javascript;version=1.8"> 5 | let uri = Components.classes["@mozilla.org/network/io-service;1"] 6 | .getService(Components.interfaces.nsIIOService) 7 | .newURI("liberator://help/options", null, null); 8 | <!--Application.activeWindow.open(uri).focus(); // TODO: generalise for Muttator et al.--> 9 | window.close(); 10 | </script> 11 | </window> 12 | 13 | <!-- vim: set fdm=marker sw=4 ts=4 et: --> 14 | -------------------------------------------------------------------------------- /common/content/quickmarks.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | /** @scope modules */ 7 | 8 | /** 9 | * @instance quickmarks 10 | */ 11 | const QuickMarks = Module("quickmarks", { 12 | requires: ["config", "storage"], 13 | 14 | init: function () { 15 | this._qmarks = storage.newMap("quickmarks", { store: true }); 16 | }, 17 | 18 | /** 19 | * Adds a new quickmark with name <b>qmark</b> referencing 20 | * the URL <b>location</b>. Any existing quickmark with the same name 21 | * will be replaced. 22 | * 23 | * @param {string} qmark The name of the quickmark {A-Z}. 24 | * @param {string} location The URL accessed by this quickmark. 25 | */ 26 | add: function add(qmark, location) { 27 | this._qmarks.set(qmark, location); 28 | liberator.echomsg("Added QuickMark '" + qmark + "': " + location); 29 | }, 30 | 31 | /** 32 | * Deletes the specified quickmarks. The <b>filter</b> is a list of 33 | * quickmarks and ranges are supported. Eg. "ab c d e-k". 34 | * 35 | * @param {string} filter The list of quickmarks to delete. 36 | * 37 | */ 38 | remove: function remove(filter) { 39 | let pattern = RegExp("[" + filter.replace(/\s+/g, "") + "]"); 40 | 41 | for (let [qmark, ] in this._qmarks) { 42 | if (pattern.test(qmark)) 43 | this._qmarks.remove(qmark); 44 | } 45 | }, 46 | 47 | /** 48 | * Removes all quickmarks. 49 | */ 50 | removeAll: function removeAll() { 51 | this._qmarks.clear(); 52 | }, 53 | 54 | /** 55 | * Opens the URL referenced by the specified <b>qmark</b>. 56 | * 57 | * @param {string} qmark The quickmark to open. 58 | * @param {number} where A constant describing where to open the page. 59 | * See {@link Liberator#open}. 60 | */ 61 | jumpTo: function jumpTo(qmark, where) { 62 | let url = this._qmarks.get(qmark); 63 | 64 | if (url) 65 | liberator.open(url, where); 66 | else 67 | liberator.echoerr("QuickMark not set: " + qmark); 68 | }, 69 | 70 | /** 71 | * Lists all quickmarks matching <b>filter</b> in the message window. 72 | * 73 | * @param {string} filter The list of quickmarks to display. Eg. "abc" 74 | * Ranges are not supported. 75 | */ 76 | // FIXME: filter should match that of quickmarks.remove or vice versa 77 | list: function list(filter) { 78 | let marks = Array.from(iter(this._qmarks)).map(([k, v]) => k); 79 | let lowercaseMarks = marks.filter(function (x) /[a-z]/.test(x)).sort(); 80 | let uppercaseMarks = marks.filter(function (x) /[A-Z]/.test(x)).sort(); 81 | let numberMarks = marks.filter(function (x) /[0-9]/.test(x)).sort(); 82 | 83 | marks = Array.concat(lowercaseMarks, uppercaseMarks, numberMarks); 84 | 85 | liberator.assert(marks.length > 0, "No QuickMarks set"); 86 | 87 | if (filter.length > 0) { 88 | marks = marks.filter(function (qmark) filter.indexOf(qmark) >= 0); 89 | liberator.assert(marks.length >= 0, "No matching QuickMarks for: " + filter); 90 | } 91 | 92 | let items = marks.map(mark => [mark, this._qmarks.get(mark)]); 93 | template.genericTable(items, { title: ["QuickMark", "URL"] }); 94 | } 95 | }, { 96 | }, { 97 | commands: function () { 98 | commands.add(["delqm[arks]"], 99 | "Delete the specified QuickMarks", 100 | function (args) { 101 | // TODO: finish arg parsing - we really need a proper way to do this. :) 102 | // assert(args.bang ^ args.string) 103 | liberator.assert( args.bang || args.string, "Argument required"); 104 | liberator.assert(!args.bang || !args.string, "Invalid argument"); 105 | 106 | if (args.bang) 107 | quickmarks.removeAll(); 108 | else 109 | quickmarks.remove(args.string); 110 | }, 111 | { 112 | bang: true, 113 | completer: function (context) { 114 | context.title = ["QuickMark", "URL"]; 115 | context.completions = quickmarks._qmarks; 116 | } 117 | }); 118 | 119 | commands.add(["qma[rk]"], 120 | "Mark a URL with a letter for quick access", 121 | function (args) { 122 | let matches = args.string.match(/^([a-zA-Z0-9])(?:\s+(.+))?$/); 123 | if (!matches) 124 | liberator.echoerr("Trailing characters"); 125 | else if (!matches[2]) 126 | quickmarks.add(matches[1], buffer.URL); 127 | else 128 | quickmarks.add(matches[1], matches[2]); 129 | }, 130 | { argCount: "+" }); 131 | 132 | commands.add(["qmarks"], 133 | "Show all QuickMarks", 134 | function (args) { 135 | args = args.string; 136 | 137 | // ignore invalid qmark characters unless there are no valid qmark chars 138 | liberator.assert(!args || /[a-zA-Z0-9]/.test(args), "No matching QuickMarks for: " + args); 139 | 140 | let filter = args.replace(/[^a-zA-Z0-9]/g, ""); 141 | quickmarks.list(filter); 142 | }); 143 | }, 144 | mappings: function () { 145 | var myModes = config.browserModes; 146 | 147 | mappings.add(myModes, 148 | ["go"], "Jump to a QuickMark", 149 | function (arg) { quickmarks.jumpTo(arg, liberator.CURRENT_TAB); }, 150 | { arg: true }); 151 | 152 | mappings.add(myModes, 153 | ["gn"], "Jump to a QuickMark in a new tab", 154 | function (arg) { 155 | quickmarks.jumpTo(arg, 156 | options.get("activate").has("all", "quickmark") ? 157 | liberator.NEW_TAB : liberator.NEW_BACKGROUND_TAB); 158 | }, 159 | { arg: true }); 160 | 161 | mappings.add(myModes, 162 | ["gw"], "Jump to a QuickMark in a new window", 163 | function (arg) { 164 | quickmarks.jumpTo(arg, liberator.NEW_WINDOW); 165 | }, 166 | { arg: true }); 167 | 168 | mappings.add(myModes, 169 | ["M"], "Add new QuickMark for current URL", 170 | function (arg) { 171 | liberator.assert(/^[a-zA-Z0-9]$/.test(arg)); 172 | quickmarks.add(arg, buffer.URL); 173 | }, 174 | { arg: true }); 175 | } 176 | }); 177 | 178 | // vim: set fdm=marker sw=4 ts=4 et: 179 | -------------------------------------------------------------------------------- /common/content/services.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2008-2009 by Kris Maglione <maglione.k at Gmail> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | /** @scope modules */ 7 | 8 | /** 9 | * Cached XPCOM services and classes. 10 | * 11 | * @constructor 12 | */ 13 | const Services = Module("services", { 14 | ABOUT: "@mozilla.org/network/protocol/about;1?what=", 15 | init: function () { 16 | this.classes = {}; 17 | this.jsm = window.Services; 18 | let autoCompleteSearchQueryValue = "unifiedcomplete"; 19 | if (this.jsm["vc"].compare(VERSION, "49") < 0) { 20 | autoCompleteSearchQueryValue = "history"; 21 | } 22 | this.services = { 23 | "autoCompleteSearch": { 24 | class_: "@mozilla.org/autocomplete/search;1?name=" + autoCompleteSearchQueryValue, 25 | iface: Ci.nsIAutoCompleteSearch 26 | }, 27 | "bookmarks": { 28 | class_: "@mozilla.org/browser/nav-bookmarks-service;1", 29 | iface: Ci.nsINavBookmarksService 30 | }, 31 | "liberator:": { 32 | class_: "@mozilla.org/network/protocol;1?name=liberator" 33 | }, 34 | "debugger": { 35 | class_: "@mozilla.org/js/jsd/debugger-service;1", 36 | iface: Ci.jsdIDebuggerService 37 | }, 38 | "environment": { 39 | class_: "@mozilla.org/process/environment;1", 40 | iface: Ci.nsIEnvironment 41 | }, 42 | "favicon": { 43 | class_: "@mozilla.org/browser/favicon-service;1", 44 | iface: Ci.nsIFaviconService 45 | }, 46 | "history": { 47 | class_: "@mozilla.org/browser/nav-history-service;1", 48 | iface: [Ci.nsINavHistoryService, Ci.nsIBrowserHistory] 49 | }, 50 | "profile": { 51 | class_: "@mozilla.org/toolkit/profile-service;1", 52 | iface: Ci.nsIToolkitProfileService 53 | }, 54 | "rdf": { 55 | class_: "@mozilla.org/rdf/rdf-service;1", 56 | iface: Ci.nsIRDFService 57 | }, 58 | "sessionStore": { 59 | class_: "@mozilla.org/browser/sessionstore;1", 60 | iface: Ci.nsISessionStore 61 | }, 62 | "threadManager": { 63 | class_: "@mozilla.org/thread-manager;1", 64 | iface: Ci.nsIThreadManager 65 | }, 66 | "UUID": { 67 | class_: "@mozilla.org/uuid-generator;1", 68 | iface: Ci.nsIUUIDGenerator 69 | }, 70 | "textToSubURI": { 71 | class_: "@mozilla.org/intl/texttosuburi;1", 72 | iface: Ci.nsITextToSubURI 73 | }, 74 | }; 75 | 76 | this.addClass("file", "@mozilla.org/file/local;1", Ci.nsILocalFile); 77 | this.addClass("file:", "@mozilla.org/network/protocol;1?name=file", Ci.nsIFileProtocolHandler); 78 | this.addClass("find", "@mozilla.org/embedcomp/rangefind;1", Ci.nsIFind); 79 | this.addClass("process", "@mozilla.org/process/util;1", Ci.nsIProcess); 80 | this.addClass("timer", "@mozilla.org/timer;1", Ci.nsITimer); 81 | }, 82 | 83 | _create: function (classes, ifaces, meth) { 84 | try { 85 | let res = Cc[classes][meth || "getService"](); 86 | if (!ifaces) 87 | return res.wrappedJSObject; 88 | ifaces = Array.concat(ifaces); 89 | ifaces.forEach(function (iface) res.QueryInterface(iface)); 90 | return res; 91 | } 92 | catch (e) { 93 | // liberator.log() is not defined at this time, so just dump any error 94 | dump("Service creation failed for '" + classes + "': " + e + "\n"); 95 | return null; 96 | } 97 | }, 98 | 99 | /** 100 | * Adds a new XPCOM service to the cache. 101 | * 102 | * @param {string} name The service's cache key. 103 | * @param {string} class The class's contract ID. 104 | * @param {nsISupports|nsISupports[]} ifaces The interface or array of 105 | * interfaces implemented by this service. 106 | * @param {string} meth The name of the function used to instanciate 107 | * the service. 108 | */ 109 | add: function (name, class_, ifaces, meth) { 110 | this.services[name] = {"class_": class_, "iface": ifaces, "meth": meth}; 111 | }, 112 | 113 | /** 114 | * Adds a new XPCOM class to the cache. 115 | * 116 | * @param {string} name The class's cache key. 117 | * @param {string} class The class's contract ID. 118 | * @param {nsISupports|nsISupports[]} ifaces The interface or array of 119 | * interfaces implemented by this class. 120 | */ 121 | addClass: function (name, class_, ifaces) { 122 | const self = this; 123 | return this.classes[name] = function () self._create(class_, ifaces, "createInstance"); 124 | }, 125 | 126 | /** 127 | * Returns the cached service with the specified name. 128 | * 129 | * @param {string} name The service's cache key. 130 | */ 131 | get: function (name) { 132 | if (this.jsm.hasOwnProperty(name)) 133 | return this.jsm[name]; 134 | 135 | if (!this.services.hasOwnProperty(name)) 136 | throw Error("Could not get service: " + name); 137 | 138 | if (!this.services[name].reference) { 139 | var currentService = this.services[name]; 140 | 141 | this.services[name].reference = this._create(currentService.class_, currentService.iface, currentService.meth); 142 | } 143 | 144 | return this.services[name].reference; 145 | }, 146 | 147 | /** 148 | * Returns a new instance of the cached class with the specified name. 149 | * 150 | * @param {string} name The class's cache key. 151 | */ 152 | create: function (name) this.classes[name]() 153 | }, 154 | window.Services, 155 | { 156 | completion: function () { 157 | JavaScript.setCompleter(this.get, [ 158 | function () Object.keys(services.jsm).concat(Object.keys(services.services)).map(function(key) [key, ""]) 159 | ]); 160 | JavaScript.setCompleter(this.create, [function () Object.keys(services.classes).map(c => [c, ""])]); 161 | } 162 | }); 163 | 164 | // vim: set fdm=marker sw=4 ts=4 et: 165 | -------------------------------------------------------------------------------- /common/content/x-click-but21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/common/content/x-click-but21.png -------------------------------------------------------------------------------- /common/locale/en-US/all.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="all" 8 | title="&liberator.appname; All" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <tags>all</tags> 12 | 13 | <toc/> 14 | 15 | <include href="intro" tag="intro.html"/> 16 | <include href="starting" tag="starting.html"/> 17 | <include href="browsing" tag="browsing.html"/> 18 | <include href="buffer" tag="buffer.html"/> 19 | <include href="cmdline" tag="cmdline.html"/> 20 | <include href="insert" tag="insert.html"/> 21 | <include href="options" tag="options.html"/> 22 | <include href="pattern" tag="pattern.html"/> 23 | <include href="tabs" tag="tabs.html"/> 24 | <include href="hints" tag="hints.html"/> 25 | <include href="map" tag="map.html"/> 26 | <include href="eval" tag="eval.html"/> 27 | <include href="marks" tag="marks.html"/> 28 | <include href="repeat" tag="repeat.html"/> 29 | <include href="autocommands" tag="autocommands.html"/> 30 | <include href="print" tag="print.html"/> 31 | <include href="gui" tag="gui.html"/> 32 | <include href="styling" tag="styling.html"/> 33 | <include href="message" tag="message.html"/> 34 | <include href="developer" tag="developer.html"/> 35 | <include href="various" tag="various.html"/> 36 | <include href="plugins" tag="plugins.html"/> 37 | <include href="index" tag="index.html"/> 38 | 39 | </document> 40 | <!-- vim:se sts=4 sw=4 et: --> 41 | -------------------------------------------------------------------------------- /common/locale/en-US/autocommands.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="autocommands" 8 | title="&liberator.appname; Autocommands" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="autocommands">Automatic commands</h1> 12 | <toc start="2"/> 13 | 14 | <p> 15 | Autocommands are a way to automatically execute code when 16 | certain events happen. 17 | </p> 18 | 19 | <item> 20 | <tags>:au :autocmd</tags> 21 | <spec>:au[tocmd]</spec> 22 | <description> 23 | <p>Execute commands automatically on events.</p> 24 | 25 | <p><ex>:au[tocmd]</ex> <a>event</a> <a>pat</a> <a>cmd</a></p> 26 | 27 | <p> 28 | If the <em>-javascript</em> (short name <em>-js</em>) 29 | option is specified, <a>cmd</a> is executed as JavaScript 30 | code, with any supplied arguments available as 31 | variables. 32 | </p> 33 | 34 | <p>Add <a>cmd</a> to the list of commands &liberator.appname; will execute on <a>event</a> for a URL matching <a>pat</a>:</p> 35 | 36 | <ul> 37 | <li><ex>:autocmd[!]</ex> <a>events</a> <a>pat</a>: list/remove autocommands filtered by <a>events</a> and <a>pat</a></li> 38 | <li><ex>:autocmd[!]</ex> <a>events</a>: list/remove autocommands matching <a>events</a></li> 39 | <li><ex>:autocmd[!]</ex> <a>pat</a>: list/remove autocommands matching <a>pat</a></li> 40 | <li><ex>:autocmd[!]</ex>: list/remove all autocommands</li> 41 | </ul> 42 | 43 | <p>Available <a>events</a>:</p> 44 | 45 | <dl tag="autocommand-list"/> 46 | 47 | <p><a>pat</a> is a regular expression, use <tt>.*</tt> if you want to match all URLs.</p> 48 | 49 | <note>This differs from Vim which uses a glob rather than a regex for <a>pat</a>.</note> 50 | 51 | <p>The following keywords are available where relevant:</p> 52 | 53 | <dl tag="autocommand-args"/> 54 | </description> 55 | </item> 56 | 57 | <item> 58 | <tags>:doautoa :doautoall</tags> 59 | <spec>:doautoa[ll] <a>event</a> <oa>url</oa></spec> 60 | <description> 61 | <p> 62 | Apply the autocommands matching the specified URL to all buffers. If no 63 | <oa>url</oa> is specified use the current URL. 64 | </p> 65 | </description> 66 | </item> 67 | 68 | <item> 69 | <tags>:do :doautocmd</tags> 70 | <spec>:do[autocmd] <a>event</a> <oa>url</oa></spec> 71 | <description> 72 | <p> 73 | Apply the autocommands matching the specified URL to the current buffer. If no 74 | <oa>url</oa> is specified use the current URL. 75 | </p> 76 | </description> 77 | </item> 78 | <h2 tag="autocmd-examples">Examples</h2> 79 | 80 | <p>Enable <em>passthrough</em> mode on all Google sites:</p> 81 | 82 | <code><ex>:autocmd LocationChange .* js modes.passAllKeys = /google\.com/.test(buffer.URL)</ex></code> 83 | 84 | <p>Enable <em>passthrough</em> mode on <em>some</em> Google sites:</p> 85 | 86 | <code><ex>:autocmd LocationChange .* js modes.passAllKeys = /(www|mail)\.google\.com/.test(buffer.URL)</ex></code> 87 | 88 | <p> 89 | Set the filetype to mail when editing email at Gmail: 90 | </p> 91 | 92 | <code><!-- Why is the XSLT processor mangling newlines? --> 93 | <ex>:autocmd LocationChange .* :set editor=<str>gvim -f</str></ex> 94 | <ex>:autocmd LocationChange mail\\.google\\.com :set editor=<str>gvim -f -c 'set ft=mail'</str></ex> 95 | </code> 96 | 97 | </document> 98 | 99 | <!-- vim:se sts=4 sw=4 et: --> 100 | -------------------------------------------------------------------------------- /common/locale/en-US/cmdline.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="cmdline" 8 | title="&liberator.appname; Command-line" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="Command-line-mode Command-line mode-cmdline">Command-line mode</h1> 12 | <toc start="2"/> 13 | 14 | Command-line mode is used to enter Ex commands (<k>:</k>) and text search patterns 15 | (<k>/</k> and <k>?</k>). 16 | 17 | <item> 18 | <tags>:</tags> 19 | <spec>:</spec> 20 | <description> 21 | <p> 22 | Start Command-line mode. In Command-line mode, you can perform extended 23 | commands, which may require arguments. 24 | </p> 25 | </description> 26 | </item> 27 | 28 | 29 | 30 | <h2 tag="cmdline-editing">Command-line editing</h2> 31 | 32 | <item> 33 | <tags><![CDATA[c_<C-c>]]></tags> 34 | <spec><C-c></spec> 35 | <description> 36 | <p>Quit Command-line mode without executing.</p> 37 | </description> 38 | </item> 39 | 40 | 41 | <item> 42 | <tags><![CDATA[c_<C-]>]]></tags> 43 | <spec><C-]></spec> 44 | <description> 45 | <p>Expand a command-line abbreviation.</p> 46 | </description> 47 | </item> 48 | 49 | 50 | <item> 51 | <tags><![CDATA[c_<Up>]]></tags> 52 | <spec><Up></spec> 53 | <description> 54 | <p> 55 | Recall the previous command line from the history list which matches the 56 | current command line. 57 | </p> 58 | </description> 59 | </item> 60 | 61 | 62 | <item> 63 | <tags><![CDATA[c_<Down>]]></tags> 64 | <spec><Down></spec> 65 | <description> 66 | <p> 67 | Recall the next command line from the history list which matches the current 68 | command line. 69 | </p> 70 | </description> 71 | </item> 72 | 73 | 74 | <item> 75 | <tags><![CDATA[c_<S-Up> c_<PageUp>]]></tags> 76 | <spec><S-Up></spec> 77 | <spec><PageUp></spec> 78 | <description> 79 | <p>Recall the previous command line from the history list.</p> 80 | </description> 81 | </item> 82 | 83 | 84 | <item> 85 | <tags><![CDATA[c_<S-Down> c_<PageDown>]]></tags> 86 | <spec><S-Down></spec> 87 | <spec><PageDown></spec> 88 | <description> 89 | <p>Recall the next command line from the history list.</p> 90 | </description> 91 | </item> 92 | 93 | 94 | <h2 tag="cmdline-completion">Command-line completion</h2> 95 | 96 | <item> 97 | <tags><![CDATA[c_<Tab>]]></tags> 98 | <spec><Tab></spec> 99 | <description> 100 | <p> 101 | Complete the word in front of the cursor according to the behavior specified in 102 | <o>wildmode</o>. If <o>wildmode</o> contains "list" and there are multiple matches then 103 | the completion menu window is opened. 104 | </p> 105 | </description> 106 | </item> 107 | 108 | 109 | <item> 110 | <tags><![CDATA[c_<S-Tab>]]></tags> 111 | <spec><S-Tab></spec> 112 | <description> 113 | <p>Complete the previous full match when <o>wildmode</o> contains "full".</p> 114 | </description> 115 | </item> 116 | 117 | 118 | </document> 119 | 120 | <!-- vim:se sts=4 sw=4 et: --> 121 | -------------------------------------------------------------------------------- /common/locale/en-US/eval.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="eval" 8 | title="&liberator.appname; Expression Evaluation" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="expression expr eval">Expression evaluation</h1> 12 | <toc start="2"/> 13 | 14 | <!-- INTRO TO BE WRITTEN… --> 15 | 16 | <item> 17 | <tags>:ec :echo</tags> 18 | <spec>:ec<oa>ho</oa> <a>expr</a></spec> 19 | <description> 20 | <p> 21 | Echo the expression. Useful for showing informational messages. Multiple lines 22 | can be separated by \n. <a>expr</a> can either be a quoted string, or any expression 23 | which can be fed to eval() like 4+5. You can also view the source code of 24 | objects and functions if the return value of <a>expr</a> is an object or function. 25 | </p> 26 | </description> 27 | </item> 28 | 29 | 30 | <item> 31 | <tags>:echoe :echoerr</tags> 32 | <spec>:echoe<oa>rr</oa> <a>expr</a></spec> 33 | <description> 34 | <p> 35 | Echo the expression as an error message. Just like <ex>:ec<oa>ho</oa></ex> but echoes 36 | the result highlighted as ErrorMsg and saves it to the message history. 37 | </p> 38 | </description> 39 | </item> 40 | 41 | 42 | <item> 43 | <tags>:echom :echomsg</tags> 44 | <spec>:echom<oa>sg</oa> <a>expr</a></spec> 45 | <description> 46 | <p> 47 | Echo the expression as an informational message. Just like <ex>:ec<oa>ho</oa></ex> but 48 | also saves the message in the message history. 49 | </p> 50 | </description> 51 | </item> 52 | 53 | 54 | <item> 55 | <tags>:exe :execute</tags> 56 | <spec>:exe<oa>cute</oa> <a>expr</a></spec> 57 | <description> 58 | <p> 59 | Execute the string that results from the evaluation of <a>expr</a> as an Ex command. 60 | Example: <ex>:execute "source " + io.getRCFile().path</ex> sources the appropriate 61 | RC file. 62 | </p> 63 | 64 | <p>Note: Unlike Vim this currently only supports a single argument.</p> 65 | </description> 66 | </item> 67 | 68 | 69 | <item> 70 | <tags>:js :javas :javascript</tags> 71 | <spec>:javas<oa>cript</oa> <a>cmd</a></spec> 72 | <spec>:javascript <<<a>endpattern</a>\n<a>empty</a><a>script</a>\n<a>empty</a><a>endpattern</a></spec> 73 | <spec>:javascript<oa>!</oa></spec> 74 | <description> 75 | <p> 76 | Run any JavaScript command through eval(). Acts as a JavaScript interpreter by 77 | passing the argument to <tt>eval()</tt>. 78 | <ex>:javascript alert(<str>Hello world</str>)</ex> shows 79 | a dialog box with the text "Hello world". 80 | <ex>:javascript <<EOF</ex> reads all the lines 81 | until a line starting with "EOF" 82 | is found, and interpret them with the JavaScript <em>eval()</em> function. 83 | </p> 84 | 85 | <p> 86 | The special version <ex>:javascript!</ex> opens the JavaScript console of 87 | &liberator.host;. 88 | </p> 89 | 90 | <p> 91 | <k name="Tab"/> completion is available for <ex>:javascript <a>cmd</a><k name="Tab"/></ex> (but not 92 | yet for the <ex>:js <<EOF</ex> multiline widget). Be aware that &liberator.appname; needs 93 | to run <a>cmd</a> through eval() to get the completions, which could have unwanted 94 | side effects. 95 | </p> 96 | </description> 97 | </item> 98 | 99 | 100 | <item> 101 | <tags>:let</tags> 102 | <spec>:let <a>var-name</a> [+-.]= <a>expr1</a></spec> 103 | <spec>:let <a>var-name</a></spec> 104 | <spec>:let</spec> 105 | <description> 106 | <p> 107 | Sets or lists a variable. Sets the variable {var-name} to the value of the 108 | expression <a>expr1</a>. If no expression is given, the value of the variable is 109 | displayed. Without arguments, displays a list of all variables. 110 | </p> 111 | </description> 112 | </item> 113 | 114 | 115 | <item> 116 | <tags>:unl :unlet</tags> 117 | <spec>:unl<oa>et</oa><oa>!</oa> <a>name</a> …</spec> 118 | <description> 119 | <p> 120 | Deletes the variable <a>name</a>. Several variable names can be given. When used 121 | with <oa>!</oa> no error message is output for non-existing variables. 122 | </p> 123 | </description> 124 | </item> 125 | 126 | </document> 127 | 128 | <!-- vim:se sts=4 sw=4 et: --> 129 | -------------------------------------------------------------------------------- /common/locale/en-US/hints.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="hints" 8 | title="&liberator.appname; Hints" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="quick-hints hints">Hints</h1> 12 | <toc start="2"/> 13 | 14 | Hints are the way in which &liberator.appname; allows you to follow links on a page. By 15 | providing each link with a suitable hint, you can access all links with a 16 | similar amount of minimal effort. This contrasts strongly with the traditional 17 | approaches offered by the mouse, in which you must first find and then aim for 18 | the link you would like, and by using repeated tabbing which quickly becomes 19 | tedious unless you always visit the first link on a page. 20 | 21 | <item> 22 | <tags>f</tags> 23 | <spec>f<a>hint</a></spec> 24 | <description> 25 | <p> 26 | Start QuickHint mode. In QuickHint mode, every hintable item 27 | (according to the <o>hinttags</o> XPath query) is assigned a 28 | unique number. You can either type this number or type part of the 29 | link text as specified by the <o>hintmatching</o> option, and it 30 | is followed as soon as it can be uniquely identified. Often it can 31 | be useful to combine these techniques to narrow down results with 32 | some letters, and then typing a single digit to make the match 33 | unique. Pressing <k name="Leader"/> (defaults to 34 | <ex>:let mapleader = "\"</ex>) toggles "escape-mode", where numbers are 35 | treated as normal text. <k name="Esc"/> stops this mode at any 36 | time. 37 | </p> 38 | </description> 39 | </item> 40 | 41 | 42 | <item> 43 | <tags>F</tags> 44 | <spec>F<a>hint</a></spec> 45 | <description> 46 | <p> 47 | Start QuickHint mode, but open link in a new tab. Like normal QuickHint 48 | mode (activated with <k>f</k>) but opens the link in a new tab. The new 49 | tab will be loaded in background according to the 50 | <str>browser.tabs.loadInBackground</str> &liberator.host; preference. 51 | </p> 52 | </description> 53 | </item> 54 | 55 | 56 | <tags>extended-hints</tags> 57 | 58 | <item> 59 | <tags>;</tags> 60 | <spec>;<a>mode</a><a>empty</a><a>hint</a></spec> 61 | <description> 62 | <p> 63 | Start an extended hint mode. ExtendedHint mode is useful for 64 | performing operations on hinted elements other than the default 65 | left mouse click. For example, you can yank link locations, open 66 | them in a new window or save images. If you want to yank the 67 | location of hint <em>24</em>, press <k>;y</k> to start this hint 68 | mode. Then press <em>24</em> to copy the hint location. 69 | </p> 70 | 71 | <p><a>mode</a> can be one of:</p> 72 | 73 | <ul> 74 | <li><tag>;;</tag> <em>;</em> to focus an element</li> 75 | <li><tag>;?</tag> <em>?</em> to show information about an element (incomplete)</li> 76 | <li><tag>;s</tag> <em>s</em> to save a link's destination</li> 77 | <li><tag>;S</tag> <em>S</em> to save a media object</li> 78 | <li><tag>;a</tag> <em>a</em> to save a link's destination (prompting for save location)</li> 79 | <li><tag>;A</tag> <em>A</em> to save a media object (prompting for save location)</li> 80 | <li><tag>;f</tag> <em>f</em> to focus a frame</li> 81 | <li><tag>;o</tag> <em>o</em> to open its location in the current tab</li> 82 | <li><tag>;t</tag> <em>t</em> to open its location in a new tab</li> 83 | <li><tag>;b</tag> <em>b</em> to open its location in a new background tab</li> 84 | <li><tag>;w</tag> <em>w</em> to open its destination in a new window</li> 85 | <li><tag>;F</tag> <em>F</em> to follow a sequence of <k name="CR"/>-delimited hints in background tabs</li> 86 | <li><tag>;O</tag> <em>O</em> to generate an <ex>:open</ex> with hint's URL (like <k>O</k>)</li> 87 | <li><tag>;T</tag> <em>T</em> to generate a <ex>:tabopen</ex> with hint's URL (like <k>T</k>)</li> 88 | <li><tag>;W</tag> <em>W</em> to generate a <ex>:winopen</ex> with hint's URL</li> 89 | <li><tag>;v</tag> <em>v</em> to view its destination source</li> 90 | <li><tag>;V</tag> <em>V</em> to view its destination source in the external editor</li> 91 | <li><tag>;y</tag> <em>y</em> to yank its destination location</li> 92 | <li><tag>;Y</tag> <em>Y</em> to yank its text description</li> 93 | <li><tag>;#</tag> <em>#</em> to yank its anchor URL</li> 94 | <li><tag>;c</tag> <em>c</em> to open its context menu</li> 95 | <li><tag>;i</tag> <em>i</em> to open a media object</li> 96 | <li><tag>;I</tag> <em>I</em> to open a media object in a new tab</li> 97 | <li><tag>;x</tag> <em>x</em> to display an element's title text, or alt text if none.</li> 98 | </ul> 99 | 100 | <p> 101 | Depending on the value of <o>complete</o>, you can get a list of 102 | extended hint modes by pressing <k name="Tab"/> from the <k>;</k> 103 | prompt. 104 | </p> 105 | 106 | <p> 107 | Hintable elements for all extended hint modes can be set in the 108 | <o>extendedhinttags</o> XPath string. 109 | </p> 110 | </description> 111 | </item> 112 | 113 | </document> 114 | <!-- vim:se sts=4 sw=4 et: --> 115 | -------------------------------------------------------------------------------- /common/locale/en-US/insert.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="insert" 8 | title="&liberator.appname; Insert Mode" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="Insert-mode Insert mode-insert">Insert mode</h1> 12 | <toc start="2"/> 13 | 14 | <p> 15 | Insert mode is used to enter text in text boxes and text areas. When 16 | <o>insertmode</o> is set, focusing on a text area immediately switches to 17 | Insert mode. 18 | </p> 19 | 20 | <item> 21 | <tags>i_i</tags> 22 | <spec>i_i</spec> 23 | <description> 24 | <p>Starts Insert mode in text areas when <o>insertmode</o> is not set.</p> 25 | </description> 26 | </item> 27 | 28 | 29 | 30 | <h2 tag="ins-special-keys">Insert-mode special keys</h2> 31 | 32 | <item> 33 | <tags><![CDATA[i_<C-i>]]></tags> 34 | <spec><C-i></spec> 35 | <description> 36 | <p>Launch the external editor. See the <o>editor</o> option.</p> 37 | </description> 38 | </item> 39 | 40 | 41 | <item> 42 | <tags><![CDATA[i_<C-]>]]></tags> 43 | <spec><C-]></spec> 44 | <description> 45 | <p>Expand an Insert-mode abbreviation.</p> 46 | </description> 47 | </item> 48 | 49 | 50 | </document> 51 | <!-- vim:se sts=4 sw=4 et: --> 52 | -------------------------------------------------------------------------------- /common/locale/en-US/message.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="message" 8 | title="&liberator.appname; Messages" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="messages">Error and informational messages</h1> 12 | <toc start="2"/> 13 | 14 | <tags>message-history</tags> 15 | 16 | <p> 17 | &liberator.appname; stores all info and error messages in a message 18 | history. The type of info messages output can be controlled by 19 | the <o>verbose</o> option. The number of stored messages can be set 20 | with the <o>messages</o> option. 21 | </p> 22 | 23 | <item> 24 | <tags>:mes :messages</tags> 25 | <spec>:mes<oa>sages</oa></spec> 26 | <description> 27 | <p>Display previously given messages.</p> 28 | </description> 29 | </item> 30 | 31 | 32 | <item> 33 | <tags>:messc :messclear</tags> 34 | <spec>:messc<oa>lear</oa></spec> 35 | <description> 36 | <p>Clear the message history.</p> 37 | </description> 38 | </item> 39 | 40 | 41 | <item> 42 | <tags><![CDATA[g<]]></tags> 43 | <spec>g<</spec> 44 | <description> 45 | <p> 46 | Redisplay the last command output. Only the most recent command's output is 47 | available. 48 | </p> 49 | </description> 50 | </item> 51 | 52 | <tags>pager more-prompt</tags> 53 | 54 | <code> 55 | -- More -- 56 | -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit 57 | </code> 58 | 59 | <p> 60 | This message is given when the message window is filled with messages. It is 61 | only given when the <o>more</o> option is on. It is highlighted with the <em>MoreMsg</em> 62 | group. 63 | </p> 64 | 65 | <dl> 66 | <dt><k name="CR"/> or j or <k name="Down"/> </dt><dd>one more line</dd> 67 | <dt>d </dt><dd>down a page (half a screen)</dd> 68 | <dt><k name="Space"/> or <k name="PageDown"/></dt><dd>down a screen</dd> 69 | <dt>G </dt><dd>down all the way, until the hit-enter prompt</dd> 70 | <dt/><dd/> 71 | <dt><k name="BS"/> or k or <k name="Up"/> </dt><dd>one line back</dd> 72 | <dt>u </dt><dd>up a page (half a screen)</dd> 73 | <dt>b or <k name="PageUp"/> </dt><dd>back a screen</dd> 74 | <dt>g </dt><dd>back to the start</dd> 75 | <dt/><dd/> 76 | <dt>q, <k name="Esc"/> or CTRL-C </dt><dd>stop the listing</dd> 77 | <dt>: </dt><dd>stop the listing and enter a command-line</dd> 78 | <dt>; </dt><dd>start an <t>extended-hints</t> command</dd> 79 | <dt><k name="C-Y"/> </dt><dd>yank (copy) a modeless selection to the clipboard</dd> 80 | </dl> 81 | 82 | </document> 83 | <!-- vim:se sts=4 sw=4 et: --> 84 | -------------------------------------------------------------------------------- /common/locale/en-US/pattern.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="pattern" 8 | title="&liberator.appname; Patterns" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="text-search-commands">Text search commands</h1> 12 | <toc start="2"/> 13 | 14 | <p> 15 | &liberator.appname; provides a Vim-like interface to &liberator.host;'s standard text search 16 | functionality. There is no support for using regular expressions in search 17 | commands as &liberator.host; does not provide native regex support. It is unlikely that 18 | this will ever be available. 19 | </p> 20 | 21 | <item> 22 | <tags>/</tags> 23 | <spec>/<a>pattern</a>[/]<CR></spec> 24 | <description> 25 | <p>Search forward for the first occurrence of <a>pattern</a>.</p> 26 | 27 | <p> 28 | If <str>\c</str> appears anywhere in the pattern the whole pattern is handled as though 29 | <o>ignorecase</o> is on. <str>\C</str> forces case-sensitive matching for the whole pattern. 30 | </p> 31 | <p> 32 | If <str>\l</str> appears in the pattern only the text of links is searched for a 33 | match as though <o>linksearch</o> is on. <str>\L</str> forces the entire page to be searched 34 | for a match. 35 | </p> 36 | </description> 37 | </item> 38 | 39 | 40 | <item> 41 | <tags>?</tags> 42 | <spec>?<a>pattern</a>[?]<CR></spec> 43 | <description> 44 | <p>Search backwards for <a>pattern</a>.</p> 45 | 46 | <p><a>pattern</a> can use the same modifiers as for <k>/</k>.</p> 47 | 48 | <note>Incremental searching currently only works in the forward direction.</note> 49 | </description> 50 | </item> 51 | 52 | 53 | <item> 54 | <tags>n</tags> 55 | <spec>n</spec> 56 | <description> 57 | <p>Find next. Repeat the last search 1 time (until count is supported).</p> 58 | </description> 59 | </item> 60 | 61 | 62 | <item> 63 | <tags>N</tags> 64 | <spec>N</spec> 65 | <description> 66 | <p> 67 | Find previous. Repeat the last search 1 time (until count is supported) in the 68 | opposite direction. 69 | </p> 70 | </description> 71 | </item> 72 | 73 | 74 | <item> 75 | <tags>*</tags> 76 | <spec>*</spec> 77 | <description> 78 | <p>Search forward for the next word under the cursor.</p> 79 | </description> 80 | </item> 81 | 82 | 83 | <item> 84 | <tags>#</tags> 85 | <spec>#</spec> 86 | <description> 87 | <p>Search backward for the previous word under the cursor.</p> 88 | </description> 89 | </item> 90 | 91 | 92 | <item> 93 | <tags>:noh :nohlsearch</tags> 94 | <spec>:noh<oa>lsearch</oa></spec> 95 | <description> 96 | <p> 97 | Remove the search highlighting. The document highlighting is turned back on 98 | when another search command is used or the <o>hlsearch</o> option is set. 99 | </p> 100 | </description> 101 | </item> 102 | 103 | </document> 104 | <!-- vim:se sts=4 sw=4 et: --> 105 | -------------------------------------------------------------------------------- /common/locale/en-US/print.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="print" 8 | title="&liberator.appname; Printing" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="printing">Printing</h1> 12 | <toc start="2"/> 13 | 14 | <item> 15 | <tags>:ha :hardcopy</tags> 16 | <spec>:ha<oa>rdcopy</oa><oa>!</oa></spec> 17 | <description> 18 | <p> 19 | Print current document. Open a GUI dialog where you can select the printer, 20 | number of copies, orientation, etc. When used with <oa>!</oa>, the dialog is skipped 21 | and the default printer used. 22 | </p> 23 | </description> 24 | </item> 25 | 26 | 27 | <item> 28 | <spec>:ha<oa>rdcopy</oa><oa>!</oa> ><a>filename</a></spec> 29 | <description> 30 | <p>As above, but write the output to <a>filename</a>.</p> 31 | 32 | <note>Not available on Windows.</note> 33 | </description> 34 | </item> 35 | 36 | 37 | <h2 tag="&liberator.host;-print-dialogs">&liberator.host; printing dialogs</h2> 38 | 39 | <p> 40 | The "Print Preview" and "Page Setup" dialogs can be opened via the <ex>:dialog</ex> 41 | command 42 | </p> 43 | <code><ex>:dialog printpreview</ex></code> 44 | <p> 45 | and 46 | </p> 47 | <code><ex>:dialog printsetup</ex></code> 48 | <p> 49 | respectively. 50 | </p> 51 | 52 | </document> 53 | <!-- vim:se sts=4 sw=4 et: --> 54 | -------------------------------------------------------------------------------- /common/locale/en-US/starting.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="starting" 8 | title="&liberator.appname; Starting" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="starting">Starting &liberator.appname;</h1> 12 | <toc start="2"/> 13 | 14 | <tags>startup-options</tags> 15 | 16 | <p> 17 | Command-line options can be passed to &liberator.appname; via the -&liberator.name; &liberator.host; 18 | option. These are passed as a single string argument. 19 | E.g., &liberator.hostbin; -&liberator.name; <str>++cmd 'set exrc' +u 'tempRcFile' ++noplugin</str> 20 | </p> 21 | 22 | <item> 23 | <tags>+c</tags> 24 | <spec>+c <a>command</a></spec> 25 | <description> 26 | <p> 27 | Execute a single Ex command after all initialization has been performed. See 28 | <t>initialization</t>. 29 | </p> 30 | 31 | <p>This option can be specified multiple times.</p> 32 | </description> 33 | </item> 34 | 35 | 36 | <item> 37 | <tags>++cmd</tags> 38 | <spec>++cmd <a>command</a></spec> 39 | <description> 40 | <p> 41 | Execute a single Ex command before any initialization has been performed. See 42 | <t>initialization</t>. 43 | </p> 44 | 45 | <p>This option can be specified multiple times.</p> 46 | </description> 47 | </item> 48 | 49 | 50 | <item> 51 | <tags>+u</tags> 52 | <spec>+u <a>rcfile</a></spec> 53 | <description> 54 | <p> 55 | The file <a>rcfile</a> is used for user initialization commands. If <a>rcfile</a> is 56 | "NORC" then no startup initialization is performed except for the loading of 57 | plugins, i.e., steps 1. and 2. in <t>initialization</t> are skipped. If <a>rcfile</a> 58 | is "NONE" then plugin loading is also skipped. 59 | </p> 60 | </description> 61 | </item> 62 | 63 | 64 | <item> 65 | <tags>++noplugin</tags> 66 | <spec>++noplugin</spec> 67 | <description> 68 | <p>Prevents plugin scripts from being loaded at startup. See <o>loadplugins</o>.</p> 69 | </description> 70 | </item> 71 | 72 | 73 | <h2 tag="initialization startup">Initialization</h2> 74 | 75 | <p>At startup, &liberator.appname; completes the following tasks in order. </p> 76 | 77 | <ol> 78 | <li> &liberator.appname; can perform user initialization commands. When 79 | one of the following is successfully located, it is executed, 80 | and no further locations are tried. 81 | 82 | <ol> 83 | <li tag="$&liberator.idname;_INIT"> 84 | <em>$&liberator.idname;_INIT</em> — May contain a single Ex command (e.g., 85 | "<ex>:source <a>file</a></ex>"). 86 | </li> 87 | <li tag="$MY_&liberator.idname;RC"> 88 | <em>~/_&liberator.name;rc</em> — Windows only. If this file exists, its contents 89 | are executed and <em>$MY_&liberator.idname;RC</em> set to its path. 90 | </li> 91 | <li> 92 | <em>~/.&liberator.name;rc</em> — If this file exists, its contents are executed. 93 | </li> 94 | </ol> 95 | </li> 96 | <li> 97 | If <o>exrc</o> is set and the +u command-line option was not 98 | specified, then any RC file in the current directory is also 99 | sourced. 100 | </li> 101 | <li> 102 | All directories in <o>runtimepath</o> are searched for a 103 | "plugin" subdirectory and all yet unloaded plugins are loaded. 104 | For each plugin directory, all <tt>*.{js,vimp}</tt> files (including 105 | those in further subdirectories) are sourced alphabetically. No 106 | plugins will be sourced if: 107 | 108 | <ul> 109 | <li><o>noloadplugins</o> is set.</li> 110 | <li>the ++noplugin command-line option was specified.</li> 111 | <li>the +u=NONE command-line option specified set.</li> 112 | </ul> 113 | 114 | Any particular plugin will not be loaded if it has already been 115 | loaded (e.g., by an earlier <ex>:loadplugins</ex> command). 116 | </li> 117 | </ol> 118 | 119 | The user's ~ (i.e., "home") directory is determined as follows: 120 | 121 | <ul> 122 | <li>On Unix and Mac, the environment variable <em>$HOME</em> is used.</li> 123 | <li> 124 | On Windows, &liberator.appname; checks for the existence of 125 | <em>%HOME%</em>, then <em>%USERPROFILE%</em>, and then 126 | <em>%HOMEDRIVE%%HOMEPATH%</em>. It uses the first one it 127 | finds. 128 | </li> 129 | </ul> 130 | 131 | <h2 tag="save-settings">Saving settings</h2> 132 | 133 | <item> 134 | <tags>:mkv :mk&liberator.name;rc</tags> 135 | <spec>:mkv<oa>imperatorrc</oa><oa>!</oa> <oa>file</oa></spec> 136 | <description> 137 | <p> 138 | Write current key mappings and changed options to <oa>file</oa>. If no 139 | <oa>file</oa> is specified then <em>~/.&liberator.name;rc</em> is written unless this file 140 | already exists. The special version <ex>:mk&liberator.name;rc!</ex> will overwrite 141 | <oa>file</oa> if it exists. 142 | </p> 143 | 144 | <p> 145 | Warning: this differs from Vim's behavior which defaults to writing the file 146 | in the current directory. 147 | </p> 148 | </description> 149 | </item> 150 | 151 | 152 | <h2 tag="restarting">Restarting</h2> 153 | 154 | <item> 155 | <tags>:res :restart</tags> 156 | <spec>:res<oa>tart</oa></spec> 157 | <description> 158 | <p>Force &liberator.host; to restart. Useful when installing extensions.</p> 159 | </description> 160 | </item> 161 | 162 | 163 | 164 | </document> 165 | <!-- vim:se sts=4 sw=4 et: --> 166 | -------------------------------------------------------------------------------- /common/locale/ja/all.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="all" 8 | title="&liberator.appname; All" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <tags>all</tags> 12 | 13 | <toc/> 14 | 15 | <include href="intro" tag="intro.html"/> 16 | <include href="starting" tag="starting.html"/> 17 | <include href="browsing" tag="browsing.html"/> 18 | <include href="buffer" tag="buffer.html"/> 19 | <include href="cmdline" tag="cmdline.html"/> 20 | <include href="insert" tag="insert.html"/> 21 | <include href="options" tag="options.html"/> 22 | <include href="pattern" tag="pattern.html"/> 23 | <include href="tabs" tag="tabs.html"/> 24 | <include href="hints" tag="hints.html"/> 25 | <include href="map" tag="map.html"/> 26 | <include href="eval" tag="eval.html"/> 27 | <include href="marks" tag="marks.html"/> 28 | <include href="repeat" tag="repeat.html"/> 29 | <include href="autocommands" tag="autocommands.html"/> 30 | <include href="print" tag="print.html"/> 31 | <include href="gui" tag="gui.html"/> 32 | <include href="styling" tag="styling.html"/> 33 | <include href="message" tag="message.html"/> 34 | <include href="developer" tag="developer.html"/> 35 | <include href="various" tag="various.html"/> 36 | <include href="plugins" tag="plugins.html"/> 37 | <include href="index" tag="index.html"/> 38 | 39 | </document> 40 | <!-- vim:se sts=4 sw=4 et: --> 41 | -------------------------------------------------------------------------------- /common/locale/ja/autocommands.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="autocommands" 8 | title="&liberator.appname; Autocommands" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="autocommands">オートコマンド</h1> 12 | <toc start="2"/> 13 | 14 | <p> 15 | オートコマンドは特定のイベントが発生した際にコードを自動的に 16 | 実行する手段です。 17 | </p> 18 | 19 | <item> 20 | <tags>:au :autocmd</tags> 21 | <spec>:au[tocmd]</spec> 22 | <description> 23 | <p>イベントが発生した際にコマンドを自動的に実行します。</p> 24 | 25 | <p><ex>:au[tocmd]</ex> <a>event</a> <a>pat</a> <a>cmd</a></p> 26 | 27 | <p> 28 | もし、<em>-javascript</em>(短縮名:<em>-js</em>)がしてされた場合、 29 | <a>cmd</a>は、JavaScriptコードとして実行されます。 30 | また、どの変数も引数として渡されます。 31 | </p> 32 | 33 | <p> 34 | <a>pat</a>にマッチする URL で<a>event</a>が発生した際に &liberator.appname; 35 | が実行するコマンドのリストに<a>cmd</a>を追加します: 36 | </p> 37 | 38 | <ul> 39 | <li><ex>:autocmd[!]</ex> <a>events</a> <a>pat</a>: <a>events</a>と<a>pat</a>にマッチするオートコマンドを一覧表示/削除します</li> 40 | <li><ex>:autocmd[!]</ex> <a>events</a>: <a>events</a>にマッチするオートコマンドを一覧表示/削除します</li> 41 | <li><ex>:autocmd[!]</ex> <a>pat</a>: <a>pat</a>にマッチするオートコマンドを一覧表示/削除します</li> 42 | <li><ex>:autocmd[!]</ex>: すべてのオートコマンドを一覧表示/削除します</li> 43 | </ul> 44 | 45 | <p>利用可能な<a>events</a>:</p> 46 | 47 | <dl tag="autocommand-list"/> 48 | 49 | <p><a>pat</a>は正規表現です。すべての URL にマッチさせたい場合、<tt>.*</tt>を使ってください。</p> 50 | 51 | <note><a>pat</a>に正規表現ではなくグロブを使う Vim とは異なります。</note> 52 | 53 | <p>関連するイベントにおいて以下のキーワードが利用可能です:</p> 54 | 55 | <dl tag="autocommand-args"/> 56 | </description> 57 | </item> 58 | 59 | <item> 60 | <tags>:doautoa :doautoall</tags> 61 | <spec>:doautoa[ll] <a>event</a> <oa>url</oa></spec> 62 | <description> 63 | <p> 64 | 指定した URL にマッチするオートコマンドをすべてのバッファに適用します。 65 | <oa>url</oa>が指定されていない場合、現在の URL が使用されます。 66 | </p> 67 | </description> 68 | </item> 69 | 70 | <item> 71 | <tags>:do :doautocmd</tags> 72 | <spec>:do[autocmd] <a>event</a> <oa>url</oa></spec> 73 | <description> 74 | <p> 75 | 指定した URL にマッチするオートコマンドを現在のバッファに適用します。 76 | <oa>url</oa>が指定されていない場合、現在の URL が使用されます。 77 | </p> 78 | </description> 79 | </item> 80 | <h2 tag="autocmd-examples">例</h2> 81 | 82 | <p>すべての Google サイトで <em>passthrough</em> モードを有効にします:</p> 83 | 84 | <code><ex>:autocmd LocationChange .* js modes.passAllKeys = /google\.com/.test(buffer.URL)</ex></code> 85 | 86 | <p><em>一部</em>の Google サイトで <em>passthrough</em> モードを有効にします:</p> 87 | 88 | <code><ex>:autocmd LocationChange .* js modes.passAllKeys = /(www|mail)\.google\.com/.test(buffer.URL)</ex></code> 89 | 90 | <p> 91 | Gmail でメールを編集するときに filetype を設定します: 92 | </p> 93 | 94 | <code><!-- Why is the XSLT processor mangling newlines? --> 95 | <ex>:autocmd LocationChange .* :set editor=<str>gvim -f</str></ex> 96 | <ex>:autocmd LocationChange mail\\.google\\.com :set editor=<str>gvim -f -c 'set ft=mail'</str></ex> 97 | </code> 98 | 99 | </document> 100 | 101 | <!-- vim:se sts=4 sw=4 et: --> 102 | -------------------------------------------------------------------------------- /common/locale/ja/cmdline.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="cmdline" 8 | title="&liberator.appname; Command-line" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="Command-line-mode Command-line mode-cmdline">コマンドラインモード</h1> 12 | <toc start="2"/> 13 | 14 | コマンドラインモードは Ex コマンド ( <k>:</k> ) と 15 | テキスト検索パターン ( <k>/</k> and <k>?</k> ) の入力に利用されます。 16 | 17 | <item> 18 | <tags>:</tags> 19 | <spec>:</spec> 20 | <description> 21 | <p> 22 | コマンドラインモードを開始します。コマンドラインモードでは、 23 | 引数を指定することのできる拡張コマンドを実行することができます。 24 | </p> 25 | </description> 26 | </item> 27 | 28 | 29 | 30 | <h2 tag="cmdline-editing">コマンドラインの編集</h2> 31 | 32 | <item> 33 | <tags><![CDATA[c_<C-c>]]></tags> 34 | <spec><C-c></spec> 35 | <description> 36 | <p>実行することなくコマンドラインモードを終了します。</p> 37 | </description> 38 | </item> 39 | 40 | 41 | <item> 42 | <tags><![CDATA[c_<C-]>]]></tags> 43 | <spec><C-]></spec> 44 | <description> 45 | <p>コマンドラインで有効な略語を展開します。</p> 46 | </description> 47 | </item> 48 | 49 | 50 | <item> 51 | <tags><![CDATA[c_<Up>]]></tags> 52 | <spec><Up></spec> 53 | <description> 54 | <p> 55 | 現在のコマンドラインにマッチする、 56 | 以前使用されたコマンドのうちひとつ前のものを履歴から呼び出します。 57 | </p> 58 | </description> 59 | </item> 60 | 61 | 62 | <item> 63 | <tags><![CDATA[c_<Down>]]></tags> 64 | <spec><Down></spec> 65 | <description> 66 | <p> 67 | 現在のコマンドラインにマッチする、 68 | 以前使用されたコマンドのうちひとつ次のものを履歴から呼び出します。 69 | </p> 70 | </description> 71 | </item> 72 | 73 | 74 | <item> 75 | <tags><![CDATA[c_<S-Up> c_<PageUp>]]></tags> 76 | <spec><S-Up></spec> 77 | <spec><PageUp></spec> 78 | <description> 79 | <p>以前使用されたコマンドのうちひとつ前のコマンドを履歴から呼び出します。</p> 80 | </description> 81 | </item> 82 | 83 | 84 | <item> 85 | <tags><![CDATA[c_<S-Down> c_<PageDown>]]></tags> 86 | <spec><S-Down></spec> 87 | <spec><PageDown></spec> 88 | <description> 89 | <p>以前使用されたコマンドのうちひとつ次のものを履歴から呼び出します。</p> 90 | </description> 91 | </item> 92 | 93 | 94 | <h2 tag="cmdline-completion">コマンドライン補完</h2> 95 | 96 | <item> 97 | <tags><![CDATA[c_<Tab>]]></tags> 98 | <spec><Tab></spec> 99 | <description> 100 | <p> 101 | <o>wildmode</o> オプションで指定された挙動に準じてカーソルの前の単語を補完します。 102 | <o>wildmode</o> オプションが "list" を含み、複数の候補がある場合、補完メニューが開きます。 103 | </p> 104 | </description> 105 | </item> 106 | 107 | 108 | <item> 109 | <tags><![CDATA[c_<S-Tab>]]></tags> 110 | <spec><S-Tab></spec> 111 | <description> 112 | <p><o>wildmode</o> オプションが "full" を含む場合、補完リストを逆にたどります。</p> 113 | </description> 114 | </item> 115 | 116 | 117 | </document> 118 | 119 | <!-- vim:se sts=4 sw=4 et: --> 120 | -------------------------------------------------------------------------------- /common/locale/ja/eval.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="eval" 8 | title="&liberator.appname; Expression Evaluation" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="expression expr eval">式の評価</h1> 12 | <toc start="2"/> 13 | 14 | <!-- INTRO TO BE WRITTEN… --> 15 | 16 | <item> 17 | <tags>:ec :echo</tags> 18 | <spec>:ec<oa>ho</oa> <a>expr</a></spec> 19 | <description> 20 | <p> 21 | 式を評価してその結果を表示します。 22 | 情報メッセージを表示したいときに便利です。 23 | 複数行は \n で区切ることができます。 24 | <a>expr</a> は引用符でくくられた文字列か、 4+5 のように eval() に与えることができる式です。 25 | <a>expr</a> の返値がオブジェクトか関数の場合、それらのソースコードを表示することができます。 26 | </p> 27 | </description> 28 | </item> 29 | 30 | 31 | <item> 32 | <tags>:echoe :echoerr</tags> 33 | <spec>:echoe<oa>rr</oa> <a>expr</a></spec> 34 | <description> 35 | <p> 36 | 式を評価してその結果をエラーメッセージとして表示します。 37 | <ex>:ec<oa>ho</oa></ex> と同様ですが結果は ErrorMsg として強調表示され、メッセージ履歴に保存されます。 38 | </p> 39 | </description> 40 | </item> 41 | 42 | 43 | <item> 44 | <tags>:echom :echomsg</tags> 45 | <spec>:echom<oa>sg</oa> <a>expr</a></spec> 46 | <description> 47 | <p> 48 | 式を評価してその結果を情報メッセージとして表示します。 49 | <ex>:ec<oa>ho</oa></ex> と同様ですが結果がメッセージ履歴に保存されます。 50 | </p> 51 | </description> 52 | </item> 53 | 54 | 55 | <item> 56 | <tags>:exe :execute</tags> 57 | <spec>:exe<oa>cute</oa> <a>expr</a></spec> 58 | <description> 59 | <p> 60 | <a>expr</a> を評価して得られた文字列を一つの ex コマンドとして実行します。 61 | 例: <ex>:execute "source " + io.getRCFile().path</ex> は適切な RC ファイルを読み込みます。 62 | </p> 63 | 64 | <p>注釈: これは Vim と異なり、現在 1 つの引数のみをサポートしています。</p> 65 | </description> 66 | </item> 67 | 68 | 69 | <item> 70 | <tags>:js :javas :javascript</tags> 71 | <spec>:javas<oa>cript</oa> <a>cmd</a></spec> 72 | <spec>:javascript <<<a>endpattern</a>\n<a>empty</a><a>script</a>\n<a>empty</a><a>endpattern</a></spec> 73 | <spec>:javascript<oa>!</oa></spec> 74 | <description> 75 | <p> 76 | eval() を通して JavaScript を実行します。 77 | eval() に引数を渡すことで JavaScript インタプリタとして動作します。 78 | <ex>:javascript alert(<str>Hello world</str>)</ex> は "Hello world" と書かれたダイアログを表示します。 79 | <ex>:javascript <<EOF</ex> は "EOF" ではじまる行が見つかるまですべての行を読み込み、 <em>eval()</em> 関数で実行します。 80 | </p> 81 | 82 | <p>特殊なバージョン <ex>:javascript!</ex> は &liberator.host; のエラーコンソールを開きます。</p> 83 | 84 | <p> 85 | <k name="Tab"/> による補完は <ex>:javascript {cmd}<k name="Tab"/></ex> で利用可能です 86 | ( ただし <ex>:js <<EOF</ex> の複数行形式には未対応です ) 。 87 | &liberator.appname; は補完のために <a>cmd</a> を eval() する必要があり、 88 | 望ましくない副作用をもたらす可能性があることに注意してください。 89 | </p> 90 | </description> 91 | </item> 92 | 93 | 94 | <item> 95 | <tags>:let</tags> 96 | <spec>:let <a>var-name</a> [+-.]= <a>expr1</a></spec> 97 | <spec>:let <a>var-name</a></spec> 98 | <spec>:let</spec> 99 | <description> 100 | <p> 101 | 変数を設定もしくは一覧表示します。 102 | 変数 {var-name} に式の値 <a>expr1</a> が設定されます。 103 | 式が与えられない場合、その変数の値を表示します。 104 | 引数がない場合、すべての変数を表示します。 105 | </p> 106 | </description> 107 | </item> 108 | 109 | 110 | <item> 111 | <tags>:unl :unlet</tags> 112 | <spec>:unl<oa>et</oa><oa>!</oa> <a>name</a> …</spec> 113 | <description> 114 | <p> 115 | 変数 <a>name</a> を削除します。 116 | 複数の変数名を与えることができます。 117 | <oa>!</oa> とともに使用した場合、存在しない変数に対するエラーメッセージは表示されません。 118 | </p> 119 | </description> 120 | </item> 121 | 122 | </document> 123 | 124 | <!-- vim:se sts=4 sw=4 et: --> 125 | -------------------------------------------------------------------------------- /common/locale/ja/hints.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="hints" 8 | title="&liberator.appname; Hints" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="quick-hints hints">ヒント</h1> 12 | <toc start="2"/> 13 | 14 | ヒントはページ上のリンクを &liberator.appname; に移動させることが出来る方法です。 15 | 各リンクにヒントが付くことによって、すべてのリンクに最小限の動作でアクセスすることができます。 16 | マウスを使った従来の最初に望むリンクに標準を合わせなければならない方法や、 17 | ページの最初からタブを繰り返し押すという退屈な方法とはとても対象的です。 18 | 19 | <item> 20 | <tags>f</tags> 21 | <spec>f<a>hint</a></spec> 22 | <description> 23 | <p> 24 | クイックヒントモードを開始します。 25 | クイックヒントモードでは、ヒントが利用可能なアイテムすべて ( <o>hinttags</o> の XPath クエリーに一致するもの ) 26 | に対して番号が割り振られます。 27 | この割り振られた番号か、<o>hintmatching</o> オプションで定義されるリンクの一部の文字を指定できます。 28 | そして移動先がひとつに決まるとすぐにそのページへ移動することができます。 29 | たいていの場合、移動先をひとつ選ぶには文字をいくつか打ち込んで候補を絞り込んでから、 30 | 数字をひとつ指定するというふたつのテクニックを組み合わせるのが便利です。 31 | <k name="Leader"/> ( 初期設定は <ex>:let mapleader = "\"</ex> ) を押すことでエスケープモードへ切り替わり、 32 | 数字をテキストとして認識させることができます。 33 | <k name="Esc"/> でこのモードをいつでも中止することができます。 34 | </p> 35 | </description> 36 | </item> 37 | 38 | 39 | <item> 40 | <tags>F</tags> 41 | <spec>F<a>hint</a></spec> 42 | <description> 43 | <p> 44 | クイックヒントモードを開始しますが、新しいタブでリンク先が開きます。 45 | 普通のクイックヒントモード ( <k>f</k> で起動します ) と同様ですが、リンク先は新しいタブで開きます。 46 | &liberator.host; の設定 <str>browser.tabs.loadInBackground</str> 47 | 次第で新しいタブがバックグラウンドで読み込まれるかどうかが決定します。 48 | </p> 49 | </description> 50 | </item> 51 | 52 | 53 | <tags>extended-hints</tags> 54 | 55 | <item> 56 | <tags>;</tags> 57 | <spec>;<a>mode</a><a>empty</a><a>hint</a></spec> 58 | <description> 59 | <p> 60 | 拡張ヒントモードを開始します。 61 | 拡張ヒントモードではマウスの左クリックとは違ったことをヒント要素に対して操作したい場合に便利です。 62 | 例えば、 リンク先の URL をヤンクしたり、新しいウィンドウで開いたり、もしくは画像を保存したりできます。 63 | もし <em>24</em> と表示されたヒントの URI をヤンクしたいときは、<k>;y</k> と押してヤンク用のヒントモードを開始し、 64 | それから <em>24</em> と押せばいいのです。 65 | </p> 66 | 67 | <p><a>mode</a> 以下のいずれかひとつから選べます:</p> 68 | 69 | <ul> 70 | <li><tag>;;</tag> <em>;</em> 要素にフォーカスします</li> 71 | <li><tag>;?</tag> <em>?</em> 要素の情報を表示します (未完成)</li> 72 | <li><tag>;s</tag> <em>s</em> リンク先を保存します</li> 73 | <li><tag>;a</tag> <em>a</em> リンク先を保存します ( 保存先を尋ねます )</li> 74 | <li><tag>;f</tag> <em>f</em> フレームを選択します</li> 75 | <li><tag>;o</tag> <em>o</em> 現在のタブで開きます</li> 76 | <li><tag>;t</tag> <em>t</em> 新しいタブに開きます</li> 77 | <li><tag>;b</tag> <em>b</em> 新しいバックグラウンドなタブに開きます</li> 78 | <li><tag>;w</tag> <em>w</em> 新しいウィンドウに開きます</li> 79 | <li><tag>;F</tag> <em>F</em> <k name="CR"/> を区切りとして連続でバックグラウンドなタブに開きます</li> 80 | <li><tag>;O</tag> <em>O</em> <ex>:open</ex> コマンドに URL をセットします (<k>O</k> に似ています)</li> 81 | <li><tag>;T</tag> <em>T</em> <ex>:tabopen</ex> コマンドに URL をセットします (<k>T</k> に似ています)</li> 82 | <li><tag>;W</tag> <em>W</em> <ex>:winopen</ex> コマンドに URL をセットします</li> 83 | <li><tag>;v</tag> <em>v</em> ヒント先のソースを表示します</li> 84 | <li><tag>;V</tag> <em>V</em> ヒント先のソースを外部エディタで表示します</li> 85 | <li><tag>;y</tag> <em>y</em> ヒント先の場所をヤンクします</li> 86 | <li><tag>;Y</tag> <em>Y</em> ヒント先のテキストをヤンクします</li> 87 | <li><tag>;c</tag> <em>c</em> コンテキストメニューを開きます</li> 88 | <li><tag>;i</tag> <em>i</em> 画像を開きます</li> 89 | <li><tag>;I</tag> <em>I</em> 画像を新しいタブに開きます</li> 90 | </ul> 91 | 92 | <p> 93 | <k>;</k> プロンプトから <k name="Tab"/> で拡張ヒントモードのリストを 94 | 表示できるかは <o>complete</o> に依存します。 95 | </p> 96 | 97 | <p> 98 | すべての拡張ヒントモードのヒント可能な要素は <o>extendedhinttags</o> の XPath 式で設定可能です。 99 | </p> 100 | </description> 101 | </item> 102 | 103 | </document> 104 | <!-- vim:se sts=4 sw=4 et: --> 105 | -------------------------------------------------------------------------------- /common/locale/ja/insert.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="insert" 8 | title="&liberator.appname; Insert Mode" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="Insert-mode Insert mode-insert">挿入モード</h1> 12 | <toc start="2"/> 13 | 14 | <p> 15 | 挿入モードはテキストボックスやテキストエリアでテキストを入力するために使用されます。 16 | <o>insertmode</o> が設定されている場合、テキストエリアにフォーカスすると直ちに挿入モードに切り替わります。 17 | </p> 18 | 19 | <item> 20 | <tags>i_i</tags> 21 | <spec>i_i</spec> 22 | <description> 23 | <p><o>insertmode</o> が設定されていない場合、テキストエリアにおいて挿入モードを開始します。</p> 24 | </description> 25 | </item> 26 | 27 | 28 | 29 | <h2 tag="ins-special-keys">挿入モードの特殊キー</h2> 30 | 31 | <item> 32 | <tags><![CDATA[i_<C-i>]]></tags> 33 | <spec><C-i></spec> 34 | <description> 35 | <p>外部エディタを起動します。 <o>editor</o> オプションを参照してください。</p> 36 | </description> 37 | </item> 38 | 39 | 40 | <item> 41 | <tags><![CDATA[i_<C-]>]]></tags> 42 | <spec><C-]></spec> 43 | <description> 44 | <p>挿入モードで有効な略語を展開します。</p> 45 | </description> 46 | </item> 47 | 48 | 49 | </document> 50 | <!-- vim:se sts=4 sw=4 et: --> 51 | -------------------------------------------------------------------------------- /common/locale/ja/message.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <document 7 | name="message" 8 | title="&liberator.appname; Messages" 9 | xmlns="http://vimperator.org/namespaces/liberator" 10 | xmlns:html="http://www.w3.org/1999/xhtml"> 11 | <h1 tag="messages">エラーと通知メッセージ</h1> 12 | <toc start="2"/> 13 | 14 | <tags>message-history</tags> 15 | 16 | <p> 17 | &liberator.appname; はすべての情報メッセージ・エラーメッセージをメッセージ履歴に保存します。 18 | 出力される情報メッセージの種類は <o>verbose</o> オプションで制御できます。 19 | 保存するメッセージの数は <o>messages</o> オプションで設定できます。 20 | </p> 21 | 22 | <item> 23 | <tags>:mes :messages</tags> 24 | <spec>:mes<oa>sages</oa></spec> 25 | <description> 26 | <p>今までに表示されたメッセージを表示します。</p> 27 | </description> 28 | </item> 29 | 30 | 31 | <item> 32 | <tags>:messc :messclear</tags> 33 | <spec>:messc<oa>lear</oa></spec> 34 | <description> 35 | <p>メッセージ履歴を消去します。</p> 36 | </description> 37 | </item> 38 | 39 | 40 | <item> 41 | <tags><![CDATA[g<]]></tags> 42 | <spec>g<</spec> 43 | <description> 44 | <p> 45 | 直前のコマンドの出力を再表示します。 46 | 最新のコマンドの出力のみ利用可能です。 47 | </p> 48 | </description> 49 | </item> 50 | 51 | <tags>pager more-prompt</tags> 52 | 53 | <code> 54 | -- More -- 55 | -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit 56 | </code> 57 | 58 | <p> 59 | このメッセージはメッセージウィンドウがメッセージで一杯になったときに表示されます。 60 | <o>more</o> オプションが有効である場合のみ表示されます。 61 | そして <em>MoreMsg</em> ハイライトグループで装飾されます。 62 | </p> 63 | 64 | <dl> 65 | <dt><k name="CR"/> or j or <k name="Down"/> </dt><dd>一行分下へ</dd> 66 | <dt>d </dt><dd>半ページ分下へ</dd> 67 | <dt><k name="Space"/> or <k name="PageDown"/></dt><dd>1ページ分下へ</dd> 68 | <dt>G </dt><dd>最下部へ</dd> 69 | <dt/><dd/> 70 | <dt><k name="BS"/> or k or <k name="Up"/> </dt><dd>一行分上へ</dd> 71 | <dt>u </dt><dd>半ページ分上へ</dd> 72 | <dt>b or <k name="PageUp"/> </dt><dd>1ページ分上へ</dd> 73 | <dt>g </dt><dd>最上部へ</dd> 74 | <dt/><dd/> 75 | <dt>q, <k name="Esc"/> or CTRL-C </dt><dd>読み取りを止めます(ウィンドウが閉じられます)</dd> 76 | <dt>: </dt><dd>読み取りを止めてコマンドライン入力へ移ります</dd> 77 | <dt>; </dt><dd>拡張ヒント(<t>extended-hints</t>) モードになります</dd> 78 | <dt><k name="C-Y"/> </dt><dd>選択範囲をクリップボードにヤンク(コピー)します</dd> 79 | </dl> 80 | 81 | </document> 82 | <!-- vim:se sts=4 sw=4 et: --> 83 | -------------------------------------------------------------------------------- /common/locale/ja/pattern.xml: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8'?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"><document name='pattern' xmlns:html='http://www.w3.org/1999/xhtml' title='&liberator.appname; Patterns' xmlns='http://vimperator.org/namespaces/liberator'> 5 | <h1 tag='text-search-commands'>テキスト検索コマンド</h1> 6 | <toc start='2'/> 7 | 8 | <p> 9 | &liberator.appname; は &liberator.host; の標準的なテキスト検索機能に Vim のようなインターフェイスを提供します。 10 | &liberator.host; そのものが正規表現による検索をサポートしていないように、検索コマンドでは正規表現を使うことはできません。 11 | この機能が実装されることはないでしょう。 12 | </p> 13 | 14 | <item> 15 | <tags>/</tags> 16 | <spec>/<a>pattern</a>[/]<CR></spec> 17 | <description> 18 | <p><a>pattern</a> による前方検索を行います。</p> 19 | 20 | <p> 21 | <str>\c</str> がパターンのどこかに指定されている場合、そのパターンすべてにおいて <o>ignorecase</o> がオンになっているとして扱われます。 22 | <str>\C</str> はパターンすべてにおいて大文字小文字を区別するようになります。 23 | </p> 24 | <p> 25 | <str>\l</str> がパターンのどこかに指定されている場合、 <o>linksearch</o> がオンになっているとして扱われ、リンクのテキストのみが検索されます。 26 | <str>\L</str> はページのすべてを検索します。 27 | </p> 28 | </description> 29 | </item> 30 | 31 | 32 | <item> 33 | <tags>?</tags> 34 | <spec>?<a>pattern</a>[?]<CR></spec> 35 | <description> 36 | <p><a>pattern</a> による後方検索を行います。</p> 37 | 38 | <p><a>pattern</a> には <k>/</k> と同じ修飾子を使うことができます +</p> 39 | 40 | <note>インクリメンタルサーチは現在のところ前方検索においてのみ動作します。</note> 41 | </description> 42 | </item> 43 | 44 | 45 | <item> 46 | <tags>n</tags> 47 | <spec>n</spec> 48 | <description> 49 | <p> 50 | 次を検索します。 51 | 直前の検索を 1 回 ( カウント指定がサポートされるまでですが ) 繰り返します。 52 | </p> 53 | </description> 54 | </item> 55 | 56 | 57 | <item> 58 | <tags>N</tags> 59 | <spec>N</spec> 60 | <description> 61 | <p> 62 | 前を検索します。 63 | 直前の検索を反対の方向へ 1 回 ( カウント指定がサポートされるまでですが ) 繰り返します。 64 | </p> 65 | </description> 66 | </item> 67 | 68 | 69 | <item> 70 | <tags>*</tags> 71 | <spec>*</spec> 72 | <description> 73 | <p>カーソルの下にある単語を前方検索します。</p> 74 | </description> 75 | </item> 76 | 77 | 78 | <item> 79 | <tags>#</tags> 80 | <spec>#</spec> 81 | <description> 82 | <p>カーソルの下にある単語を後方検索します。</p> 83 | </description> 84 | </item> 85 | 86 | 87 | <item> 88 | <tags>:noh :nohlsearch</tags> 89 | <spec>:noh<oa>lsearch</oa></spec> 90 | <description> 91 | <p> 92 | 検索による強調表示を消去します。 93 | 文書の強調表示は新たに検索が行われたときもしくは <o>hlsearch</o> オプションが設定されたときに表示されるようになります。 94 | </p> 95 | </description> 96 | </item> 97 | 98 | </document> 99 | <!-- vim:se sts=4 sw=4 et: --> 100 | -------------------------------------------------------------------------------- /common/locale/ja/print.xml: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8'?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"><document name='print' xmlns:html='http://www.w3.org/1999/xhtml' title='&liberator.appname; Printing' xmlns='http://vimperator.org/namespaces/liberator'> 5 | <h1 tag='printing'>印刷</h1> 6 | <toc start='2'/> 7 | 8 | <item> 9 | <tags>:ha :hardcopy</tags> 10 | <spec>:ha<oa>rdcopy</oa><oa>!</oa></spec> 11 | <description> 12 | <p> 13 | 現在のページを印刷します。 14 | プリンタの選択、印刷部数、方向の指定などができるダイアログを開きます。 15 | <oa>!</oa> とともに使用された場合、ダイアログは表示されずデフォルトのプリンターが使用されます。 16 | </p> 17 | </description> 18 | </item> 19 | 20 | 21 | <item> 22 | <spec>:ha<oa>rdcopy</oa><oa>!</oa> ><a>filename</a></spec> 23 | <description> 24 | <p><ex>:hardcopy</ex> と同様ですが、 <a>filename</a> に出力します。</p> 25 | <note>注釈: Windows では利用できません。</note> 26 | </description> 27 | </item> 28 | 29 | 30 | <h2 tag='&liberator.host;-print-dialogs'>&liberator.host; の印刷ダイアログ</h2> 31 | 32 | <p> 33 | 「印刷プレビュー」と「ページ設定」のダイアログは <ex>:dialog</ex> コマンドを使うことで開くことができます。 34 | </p> 35 | 36 | <p>印刷プレビュー</p> 37 | <code><ex>:dialog printpreview</ex></code> 38 | <p>ページ設定</p> 39 | <code><ex>:dialog printsetup</ex></code> 40 | 41 | </document> 42 | <!-- vim:se sts=4 sw=4 et: --> 43 | -------------------------------------------------------------------------------- /common/locale/ja/repeat.xml: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8'?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"><document name='repeat' xmlns:html='http://www.w3.org/1999/xhtml' title='&liberator.appname; Repeating Commands' xmlns='http://vimperator.org/namespaces/liberator'> 5 | <h1 tag='repeating'>リピートコマンド</h1> 6 | <toc start='2'/> 7 | 8 | <p>&liberator.appname; はコマンドを何回も繰り返し実行したり、マクロを記録することができます。</p> 9 | 10 | <h2 tag='single-repeat'>単純な繰り返し</h2> 11 | 12 | <item> 13 | <tags>.</tags> 14 | <spec><oa>count</oa>.</spec> 15 | <description> 16 | <p> 17 | マッピングされたキーの直前の入力を <oa>count</oa> 回繰り返します。 18 | Vim と違って &liberator.appname; は主に編集用のコマンドを持たないため、これはもっぱらそれらには適用されないことに注意してください。 19 | </p> 20 | </description> 21 | </item> 22 | 23 | 24 | <item> 25 | <tags>@:</tags> 26 | <spec><oa>count</oa>@:</spec> 27 | <description> 28 | <p>最後に実行された ex コマンドを <oa>count</oa> 回実行します。</p> 29 | </description> 30 | </item> 31 | 32 | 33 | 34 | <h2 tag='macros complex-repeat'>マクロ</h2> 35 | 36 | <item> 37 | <tags>q</tags> 38 | <spec>q<a>0-9a-zA-Z</a></spec> 39 | <description> 40 | <p> 41 | 一連のキー入力をマクロとして記録します。 42 | 利用可能なマクロ名は {0-9a-zA-Z} です ( 大文字が追加されています ) 。 43 | 記録を終了するには <k>q</k> を押してください。 44 | </p> 45 | </description> 46 | </item> 47 | 48 | 49 | <item> 50 | <tags>:macros</tags> 51 | <spec>:mac<oa>ros</oa> <oa>pat</oa></spec> 52 | <description> 53 | <p> 54 | 任意の正規表現 <oa>pat</oa> にマッチする記録済みのマクロを一覧表示します。 55 | 何も正規表現が与えられていない場合、すべてのマクロが表示されます。 56 | </p> 57 | </description> 58 | </item> 59 | 60 | 61 | <item> 62 | <tags>:delmac :delmacros</tags> 63 | <spec>:delmac<oa>ros</oa> <a>args</a></spec> 64 | <spec>:delmac<oa>ros</oa>!</spec> 65 | <description> 66 | <p> 67 | 正規表現 <a>args</a> にマッチする記録済みのマクロを削除します。 68 | <oa>!</oa> が与えられている場合すべてのマクロが削除されます。 69 | </p> 70 | </description> 71 | </item> 72 | 73 | 74 | <item> 75 | <tags>@ :play</tags> 76 | <spec>:pl<oa>ay</oa> <a>arg</a></spec> 77 | <spec><oa>count</oa>@<a>arg</a></spec> 78 | <description> 79 | <p> 80 | <a>arg</a> という名前のマクロの内容を <oa>count</oa> 回再生します。 81 | <a>arg</a> として {0-9a-z} のみを受け付ける <k>@</k> というキーマッピングもあります。 82 | </p> 83 | </description> 84 | </item> 85 | 86 | 87 | <item> 88 | <tags>@@</tags> 89 | <spec><oa>count</oa>@@</spec> 90 | <description> 91 | <p>直前に実行されたマクロを <oa>count</oa> 回再生します。</p> 92 | </description> 93 | </item> 94 | 95 | 96 | 97 | <h2 tag='using-scripts'>スクリプトを使う</h2> 98 | 99 | <item> 100 | <tags>:so :source</tags> 101 | <spec>:so<oa>urce</oa><oa>!</oa> <a>file</a></spec> 102 | <description> 103 | <p> 104 | ex コマンド、 JavaScript 、 CSS を <a>file</a> から読み込みます。 105 | <ex>map < gt</ex> のような ex コマンドを含むたいていのファイルや以下のような JavaScript コードを含むファイルを読み込むことができます: 106 | </p> 107 | 108 | <code><![CDATA[ 109 | js <<EOF 110 | hello = function () { 111 | alert("Hello world"); 112 | } 113 | EOF 114 | ]]></code> 115 | 116 | <p> 117 | もしくはもうひとつの方法として _.js_ で終わるファイルを読み込むこともできます。 118 | これらのファイルは自動的に純粋な JavaScript ファイルとして読み込まれます。 119 | </p> 120 | 121 | <p> 122 | 注釈: いずれにしてもグローバルな window オブジェクトに関数を追加する必要がある場合、上記で示したようにしなければなりません。 123 | 以下のような関数は: 124 | </p> 125 | 126 | <code><![CDATA[ 127 | function hello2() { 128 | alert("Hello world"); 129 | } 130 | ]]></code> 131 | 132 | <p> 133 | そのスクリプトのスコープ内でのみ有効となります。 134 | </p> 135 | 136 | <p> 137 | ホームディレクトリの <tt>.&liberator.name;rc</tt> ファイルや <tt>~/.&liberator.name;/plugin/</tt> のすべてのファイルは起動時に常に読み込まれます。 138 | <tt>~</tt> は <tt>$HOME</tt> ディレクトリへのショートカットとして扱われます。 139 | <oa>!</oa> が指定されている場合、エラーは表示されません。 140 | </p> 141 | </description> 142 | </item> 143 | 144 | 145 | <item> 146 | <tags>:lpl :loadplugins</tags> 147 | <spec>:loadplugins</spec> 148 | <description> 149 | <p> 150 | まだ読み込まれていないプラグインを直ちにすべて読み込みます。 151 | プラグインは &liberator.name;rc が読み込まれた後に自動的に読み込まれますので、もしもプラグインによって実装されるコマンドを &liberator.name;rc が含んでいる場合、このコマンドは &liberator.name;rc ファイルの早い段階に書かれなければなりません。 152 | さらに、このコマンドは &liberator.appname; の再起動を行うことなく新しいプラグインの読み込みを行うことを可能にします。 153 | </p> 154 | </description> 155 | </item> 156 | 157 | 158 | <item> 159 | <tags>:ru :runtime</tags> 160 | <spec>:runt<oa>ime</oa><oa>!</oa> <a>file</a> …</spec> 161 | <description> 162 | <p> 163 | <o>runtimepath</o> の各々のディレクトリから指定されたファイルを読み込みます。例: 164 | </p> 165 | <code><ex>:runtime plugin/foobar.vimp</ex></code> 166 | <p> 167 | 最初に見つかったファイルのみが読み込まれます。 168 | <oa>!</oa> が与えられている場合、見つかったファイルすべてが読み込まれます。 169 | </p> 170 | </description> 171 | </item> 172 | 173 | 174 | <item> 175 | <tags>:scrip :scriptnames</tags> 176 | <spec>:scrip<oa>tnames</oa></spec> 177 | <description> 178 | <p>読み込まれたスクリプト名を読み込まれた順番ですべて一覧表示します。 </p> 179 | </description> 180 | </item> 181 | 182 | 183 | <item> 184 | <tags>:fini :finish</tags> 185 | <spec>:fini<oa>sh</oa></spec> 186 | <description> 187 | <p> 188 | スクリプトファイルの読み込みを中止します。 189 | &liberator.appname; スクリプトファイル内からのみ呼び出すことが可能です。 190 | </p> 191 | </description> 192 | </item> 193 | 194 | 195 | <h2 tag='profile profiling'>分析</h2> 196 | 197 | <item> 198 | <tags>:time</tags> 199 | <spec>:<oa>count</oa>time<oa>!</oa> <a>code|:command</a></spec> 200 | <description> 201 | <p> 202 | コード断片やコマンドを分析します。 203 | <a>code</a> を <oa>count</oa> 回 ( デフォルトは 1 回です ) 実行し経過時間を返します。 204 | <a>code</a> は常に JavaScript の eval() に渡されますが、これは遅いため結果は参考程度にとどめておいてください。 205 | </p> 206 | 207 | <p> 208 | もし <a>code</a> が <ex>:</ex> で開始されている場合、 &liberator.appname; のコマンドとして実行されます。 209 | </p> 210 | 211 | <p> 212 | 統計分析の結果を表示することなくただ何らかのコマンドを複数回実行したい場合は <oa>!</oa> をつけた特殊なバージョンを使用してください。 213 | </p> 214 | </description> 215 | </item> 216 | 217 | </document> 218 | <!-- vim:se sts=4 sw=4 et: --> 219 | -------------------------------------------------------------------------------- /common/locale/ja/starting.xml: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8'?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"><document name='starting' xmlns:html='http://www.w3.org/1999/xhtml' title='&liberator.appname; Starting' xmlns='http://vimperator.org/namespaces/liberator'> 5 | <h1 tag='starting'>Starting &liberator.appname;</h1> 6 | <toc start='2'/> 7 | 8 | <tags>startup-options</tags> 9 | 10 | <p> 11 | &liberator.host; のオプション -&liberator.name; によって &liberator.appname; にコマンドラインオプションを渡すことが出来ます。 12 | これらは一つの文字列の引数として渡されます。 13 | ( 例: &liberator.hostbin; -&liberator.name; <str>++cmd 'set exrc' +u 'tempRcFile' ++noplugin</str> ) 14 | </p> 15 | 16 | <item> 17 | <tags>+c</tags> 18 | <spec>+c <a>command</a></spec> 19 | <description> 20 | <p> 21 | 初期化完了後に一つの ex コマンドを実行します。 22 | <t>initialization</t> を参照してください。 23 | </p> 24 | 25 | <p>このオプションは複数個指定できます。</p> 26 | </description> 27 | </item> 28 | 29 | 30 | <item> 31 | <tags>++cmd</tags> 32 | <spec>++cmd <a>command</a></spec> 33 | <description> 34 | <p> 35 | 初期化処理の前に一つのコマンドを実行します。 36 | <t>initialization</t> を参照してください。 37 | </p> 38 | 39 | <p>このオプションは複数個指定できます。</p> 40 | </description> 41 | </item> 42 | 43 | 44 | <item> 45 | <tags>+u</tags> 46 | <spec>+u <a>rcfile</a></spec> 47 | <description> 48 | <p> 49 | <a>rcfile</a> ファイルはユーザによる初期化コマンドにつかわれます。 50 | <a>rcfile</a> が "NORC" であれば、プラグインのロード意外には初期化処理は一切行われません。 51 | 即ち、<t>initialization</t> におけるステップ 1. と 2. はスキップされます。 52 | <a>rcfile</a> が "NONE" であれば、プラグインのロードもスキップされます。 53 | </p> 54 | </description> 55 | </item> 56 | 57 | 58 | <item> 59 | <tags>++noplugin</tags> 60 | <spec>++noplugin</spec> 61 | <description> 62 | <p>起動時にプラグインが読み込まれるのを防ぎます。 <o>loadplugins</o> を参照してください。</p> 63 | </description> 64 | </item> 65 | 66 | 67 | <h2 tag='initialization startup'>初期化</h2> 68 | 69 | <p>起動時、&liberator.appname; は、以下の順番でタスクを処理します。</p> 70 | 71 | <ol> 72 | <li> 73 | &liberator.appname; はユーザによる初期化コマンドを実行します。 74 | 75 | 以下のうちのひとつが見つかった場合、それが実行され、他の場所のものは無視されます。 76 | 77 | <ol> 78 | <li tag='$&liberator.idname;_INIT'> 79 | <em>$&liberator.idname;_INIT</em> — 一つの ex コマンドを書くことが出来ます。 ( 例: "<ex>:source <a>file</a></ex>"). 80 | </li> 81 | <li tag='$MY_&liberator.idname;RC'> 82 | <em>~/&liberator.name;rc</em> — Windows のみ。 このファイルがあれば、実行され、<em>$MY_&liberator.idname;RC</em> にそのパスがセットされます。 83 | </li> 84 | <li> 85 | <em>~/.&liberator.name;rc</em> — このファイルがあれば、実行されます。 86 | </li> 87 | </ol> 88 | </li> 89 | <li> 90 | <o>exrc</o> がセットされていて、+u コマンドラインオプションが指定されていなければ、 91 | カレントディレクトリの全ての RC ファイルもまた読み込まれます。 92 | </li> 93 | <li> 94 | <o>runtimepath</o> に設定されているすべてのディレクトリから "plugin" という下位ディレクトリが検索され、まだ読み込まれていないプラグインが読み込まれます。 95 | 各々のプラグインディレクトリにおいて、すべての <tt>*.{js,vimp}</tt> ファイル ( さらに下位のディレクトリに存在するものも含まれます ) がアルファベット順に読み込まれます。 96 | 以下の場合はプラグインが読み込まれません: 97 | 98 | <ul> 99 | <li><o>noloadplugins</o> がセットされている。</li> 100 | <li>++noplugin コマンドラインオプションが指定されている。</li> 101 | <li>+u=NONE コマンドラインオプションが指定されている。</li> 102 | </ul> 103 | 104 | すでに読み込まれている特殊なプラグインは再度読み込まれることはありません ( 例: <ex>:loadplugins</ex> コマンドによって先に読み込まれているものが相当します ) 。 105 | </li> 106 | </ol> 107 | 108 | ユーザの ~ ( 例: "home" ) ディレクトリは以下のように決定されます: 109 | 110 | <ul> 111 | <li>Unix と Mac の場合、環境変数 <em>$HOME</em> が使用されます。</li> 112 | <li> 113 | Windows の場合、 &liberator.appname; <em>%HOME%</em>、 <em>%USERPROFILE%</em>、 <em>%HOMEDRIVE%%HOMEPATH%</em> の順に存在を確認します。そして最初に見つかったものが使用されます。 114 | </li> 115 | </ul> 116 | 117 | <h2 tag='save-settings'>設定の保存</h2> 118 | 119 | <item> 120 | <tags>:mkv :mk&liberator.name;rc</tags> 121 | <spec>:mkv<oa>imperatorrc</oa><oa>!</oa> <oa>file</oa></spec> 122 | <description> 123 | <p> 124 | 現在のキーマッピングやオプションの変更を <oa>file</oa> に書き出します。 125 | もし <oa>file</oa> が指定されていない場合、<em>~/.&liberator.name;rc</em> というファイルが存在していなければそこに書き出します。 126 | <oa>file</oa> を上書きする <ex>:mkvimperatorrc!</ex> という特別なコマンドもあります。 127 | </p> 128 | 129 | <p> 130 | 警告: これはカレントディレクトリにファイルを書き出すという Vim のデフォルトの振る舞いと異なります。 131 | </p> 132 | </description> 133 | </item> 134 | 135 | 136 | <h2 tag='restarting'>再起動</h2> 137 | 138 | <item> 139 | <tags>:res :restart</tags> 140 | <spec>:res<oa>tart</oa></spec> 141 | <description> 142 | <p>&liberator.host; を強制的に再起動します。拡張機能をインストールするときに便利です。</p> 143 | </description> 144 | </item> 145 | 146 | 147 | 148 | </document> 149 | <!-- vim:se sts=4 sw=4 et: --> 150 | -------------------------------------------------------------------------------- /common/locale/ja/various.xml: -------------------------------------------------------------------------------- 1 | <?xml version='1.0' encoding='UTF-8'?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE document SYSTEM "chrome://liberator/content/liberator.dtd"><document name='various' xmlns:html='http://www.w3.org/1999/xhtml' title='&liberator.appname; Other' xmlns='http://vimperator.org/namespaces/liberator'> 5 | <h1 tag="other-help">その他のヘルプ</h1> 6 | <toc start='2'/> 7 | 8 | <h2 tag='various'>色々なコマンド</h2> 9 | 10 | <item> 11 | <tags>:beep</tags> 12 | <spec>:beep</spec> 13 | <description> 14 | <p>システムビープ音を再生します。</p> 15 | </description> 16 | </item> 17 | 18 | 19 | <item> 20 | <tags>:norm :normal</tags> 21 | <spec>:norm<oa>al</oa><oa>!</oa> <a>commands</a></spec> 22 | <description> 23 | <p> 24 | Normal モードのコマンド <a>commands</a> を実行します。これはコマンドライン上から Normal モードのコマンドを実行することを可能にします。 25 | <a>commands</a> は入力されたように実行されます。もし <oa>!</oa> が指定されていた場合、マッピングは解釈されません。<a>commands</a> は完全なコマンドであるべきです。<a>commands</a> はスペースではじめることはできません。スペースの前に 1 ( いち ) をおくとひとつのスペースと解釈されます ( "1 " は " " です ) 。 26 | </p> 27 | </description> 28 | </item> 29 | 30 | 31 | <item> 32 | <tags>:run :! :!cmd</tags> 33 | <spec>:!<a>cmd</a></spec> 34 | <description> 35 | <p> 36 | 外部コマンドを実行します。<a>cmd</a> は system() を通して実行され、結果が出力されます。<a>cmd</a> に含まれる '!' は前回実行した外部コマンドに置換されます。ただし '!' の前にバックスラッシュがおかれている場合置換されず、バックスラッシュが取り除かれます。 37 | </p> 38 | <p> 39 | 警告: 入力リダイレクト ( < ほげ ) や標準入力を要求するコマンドは実行しないでください。&liberator.host; が異常停止します ! 40 | バックグラウンドのプロセスを起動することは可能です。(例: <ex>:! xterm &</ex>) 41 | </p> 42 | </description> 43 | </item> 44 | 45 | 46 | <item> 47 | <tags>:!!</tags> 48 | <spec>:!!</spec> 49 | <description> 50 | <p>最後の<ex>:!<a>cmd</a></ex>を再度実行します。</p> 51 | </description> 52 | </item> 53 | 54 | 55 | <item> 56 | <tags>:sa :sanitize</tags> 57 | <spec>:sa<oa>nitize</oa> [-timespan=<a>timespan</a>] <a>item</a> …</spec> 58 | <spec>:sa<oa>nitize</oa>! [-timespan=<a>timespan</a>]</spec> 59 | <description> 60 | <p> 61 | プライベートデータを削除します。<a>item</a> … は削除するプライベートデータのリストです。 62 | These may be any of the items valid for <o>sanitizeitems</o>. 63 | </p> 64 | 65 | <p> 66 | <oa>!</oa> 付きであれば、<o>sanitizeitems</o> が削除される項目のリストとして使われます。 67 | </p> 68 | 69 | <p> 70 | <a>timespan</a> が指定されたときは、その期間内の項目だけが削除されます。 71 | 指定されない場合は、<o>sanitizetimespan</o> の値が使用されます。 72 | </p> 73 | </description> 74 | </item> 75 | 76 | 77 | <item> 78 | <tags>:sil :silent</tags> 79 | <spec>:sil<oa>ent</oa> <a>command</a></spec> 80 | <description> 81 | <p> 82 | 静かにコマンドを実行します。 83 | コマンドの実行によって生成された通常のメッセ―ジやエラーメッセージは出力されず、履歴にも追加されません。 84 | </p> 85 | </description> 86 | </item> 87 | 88 | 89 | <item> 90 | <tags>:verb :verbose</tags> 91 | <spec>:<oa>count</oa>verb<oa>ose</oa> <a>command</a></spec> 92 | <description> 93 | <p> 94 | <o>verbose</o> を <oa>count</oa> にセットしてコマンドを実行します。 95 | もし、<oa>count</oa> が指定されなければ、1 がその値として使われます。 96 | </p> 97 | </description> 98 | </item> 99 | 100 | 101 | <item> 102 | <tags>:ve :version</tags> 103 | <spec>:ve<oa>rsion</oa><oa>!</oa></spec> 104 | <description> 105 | <p> 106 | バージョン情報を表示します。&liberator.host; のバージョンページは <ex>:version!</ex> で参照できます。 107 | </p> 108 | </description> 109 | </item> 110 | 111 | 112 | <h2 tag='online-help'>オンラインヘルプ</h2> 113 | 114 | <item> 115 | <tags><![CDATA[<F1> :help :h help]]></tags> 116 | <spec>:h<oa>elp</oa> <oa>subject</oa></spec> 117 | <spec><F1></spec> 118 | <description> 119 | <p> 120 | Open the help page. The default page, as specified by <o>helpfile</o> is shown 121 | unless <oa>subject</oa> is specified. If you need help for a specific topic, try 122 | <ex>:help overview</ex>. 123 | </p> 124 | </description> 125 | </item> 126 | 127 | 128 | <item> 129 | <tags>:helpall :helpa help-all</tags> 130 | <spec>:helpa<oa>ll</oa> <oa>subject</oa></spec> 131 | <description> 132 | <p>一つのぶつ切りにされていないヘルプを開きます。</p> 133 | 134 | <p>See <ex>:help</ex>.</p> 135 | </description> 136 | </item> 137 | 138 | 139 | <item> 140 | <tags>:exu :exusage</tags> 141 | <spec>:exu<oa>sage</oa><oa>!</oa></spec> 142 | <description> 143 | <p> 144 | ex コマンドのヘルプを表示します。もし <oa>!</oa> が与えられた場合、ヘルプはコマンド出力欄に一覧表示されます。 145 | </p> 146 | </description> 147 | </item> 148 | 149 | 150 | <item> 151 | <tags>:optionu :optionusage</tags> 152 | <spec>:optionu<oa>sage</oa><oa>!</oa></spec> 153 | <description> 154 | <p> 155 | オプションのヘルプを表示します。もし <oa>!</oa> が与えられた場合、ヘルプはコマンド出力欄に一覧表示されます。 156 | </p> 157 | </description> 158 | </item> 159 | 160 | 161 | <item> 162 | <tags>:viu :viusage</tags> 163 | <spec>:viu<oa>sage</oa><oa>!</oa></spec> 164 | <description> 165 | <p> 166 | ノーマルモードコマンドのヘルプを表示します。もし <oa>!</oa> が与えられた場合、ヘルプはコマンド出力欄に一覧表示されます。 167 | </p> 168 | </description> 169 | </item> 170 | 171 | 172 | 173 | <tags>42</tags> 174 | 175 | What is the meaning of life, the universe and everything? 176 | Douglas Adams, the only person who knew what this question really was about is 177 | now dead, unfortunately. So now you might wonder what the meaning of death 178 | is… 179 | 180 | 181 | <h2 tag='uncategorized'>未分類のヘルプ</h2> 182 | 183 | <item> 184 | <tags><![CDATA[<C-[> <Esc>]]></tags> 185 | <spec><Esc></spec> 186 | <description> 187 | <p> 188 | ページにフォーカスを移します。コマンドラインモードやヒントモードから抜けだし、ブラウザモードに復帰します。フォームにフォーカスして入力している場合も、ウェブページにフォーカスを移します。 189 | </p> 190 | </description> 191 | </item> 192 | 193 | 194 | <item> 195 | <tags><![CDATA[<Insert> i]]></tags> 196 | <spec>i</spec> 197 | <description> 198 | <p> 199 | キャレットモードを開始します。このモードはテキストカーソルが表示されあちこちへ移動させることができる Vim のノーマルモードに似ています。もしこのモードでテキストを選択したい場合、 <k>v</k> を押してビジュアルモードを開始してください。 200 | </p> 201 | </description> 202 | </item> 203 | 204 | 205 | </document> 206 | <!-- vim:se sts=4 sw=4 et: --> 207 | -------------------------------------------------------------------------------- /common/skin/prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/common/skin/prompt.png -------------------------------------------------------------------------------- /common/updateURL.rdf.in: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> 3 | <RDF:Description about="urn:mozilla:extension:###UUID###"> 4 | <em:updates> 5 | <RDF:Seq> 6 | <RDF:li> 7 | <RDF:Description> 8 | <em:version>###VERSION###</em:version> 9 | <em:targetApplication> 10 | <RDF:Description> 11 | <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> 12 | <em:minVersion>38.0</em:minVersion> 13 | <em:maxVersion>50.0</em:maxVersion> 14 | <em:updateLink>###UPDATEXPI###</em:updateLink> 15 | </RDF:Description> 16 | </em:targetApplication> 17 | </RDF:Description> 18 | </RDF:li> 19 | </RDF:Seq> 20 | </em:updates> 21 | </RDF:Description> 22 | </RDF:RDF> 23 | -------------------------------------------------------------------------------- /muttator/AUTHORS: -------------------------------------------------------------------------------- 1 | Main developer/Project founder: 2 | * Martin Stubenschrott (stubenschrott@vimperator.org) 3 | 4 | Inactive/former developers: 5 | * Daniel Bainton (dpb .AT. driftaway .DOT. org) 6 | 7 | Patches: 8 | * Gernot Hillier 9 | * Christian Dietrich (too many to list) 10 | 11 | A lot of people contributed to Vimperator, which is the basis of Muttator, so please refer 12 | to that AUTHOR file for more contributors. 13 | -------------------------------------------------------------------------------- /muttator/Donors: -------------------------------------------------------------------------------- 1 | 2009: 2 | * Andreas Nerf (biggest Muttator donor so far! thanks a lot) 3 | * Kirill Korotaev 4 | -------------------------------------------------------------------------------- /muttator/Makefile: -------------------------------------------------------------------------------- 1 | #### configuration 2 | 3 | VERSION = 1.4 4 | NAME = muttator 5 | 6 | include ../common/Makefile 7 | -------------------------------------------------------------------------------- /muttator/NEWS: -------------------------------------------------------------------------------- 1 | 2016-10-19: 2 | * version 1.4 3 | * compatibility fixes 4 | 5 | 2015-06-30: Just in time for summer 6 | * version 1.3 7 | * Better compatibility with Thunderbird up to version 38 8 | * Try harder with :moveto and :copyto to find a unique folder 9 | 10 | 2013-10-13: 11 | * version 1.2 12 | * Fix unmappable key "-". (Use \- or '-' or "-") 13 | * support command-count from map 14 | 15 | 2011-11-13: 16 | * version 1.1 17 | * Compatible with newer Thunderbirds 18 | * Fixed :contact and :contacts commands to work with newer Thunderbirds 19 | * Inherited newly designed Mode display from Vimperator 20 | * Fix ":compose -attachment" 21 | * add completer to ":compose -attachment" option 22 | * Fixed: editing message with external editor 23 | 24 | 2011-06-13 25 | * version 1.0 26 | * IMPORTANT: With the redesign of Vimperator for version 3.0 lots of things have 27 | changed also for Muttator. Please read Vimperator's release notes as well this time. 28 | * IMPORTANT: It is possible to yank more fields now, but it destroys previous key bindings. 29 | [m]yf[m] or [m]yy[m] to copy "From:" 30 | [m]ys[m] to copy Subject 31 | [m]y#[m] to copy Message ID 32 | [m]yt[m] to copy "To:" 33 | [m]yr[m] to copy recipients, To: + Cc: 34 | [m]yu[m] to copy URL of feed (only for RSS) 35 | * IMPORTANT: 'c' has been changed to 'o' for quickly opening folders 36 | * IMPORTANT: 'i' has been changed to 'm' to go into MESSAGE mode 37 | * IMPORTANT: Passthrough mode has been changed (just like in Vimperator) 38 | to 'i' for a single key and Shift-Esc for all keys 39 | * We no longer enter MESSAGE mode automatically after focus changes, 40 | use 'm' (and Esc) to enter/exit this mode. 41 | * Fix moving of more than one message with :moveto 42 | * add l1,l2,...,l5 to directly tag a message with the 1st, 2nd, ... tag 43 | * Fix ctrl-shift-n/p going to next/prev unread folder (thanks temerako) 44 | * fix all l* (label read/starred/etc.) mappings for new Thunderbirds 45 | * add ":dialog accounts" to open Thunderbird's account manager 46 | * change archive action (<C-s>) to use Thunderbird3 default feature 47 | * remove "archivefolder" option 48 | * Support rich text editor written by HTML. 49 | mode is into editing mode (INSERT, TEXTAREA, VISUAL) if the focused window is editable. 50 | And update map [m]i[m]: into be editing mode if editable otherwise MESSAGE mode. 51 | * enable to edit a HTML message on HTML compose mode. 52 | * new 'foldermode' option to change folder panel view. 53 | * add *-javascript* flag to [c]:abbreviate[c], [c]:iabbrev[c] and [c]:cabbrev[c]. 54 | * More small fixes 55 | * enable 'hinttags' and 'extenedhinttags' to setlocal 56 | * Add 'remotecontent' option allows display remote content. 57 | 58 | 2010-03-29 59 | * version 0.6 60 | * remove special handling of Ctrl-v/Ctrl-z in insert mode so that usual 61 | copy'n'paste actions will work again when writing a message 62 | * add +/- mapping in normal mode for pagewise scrolling of message 63 | (like <Space>, but without automatic jump to next unread message) 64 | * add ! mapping to toggle "junk" state of a message 65 | * asciidoc is no longer required to build Muttator 66 | * The full help system now available for Muttator. 67 | * add 'titlestring' option 68 | * rename *FolderLoaded* autocommand event to *FolderLoad* 69 | * add the *DOMLoad* autocommand event 70 | * add 'online' option 71 | * add 'smtpserver' option 72 | * add 'jsdebugger' option - switch on/off javascript debugger service 73 | 74 | 2009-03-29 75 | * version 0.5 76 | * fixes for recent TB nightly changes 77 | * new 'threads' option (non-functional for now) 78 | * new 'archivefolder' option 79 | * small bug fixes 80 | 81 | 2008-08-03: 82 | * version 0.4 83 | * new 'autoexternal' option to edit new messages/reply with the external editor by default. 84 | NOTE: You must set this option in your .muttatorrc, as options are not shared between the 85 | main thunderbird window and the compose window! 86 | * various *l* mappings for labeling messages 87 | * [m]p[m] to open RSS message in browser 88 | * [m]y[m] to yank sender or RSS URL 89 | * [m]Y[m] to yank subject 90 | * [m]R[m] to reply to all 91 | * new compose mappings: [m]s[m], [m]t[m] and [m]i[m] - Focus subject:, To: or message body 92 | * [m]q[m] quits composer now 93 | * new [m]x[m] mapping to toggle HTML display (is there a need for "simple HTML"?) 94 | * new [m]h[m] mapping to toggle headers 95 | 96 | 2008-06-04: 97 | * version 0.3 98 | * new tab related mappings + commands 99 | * new [c]:contacts[c] and [c]:contact[c] commands for address book operations 100 | * new [c]:message[c] command 101 | * new -- COMPOSE -- mode with mutt-like keybindings ([m]y[m] to send message, [m]e[m] to edit message) 102 | * external editor support for sending messages 103 | * [m]m[m] to open a new message compose window 104 | * new [m]M[m] command to send a new message to the sender of the currently selected message 105 | * completions for [c]:goto[c], [c]:copyto[c], [c]:moveto[c] commands 106 | * [c]:emptytrash[c] command 107 | * new [m]*[m] and [m]#[m] mappings to select next/prev message from same author (not perfect matching however) 108 | * [m]J[m], [m]K[m], [m]]s[m], etc. search in closed threads now 109 | * [m]gj[m] and [m]gk[m] to select messages in closed threads 110 | * [m]t[m] to select current thread, use [m]lr[m] now to label a message as read 111 | * KMail-like mode-independent scrolling with [m]<Left>[m]/[m]<Right>[m] and [m]<Up>[m]/[m]<Down>[m] 112 | * many small improvements 113 | 114 | 2008-04-30: 115 | * version 0.2 116 | * [m]<C-s>[m] mappings to move messages to an "Archive" folder (inspired by gmail) 117 | * new [c]:moveto[c] and [c]:copyto[c] commands 118 | * [m]u[m] and [m]<C-r>[m] mappings to undo/redo 119 | * new Muttator specific :help screen 120 | * small bug fixes 121 | 122 | 2008-04-29: 123 | * version 0.1 124 | * first public release, straight port from Vimperator with many basic mappings 125 | 126 | -------------------------------------------------------------------------------- /muttator/TODO: -------------------------------------------------------------------------------- 1 | Priority list: 2 | 1-9 as in vim (9=required for next release, 5=would be nice, 1=probably not) 3 | 4 | BUGS: 5 | - several tab related commands like :tab are enabled but don't work 6 | - stal=1 doesn't work 7 | 8 | (recent CVS regressions): 9 | - 'autoexternal' doesn't work 10 | 11 | FEATURES: 12 | 9 edit messages with vim 13 | 8 the archives need to be mailbox specific 14 | - currently it archives mail to the first Archive folder found 15 | 7 :set! mailnews.wraplength=140 or similar 16 | 6 add a feature to show emails from threads under each other like in gmail 17 | -------------------------------------------------------------------------------- /muttator/chrome.manifest: -------------------------------------------------------------------------------- 1 | # Thunderbird 2 | content muttator content/ 3 | skin muttator classic/1.0 skin/ 4 | locale muttator en-US locale/en-US/ 5 | locale liberator en-US ../common/locale/en-US/ 6 | 7 | content liberator ../common/content/ 8 | resource liberator ../common/modules/ 9 | skin liberator classic/1.0 ../common/skin/ 10 | 11 | override chrome://liberator/content/liberator.dtd chrome://muttator/content/liberator.dtd 12 | override chrome://liberator/content/config.js chrome://muttator/content/config.js 13 | 14 | overlay chrome://messenger/content/messenger.xul chrome://liberator/content/liberator.xul 15 | overlay chrome://messenger/content/messenger.xul chrome://muttator/content/muttator.xul 16 | 17 | overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://muttator/content/compose/liberator.xul 18 | overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://muttator/content/compose/compose.xul 19 | 20 | component {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} components/protocols.js 21 | contract @mozilla.org/network/protocol;1?name=chrome-data {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} 22 | 23 | component {9c8f2530-51c8-4d41-b356-319e0b155c44} components/protocols.js 24 | contract @mozilla.org/network/protocol;1?name=liberator {9c8f2530-51c8-4d41-b356-319e0b155c44} 25 | 26 | component {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} components/commandline-handler.js 27 | contract @mozilla.org/commandlinehandler/general-startup;1?type=muttator {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} 28 | 29 | -------------------------------------------------------------------------------- /muttator/components/commandline-handler.js: -------------------------------------------------------------------------------- 1 | // Header: 2 | const Name = "Muttator"; 3 | /* 4 | * We can't load our modules here, so the following code is sadly 5 | * duplicated: .w !sh 6 | vimdiff ../../*'/components/commandline-handler.js' 7 | */ 8 | 9 | // Copyright (c) 2009 by Doug Kearns 10 | // 11 | // This work is licensed for reuse under an MIT license. Details are 12 | // given in the License.txt file included with this file. 13 | 14 | Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 15 | 16 | const name = Name.toLowerCase(); 17 | function CommandLineHandler() { 18 | this.wrappedJSObject = this; 19 | } 20 | CommandLineHandler.prototype = { 21 | 22 | classDescription: Name + " Command-line Handler", 23 | 24 | classID: Components.ID("{16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}"), 25 | 26 | contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=" + name, 27 | 28 | _xpcom_categories: [{ 29 | category: "command-line-handler", 30 | entry: "m-" + name 31 | }], 32 | 33 | QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsICommandLineHandler]), 34 | 35 | handle: function (commandLine) { 36 | // TODO: handle remote launches differently? 37 | try { 38 | this.optionValue = commandLine.handleFlagWithParam(name, false); 39 | } 40 | catch (e) { 41 | dump(name + ": option '-" + name + "' requires an argument\n"); 42 | } 43 | } 44 | }; 45 | 46 | if(XPCOMUtils.generateNSGetFactory) 47 | var NSGetFactory = XPCOMUtils.generateNSGetFactory([CommandLineHandler]); 48 | else 49 | function NSGetModule(compMgr, fileSpec) XPCOMUtils.generateModule([CommandLineHandler]) 50 | 51 | // vim: set ft=javascript fdm=marker sw=4 ts=4 et: 52 | -------------------------------------------------------------------------------- /muttator/components/protocols.js: -------------------------------------------------------------------------------- 1 | ../../common/components/protocols.js -------------------------------------------------------------------------------- /muttator/content/addressbook.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2008 by Christian Dietrich <stettberger@dokucode.de> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | const Addressbook = Module("addressbook", { 7 | init: function () { 8 | services.add("abManager", "@mozilla.org/abmanager;1", Ci.nsIAbManager); 9 | }, 10 | 11 | // TODO: add option for a format specifier, like: 12 | // :set displayname=%l, %f 13 | generateDisplayName: function (firstName, lastName) { 14 | if (firstName && lastName) 15 | return lastName + ", " + firstName; 16 | else if (firstName) 17 | return firstName; 18 | else if (lastName) 19 | return lastName; 20 | else 21 | return ""; 22 | }, 23 | 24 | add: function (address, firstName, lastName, displayName) { 25 | const personalAddressbookURI = "moz-abmdbdirectory://abook.mab"; 26 | let directory = services.get("abManager").getDirectory(personalAddressbookURI); 27 | let card = Cc["@mozilla.org/addressbook/cardproperty;1"].createInstance(Ci.nsIAbCard); 28 | 29 | if (!address || !directory || !card) 30 | return false; 31 | 32 | card.primaryEmail = address; 33 | card.firstName = firstName; 34 | card.lastName = lastName; 35 | card.displayName = displayName; 36 | 37 | return directory.addCard(card); 38 | }, 39 | 40 | // TODO: add telephone number support 41 | list: function (filter, newMail) { 42 | let addresses = []; 43 | let dirs = services.get("abManager").directories; 44 | let lowerFilter = filter.toLowerCase(); 45 | 46 | while (dirs.hasMoreElements()) { 47 | let addrbook = dirs.getNext().QueryInterface(Ci.nsIAbDirectory); 48 | let cards = addrbook.childCards; 49 | while (cards.hasMoreElements()) { 50 | let card = cards.getNext().QueryInterface(Ci.nsIAbCard); 51 | //var mail = card.primaryEmail || ""; //XXX 52 | let displayName = card.displayName; 53 | if (!displayName) 54 | displayName = this.generateDisplayName(card.firstName, card.lastName); 55 | 56 | if (displayName.toLowerCase().indexOf(lowerFilter) > -1 57 | || card.primaryEmail.toLowerCase().indexOf(lowerFilter) > -1) 58 | addresses.push([displayName, card.primaryEmail]); 59 | } 60 | } 61 | 62 | if (addresses.length < 1) { 63 | if (!filter) 64 | liberator.echoerr("No contacts"); 65 | else 66 | liberator.echoerr("No matching contacts for: " + filter); 67 | return false; 68 | } 69 | 70 | if (newMail) { 71 | // Now we have to create a new message 72 | let args = {}; 73 | args.to = addresses.map( 74 | function (address) "\"" + address[0].replace(/"/g, "") + " <" + address[1] + ">\"" 75 | ).join(", "); 76 | 77 | mail.composeNewMail(args); 78 | } 79 | else { 80 | let list = template.tabular(["Name", "Address"], [[util.clip(address[0], 50), address[1]] for ([, address] in Iterator(addresses))]); 81 | commandline.echo(list, commandline.HL_NORMAL, commandline.FORCE_MULTILINE); 82 | } 83 | return true; 84 | } 85 | }, { 86 | }, { 87 | commands: function () { 88 | commands.add(["con[tact]"], 89 | "Add an address book entry", 90 | function (args) { 91 | let mailAddr = args[0]; // TODO: support more than one email address 92 | let firstName = args["-firstname"] || null; 93 | let lastName = args["-lastname"] || null; 94 | let displayName = args["-name"] || null; 95 | if (!displayName) 96 | displayName = addressbook.generateDisplayName(firstName, lastName); 97 | 98 | if (addressbook.add(mailAddr, firstName, lastName, displayName)) 99 | liberator.echomsg("Added contact: " + displayName + " <" + mailAddr + ">"); 100 | else 101 | liberator.echoerr("Could not add contact: " + mailAddr); 102 | 103 | }, 104 | { 105 | argCount: "+", 106 | options: [[["-firstname", "-f"], commands.OPTION_STRING], 107 | [["-lastname", "-l"], commands.OPTION_STRING], 108 | [["-name", "-n"], commands.OPTION_STRING]] 109 | }); 110 | 111 | commands.add(["contacts", "addr[essbook]"], 112 | "List or open multiple addresses", 113 | function (args) { addressbook.list(args.string, args.bang); }, 114 | { bang: true }); 115 | }, 116 | mappings: function () { 117 | var myModes = config.mailModes; 118 | 119 | mappings.add(myModes, ["a"], 120 | "Open a prompt to save a new addressbook entry for the sender of the selected message", 121 | function () { 122 | try { 123 | var to = gDBView.hdrForFirstSelectedMessage.mime2DecodedAuthor; 124 | } 125 | catch (e) { 126 | liberator.beep(); 127 | } 128 | 129 | if (!to) 130 | return; 131 | 132 | let address = to.substring(to.indexOf("<") + 1, to.indexOf(">")); 133 | 134 | let displayName = to.substr(0, to.indexOf("<") - 1); 135 | if (/^\S+\s+\S+\s*$/.test(displayName)) { 136 | let names = displayName.split(/\s+/); 137 | displayName = "-firstname=" + names[0].replace(/"/g, "") 138 | + " -lastname=" + names[1].replace(/"/g, ""); 139 | } 140 | else 141 | displayName = "-name=\"" + displayName.replace(/"/g, "") + "\""; 142 | 143 | commandline.open("", "contact " + address + " " + displayName, modes.EX); 144 | }); 145 | } 146 | }); 147 | 148 | // vim: set fdm=marker sw=4 ts=4 et: 149 | -------------------------------------------------------------------------------- /muttator/content/compose/compose.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org> 2 | // 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | const Compose = Module("compose", { 7 | init: function () { 8 | var stateListener = { 9 | QueryInterface: function (id) { 10 | if (id.equals(Ci.nsIDocumentStateListener)) 11 | return this; 12 | throw Cr.NS_NOINTERFACE; 13 | }, 14 | 15 | // this is (also) fired once the new compose window loaded the message for the first time 16 | NotifyDocumentStateChanged: function (nowDirty) { 17 | // only edit with external editor if this window was not cached! 18 | if (options.autoexternal && !window.messageWasEditedExternally/* && !gMsgCompose.recycledWindow*/) { 19 | window.messageWasEditedExternally = true; 20 | editor.editFieldExternally(); 21 | } 22 | 23 | }, 24 | NotifyDocumentCreated: function () {}, 25 | NotifyDocumentWillBeDestroyed: function () {} 26 | }; 27 | 28 | // XXX: Hack! 29 | window.addEventListener("load", function () { 30 | if (window.messageWasEditedExternally === undefined) { 31 | window.messageWasEditedExternally = false; 32 | GetCurrentEditor().addDocumentStateListener(stateListener); 33 | } 34 | }, true); 35 | 36 | window.addEventListener("compose-window-close", function () { 37 | window.messageWasEditedExternally = false; 38 | }, true); 39 | } 40 | }, { 41 | }, { 42 | mappings: function () { 43 | mappings.add([modes.COMPOSE], 44 | ["e"], "Edit message", 45 | function () { 46 | GetCurrentEditorElement().contentWindow.focus(); 47 | editor.editFieldExternally(); 48 | }); 49 | 50 | mappings.add([modes.COMPOSE], 51 | ["y"], "Send message now", 52 | function () { window.goDoCommand("cmd_sendNow"); }); 53 | 54 | mappings.add([modes.COMPOSE], 55 | ["Y"], "Send message later", 56 | function () { window.goDoCommand("cmd_sendLater"); }); 57 | 58 | // FIXME: does not really work reliably 59 | mappings.add([modes.COMPOSE], 60 | ["t"], "Select To: field", 61 | function () { awSetFocus(0, awGetInputElement(1)); }); 62 | 63 | mappings.add([modes.COMPOSE], 64 | ["s"], "Select Subject: field", 65 | function () { GetMsgSubjectElement().focus(); }); 66 | 67 | mappings.add([modes.COMPOSE], 68 | ["i"], "Select message body", 69 | function () { SetMsgBodyFrameFocus(); }); 70 | 71 | mappings.add([modes.COMPOSE], 72 | ["q"], "Close composer, ask when for unsaved changes", 73 | function () { DoCommandClose(); }); 74 | 75 | mappings.add([modes.COMPOSE], 76 | ["Q", "ZQ"], "Force closing composer", 77 | function () { MsgComposeCloseWindow(true); /* cache window for better performance*/ }); 78 | } 79 | }); 80 | 81 | // vim: set fdm=marker sw=4 ts=4 et: 82 | -------------------------------------------------------------------------------- /muttator/content/compose/compose.xul: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | 3 | <!-- ***** BEGIN LICENSE BLOCK ***** {{{ 4 | Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org> 5 | 6 | This work is licensed for reuse under an MIT license. Details are 7 | given in the License.txt file included with this file. 8 | }}} ***** END LICENSE BLOCK ***** --> 9 | 10 | <!--?xml-stylesheet href="chrome://browser/skin/" type="text/css"?--> 11 | 12 | <overlay id="muttator" 13 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 14 | xmlns:nc="http://home.netscape.com/NC-rdf#" 15 | xmlns:html="http://www.w3.org/1999/xhtml" 16 | xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 17 | </overlay> 18 | 19 | <!-- vim: set fdm=marker sw=4 ts=4 et: --> 20 | -------------------------------------------------------------------------------- /muttator/content/compose/liberator.dtd: -------------------------------------------------------------------------------- 1 | 2 | <!ENTITY % liberatorBranding SYSTEM "chrome://branding/locale/brand.dtd"> 3 | %liberatorBranding; 4 | 5 | <!ENTITY liberator.mainWindow "msgcomposeWindow"> 6 | <!ENTITY liberator.name "muttator"> 7 | <!ENTITY liberator.idname "muttator"> 8 | <!ENTITY liberator.appname "Muttator"> 9 | <!ENTITY liberator.host "&brandShortName;"> 10 | <!ENTITY liberator.hostbin "thunderbird"> 11 | <!ENTITY liberator.statusBefore ""> 12 | <!ENTITY liberator.statusAfter "statusText"> 13 | <!ENTITY liberator.idkeyset "mailKeys"> 14 | -------------------------------------------------------------------------------- /muttator/content/liberator.dtd: -------------------------------------------------------------------------------- 1 | 2 | <!ENTITY % liberatorBranding SYSTEM "chrome://branding/locale/brand.dtd"> 3 | %liberatorBranding; 4 | 5 | <!ENTITY liberator.mainWindow "messengerWindow"> 6 | <!ENTITY liberator.name "muttator"> 7 | <!ENTITY liberator.idname "muttator"> 8 | <!ENTITY liberator.appname "Muttator"> 9 | <!ENTITY liberator.host "&brandShortName;"> 10 | <!ENTITY liberator.hostbin "thunderbird"> 11 | <!ENTITY liberator.statusBefore ""> 12 | <!ENTITY liberator.statusAfter "statusTextBox"> 13 | <!ENTITY liberator.idkeyset "mailKeys"> 14 | <!ENTITY liberator.toolboxId "mail-toolbox"> 15 | 16 | -------------------------------------------------------------------------------- /muttator/content/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/muttator/content/logo.png -------------------------------------------------------------------------------- /muttator/content/muttator.svg: -------------------------------------------------------------------------------- 1 | <svg height="40" width="135" xmlns="http://www.w3.org/2000/svg"><g font-family="DejaVu Sans Mono" font-size="24" transform="translate(3 -3.3621826)"><text x="-2" xml:space="preserve" y="22.112183"><tspan x="-2" y="22.112183">muttator_</tspan></text><text fill="#f00" x="-1.859375" xml:space="preserve" y="45.399292"><tspan x="-1.859375" y="45.399292">~</tspan></text></g></svg> -------------------------------------------------------------------------------- /muttator/content/muttator.xul: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | 3 | <!-- ***** BEGIN LICENSE BLOCK ***** {{{ 4 | Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org> 5 | 6 | This work is licensed for reuse under an MIT license. Details are 7 | given in the License.txt file included with this file. 8 | }}} ***** END LICENSE BLOCK ***** --> 9 | 10 | <!--?xml-stylesheet href="chrome://browser/skin/" type="text/css"?--> 11 | 12 | <overlay id="muttator" 13 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 14 | xmlns:nc="http://home.netscape.com/NC-rdf#" 15 | xmlns:html="http://www.w3.org/1999/xhtml" 16 | xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 17 | 18 | </overlay> 19 | 20 | <!-- vim: set fdm=marker sw=4 ts=4 et: --> 21 | -------------------------------------------------------------------------------- /muttator/contrib/vim/Makefile: -------------------------------------------------------------------------------- 1 | VIMBALL = muttator.vba 2 | 3 | vimball: mkvimball.txt syntax/muttator.vim ftdetect/muttator.vim 4 | -echo '%MkVimball! ${VIMBALL} .' | vim -u NORC -N -e -s mkvimball.txt 5 | 6 | all: vimball 7 | 8 | clean: 9 | rm -f ${VIMBALL} 10 | -------------------------------------------------------------------------------- /muttator/contrib/vim/ftdetect/muttator.vim: -------------------------------------------------------------------------------- 1 | " TODO: what's the Muttator filename extension? 2 | au BufNewFile,BufRead *muttatorrc*,*.muttator set filetype=muttator 3 | -------------------------------------------------------------------------------- /muttator/contrib/vim/mkvimball.txt: -------------------------------------------------------------------------------- 1 | syntax/muttator.vim 2 | ftdetect/muttator.vim 3 | -------------------------------------------------------------------------------- /muttator/contrib/vim/syntax/muttator.vim: -------------------------------------------------------------------------------- 1 | " Vim syntax file 2 | " Language: Muttator configuration file 3 | " Maintainer: Doug Kearns <dougkearns@gmail.com> 4 | " Last Change: 2009 Aug 27 5 | 6 | " TODO: make this muttator specific - shared liberator config? 7 | 8 | if exists("b:current_syntax") 9 | finish 10 | endif 11 | 12 | let s:cpo_save = &cpo 13 | set cpo&vim 14 | 15 | syn include @javascriptTop syntax/javascript.vim 16 | unlet b:current_syntax 17 | 18 | syn include @cssTop syntax/css.vim 19 | unlet b:current_syntax 20 | 21 | syn match muttatorCommandStart "\%(^\s*:\=\)\@<=" nextgroup=muttatorCommand,muttatorAutoCmd 22 | 23 | syn keyword muttatorCommand ab[breviate] ab[clear] addo[ns] addr[essbook] bN[ext] bd[elete] beep bf[irst] bl[ast] bn[ext] 24 | \ bp[revious] br[ewind] bufd[o] bun[load] bw[ipeout] ca[bbrev] cabc[lear] cd chd[ir] cm[ap] cmapc[lear] cno[remap] 25 | \ colo[rscheme] com[mand] comc[lear] con[tact] contacts copy[to] cu[nmap] cuna[bbrev] delc[ommand] delm[arks] delmac[ros] 26 | \ dels[tyle] dia[log] do[autocmd] doautoa[ll] ec[ho] echoe[rr] echom[sg] em[enu] empty[trash] exe[cute] exta[dd] extd[isable] 27 | \ extde[lete] exte[nable] extens[ions] exto[ptions] extp[references] exu[sage] fini[sh] frameo[nly] get[messages] go[to] 28 | \ h[elp] helpa[ll] ha[rdcopy] hi[ghlight] ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap] iu[nmap] iuna[bbrev] javas[cript] 29 | \ js let loadplugins lpl m[ail] ma[rk] macros map mapc[lear] marks mes[sages] messc[lear] mkm[uttatorrc] mm[ap] mmapc[lear] 30 | \ mno[remap] move[to] mu[nmap] nm[ap] nmapc[lear] nno[remap] no[remap] norm[al] nu[nmap] optionu[sage] pa[geinfo] pagest[yle] 31 | \ pas pl[ay] pref[erences] prefs pw[d] q[uit] re[load] res[tart] run runt[ime] sav[eas] scrip[tnames] se[t] setg[lobal] 32 | \ setl[ocal] sil[ent] so[urce] st[op] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabfir[st] tabl[ast] tabn[ext] 33 | \ tabp[revious] tabr[ewind] time tn[ext] tp[revious] 34 | \ una[bbreviate] unl[et] unm[ap] verb[ose] ve[rsion] vie[wsource] viu[sage] vm[ap] vmapc[lear] vno[remap] vu[nmap] w[rite] zo[om] 35 | \ contained 36 | 37 | syn match muttatorCommand "!" contained 38 | 39 | syn keyword muttatorAutoCmd au[tocmd] contained nextgroup=muttatorAutoEventList skipwhite 40 | 41 | syn keyword muttatorAutoEvent FolderLoad PageLoadPre PageLoad ShellCmdPost muttatorEnter muttatorLeavePre muttatorLeave 42 | \ contained 43 | 44 | syn match muttatorAutoEventList "\(\a\+,\)*\a\+" contained contains=muttatorAutoEvent 45 | 46 | syn region muttatorSet matchgroup=muttatorCommand start="\%(^\s*:\=\)\@<=\<\%(setl\%[ocal]\|setg\%[lobal]\|set\=\)\=\>" 47 | \ end="$" keepend oneline contains=muttatorOption,muttatorString 48 | 49 | syn keyword muttatorOption archivefolder autocomplete ac cdpath cd complete cpt editor eventignore ei extendedhinttags eht fileencoding fenc 50 | \ followhints fh guioptions go helpfile hf hintinputs hin hintmatching hm hinttags ht hinttimeout hto history hi 51 | \ layout maxitems messages msgs nextpattern pageinfo pa prevpattern previouspattern runtimepath rtp scroll scr shell sh shellcmdflag shcf 52 | \ showstatuslinks ssli status smtpserver smtp suggestengines titlestring urlseparator verbose vbs 53 | \ wildmode wim wop wordseparators wsp 54 | \ contained nextgroup=muttatorSetMod 55 | 56 | " toggle options 57 | syn match muttatorOption "\<\%(no\|inv\)\=\%(autoexternal\|errorbells\|eb\|exrc\|ex\|focuscontent\|fc\|fullscreen\|fs\)\>!\=" 58 | \ contained nextgroup=muttatorSetMod 59 | syn match muttatorOption "\<\%(no\|inv\)\=\%(insertmode\|im\|loadplugins\|lpl\|more\|online\|showmode\|smd\|visualbell\|vb\)\>!\=" 60 | \ contained nextgroup=muttatorSetMod 61 | syn match muttatorOption "\<\%(no\|inv\)\=\%(usermode\|um\)\>!\=" 62 | \ contained nextgroup=muttatorSetMod 63 | 64 | syn match muttatorSetMod "\%(\<[a-z_]\+\)\@<=&" contained 65 | 66 | syn region muttatorJavaScript start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=" end="$" contains=@javascriptTop keepend oneline 67 | syn region muttatorJavaScript matchgroup=muttatorJavascriptDelimiter 68 | \ start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@javascriptTop fold 69 | 70 | let s:cssRegionStart = '\%(^\s*sty\%[le]!\=\s\+\%(-\%(n\|name\)\%(\s\+\|=\)\S\+\s\+\)\=[^-]\S\+\s\+\)\@<=' 71 | execute 'syn region muttatorCss start="' . s:cssRegionStart . '" end="$" contains=@cssTop keepend oneline' 72 | execute 'syn region muttatorCss matchgroup=muttatorCssDelimiter' 73 | \ 'start="' . s:cssRegionStart . '<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@cssTop fold' 74 | 75 | syn match muttatorNotation "<[0-9A-Za-z-]\+>" 76 | 77 | syn match muttatorComment +".*$+ contains=muttatorTodo,@Spell 78 | syn keyword muttatorTodo FIXME NOTE TODO XXX contained 79 | 80 | syn region muttatorString start="\z(["']\)" end="\z1" skip="\\\\\|\\\z1" oneline 81 | 82 | syn match muttatorLineComment +^\s*".*$+ contains=muttatorTodo,@Spell 83 | 84 | " NOTE: match vim.vim highlighting group names 85 | hi def link muttatorAutoCmd muttatorCommand 86 | hi def link muttatorAutoEvent Type 87 | hi def link muttatorCommand Statement 88 | hi def link muttatorComment Comment 89 | hi def link muttatorJavascriptDelimiter Delimiter 90 | hi def link muttatorCssDelimiter Delimiter 91 | hi def link muttatorNotation Special 92 | hi def link muttatorLineComment Comment 93 | hi def link muttatorOption PreProc 94 | hi def link muttatorSetMod muttatorOption 95 | hi def link muttatorString String 96 | hi def link muttatorTodo Todo 97 | 98 | let b:current_syntax = "muttator" 99 | 100 | let &cpo = s:cpo_save 101 | unlet s:cpo_save 102 | 103 | " vim: tw=130 et ts=4 sw=4: 104 | -------------------------------------------------------------------------------- /muttator/install.rdf: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 3 | xmlns:em="http://www.mozilla.org/2004/em-rdf#"> 4 | <Description about="urn:mozilla:install-manifest"> 5 | <em:id>muttator@mozdev.org</em:id> 6 | <em:name>Muttator</em:name> 7 | <em:version>###VERSION###</em:version> 8 | <em:type>2</em:type> <!-- extension --> 9 | <em:unpack>false</em:unpack> 10 | <em:description>Make Thunderbird behave like Vim</em:description> 11 | <em:creator>Martin Stubenschrott</em:creator> 12 | <em:homepageURL>http://vimperator.org/</em:homepageURL> 13 | <em:iconURL>chrome://muttator/skin/icon.png</em:iconURL> 14 | <em:optionsURL>chrome://liberator/content/preferences.xul</em:optionsURL> 15 | <em:file> 16 | <Description about="urn:mozilla:extension:file:vimperator.jar"> 17 | <em:package>content/muttator/</em:package> 18 | </Description> 19 | </em:file> 20 | <em:targetApplication> 21 | <Description> 22 | <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> 23 | <em:minVersion>38.0</em:minVersion> 24 | <em:maxVersion>45.*</em:maxVersion> 25 | </Description> 26 | </em:targetApplication> 27 | </Description> 28 | </RDF> 29 | 30 | <!-- vim: set fdm=marker sw=4 ts=4 et: --> 31 | -------------------------------------------------------------------------------- /muttator/locale/en-US/Makefile: -------------------------------------------------------------------------------- 1 | NAME = muttator 2 | BASE = ../../../common 3 | include $(BASE)/Makefile.doc 4 | -------------------------------------------------------------------------------- /muttator/locale/en-US/all.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <include href="tutorial" tag="tutorial.html" insertafter="intro.html" /> 11 | 12 | </overlay> 13 | 14 | <!-- vim:se sts=4 sw=4 et: --> 15 | -------------------------------------------------------------------------------- /muttator/locale/en-US/autocommands.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <dl tag="autocommand-list" replace="autocommand-list"> 11 | <dt>ColorScheme</dt> <dd>Triggered after a color scheme has been loaded</dd> 12 | <dt>DOMLoad</dt> <dd>Triggered when a page's DOM content has fully loaded</dd> 13 | <dt>DownloadPost</dt> <dd>Triggered when a download has completed</dd> 14 | <dt>Fullscreen</dt> <dd>Triggered when the browser's fullscreen state changes</dd> 15 | <dt>LocationChange</dt> <dd>Triggered when changing tabs or when navigating to a new location</dd> 16 | <dt>PageLoadPre</dt> <dd>Triggered after a page load is initiated</dd> 17 | <dt>PageLoad</dt> <dd>Triggered when a page gets (re)loaded/opened</dd> 18 | <dt>PluginsLoadPost</dt> <dd>Triggered after all plugins have been (re)loaded</dd> 19 | <dt>ShellCmdPost</dt> <dd>Triggered after executing a shell command with <ex>:!</ex><a>cmd</a></dd> 20 | <dt>&liberator.appname;Enter</dt> <dd>Triggered after &liberator.host; starts</dd> 21 | <dt>&liberator.appname;LeavePre</dt><dd>Triggered before exiting &liberator.host;, just before destroying each module</dd> 22 | <dt>&liberator.appname;Leave</dt> <dd>Triggered before exiting &liberator.host;</dd> 23 | 24 | <dt>FolderLoad</dt> <dd>Triggered after switching folders in &liberator.host;</dd> 25 | </dl> 26 | 27 | <dl tag="autocommand-args" replace="autocommand-args"> 28 | <dt><url></dt> <dd>The URL against which the event was selected.</dd> 29 | <dt><title></dt> <dd>The page, bookmark or download title.</dd> 30 | <dt><doc></dt> <dd>The document for which the event occurred. Only for <em>DOMLoad</em> and <em>PageLoad</em>.</dd> 31 | <dt><tab></dt> <dd>The tab in which the event occurred. Only for <em>DOMLoad</em> and <em>PageLoad</em>.</dd> 32 | <dt><size></dt> <dd>The size of a downloaded file. Only for <em>DownloadPost</em>.</dd> 33 | <dt><file></dt> <dd>The target destination of a download. Only for <em>DownloadPost</em>.</dd> 34 | <dt><name></dt> <dd>The name of the item. Only for <em>ColorScheme</em> and <em>Sanitize</em>.</dd> 35 | </dl> 36 | 37 | </overlay> 38 | 39 | <!-- vim:se sts=4 sw=4 et: --> 40 | -------------------------------------------------------------------------------- /muttator/locale/en-US/gui.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <dl tag="dialog-list" replace="dialog-list"> 11 | <dt>about</dt> <dd>About &liberator.host;</dd> 12 | <dt>addons</dt> <dd>Manage Add-ons</dd> 13 | <dt>addressbook</dt> <dd>Address book</dd> 14 | <dt>certmgr</dt> <dd>Show certificate manager</dd> 15 | <dt>checkupdates</dt> <dd>Check for updates</dd> 16 | <dt>connectionprefs</dt> <dd>Show connection settings</dd> 17 | <dt>console</dt> <dd>JavaScript console</dd> 18 | <dt>dominspector</dt> <dd>DOM Inspector</dd> 19 | <dt>downloads</dt> <dd>Manage Downloads</dd> 20 | <dt>openfile</dt> <dd>Open the file selector dialog</dd> 21 | <dt>pageinfo</dt> <dd>Show information about the current page</dd> 22 | <dt>pagesource</dt> <dd>View page source</dd> 23 | <dt>preferences</dt> <dd>Show &liberator.host; preferences dialog</dd> 24 | <dt>print</dt> <dd>Show print dialog</dd> 25 | <dt>printsetup</dt> <dd>Setup the page size and orientation before printing</dd> 26 | <dt>saveframe</dt> <dd>Save frame to disk</dd> 27 | <dt>savepage</dt> <dd>Save page to disk</dd> 28 | </dl> 29 | 30 | </overlay> 31 | 32 | <!-- vim:se sts=4 sw=4 et: --> 33 | -------------------------------------------------------------------------------- /muttator/skin/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/muttator/skin/icon.png -------------------------------------------------------------------------------- /vimperator/AUTHORS: -------------------------------------------------------------------------------- 1 | Main developer/Project founder: 2 | * Martin Stubenschrott (stubenschrott@vimperator.org) 3 | 4 | Developers: 5 | * anekos <anekos@snca.net> 6 | * teramako <teramako@gmail.com> 7 | * janus_wel <janus.wel.3@gmail.com> 8 | * Conrad Irwin 9 | * caisui 10 | 11 | Inactive/former developers: 12 | * Kris Maglione 13 | * Doug Kearns (dougkearns@gmail.com) 14 | * Viktor Kojouharov (Виктор Кожухаров) 15 | * Marco Candrian (mac@calmar.ws) 16 | * Daniel Bainton (dpb .AT. driftaway .DOT. org) 17 | * Konstantin Stepanov (milezv@yandex.ru) 18 | * Tim Hammerquist (penryu@gmail.com) 19 | * Ted Pavlic <ted@tedpavlic.com> 20 | 21 | Patches (in no special order and unfortunately incomplete): 22 | * Rogutės Sparnuotos (CSS based idea for numbered tabs) 23 | * Jez <jezreel@gmail.com> 24 | * Ruud Grosmann ('followhints' option) 25 | * Xie&Tian (multibyte support for hints, doc fixes) 26 | * Juergen Descher 27 | * Kazuo (count support for ctrl-^) 28 | * Daniel Schaffrath (;b support) 29 | * Dominik Meister (:b# support and other buffer related commands) 30 | * Lukas Mai 31 | * Guido Van Hoecke 32 | * Daniel Trstenjak (various things with hints) 33 | * M.Terada (suggest engines) 34 | * Muthu Kannan (ctrl-v support) 35 | * Lars Kindler (:buffer(s) functionality) 36 | * Lee Hinman (:open ./.. support) 37 | * Bart Trojanowski (Makefile) 38 | * Hannes Rist (:set titlestring support) 39 | * Nikolai Weibull ($VIMPERATOR_HOME) 40 | * Joseph Xu (supporting multiple top level windows better) 41 | * Raimon Grau Cuscó (document relationship navigation - ]], [[) 42 | * Ryan Zheng (ctrl-x/a support) 43 | * Dan Boger (:set online support) 44 | * Štěpán Němec (help copy-editing and favicon support) 45 | * Jarkko Oranen ('maxitems' option) 46 | * Gary Katsevman ('private' option) 47 | * Srinath Krishna (disable password field editing) 48 | * Viktor Bielawski (Firefox4 compatibility, and more) 49 | * Kei Shiratsuchi (gu improvement) 50 | * Zoltan Klinger (better :bmarks filtering) 51 | -------------------------------------------------------------------------------- /vimperator/Donors: -------------------------------------------------------------------------------- 1 | 2009: 2 | * Francois-Xavier Gsell 3 | * Ken Takano 4 | * Daniel Bainton (web hosting for about a year - thanks a lot!) 5 | * 渡邉 丈洋 (takehiro78) 6 | * Tony Rein 7 | * Daniel Bentsur 8 | * Ganesh Hegde 9 | * Elbert Hannah 10 | * Oliver Schaefer (2nd donation this year, and largest one in 2009! - Thanks!) 11 | * James Davis 12 | * Gregg Archer 13 | * James Henderson 14 | * Hiroshi Okada 15 | * Imron Alston 16 | * Luke Wagner 17 | * Deepan Gandhi 18 | * Guilherme Freitas 19 | * Robert Johnston 20 | * Jim Aragon 21 | * Norio Sugimoto 22 | * Catatonic Recording 23 | * Wataru Inoue (first one donating via addons.mozilla.org) 24 | * Krishnakumar Subramanian 25 | * Natan Zohar 26 | * Frederic Hebert 27 | * kursad karatas 28 | * Thomas Svensen (the first donor who donated 3 times! (once every year)) 29 | * Máté Nagy 30 | * Jessica Pavlin 31 | * David Wolfe 32 | * Sigurdur Finnsson 33 | * Pixel G 34 | * Joel Rosario 35 | * Alvaro Novo 36 | * Robert Heckel 37 | * Daniel Collin 38 | * Lucien Grondin 39 | * Christoph Petzold 40 | * Bjoern Steinbrink 41 | * Erlend Hamberg 42 | * Fabien Benetou 43 | * Arvin Moezzi 44 | * Calogero Lo Leggio 45 | * Sapan Bhatia 46 | * Gavin Sinclair 47 | * Stephen Borchert 48 | * Convolution 49 | * Brian Hall 50 | * Daniel Hahler 51 | * Per-Henrik Lundblom 52 | * David C Foor 53 | * Oliver Schaefer 54 | * Paul Moss 55 | * Yongji Zhang 56 | * Brian Peiris 57 | * Peleg Michaeli ("Every hand revealed" from my amazon.de wishlist) 58 | * InspireFocus 59 | * Michael Fremont 60 | * Kamil Dworakowski 61 | * Jonathan Austin 62 | * Steven Romanow 63 | 64 | 2008: 65 | * John Baber 66 | * Mark Orr 67 | * George Lowell (biggest donor so far!) 68 | * Keith Waclena 69 | * Christopher Glazner 70 | * Mats Vestin 71 | * Berni Joss 72 | * Peter Rufer 73 | * Yann Le Du 74 | * Wilson Bilkovich 75 | * Galen Taylor 76 | * Ben Hoffstein 77 | * Luc St-Louis 78 | * Robert Meerman 79 | * Silvio Di Stefano 80 | * Lance Feagan 81 | * Alexander Klink 82 | * Chaz McGarvey 83 | * Jesse Hathaway 84 | * Takayuki Tsukitani 85 | * Victor Nemkov 86 | * John Lusth 87 | * Thomas Svensen 88 | * Ryan McBride 89 | * Brian Clark 90 | * Gavin Gilmour 91 | * Sivaraj Doddannan 92 | * Michael Hrabanek 93 | * Nigel McNie 94 | * Ben Damm 95 | * Anton Kovalenko 96 | * Paulo Tanimoto 97 | * Paul Sobey 98 | * Olivier Guéry 99 | * Dotan Cohen 100 | * Daniel Schaffrath 101 | * Sam Griffin 102 | * Ivan Pantuyev 103 | * Spike Spiegal 104 | * Mark Hashimoto 105 | * Anirudh Sanjeev 106 | * Ted Pavlic 107 | * Jacqueline Wegscheid 108 | * Kashyap Paidimarri 109 | * Gabriel Gellner 110 | * Marco Candrian 111 | * Ovidiu Curcan 112 | * Ivo-Jose Jimenez-Ramos (2x) 113 | * Andrew Pantyukhin 114 | * Kurtis Rader 115 | 116 | 2007: 117 | * Richard Terrell 118 | * Benjamin Sergeant 119 | * Frank Schiebel 120 | * Cillian de Roiste (2x) 121 | * David Thompson 122 | * Christian Walther 123 | * Ivo-Jose Jimenez-Ramos 124 | * Robert Heckel 125 | * Ramana Kumar 126 | * Thomas Svensen 127 | * Ian Taylor 128 | * Albert Menkveld 129 | * Nathan Saper 130 | * Paulo Tanimoto 131 | * Nigel McNie 132 | * Richard Dooling 133 | * Giuseppe Guida 134 | * Stefan Krauth 135 | * Robert Heckel 136 | * Miron Tewfik 137 | * Sjoerd Siebinga 138 | * Ben Klemens 139 | * Andrew Pantyukhin 140 | -------------------------------------------------------------------------------- /vimperator/Makefile: -------------------------------------------------------------------------------- 1 | #### configuration 2 | 3 | VERSION = 3.16.0 4 | NAME = vimperator 5 | UUID = vimperator@mozdev.org 6 | MIN_VERSION = 38.0 7 | MAX_VERSION = 51.0 8 | 9 | -include private.properties 10 | 11 | include ../common/Makefile 12 | -------------------------------------------------------------------------------- /vimperator/TODO: -------------------------------------------------------------------------------- 1 | Priority list: 2 | 1-9 as in Vim (9 = required for next release, 5 = would be nice, 1 = probably not) 3 | 4 | This is just a quick list of general ideas, which shouldn't be forgotten. 5 | Many other ideas are listed in the wiki and probably these things should 6 | be transferred there as well, for now it just quicker to add/change 7 | things in this list. 8 | 9 | BUGS: 10 | - add window resize support to hints 11 | - searching backwards incrementally does not work i.e. with 'incsearch' set 12 | - insert abbreviations broken on <space> 13 | - :sidebar improvements (:sidebar! Downloads while downloads is open should refocus the sidebar) 14 | - ;s saves the page rather than the image 15 | - RC file is sourced once per window 16 | - :undo seems to be effected by the tabstrip state 17 | 18 | (the new XML help system bugs): 19 | - markup/links breakage: 20 | - except for Ex commands and alphabetic mappings (like m), most elements seem 21 | to link correctly *only* inside a single page (when added after '#' to the 22 | URI, i.e. liberator://help/foo#bar, but not as liberator://help-tag/bar, which 23 | is by far the most common unless using all.xml (which is not very usable 24 | because of the long loading time)) 25 | - the <t> tag does not linkify at all 26 | - nested tags don't work (e.g. <ex>:set <a>option</a>!</ex>) and often break 27 | the markup (hide content) 28 | - util.generateHelp() is not there 29 | - the help system seems to take quite some time to set up, so when you have 30 | some help file opened and saved in a session, you get "File not found" 31 | initially at start up and have to reload the page 32 | 33 | 34 | FEATURES: 35 | 8 Incremental searches should retreat to their starting position on <Backspace> 36 | 8 Replace config.name tests in liberator with more specific feature 37 | tests or overridable APIs where at all feasible. 38 | 8 MAYBE change the extension ID to vimperator@vimperator.org rather than 39 | vimperator@mozdev.org 40 | 8 use the storage module for autocommands 41 | 8 middleclick in content == p, and if command line is open, paste there the clipboard buffer 42 | 8 all search commands should start searching from the top of the visible viewport 43 | 8 :bmark -keyword wikpedia http://en.wikipedia.org/wiki/Special:Search?search=%s 44 | should overwrite existing keywords. This allows saving of quick searches in the RC file. 45 | 8 <C-o>/<C-i> should work as in vim (i.e., save page positions as well as 46 | locations in the history list). 47 | 7 [d could go to the last domain in the history stack. So if I browse from 48 | google to another page and click 10 links there, [d would take me back to the google page 49 | opera's fast forward does something like this 50 | 7 make an option to disable session saving by default when you close Firefox 51 | 7 The output of the pageinfo-command should contain the security-information of ssl-encrypted sites 52 | 7 Add :every command 53 | 6 check/correct spellings in insert mode with some mappings 54 | 6 jump to the next heading with ]h, next image ]i, previous textbox [t and so on 55 | 6 :grep support (needs location list) 56 | 6 pipe selected text/link/website to an external command 57 | 6 Use ctrl-w+j/k/w to switch between sidebar, content, preview window 58 | 6 ;?<hint> should show more information 59 | 5 when looking at a zoomed out image (because it's large), zi should zoom in 60 | maybe with this? : http://mxr.mozilla.org/seamonkey/source/content/html/document/public/nsIImageDocument.idl 61 | 5 make a command to search within google search results 62 | (http://gadelkareem.com/2007/01/28/using-google-ajax-api-as-an-array/) 63 | maybe impossible, needs a per-site key from google 64 | 4 } { should jump to the next paragraph of the page 65 | 4 use ctrl-n/p in insert mode for word completion 66 | 67 | -------------------------------------------------------------------------------- /vimperator/chrome.manifest: -------------------------------------------------------------------------------- 1 | # Firefox 2 | content vimperator content/ 3 | skin vimperator classic/1.0 skin/ 4 | locale vimperator en-US locale/en-US/ 5 | locale liberator en-US ../common/locale/en-US/ 6 | 7 | content liberator ../common/content/ 8 | resource liberator ../common/modules/ 9 | skin liberator classic/1.0 ../common/skin/ 10 | 11 | override chrome://liberator/content/liberator.dtd chrome://vimperator/content/liberator.dtd 12 | override chrome://liberator/content/config.js chrome://vimperator/content/config.js 13 | 14 | overlay chrome://browser/content/browser.xul chrome://liberator/content/liberator.xul 15 | overlay chrome://browser/content/browser.xul chrome://vimperator/content/vimperator.xul 16 | 17 | component {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} components/protocols.js 18 | contract @mozilla.org/network/protocol;1?name=chrome-data {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} 19 | 20 | component {9c8f2530-51c8-4d41-b356-319e0b155c44} components/protocols.js 21 | contract @mozilla.org/network/protocol;1?name=liberator {9c8f2530-51c8-4d41-b356-319e0b155c44} 22 | 23 | component {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} components/commandline-handler.js 24 | contract @mozilla.org/commandlinehandler/general-startup;1?type=vimperator {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} 25 | category command-line-handler m-Vimperator @mozilla.org/commandlinehandler/general-startup;1?type=vimperator 26 | 27 | -------------------------------------------------------------------------------- /vimperator/components/commandline-handler.js: -------------------------------------------------------------------------------- 1 | // Header: 2 | const Name = "Vimperator"; 3 | /* 4 | * We can't load our modules here, so the following code is sadly 5 | * duplicated: .w !sh 6 | vimdiff ../../*'/components/commandline-handler.js' 7 | */ 8 | 9 | // Copyright (c) 2009 by Doug Kearns 10 | // 11 | // This work is licensed for reuse under an MIT license. Details are 12 | // given in the License.txt file included with this file. 13 | 14 | Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 15 | 16 | const name = Name.toLowerCase(); 17 | function CommandLineHandler() { 18 | this.wrappedJSObject = this; 19 | } 20 | CommandLineHandler.prototype = { 21 | 22 | classDescription: Name + " Command-line Handler", 23 | 24 | classID: Components.ID("{16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}"), 25 | 26 | contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=" + name, 27 | 28 | _xpcom_categories: [{ 29 | category: "command-line-handler", 30 | entry: "m-" + name 31 | }], 32 | 33 | QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsICommandLineHandler]), 34 | 35 | handle: function (commandLine) { 36 | // TODO: handle remote launches differently? 37 | try { 38 | this.optionValue = commandLine.handleFlagWithParam(name, false); 39 | } 40 | catch (e) { 41 | dump(name + ": option '-" + name + "' requires an argument\n"); 42 | } 43 | } 44 | }; 45 | 46 | if(XPCOMUtils.generateNSGetFactory) 47 | var NSGetFactory = XPCOMUtils.generateNSGetFactory([CommandLineHandler]); 48 | else 49 | function NSGetModule(compMgr, fileSpec) XPCOMUtils.generateModule([CommandLineHandler]) 50 | 51 | // vim: set ft=javascript fdm=marker sw=4 ts=4 et: 52 | -------------------------------------------------------------------------------- /vimperator/components/protocols.js: -------------------------------------------------------------------------------- 1 | ../../common/components/protocols.js -------------------------------------------------------------------------------- /vimperator/content/ignorekeys.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2012 by Martin Stubenschrott <stubenschrott AT vimperator> 2 | 3 | // This work is licensed for reuse under an MIT license. Details are 4 | // given in the License.txt file included with this file. 5 | 6 | 7 | const IgnoreKeys = Module("ignoreKeys", { 8 | requires: ["config", "storage"], 9 | 10 | init: function init() { 11 | this._ignoredKeys = storage.newMap("ignored-keys", { store: true, privateData: true }); 12 | }, 13 | 14 | add: function add(filter, exceptions) { 15 | if (!exceptions) 16 | exceptions = []; 17 | // TODO: Add a regular expression cache somewhere? 18 | this._ignoredKeys.set(filter, exceptions); 19 | }, 20 | 21 | get: function get(filter) { 22 | let filtered = []; 23 | for (let [page, exceptions] in this._ignoredKeys) { 24 | if (!filter || page.indexOf(filter) >= 0) 25 | filtered.push([page, exceptions]); 26 | } 27 | 28 | return filtered; 29 | }, 30 | 31 | hasIgnoredKeys: function isKeyIgnored(url) { 32 | for (let [page, exceptions] in this._ignoredKeys) { 33 | let re = RegExp(page); 34 | if (re.test(url)) 35 | return exceptions; 36 | } 37 | return null; 38 | }, 39 | 40 | isKeyIgnored: function isKeyIgnored(url, key) { 41 | // Don't cripple Vimperator ;) Later this will be part of a new "unignorekeys" option 42 | if (key == ":") 43 | return false; 44 | 45 | for (let [page, exceptions] in this._ignoredKeys) { 46 | let re = RegExp(page); 47 | if (re.test(url) && exceptions.indexOf(key) < 0) 48 | return true; 49 | } 50 | return false; 51 | }, 52 | 53 | remove: function remove(filter) { 54 | if (!filter) { 55 | liberator.echoerr("Invalid filter"); 56 | return; 57 | } 58 | 59 | for (let [page, ] in this._ignoredKeys) { 60 | if (filter == page) 61 | this._ignoredKeys.remove(page); 62 | } 63 | }, 64 | 65 | clear: function clear() { 66 | this._ignoredKeys.clear(); 67 | } 68 | 69 | }, { 70 | }, { 71 | mappings: function () { 72 | mappings.add([modes.NORMAL], ["I"], 73 | "Open an :ignorekeys prompt for the current domain or URL", 74 | function (count) { 75 | commandline.open("", "ignorekeys add ", modes.EX); 76 | }, 77 | { count: false }); 78 | }, 79 | 80 | commands: function () { 81 | commands.add(["ignore[keys]"], 82 | "Ignore all (or most) " + config.name + " keys for certain URLs", 83 | function (args) { 84 | // Without argument, list current pages with ignored keys 85 | completion.listCompleter("ignorekeys"); 86 | }, { 87 | subCommands: [ 88 | new Command(["add"], "Add an URL filter to the list of ignored keys", 89 | function (args) { ignoreKeys.add(args[0], args["-except"] || []); }, 90 | { 91 | argCount: "1", 92 | options: [ 93 | [["-except", "-e"], commands.OPTION_LIST, null, null], 94 | ], 95 | completer: function (context, args) { 96 | let completions = []; 97 | if (args.completeArg == 0) { 98 | if (buffer.URL) 99 | completions.unshift([util.escapeRegex(buffer.URL), "Current URL"]); 100 | if (content.document && content.document.domain) 101 | completions.unshift([util.escapeRegex(content.document.domain), "Current domain"]); 102 | } 103 | 104 | context.compare = CompletionContext.Sort.unsorted; 105 | context.completions = completions; 106 | } 107 | }), 108 | 109 | new Command(["clear"], "Clear all ignored pages", 110 | function (args) { ignoreKeys.clear(); }, 111 | { argCount: 0 }), 112 | 113 | new Command(["list", "ls"], "List pages with ignored keys", 114 | function (args) { 115 | let res = ignoreKeys.get(args.literalArg || ""); 116 | if (res.length == undefined || res.length == 0) { 117 | if (!args.literalArg) 118 | liberator.echomsg("No ignored keys"); 119 | else 120 | liberator.echomsg("No ignored keys for pages matching " + args.literalArg); 121 | return; 122 | } 123 | 124 | completion.listCompleter("ignorekeys", args.literalArg || ""); 125 | }, 126 | { 127 | argCount: "?", 128 | literal: 0 129 | }), 130 | 131 | new Command(["remove", "rm"], "Remove an URL filter from the list of ignored keys", 132 | function (args) { ignoreKeys.remove(args.literalArg || ""); }, 133 | { 134 | argCount: 1, 135 | literal: 0, 136 | completer: function (context, args) completion.ignorekeys(context, args.literalArg || ""), 137 | }) 138 | ] 139 | }); 140 | }, 141 | 142 | completion: function () { 143 | completion.ignorekeys = function (context) { 144 | context.title = ["URL filter", "Ignored keys"]; 145 | context.anchored = false; // match the filter anywhere 146 | context.completions = ignoreKeys.get(); 147 | }; 148 | } 149 | }); 150 | 151 | // vim: set fdm=marker sw=4 ts=4 et: 152 | -------------------------------------------------------------------------------- /vimperator/content/liberator.dtd: -------------------------------------------------------------------------------- 1 | 2 | <!ENTITY % liberatorBranding SYSTEM "chrome://branding/locale/brand.dtd"> 3 | %liberatorBranding; 4 | 5 | <!ENTITY liberator.mainWindow "main-window"> 6 | <!ENTITY liberator.name "vimperator"> 7 | <!ENTITY liberator.idname "VIMPERATOR"> 8 | <!ENTITY liberator.appname "Vimperator"> 9 | <!ENTITY liberator.host "&brandShortName;"> 10 | <!ENTITY liberator.hostbin "firefox"> 11 | <!ENTITY liberator.statusBefore "statusbar-display"> 12 | <!ENTITY liberator.statusAfter ""> 13 | <!ENTITY liberator.idkeyset "mainKeyset"> 14 | <!ENTITY liberator.toolboxId "navigator-toolbox"> 15 | 16 | -------------------------------------------------------------------------------- /vimperator/content/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/vimperator/content/logo.png -------------------------------------------------------------------------------- /vimperator/content/vimperator.svg: -------------------------------------------------------------------------------- 1 | <svg height="40" width="162" xmlns="http://www.w3.org/2000/svg"><g font-family="DejaVu Sans Mono" font-size="24" transform="translate(-5.4392018 -9.6624603)"><text x="6.2673268" xml:space="preserve" y="29.896835"><tspan x="6.2673268" y="29.896835">vimperator_</tspan></text><text fill="#00f" x="6.4079518" xml:space="preserve" y="53.183945"><tspan x="6.4079518" y="53.183945">~</tspan></text></g></svg> -------------------------------------------------------------------------------- /vimperator/content/vimperator.xul: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | 3 | <!-- ***** BEGIN LICENSE BLOCK ***** {{{ 4 | Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org> 5 | 6 | This work is licensed for reuse under an MIT license. Details are 7 | given in the License.txt file included with this file. 8 | }}} ***** END LICENSE BLOCK ***** --> 9 | 10 | <!-- <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?> --> 11 | 12 | <overlay id="vimperator" 13 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 14 | xmlns:nc="http://home.netscape.com/NC-rdf#" 15 | xmlns:html="http://www.w3.org/1999/xhtml" 16 | xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 17 | 18 | <menupopup id="viewSidebarMenu"> 19 | <menuitem observes="vimperator-viewAddonsSidebar" label="Add-ons" accesskey="A"/> 20 | <menuitem observes="vimperator-viewConsoleSidebar" label="Console" accesskey="C"/> 21 | <menuitem observes="vimperator-viewDownloadsSidebar" label="Downloads" accesskey="D"/> 22 | <menuitem observes="vimperator-viewPreferencesSidebar" label="Preferences" accesskey="P"/> 23 | </menupopup> 24 | 25 | <broadcasterset id="mainBroadcasterSet"> 26 | <broadcaster id="vimperator-viewAddonsSidebar" 27 | autoCheck="false" 28 | type="checkbox" 29 | group="sidebar" 30 | sidebarurl="chrome://mozapps/content/extensions/extensions.xul" 31 | sidebartitle="Add-ons" 32 | oncommand="toggleSidebar('vimperator-viewAddonsSidebar');"/> 33 | <broadcaster id="vimperator-viewConsoleSidebar" 34 | autoCheck="false" 35 | type="checkbox" 36 | group="sidebar" 37 | sidebarurl="chrome://global/content/console.xul" 38 | sidebartitle="Console" 39 | oncommand="toggleSidebar('vimperator-viewConsoleSidebar');"/> 40 | <broadcaster id="vimperator-viewDownloadsSidebar" 41 | autoCheck="false" 42 | type="checkbox" 43 | group="sidebar" 44 | sidebarurl="chrome://mozapps/content/downloads/downloads.xul" 45 | sidebartitle="Downloads" 46 | oncommand="toggleSidebar('vimperator-viewDownloadsSidebar');"/> 47 | <broadcaster id="vimperator-viewPreferencesSidebar" 48 | autoCheck="false" 49 | type="checkbox" 50 | group="sidebar" 51 | sidebarurl="about:config" 52 | sidebartitle="Preferences" 53 | oncommand="toggleSidebar('vimperator-viewPreferencesSidebar');"/> 54 | </broadcasterset> 55 | 56 | </overlay> 57 | 58 | <!-- vim: set fdm=marker sw=4 ts=4 et: --> 59 | -------------------------------------------------------------------------------- /vimperator/install.rdf: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 3 | xmlns:em="http://www.mozilla.org/2004/em-rdf#"> 4 | <Description about="urn:mozilla:install-manifest"> 5 | <em:id>###UUID###</em:id> 6 | <em:name>Vimperator</em:name> 7 | <em:version>###VERSION###</em:version> 8 | <em:type>2</em:type> <!-- extension --> 9 | <em:unpack>false</em:unpack> 10 | <em:multiprocessCompatible>false</em:multiprocessCompatible> 11 | <em:description>Vimperator adds an efficient, Vim-inspired user interface on top of Firefox</em:description> 12 | <em:creator>Martin Stubenschrott</em:creator> 13 | <em:homepageURL>http://vimperator.org</em:homepageURL> 14 | <em:iconURL>chrome://vimperator/skin/icon.png</em:iconURL> 15 | <em:optionsType>3</em:optionsType> 16 | <em:optionsURL>liberator://help/options</em:optionsURL> 17 | <em:updateURL>###UPDATEURL###</em:updateURL> 18 | <em:targetApplication> 19 | <Description> 20 | <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> 21 | <em:minVersion>###MINVERSION###</em:minVersion> 22 | <em:maxVersion>###MAXVERSION###</em:maxVersion> 23 | </Description> 24 | </em:targetApplication> 25 | </Description> 26 | </RDF> 27 | 28 | <!-- vim: set fdm=marker sw=4 ts=4 et: --> 29 | -------------------------------------------------------------------------------- /vimperator/locale/en-US/all.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <include href="tutorial" tag="tutorial.html" insertafter="intro.html" /> 11 | 12 | </overlay> 13 | 14 | <!-- vim:se sts=4 sw=4 et: --> 15 | -------------------------------------------------------------------------------- /vimperator/locale/en-US/autocommands.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <dl tag="autocommand-list" replace="autocommand-list"> 11 | <dt>BookmarkAdd</dt> <dd>Triggered after a page is bookmarked</dd> 12 | <dt>ColorScheme</dt> <dd>Triggered after a color scheme has been loaded</dd> 13 | <dt>DOMLoad</dt> <dd>Triggered when a page's DOM content has fully loaded</dd> 14 | <dt>DownloadPost</dt> <dd>Triggered when a download has completed</dd> 15 | <dt>Fullscreen</dt> <dd>Triggered when the browser's fullscreen state changes</dd> 16 | <dt>LocationChange</dt> <dd>Triggered when changing tabs or when navigating to a new location</dd> 17 | <dt>PageLoadPre</dt> <dd>Triggered after a page load is initiated</dd> 18 | <dt>PageLoad</dt> <dd>Triggered when a page gets (re)loaded/opened</dd> 19 | <dt>PluginsLoadPost</dt> <dd>Triggered after all plugins have been (re)loaded</dd> 20 | <dt>Sanitize</dt> <dd>Triggered when privata data are sanitized</dd> 21 | <dt>ShellCmdPost</dt> <dd>Triggered after executing a shell command with <ex>:!</ex><a>cmd</a></dd> 22 | <dt>&liberator.appname;Enter</dt> <dd>Triggered after &liberator.host; starts</dd> 23 | <dt>&liberator.appname;LeavePre</dt><dd>Triggered before exiting &liberator.host;, just before destroying each module</dd> 24 | <dt>&liberator.appname;Leave</dt> <dd>Triggered before exiting &liberator.host;</dd> 25 | </dl> 26 | 27 | <dl tag="autocommand-args" replace="autocommand-args"> 28 | <dt><url></dt> <dd>The URL against which the event was selected.</dd> 29 | <dt><title></dt> <dd>The page, bookmark or download title.</dd> 30 | <dt><doc></dt> <dd>The document for which the event occurred. Only for <em>DOMLoad</em> and <em>PageLoad</em>.</dd> 31 | <dt><tab></dt> <dd>The tab in which the event occurred. Only for <em>DOMLoad</em> and <em>PageLoad</em>.</dd> 32 | <dt><tags></dt> <dd>The tags applied to <url>. Only for <em>BookmarkAdd</em>.</dd> 33 | <dt><keyword></dt> <dd>The keywords applied to the bookmark. Only for <em>BookmarkAdd</em>.</dd> 34 | <dt><icon></dt> <dd>The icon associated with <url>. Only for <em>BookmarkAdd</em>.</dd> 35 | <dt><size></dt> <dd>The size of a downloaded file. Only for <em>DownloadPost</em>.</dd> 36 | <dt><file></dt> <dd>The target destination of a download. Only for <em>DownloadPost</em>.</dd> 37 | <dt><state></dt> <dd>The new state. Only for "Fullscreen".</dd> 38 | <dt><name></dt> <dd>The name of the item. Only for <em>ColorScheme</em> and <em>Sanitize</em>.</dd> 39 | </dl> 40 | 41 | </overlay> 42 | 43 | <!-- vim:se sts=4 sw=4 et: --> 44 | -------------------------------------------------------------------------------- /vimperator/locale/en-US/browsing.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <item insertafter="ignore-key"> 11 | <tags>I</tags> 12 | <spec>I</spec> 13 | <description> 14 | <p> 15 | Opens an <k>:ignorekeys add </k> command to quickly add the current host or URL to the 16 | list of pages with ignored keys. 17 | </p> 18 | </description> 19 | </item> 20 | 21 | <item insertafter="I"> 22 | <tags>:ignorekeys</tags> 23 | <spec>:ignorekeys <oa>sub-command</oa></spec> 24 | <description> 25 | <p> 26 | Always pass all (or most) keys to the underlying web page (or &liberator.host;) when 27 | the current URL matches a specific filter. 28 | If the <oa>sub-command</oa> is not specified, <k>:ignorekeys</k> lists 29 | all currently affected sites. The list of ignored pages is 30 | automatically saved to disc, so it can persist across restarts. 31 | </p> 32 | 33 | <h3 tag="ignorekeys-subcommands">Sub commands</h3> 34 | 35 | <item> 36 | <tags>ignorekeys-add</tags> 37 | <spec>add <oa>-except=key1,key2,...</oa> <a>url-regexp</a></spec> 38 | <description> 39 | <p> 40 | Add a new URL (anyone matching the <a>url-regexp</a> regular expression) 41 | to the list of sites which automatically turn on IGNORE ALL KEYS mode. 42 | If <oa>-except</oa> is specified, allow those specified keys to still be handled 43 | by &liberator.appname;. 44 | </p> 45 | </description> 46 | </item> 47 | 48 | <item> 49 | <tags>ignorekeys-clear</tags> 50 | <spec>clear</spec> 51 | <description> 52 | <p> 53 | Clear the list of web sites with ignored keys. 54 | </p> 55 | </description> 56 | </item> 57 | 58 | <item> 59 | <tags>ignorekeys-list</tags> 60 | <spec>list <oa>filter</oa></spec> 61 | <description> 62 | <p> 63 | List current web sites affected by :ignorekeys (optionally matching <oa>filter</oa>). 64 | </p> 65 | </description> 66 | </item> 67 | 68 | <item> 69 | <tags>ignorekeys-remove ignorekeys-rm</tags> 70 | <spec>remove <a>url-regexp</a></spec> 71 | <spec>rm <a>url-regexp</a></spec> 72 | <description> 73 | <p> 74 | Remove the regexps matching <a>url-regexp</a> from the list of :ignorekeys. 75 | </p> 76 | </description> 77 | </item> 78 | 79 | </description> 80 | </item> 81 | 82 | </overlay> 83 | <!-- vim:se sts=4 sw=4 et: --> 84 | -------------------------------------------------------------------------------- /vimperator/locale/en-US/gui.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <dl tag="dialog-list" replace="dialog-list"> 11 | <dt>about</dt> <dd>About Mozilla &liberator.host;;</dd> 12 | <dt>addbookmark</dt> <dd>Add bookmark for the current page</dd> 13 | <dt>addons</dt> <dd>Manage Add-ons</dd> 14 | <dt>bookmarks</dt> <dd>List your bookmarks</dd> 15 | <dt>certmgr</dt> <dd>Show certificate manager</dd> 16 | <dt>checkupdates</dt> <dd>Check for updates</dd> 17 | <dt>cleardata</dt> <dd>Clear private data</dd> 18 | <dt>connectionprefs</dt> <dd>Show connection settings</dd> 19 | <dt>console</dt> <dd>JavaScript console</dd> 20 | <dt>cookies</dt> <dd>List your cookies</dd> 21 | <dt>customizetoolbar</dt><dd>Customize the Toolbar</dd> 22 | <dt>dominspector</dt> <dd>DOM Inspector</dd> 23 | <dt>downloads</dt> <dd>Manage Downloads</dd> 24 | <dt>history</dt> <dd>List your history</dd> 25 | <dt>import</dt> <dd>Import Preferences, Bookmarks, History, etc. from other browsers</dd> 26 | <dt>openfile</dt> <dd>Open the file selector dialog</dd> 27 | <dt>pageinfo</dt> <dd>Show information about the current page</dd> 28 | <dt>pagesource</dt> <dd>View page source</dd> 29 | <dt>passwords</dt> <dd>View saved passwords</dd> 30 | <dt>places</dt> <dd>Places Organizer: Manage your bookmarks and history</dd> 31 | <dt>preferences</dt> <dd>Show &liberator.host; preferences dialog</dd> 32 | <dt>print</dt> <dd>Show print dialog</dd> 33 | <dt>printpreview</dt> <dd>Preview the page before printing</dd> 34 | <dt>printsetup</dt> <dd>Setup the page size and orientation before printing</dd> 35 | <dt>saveframe</dt> <dd>Save frame to disk</dd> 36 | <dt>savepage</dt> <dd>Save page to disk</dd> 37 | <dt>searchengines</dt> <dd>Manage installed search engines</dd> 38 | <dt>selectionsource</dt> <dd>View selection source</dd> 39 | </dl> 40 | 41 | </overlay> 42 | 43 | <!-- vim:se sts=4 sw=4 et: --> 44 | -------------------------------------------------------------------------------- /vimperator/locale/en-US/liberator.dtd: -------------------------------------------------------------------------------- 1 | 2 | <!ENTITY appname "Vimperator"> 3 | <!ENTITY hostapp "Firefox"> 4 | 5 | -------------------------------------------------------------------------------- /vimperator/locale/en-US/options.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <!--item replace="'go'"> 11 | <tags>'go' 'guioptions'</tags> 12 | <spec>'guioptions' 'go'</spec> 13 | <type>charlist</type> 14 | <default>Tbr</default> 15 | <description> 16 | <p>Show or hide certain GUI elements like the menu or toolbar.</p> 17 | 18 | <p>Supported characters:</p> 19 | 20 | <dl> 21 | <dt>m</dt> <dd>Menubar</dd> 22 | <dt>T</dt> <dd>Toolbar</dd> 23 | <dt>B</dt> <dd>Bookmark bar</dd> 24 | <dt>A</dt> <dd>Add-on bar</dd> 25 | <dt>n</dt> <dd>Tab number</dd> 26 | <dt>b</dt> <dd>Bottom scrollbar</dd> 27 | <dt>r</dt> <dd>Right scrollbar</dd> 28 | <dt>l</dt> <dd>Left scrollbar (<em>l</em> and <em>r</em> are mutually exclusive)</dd> 29 | </dl> 30 | 31 | <p>You can also hide the tab bar with <ex>:set showtabline=0</ex>.</p> 32 | 33 | <note>Scrollbar changes require a page reload to take effect.</note> 34 | </description> 35 | </item--> 36 | 37 | <!--item insertbefore=":set"> 38 | <tags>:seg :way</tags> 39 | <spec>:se[a]</spec> 40 | <description> 41 | <p>Show all options that differ from their default value.</p> 42 | </description> 43 | </item> 44 | 45 | <item insertafter=":set-default"> 46 | <tags>:sturm :drang</tags> 47 | <spec>:und</spec> 48 | <description> 49 | <p>Show all options that differ from their default value.</p> 50 | </description> 51 | </item--> 52 | 53 | <item insertafter="'enc'"> 54 | <tags>'app' 'apptab'</tags> 55 | <spec>'apptab' 'app'</spec> 56 | <type>boolean</type> 57 | <default>false</default> 58 | <description> 59 | <p>Transform the current tab into an app tab. Firefox always displays 60 | app tabs at the left of all tabs and minimizes it to its favicon. 61 | </p> 62 | </description> 63 | </item> 64 | 65 | <item insertafter="'newtab'"> 66 | <tags>'ntu' 'newtaburl'</tags> 67 | <spec>'newtaburl' 'ntu'</spec> 68 | <type>string</type> 69 | <default>about:newtab</default> 70 | <description> 71 | <p> 72 | The URL that will be opened in new tabs. 73 | </p> 74 | </description> 75 | </item> 76 | 77 | </overlay> 78 | <!-- vim:se sts=4 sw=4 et: --> 79 | -------------------------------------------------------------------------------- /vimperator/locale/en-US/tabs.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <item insertbefore=":bn"> 11 | <tags>g@</tags> 12 | <spec><oa>count</oa>g@</spec> 13 | <description> 14 | <p> 15 | Go to the first app tab. Go to the next app tab when already an app tab is selected. 16 | And cycles to the first app tab when the last app tab is selected. 17 | If <oa>count</oa> is specified go to the <oa>count</oa>th app tab. 18 | </p> 19 | </description> 20 | </item> 21 | 22 | <item insertbefore=":bn"> 23 | <tags><![CDATA[<C-S-n> <C-S-PageDown>]]></tags> 24 | <spec><oa>count</oa><C-S-n></spec> 25 | <description> 26 | <p> 27 | Go to the next group. Cycles to the fist group when the last is selected. 28 | If <oa>count</oa> is specified go to the <oa>count</oa>th next group. 29 | </p> 30 | </description> 31 | </item> 32 | 33 | <item insertbefore=":bn"> 34 | <tags><![CDATA[<C-S-p> <C-S-PageUp>]]></tags> 35 | <spec><oa>count</oa><C-S-p></spec> 36 | <description> 37 | <p> 38 | Go to the previous group. Cycles to the fist group when the first is selected. 39 | If <oa>count</oa> is specified go to the <oa>count</oa>th previous group. 40 | </p> 41 | </description> 42 | </item> 43 | 44 | <div insertafter=":tabd"> 45 | 46 | <h2 tag="tabgroups">Tab group management</h2> 47 | 48 | <item> 49 | <tags>:tabgroups :panorama</tags> 50 | <spec>:tabgroups <oa>sub-command</oa></spec> 51 | <spec>:panorama <oa>sub-command</oa></spec> 52 | <description> 53 | <p> 54 | Manage tab groups (also called Panorama in Firefox). 55 | If the <oa>sub-command</oa> is not specified, it lists all current tab groups. 56 | </p> 57 | 58 | <h3 tag="tabgroups-subcommands">Sub commands</h3> 59 | 60 | <item> 61 | <tags>tabgroups-add</tags> 62 | <spec>add<oa>group</oa><oa>!</oa> <oa>groupName</oa></spec> 63 | <description> 64 | <p> 65 | Create a tab group and switches to the group. 66 | If <oa>groupName</oa> is specified, also sets the name of the group. 67 | </p> 68 | <p> 69 | The selected tab is moved to the group if used with <oa>!</oa>. 70 | </p> 71 | </description> 72 | </item> 73 | 74 | <item> 75 | <tags>tabgroups-list</tags> 76 | <spec>list</spec> 77 | <description> 78 | <p> 79 | List current tab groups. 80 | </p> 81 | </description> 82 | </item> 83 | 84 | <item> 85 | <tags>tabgroups-pulltab tabgroups-pull</tags> 86 | <spec>pulltab<oa>tab</oa><oa>!</oa> <a>url|index</a></spec> 87 | <description> 88 | <p> 89 | Pull the tab from another group. 90 | The argument <a>url|index</a> is the same as <ex>:buffer</ex>'s argument. 91 | </p> 92 | <p> 93 | Also switch to the tab if <oa>!</oa> is specified. 94 | </p> 95 | </description> 96 | </item> 97 | 98 | <item> 99 | <tags>tabgroups-pushtab tabgroups-push tabgroups-stash</tags> 100 | <spec>pushtab<oa>!</oa> <a>groupName</a></spec> 101 | <spec>stash<oa>!</oa> <a>groupName</a></spec> 102 | <description> 103 | <p> 104 | Move the current tab to a group named <a>groupName</a>. 105 | </p> 106 | <p> 107 | If the group does not exist, you can use <oa>!</oa> 108 | to automatically create a new group named <a>groupName</a> and 109 | move the tab there. 110 | </p> 111 | </description> 112 | </item> 113 | 114 | <item> 115 | <tags>tabgroups-remove tabgroups-rm</tags> 116 | <spec>remove<oa>group</oa> <oa>groupName</oa></spec> 117 | <spec>rm<oa>group</oa> <oa>groupName</oa></spec> 118 | <description> 119 | <p> 120 | Close all tabs in the group named <oa>groupName</oa>. 121 | When <oa>groupName</oa> is omitted, close the current group. 122 | </p> 123 | </description> 124 | </item> 125 | 126 | <item> 127 | <tags>tabgroups-rename tabgroups-mv</tags> 128 | <spec>rename<oa>!</oa> <oa>newGroupName</oa></spec> 129 | <spec>mv<oa>!</oa> <oa>newGroupName</oa></spec> 130 | <description> 131 | <p> 132 | Rename current tab group to <oa>newGroupName</oa>. 133 | </p> 134 | <p> 135 | If <oa>newGroupName</oa> is not supplied and <oa>!</oa> is 136 | specified, resets group's name to <o>(Untitled)</o>. 137 | </p> 138 | </description> 139 | </item> 140 | 141 | <item> 142 | <tags>tabgroups-switch</tags> 143 | <spec><oa>count</oa>switch <a>groupName</a></spec> 144 | <description> 145 | <p> 146 | Switch to a group named <a>groupName</a>. 147 | </p> 148 | <p> 149 | Switch to <oa>count</oa>th next group if <oa>count</oa> is specified. 150 | </p> 151 | </description> 152 | </item> 153 | </description> 154 | </item> 155 | 156 | </div> 157 | 158 | </overlay> 159 | <!-- vim:se sts=4 sw=4 et: --> 160 | -------------------------------------------------------------------------------- /vimperator/locale/ja/all.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <include href="tutorial" tag="tutorial.html" insertafter="intro.html" /> 11 | 12 | </overlay> 13 | 14 | <!-- vim:se sts=4 sw=4 et: --> 15 | -------------------------------------------------------------------------------- /vimperator/locale/ja/autocommands.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <dl tag="autocommand-list" replace="autocommand-list"> 11 | <dt>BookmarkAdd</dt> <dd>ページをブックマークした直後に発生します</dd> 12 | <dt>ColorScheme</dt> <dd>カラースキームを読み込んだ直後に発生します</dd> 13 | <dt>DOMLoad</dt> <dd>ページの DOM が完全に読み込まれた際に発生します</dd> 14 | <dt>DownloadPost</dt> <dd>ダウンロードが完了した際に発生します</dd> 15 | <dt>Fullscreen</dt> <dd>フルスクリーン状態が切り替わった際に発生します</dd> 16 | <dt>LocationChange</dt> <dd>タブを切り替えた際や新しい URL に移動した際に発生します</dd> 17 | <dt>PageLoadPre</dt> <dd>ページの読み込みが開始された直後に発生します</dd> 18 | <dt>PageLoad</dt> <dd>ページの ( 再 ) 読み込みが終了した際やページが開かれた際に発生します</dd> 19 | <dt>PluginsLoadPost</dt> <dd>Triggered after all plugins have been (re)loaded</dd> 20 | <dt>Sanitize</dt> <dd>プライベートデータを削除した際に発生します</dd> 21 | <dt>ShellCmdPost</dt> <dd><ex>:!</ex><a>cmd</a> でシェルコマンドが実行された直後に発生します</dd> 22 | <dt>&liberator.appname;Enter</dt> <dd>&liberator.host; が起動した直後に発生します</dd> 23 | <dt>&liberator.appname;LeavePre</dt><dd>&liberator.host; が終了する直前、ちょうど各モジュールが破棄される直前に発生します</dd> 24 | <dt>&liberator.appname;Leave</dt> <dd>&liberator.host; が終了する直前に発生します</dd> 25 | </dl> 26 | 27 | <dl tag="autocommand-args" replace="autocommand-args"> 28 | <dt><url></dt> <dd>イベントが適用された URL です。</dd> 29 | <dt><title></dt> <dd>ページ、ブックマークのタイトルもしくはダウンロードしたファイル名です。</dd> 30 | <dt><doc></dt> <dd>イベントが発生したドキュメントです。<em>DOMLoad</em> と <em>PageLoad</em> 専用です。</dd> 31 | <dt><tab></dt> <dd>イベントが発生したタブです。<em>DOMLoad</em> と <em>PageLoad</em> 専用です。</dd> 32 | <dt><tags></dt> <dd><url> につけられたタグ名です。 <em>BookmarkAdd</em> 専用です。</dd> 33 | <dt><keyword></dt> <dd>ブックマークにつけられたキーワードです。<em>BookmarkAdd</em> 専用です。</dd> 34 | <dt><icon></dt> <dd><url> に関連づけられたアイコンです。 <em>BookmarkAdd</em> 専用です。</dd> 35 | <dt><size></dt> <dd>ダウンロードされたファイルのサイズです。 <em>DownloadPost</em> 専用です。</dd> 36 | <dt><file></dt> <dd>ダウンロードした場所です。 <em>DownloadPost</em> 専用です。</dd> 37 | <dt><state></dt> <dd>切り替え後の状態です。 <em>Fullscreen</em> 専用です。</dd> 38 | <dt><name></dt> <dd>アイテムの名前です。<em>ColorScheme</em> と <em>Sanitize</em> 専用です。</dd> 39 | </dl> 40 | 41 | </overlay> 42 | 43 | <!-- vim:se sts=4 sw=4 et: --> 44 | -------------------------------------------------------------------------------- /vimperator/locale/ja/gui.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <dl tag="dialog-list" replace="dialog-list"> 11 | <dt>about</dt> <dd>Mozilla &liberator.host; について ( ヘルプ -> Mozilla &liberator.host; について )</dd> 12 | <dt>addbookmark</dt> <dd>現在のページをブックマークに追加 ( ブックマーク -> このページをブックマーク )</dd> 13 | <dt>addons</dt> <dd>アドオン ( ツール -> アドオン )</dd> 14 | <dt>bookmarks</dt> <dd>ブックマーク ( 表示 -> サイドバー -> ブックマーク )</dd> 15 | <dt>certmgr</dt> <dd>Show certificate manager</dd> 16 | <dt>checkupdates</dt> <dd>ソフトウェアの更新を確認 ( ヘルプ -> ソフトウェアの更新を確認 )</dd> 17 | <dt>cleardata</dt> <dd>プライバシー情報の消去 ( ツール -> プライバシー情報の消去 )</dd> 18 | <dt>connectionprefs</dt> <dd>Show connection settings</dd> 19 | <dt>console</dt> <dd>エラーコンソール ( ツール -> エラーコンソール )</dd> 20 | <dt>cookies</dt> <dd>クッキー一覧 ( ツール -> オプションからプライバシータブの「 Cookie を表示」をクリック )</dd> 21 | <dt>customizetoolbar</dt><dd>ツールバーのカスタマイズ ( 表示 -> ツールバー -> カスタマイズ )</dd> 22 | <dt>dominspector</dt> <dd>DOM Inspector ( ツール -> DOM Inspector )</dd> 23 | <dt>downloads</dt> <dd>ダウンロードマネージャ ( ツール -> ダウンロード )</dd> 24 | <dt>history</dt> <dd>履歴 ( 表示 -> サイドバー -> 履歴 )</dd> 25 | <dt>import</dt> <dd>設定移行ウィザード ( ファイル -> 設定とデータのインポート )</dd> 26 | <dt>openfile</dt> <dd>ファイルを開くダイアログ ( ファイル -> ファイルを開く )</dd> 27 | <dt>pageinfo</dt> <dd>ページの情報ダイアログ ( ツール -> ページの情報 )</dd> 28 | <dt>pagesource</dt> <dd>ページのソース ( 表示 -> ページのソース )</dd> 29 | <dt>passwords</dt> <dd>保存されているパスワード ( ツール -> オプション -> セキュリテイ )</dd> 30 | <dt>places</dt> <dd>履歴とブックマークの管理 ( 履歴とブックマークの管理 )</dd> 31 | <dt>preferences</dt> <dd>&liberator.host; の設定ダイアログ ( ツール -> オプション )</dd> 32 | <dt>print</dt> <dd>印刷ダイアログ ( ファイル -> 印刷 )</dd> 33 | <dt>printpreview</dt> <dd>印刷プレビュー ( ファイル -> 印刷プレビュー )</dd> 34 | <dt>printsetup</dt> <dd>ページ設定ダイアログ ( ファイル -> ページ設定 )</dd> 35 | <dt>saveframe</dt> <dd>名前を付けて保存 ( ファイル -> 名前を付けてフレームを保存 )</dd> 36 | <dt>savepage</dt> <dd>名前を付けて保存 ( ファイル -> 名前を付けてページを保存 )</dd> 37 | <dt>searchengines</dt> <dd>サーチエンジンの管理 ( 検索バーの左側にある下向き矢印 -> 検索バーの管理 )</dd> 38 | <dt>selectionsource</dt> <dd>選択部分のソース ( 選択後コンテキストメニューから「選択した部分のソースを表示」 )</dd> 39 | </dl> 40 | 41 | </overlay> 42 | 43 | <!-- vim:se sts=4 sw=4 et: --> 44 | -------------------------------------------------------------------------------- /vimperator/locale/ja/liberator.dtd: -------------------------------------------------------------------------------- 1 | 2 | <!ENTITY appname "Vimperator"> 3 | <!ENTITY hostapp "Firefox"> 4 | 5 | -------------------------------------------------------------------------------- /vimperator/locale/ja/options.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <?xml-stylesheet type="text/xsl" href="chrome://liberator/content/help.xsl"?> 3 | 4 | <!DOCTYPE overlay SYSTEM "chrome://liberator/content/liberator.dtd"> 5 | 6 | <overlay 7 | xmlns="http://vimperator.org/namespaces/liberator" 8 | xmlns:html="http://www.w3.org/1999/xhtml"> 9 | 10 | <!--item replace="'go'"> 11 | <tags>'go' 'guioptions'</tags> 12 | <spec>'guioptions' 'go'</spec> 13 | <type>charlist</type> 14 | <default>Tbr</default> 15 | <description> 16 | <p>Show or hide certain GUI elements like the menu or toolbar.</p> 17 | 18 | <p>Supported characters:</p> 19 | 20 | <dl> 21 | <dt>m</dt> <dd>Menubar</dd> 22 | <dt>T</dt> <dd>Toolbar</dd> 23 | <dt>B</dt> <dd>Bookmark bar</dd> 24 | <dt>A</dt> <dd>Add-on bar</dd> 25 | <dt>n</dt> <dd>Tab number</dd> 26 | <dt>b</dt> <dd>Bottom scrollbar</dd> 27 | <dt>r</dt> <dd>Right scrollbar</dd> 28 | <dt>l</dt> <dd>Left scrollbar (<em>l</em> and <em>r</em> are mutually exclusive)</dd> 29 | </dl> 30 | 31 | <p>You can also hide the tab bar with <ex>:set showtabline=0</ex>.</p> 32 | 33 | <note>Scrollbar changes require a page reload to take effect.</note> 34 | </description> 35 | </item--> 36 | 37 | <!--item insertbefore=":set"> 38 | <tags>:seg :way</tags> 39 | <spec>:se[a]</spec> 40 | <description> 41 | <p>デフォルト値が変更されているオプションをすべて表示します。</p> 42 | </description> 43 | </item> 44 | 45 | <item insertafter=":set-default"> 46 | <tags>:sturm :drang</tags> 47 | <spec>:und</spec> 48 | <description> 49 | <p>デフォルト値が変更されているオプションをすべて表示します。</p> 50 | </description> 51 | </item--> 52 | 53 | <item insertafter="'enc'"> 54 | <tags>'app' 'apptab'</tags> 55 | <spec>'apptab' 'app'</spec> 56 | <type>boolean</type> 57 | <default>false</default> 58 | <description> 59 | <p> 60 | 現在のタブを App Tab にします。 61 | Firefox は App Tab を全てのタブの左に最小化された Favicon だけの状態で表示します。 62 | </p> 63 | </description> 64 | </item> 65 | 66 | </overlay> 67 | <!-- vim:se sts=4 sw=4 et: --> 68 | -------------------------------------------------------------------------------- /vimperator/private.properties.in: -------------------------------------------------------------------------------- 1 | #### private configuration 2 | 3 | ################################################################################ 4 | # 1. Register at AMO (addons.mozilla.org) 5 | # 2. Create your API key 6 | # (https://addons.mozilla.org/de/developers/addon/api/key/) 7 | # 3. Manually add your add-on as "unlisted" at AMO 8 | # 4. Copy this file to private.properties 9 | # 5. Edit at least UUID, AMO_API_KEY and AMO_API_SECRET. 10 | ################################################################################ 11 | 12 | VERSION := $(VERSION).$(shell date '+%Y%m%d%H%M%S') 13 | UUID = <your UUID> 14 | AMO_API_KEY = <your API key> 15 | AMO_API_SECRET = <your API secret> 16 | UPDATE_URL = <your updateURL if available> 17 | UPDATE_URL_XPI = <link to update XPI> 18 | -------------------------------------------------------------------------------- /vimperator/skin/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vimperator/vimperator-labs/62764026414a89ada329a4c43aa0f53ce14f6b47/vimperator/skin/icon.png -------------------------------------------------------------------------------- /vimperator/vimperatorrc.example: -------------------------------------------------------------------------------- 1 | " Vimperator customization file 2 | " These are just a few (hopefully) useful examples; it's all JavaScript and 3 | " pseudo-VimL, sky's the limit. 4 | " Use the Vimperator :help command for a description of commands and options 5 | " below as well as for other details and tips. 6 | 7 | 8 | " I don't like beeps 9 | set visualbell 10 | " useful for command-line completion 11 | set autocomplete 12 | set wildmode=list:longest,full 13 | 14 | 15 | " automatic pass-through mode on certain pages (do ':h autocommands' for details) 16 | autocmd LocationChange .* :js modes.passAllKeys = /gmail\.com/.test(buffer.URL) 17 | 18 | 19 | " you can even add new functions which are then available to the :js command 20 | js <<EOF 21 | toggle_element = function (name) { 22 | document.getElementById(name).collapsed ^= 1; 23 | } 24 | EOF 25 | " and now use it in mappings (':h key-notation'): 26 | map <silent> <F8> :js toggle_element('toolbar-menubar')<CR> 27 | map <silent> <F9> :js toggle_element('nav-bar')<CR> 28 | 29 | 30 | " define a keyword bookmark 31 | bmark -keyword=mozjscoreref https://developer.mozilla.org/Special:Search?search=%s&type=fulltext 32 | " ... and a command line abbreviation for the keyword 33 | ca j mozjscoreref 34 | " now in Vimperator type 'tj<Space>getElementById<CR>' and there you go 35 | 36 | 37 | echo "vimperatorrc sourced" 38 | 39 | " vim: ft=vimperator: 40 | --------------------------------------------------------------------------------