├── .gitignore ├── .travis.yml ├── COPYING ├── Makefile ├── Readme.md ├── ahk-us.ahk ├── ergoemacs-advice.el ├── ergoemacs-calculate-bindings.el ├── ergoemacs-command-loop.el ├── ergoemacs-cua.el ├── ergoemacs-debug.el ├── ergoemacs-functions.el ├── ergoemacs-key-description.el ├── ergoemacs-layouts.el ├── ergoemacs-lib.el ├── ergoemacs-macros.el ├── ergoemacs-map-properties.el ├── ergoemacs-map.el ├── ergoemacs-mapkeymap.el ├── ergoemacs-mode.el ├── ergoemacs-test.el ├── ergoemacs-theme-engine.el ├── ergoemacs-themes.el ├── ergoemacs-translate.el ├── kbd-ergo.html ├── kbd-ergo.svg ├── kbd.svg ├── o-blog-template ├── blog_archives.html ├── blog_index_category.html ├── blog_index_month.html ├── blog_index_year.html ├── blog_post-by-tags.html ├── blog_post.html ├── blog_rss.html ├── blog_sitemap.html ├── blog_static.html ├── blog_static_no_title.html ├── blog_tags-details.html ├── blog_tags.html ├── debug.html ├── debug_blog.html ├── debug_post.html ├── debug_posts.html ├── debug_snippets.html ├── debug_static.html ├── debug_tag.html ├── debug_tags.html ├── index_archives.html ├── index_category.html ├── index_month.html ├── index_year.html ├── nav_breadcrumb.html ├── nav_tag-cloud.html ├── page_footer.html ├── page_header.html ├── page_redirect.html ├── plugin_analytics.html ├── plugin_disqus.html ├── plugin_qrcode.html ├── sitemap_post.html ├── sitemap_static.html ├── starter-template.html └── style │ ├── Font-Awesome │ ├── font │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.svgz │ │ ├── fontawesome-webfont.ttf │ │ └── fontawesome-webfont.woff │ └── less │ │ ├── font-awesome-ie7.less │ │ └── font-awesome.less │ ├── basic.css │ ├── bootstrap │ ├── img │ │ ├── glyphicons-halflings-white.png │ │ └── glyphicons-halflings.png │ ├── js │ │ ├── .jshintrc │ │ ├── bootstrap-affix.js │ │ ├── bootstrap-alert.js │ │ ├── bootstrap-button.js │ │ ├── bootstrap-carousel.js │ │ ├── bootstrap-collapse.js │ │ ├── bootstrap-dropdown.js │ │ ├── bootstrap-modal.js │ │ ├── bootstrap-popover.js │ │ ├── bootstrap-scrollspy.js │ │ ├── bootstrap-tab.js │ │ ├── bootstrap-tooltip.js │ │ ├── bootstrap-transition.js │ │ └── bootstrap-typeahead.js │ └── less │ │ ├── accordion.less │ │ ├── alerts.less │ │ ├── badges.less │ │ ├── bootstrap.less │ │ ├── breadcrumbs.less │ │ ├── button-groups.less │ │ ├── buttons.less │ │ ├── carousel.less │ │ ├── close.less │ │ ├── code.less │ │ ├── component-animations.less │ │ ├── dropdowns.less │ │ ├── forms.less │ │ ├── grid.less │ │ ├── hero-unit.less │ │ ├── labels-badges.less │ │ ├── labels.less │ │ ├── layouts.less │ │ ├── mixins.less │ │ ├── modals.less │ │ ├── navbar.less │ │ ├── navs.less │ │ ├── pager.less │ │ ├── pagination.less │ │ ├── popovers.less │ │ ├── progress-bars.less │ │ ├── reset.less │ │ ├── responsive-1200px-min.less │ │ ├── responsive-767px-max.less │ │ ├── responsive-768px-979px.less │ │ ├── responsive-navbar.less │ │ ├── responsive-utilities.less │ │ ├── responsive.less │ │ ├── scaffolding.less │ │ ├── sprites.less │ │ ├── tables.less │ │ ├── thumbnails.less │ │ ├── tooltip.less │ │ ├── type.less │ │ ├── utilities.less │ │ ├── variables.less │ │ └── wells.less │ ├── font │ ├── Andika.woff │ ├── UbuntuMono-Bold.woff │ ├── UbuntuMono-BoldItalic.woff │ ├── UbuntuMono-Italic.woff │ ├── UbuntuMono-Regular.woff │ ├── YanoneKaffeesatz-Bold.woff │ ├── YanoneKaffeesatz-ExtraLight.woff │ ├── YanoneKaffeesatz-Light.woff │ └── YanoneKaffeesatz-Regular.woff │ ├── js │ ├── jquery-1.7.1.min.js │ ├── jquery.svg.min.js │ ├── keymap.js │ ├── less-1.3.0.min.js │ ├── o-blog-fix.js │ ├── o-blog.linenumber.js │ ├── prettify.js │ ├── sizzle.min.js │ └── tablefilter.js │ ├── keys.css │ └── less │ ├── font-Andika.less │ ├── font-Ubuntu-Mono.less │ ├── font-Yanone-Kaffeesatz.less │ ├── o-blog-default.less │ ├── o-blog-orig.less │ ├── o-blog.less │ └── oblog-min.less ├── os_x_qwerty.dict.txt ├── test └── .gitignore └── web.org /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | ~* 3 | out/* 4 | *.elc 5 | \#*\# 6 | .\#* 7 | /out/ 8 | *-autoloads.el 9 | *-pkg.el 10 | flycheck_* 11 | ergoemacs-global*.el 12 | ergoemacs-global*.el.gz 13 | ergoemacs-global*.elc.gz 14 | ergoemacs-global*.elc 15 | /.cask/ 16 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | ### 2 | ### Notes 3 | ### 4 | ### The travis web interface may choke silently and fail to 5 | ### update when there are issues with the .travis.yml file. 6 | ### 7 | ### The "travis-lint" command-line tool does not catch all 8 | ### errors which may lead to silent failure. 9 | ### 10 | ### Shell-style comments in this file must have "#" as the 11 | ### *first* character of the line. 12 | ### 13 | 14 | ### 15 | ### language 16 | ### 17 | 18 | language: emacs-lisp 19 | 20 | ### 21 | ### defining the build matrix 22 | ### 23 | ### ===> <=== 24 | ### ===> each variation in env/matrix will be built and tested <=== 25 | ### ===> <=== 26 | ### 27 | ### variables under env/global are available to the build process 28 | ### but don't cause the creation of a separate variation 29 | ### 30 | 31 | env: 32 | #- EMACS=emacs-23.4-bin METHOD=evm 33 | - EMACS=emacs-24.1-bin METHOD=evm 34 | - EMACS=emacs-24.2-bin METHOD=evm 35 | # - EMACS=emacs-24.2 METHOD=evm 36 | - EMACS=emacs-24.3-bin METHOD=evm 37 | - EMACS=emacs-24.4-bin METHOD=evm 38 | - EMACS=emacs-24.5-bin METHOD=evm 39 | #- EMACS=emacs-25.1-bin METHOD=evm 40 | - EMACS=emacs24 METHOD=manual 41 | - EMACS=emacs-snapshot METHOD=manual 42 | 43 | # matrix: 44 | # global: 45 | # - METHOD=manual 46 | 47 | ### 48 | ### allowing build failures 49 | ### 50 | 51 | matrix: 52 | allow_failures: 53 | - env: EMACS=emacs-24.1-bin METHOD=evm 54 | - env: EMACS=emacs-24.2-bin METHOD=evm 55 | - env: EMACS=emacs-snapshot METHOD=manual 56 | # - env: EMACS=xemacs21 57 | # - env: EMACS=emacs22 58 | # - env: EMACS=emacs-snapshot 59 | # - env: EMACS=emacs-23.4-bin 60 | 61 | ### 62 | ### limit build attempts to defined branches 63 | ### 64 | ### notes 65 | ### 66 | ### This controls which branches are built. 67 | ### 68 | ### You can also control which branches affect the web badge, by 69 | ### appending "?branch=master,staging,production" to the end of the 70 | ### image URL (replacing "master,staging,production" with a 71 | ### comma-separated list of branches to be reflected in the badge). 72 | ### 73 | # 74 | # branches: 75 | # only: 76 | # - master 77 | # 78 | 79 | ### 80 | ### runtime initialization 81 | ### 82 | ### notes 83 | ### 84 | ### emacs22 is extracted manually from Ubuntu Maverick. 85 | ### 86 | ### emacs23 is the stock default, but is updated anyway to 87 | ### a GUI-capable version, which will have certain additional 88 | ### functions compiled in. 89 | ### 90 | ### emacs24 (current stable release) is obtained from the 91 | ### cassou PPA: http://launchpad.net/~cassou/+archive/emacs 92 | ### 93 | ### emacs-snapshot (trunk) is obtained from the Ubuntu Emacs Lisp PPA: 94 | ### https://launchpad.net/~ubuntu-elisp/+archive/ppa 95 | ### For the emacs-snapshot build, bleeding-edge versions 96 | ### of all test dependencies are also used. 97 | ### 98 | 99 | before_install: 100 | - git submodule --quiet update --init --recursive 101 | 102 | install: 103 | - if [ "$EMACS" = 'emacs23' ]; then 104 | sudo apt-get -qq update && 105 | sudo apt-get -qq -f install && 106 | sudo apt-get -qq install emacs23-gtk emacs23-el; 107 | fi 108 | - if [ "$METHOD" = 'evm' ]; then 109 | sudo mkdir /usr/local/evm && 110 | sudo chown travis:travis /usr/local/evm && 111 | sudo add-apt-repository -y ppa:cassou/emacs && 112 | sudo apt-get update -qq && 113 | sudo apt-get build-dep -qq emacs23 && 114 | sudo apt-get build-dep -qq emacs24 && 115 | curl -fsSkL https://raw.github.com/rejeep/evm/master/go | bash && 116 | export PATH="~/.evm/bin:$PATH" && 117 | chmod +x ~/.evm/bin/evm && 118 | ~/.evm/bin/evm install $EMACS && 119 | ~/.evm/bin/evm use $EMACS && 120 | FULL_EMACS_PATH="/usr/local/evm/$EMACS/bin/emacs" && 121 | export EMACS="$FULL_EMACS_PATH" && 122 | EMACS="$FULL_EMACS_PATH"; 123 | fi 124 | - if [ "$EMACS" = 'emacs24' ]; then 125 | sudo add-apt-repository -y ppa:cassou/emacs && 126 | sudo apt-get -qq update && 127 | sudo apt-get -qq -f install && 128 | sudo apt-get -qq install emacs24 emacs24-el; 129 | fi 130 | - if [ "$EMACS" = 'emacs-snapshot' ]; then 131 | sudo add-apt-repository -y ppa:ubuntu-elisp/ppa && 132 | sudo apt-get -qq update && 133 | sudo apt-get -qq -f install && 134 | sudo apt-get -qq install emacs-snapshot && 135 | sudo apt-get -qq install emacs-snapshot-el; 136 | fi 137 | before_script: 138 | - if [ "$EMACS" = 'emacs-snapshot' ]; then 139 | make downloads-latest; 140 | else 141 | make downloads; 142 | fi 143 | ### 144 | ### the actual build/test command 145 | ### 146 | ### Use "make test-batch" to test without byte-compiling. 147 | ### The default command avoids byte-compiling on Emacs 22. 148 | ### 149 | 150 | script: 151 | echo "Method is $METHOD" && $EMACS --version && make test EMACS="$EMACS" 152 | 153 | ### 154 | ### settings 155 | ### 156 | 157 | notifications: 158 | email: false 159 | 160 | # 161 | # Emacs 162 | # 163 | # Local Variables: 164 | # indent-tabs-mode: nil 165 | # coding: utf-8 166 | # End: 167 | # -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | EMACS=emacs 2 | 3 | unexport EMACSLOADPATH 4 | unexport EMACSDOC 5 | unexport EMACSDATA 6 | unexport EMACS_SERVER_FILE 7 | 8 | EMACS_CLEAN=-Q 9 | EMACS_BATCH=$(EMACS_CLEAN) --batch 10 | TESTS=ergoemacs- 11 | SELECT= 12 | 13 | CURL=curl --silent 14 | TMP1=$(shell pwd) 15 | EMPTY= 16 | BACKSLASH=\$(EMPTY) 17 | SLASH=/ 18 | WORK_DIR=$(subst $(BACKSLASH),$(SLASH),$(TMP1)) 19 | PACKAGE_NAME=$(shell basename $(TMP1)) 20 | AUTOLOADS_FILE=$(PACKAGE_NAME)-autoloads.el 21 | TRAVIS_FILE=.travis.yml 22 | 23 | .PHONY : build downloads downloads-latest autoloads test-autoloads test-travis \ 24 | test test-interactive clean edit test-dep-1 test-dep-2 test-dep-3 \ 25 | test-dep-4 test-dep-5 test-dep-6 test-dep-7 test-dep-8 test-dep-9 26 | 27 | .DEFAULT_GOAL = compile 28 | 29 | 24.1 : 30 | $(eval EMACS:="c:\Users\fidlema3\EmacsPortable.App\App\emacs-24.1\bin\emacs.exe") 31 | 32 | 24.2 : 33 | $(eval EMACS:="c:\Users\fidlema3\EmacsPortable.App\App\emacs-24.2\bin\emacs.exe") 34 | 35 | 24.3 : 36 | $(eval EMACS:="c:\Users\fidlema3\EmacsPortable.App\App\emacs-24.3\bin\emacs.exe") 37 | 38 | 24.4 : 39 | $(eval EMACS:="c:\Users\fidlema3\EmacsPortable.App\App\emacs-24.4\bin\emacs.exe") 40 | 41 | 24.5 : 42 | $(eval EMACS:="c:\Users\fidlema3\EmacsPortable.App\App\emacs-24.5\bin\emacs.exe") 43 | 44 | 25.0 : 45 | $(eval EMACS:="c:\Users\fidlema3\EmacsPortable.App\App\emacs-24.5\bin\emacs.exe") 46 | 47 | 48 | search : 49 | $(eval SELECT:=(tag :search)) 50 | 51 | copy : 52 | $(eval SELECT:=(tag :copy)) 53 | 54 | slow : 55 | $(eval SELECT:=(tag :slow)) 56 | 57 | shift-select : 58 | $(eval SELECT:=(tag :shift-select)) 59 | 60 | translate : 61 | $(eval SELECT:=(tag :translate)) 62 | 63 | 64 | other : 65 | $(eval SELECT:=(not (tag :search)) (not (tag :copy)) (not (tag :slow)) (not (tag :shift-select)) (not (tag :translate))) 66 | 67 | default-select : 68 | $(eval SELECT:=) 69 | 70 | 71 | 72 | build : 73 | $(EMACS) $(EMACS_BATCH) -L . --eval \ 74 | "(progn \ 75 | (batch-byte-compile))" *.el 76 | 77 | build2 : 78 | $(EMACS) $(EMACS_BATCH) -L . -l ergoemacs-mode --eval \ 79 | "(progn \ 80 | (batch-byte-compile))" *.el 81 | 82 | autoloads : 83 | @cd $(WORK_DIR) 84 | $(EMACS) $(EMACS_BATCH) --eval \ 85 | "(progn \ 86 | (setq generated-autoload-file \"$(WORK_DIR)/$(AUTOLOADS_FILE)\") \ 87 | (update-directory-autoloads \"$(WORK_DIR)\"))" 88 | 89 | test-autoloads : autoloads 90 | @$(EMACS) $(EMACS_BATCH) -L . -l "./$(AUTOLOADS_FILE)" || \ 91 | ( echo "failed to load autoloads: $(AUTOLOADS_FILE)" && false ) 92 | 93 | test-travis : 94 | @if test -z "$$TRAVIS" && test -e $(TRAVIS_FILE); then travis-lint $(TRAVIS_FILE); fi 95 | 96 | 97 | test: source compile 98 | 99 | compile : clean build build2 test-autoloads erti 100 | 101 | source : clean ert 102 | 103 | start: clean build start0 104 | startel: clean start0 105 | 106 | start0: 107 | $(EMACS) -Q -L . -L .. -l ergoemacs-mode -l ergoemacs-test --eval "(ergoemacs-mode)" 108 | 109 | ert : 110 | $(EMACS) $(EMACS_BATCH) -L . -L .. -l cl-lib -l ergoemacs-mode -l ergoemacs-test --eval \ 111 | "(progn (setq ergoemacs-command-loop-type nil) \ 112 | (ert-run-tests-batch-and-exit '(and \"$(TESTS)\" $(SELECT) (not (tag :interactive)))))" || exit 1; \ 113 | 114 | erti : 115 | $(EMACS) $(EMACS_BATCH) -L . -L .. -l cl-lib -l ergoemacs-mode -l ergoemacs-test --eval \ 116 | "(progn (setq ergoemacs-command-loop-type nil) \ 117 | (fset 'ert--print-backtrace 'ignore) \ 118 | (ert-run-tests-batch-and-exit '(and \"$(TESTS)\" $(SELECT) (not (tag :interactive)))))" || exit 1; \ 119 | 120 | clean : 121 | @rm -f $(AUTOLOADS_FILE) 122 | @rm -f *.elc 123 | @rm -f *~ 124 | @rm -f \#*\# 125 | 126 | clean-global : 127 | @rm -f ergoemacs-global-*.el 128 | @rm -f ergoemacs-global-*.elc 129 | 130 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | [](http://stable.melpa.org/#/ergoemacs-mode) 2 | [](http://melpa.org/#/ergoemacs-mode) 3 | [](http://travis-ci.org/ergoemacs/ergoemacs-mode) 4 | 5 | # Ergoemacs Keybindings 6 | 7 | Xah Lee, David Capello, Kim Storm, Walter Landry and Matthew Fidler 8 | 9 | ## Library Information 10 | 11 | ErgoEmacs keybindings improve GNU Emacs for people who did not grew 12 | up with Emacs. User interface is based on common modern software 13 | interface familiar to most people today, such as using 【Ctrl+C】 key 14 | for Copy,【Ctrl+Z】 for undo, 【Ctrl+O】 for Open file, and also 15 | bundles many Emacs Lisp functions that are not in GNU Emacs by default. 16 | 17 | ```lisp 18 | (setq ergoemacs-theme nil) 19 | (setq ergoemacs-keyboard-layout "us") 20 | (require 'ergoemacs-mode) 21 | (ergoemacs-mode 1) 22 | ``` 23 | 24 | ## Changing your own bindings 25 | 26 | If you want to change your bindings, you can define keys in the `ergoemacs-user-keymap`. 27 | 28 | For example, if you want to change `C-a` you can use the following Emacs customization command: 29 | 30 | ```lisp 31 | (define-key ergoemacs-user-keymap (kbd "C-a") 'my-replacement-function) 32 | ``` 33 | 34 | If you wanted this to respect the keyboard layout for some reason, you can use: 35 | 36 | ```lisp 37 | (ergoemacs-define-key ergoemacs-user-keymap (kbd "M-i") 'my-other-function) 38 | ``` 39 | 40 | This defines the Alt+i key on QWERTY and Alt+u on colemak. 41 | 42 | You can also define keys that are partially layout dependent and partially fixed. 43 | 44 | For example if you wanted the ergoemacs-mode key `