ergoemacs mode

40 views
Skip to first unread message

Xah Lee

unread,
Jun 25, 2014, 8:00:39 PM6/25/14
to ErgoEmacs
matt,

just tried ergoemas-mode with all of my heavy customization and keys intact!

it worked! and wonderfully! I didn't have to change any of my keys (which is about remapping all emacs commands).

all my menu keys also works. Also, great many gui improvements. This is far more so than done in ErgoEmacs.

now i can use it again!

Thank you very much.

 Xah

Matthew Fidler

unread,
Jun 25, 2014, 9:29:16 PM6/25/14
to ergo...@googlegroups.com
Great!

If you have any issues, feel free to fix them or submit a pull request.

Also if you want to make your own theme components for an ergoemacs-theme, it is quite easy.  All you have to do is to migrate your customizations into a theme component and add it.

For example, with your banishing of the shift key, this is added by:

(ergoemacs-theme-component ergoemacs-banish-shift ()
  "Banish Shift Combinations with <apps> SPC"
  :variable-reg ""
  (global-set-key (kbd "<menu> SPC SPC") (kbd "_")) ;low line (underscore)
  (global-set-key (kbd "<menu> SPC RET") (kbd "-"))
  (global-set-key (kbd "<menu> SPC '") (kbd "\""))
  (global-set-key (kbd "<menu> SPC ,") (kbd "<"))
  (global-set-key (kbd "<menu> SPC -") (kbd "_"))
  (global-set-key (kbd "<menu> SPC .") (kbd ">"))
  (global-set-key (kbd "<menu> SPC /") (kbd "?"))
  (global-set-key (kbd "<menu> SPC ;") (kbd ":"))
  (global-set-key (kbd "<menu> SPC =") (kbd "+"))
  (global-set-key (kbd "<menu> SPC \\") (kbd "|"))
  (global-set-key (kbd "<menu> SPC `") (kbd "~"))

  (global-set-key (kbd "<menu> SPC 0") (kbd ")"))
  (global-set-key (kbd "<menu> SPC 1") (kbd "!"))
  (global-set-key (kbd "<menu> SPC 2") (kbd "@"))
  (global-set-key (kbd "<menu> SPC 3") (kbd "#"))
  (global-set-key (kbd "<menu> SPC 4") (kbd "$"))
  (global-set-key (kbd "<menu> SPC 5") (kbd "%"))
  (global-set-key (kbd "<menu> SPC 6") (kbd "^"))
  (global-set-key (kbd "<menu> SPC 7") (kbd "&"))
  (global-set-key (kbd "<menu> SPC 8") (kbd "*"))
  (global-set-key (kbd "<menu> SPC 9") (kbd "("))

  (global-set-key (kbd "<menu> SPC a") (kbd "A"))
  (global-set-key (kbd "<menu> SPC b") (kbd "B"))
  (global-set-key (kbd "<menu> SPC c") (kbd "C"))
  (global-set-key (kbd "<menu> SPC d") (kbd "D"))
  (global-set-key (kbd "<menu> SPC e") (kbd "E"))
  (global-set-key (kbd "<menu> SPC f") (kbd "F"))
  (global-set-key (kbd "<menu> SPC g") (kbd "G"))
  (global-set-key (kbd "<menu> SPC h") (kbd "H"))
  (global-set-key (kbd "<menu> SPC i") (kbd "I"))
  (global-set-key (kbd "<menu> SPC j") (kbd "J"))
  (global-set-key (kbd "<menu> SPC k") (kbd "K"))
  (global-set-key (kbd "<menu> SPC l") (kbd "L"))
  (global-set-key (kbd "<menu> SPC m") (kbd "M"))
  (global-set-key (kbd "<menu> SPC n") (kbd "N"))
  (global-set-key (kbd "<menu> SPC o") (kbd "O"))
  (global-set-key (kbd "<menu> SPC p") (kbd "P"))
  (global-set-key (kbd "<menu> SPC q") (kbd "Q"))
  (global-set-key (kbd "<menu> SPC r") (kbd "R"))
  (global-set-key (kbd "<menu> SPC s") (kbd "S"))
  (global-set-key (kbd "<menu> SPC t") (kbd "T"))
  (global-set-key (kbd "<menu> SPC u") (kbd "U"))
  (global-set-key (kbd "<menu> SPC v") (kbd "V"))
  (global-set-key (kbd "<menu> SPC w") (kbd "W"))
  (global-set-key (kbd "<menu> SPC x") (kbd "X"))
  (global-set-key (kbd "<menu> SPC y") (kbd "Y"))
  (global-set-key (kbd "<menu> SPC z") (kbd "Z")))

You don't even have to worry about translating your keys to QWERTY, all you need to do is add:


(ergoemacs-theme-component ergoemacs-banish-shift ()
  "Banish Shift Combinations with <apps> SPC"
:variable-reg "dvorak"
  (global-set-key (kbd "<menu> SPC SPC") (kbd "_")) ;low line (underscore)
  (global-set-key (kbd "<menu> SPC RET") (kbd "-"))
  (global-set-key (kbd "<menu> SPC '") (kbd "\""))
  (global-set-key (kbd "<menu> SPC ,") (kbd "<"))
  (global-set-key (kbd "<menu> SPC -") (kbd "_"))
  (global-set-key (kbd "<menu> SPC .") (kbd ">"))
  (global-set-key (kbd "<menu> SPC /") (kbd "?"))
  (global-set-key (kbd "<menu> SPC ;") (kbd ":"))
  (global-set-key (kbd "<menu> SPC =") (kbd "+"))
  (global-set-key (kbd "<menu> SPC \\") (kbd "|"))
  (global-set-key (kbd "<menu> SPC `") (kbd "~"))

  (global-set-key (kbd "<menu> SPC 0") (kbd ")"))
  (global-set-key (kbd "<menu> SPC 1") (kbd "!"))
  (global-set-key (kbd "<menu> SPC 2") (kbd "@"))
  (global-set-key (kbd "<menu> SPC 3") (kbd "#"))
  (global-set-key (kbd "<menu> SPC 4") (kbd "$"))
  (global-set-key (kbd "<menu> SPC 5") (kbd "%"))
  (global-set-key (kbd "<menu> SPC 6") (kbd "^"))
  (global-set-key (kbd "<menu> SPC 7") (kbd "&"))
  (global-set-key (kbd "<menu> SPC 8") (kbd "*"))
  (global-set-key (kbd "<menu> SPC 9") (kbd "("))

  (global-set-key (kbd "<menu> SPC a") (kbd "A"))
  (global-set-key (kbd "<menu> SPC b") (kbd "B"))
  (global-set-key (kbd "<menu> SPC c") (kbd "C"))
  (global-set-key (kbd "<menu> SPC d") (kbd "D"))
  (global-set-key (kbd "<menu> SPC e") (kbd "E"))
  (global-set-key (kbd "<menu> SPC f") (kbd "F"))
  (global-set-key (kbd "<menu> SPC g") (kbd "G"))
  (global-set-key (kbd "<menu> SPC h") (kbd "H"))
  (global-set-key (kbd "<menu> SPC i") (kbd "I"))
  (global-set-key (kbd "<menu> SPC j") (kbd "J"))
  (global-set-key (kbd "<menu> SPC k") (kbd "K"))
  (global-set-key (kbd "<menu> SPC l") (kbd "L"))
  (global-set-key (kbd "<menu> SPC m") (kbd "M"))
  (global-set-key (kbd "<menu> SPC n") (kbd "N"))
  (global-set-key (kbd "<menu> SPC o") (kbd "O"))
  (global-set-key (kbd "<menu> SPC p") (kbd "P"))
  (global-set-key (kbd "<menu> SPC q") (kbd "Q"))
  (global-set-key (kbd "<menu> SPC r") (kbd "R"))
  (global-set-key (kbd "<menu> SPC s") (kbd "S"))
  (global-set-key (kbd "<menu> SPC t") (kbd "T"))
  (global-set-key (kbd "<menu> SPC u") (kbd "U"))
  (global-set-key (kbd "<menu> SPC v") (kbd "V"))
  (global-set-key (kbd "<menu> SPC w") (kbd "W"))
  (global-set-key (kbd "<menu> SPC x") (kbd "X"))
  (global-set-key (kbd "<menu> SPC y") (kbd "Y"))
  (global-set-key (kbd "<menu> SPC z") (kbd "Z")))

This makes it easy to define components that can be turned on and off in the menu without having to relearn emacs commands.  There are some other nice features about these theme definitions easier to use (for example you don't have to add/delete hooks for major modes,

I haven't had time to write up the documentation for these features though.

I was also thinking of supporting

(ergoemacs-theme-component simple ()
"simple theme"
"C-k" kill-line
"Ctl+k" kill-line
"^k" kill-line)

Where standard, autohotkey, and emacs key definitions are supported.
 



--
You received this message because you are subscribed to the Google Groups "ErgoEmacs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ergoemacs+...@googlegroups.com.
To post to this group, send email to ergo...@googlegroups.com.
Visit this group at http://groups.google.com/group/ergoemacs.
For more options, visit https://groups.google.com/d/optout.

Matthew Fidler

unread,
Jun 25, 2014, 9:30:38 PM6/25/14
to ergo...@googlegroups.com
Note there is a typo in the theme definition

It should be

(ergoemacs-define-theme-component component ()
:layout "dvorak")

Xah Lee

unread,
Jul 1, 2014, 12:11:22 PM7/1/14
to ErgoEmacs
thanks matt. That's a handy template. I'll be using it.

Xah Lee

unread,
Jul 1, 2014, 12:17:04 PM7/1/14
to ErgoEmacs
matt,

one issue i had is that ergoemacs kept changing, or perhaps just my impression because i haven't really put time into it.

every few months, i wanted to mention ergoemacs. For example, its modal feature. Sometimes i wrote about it on my site but later on it no longer works. Hated that. Sometimes i want to mention it, but things change and isn't good my target audience.

i mean, i wished it to be really simple that people don't have to know a lot details or know github to use. People who never read a emacs blogs. Sometimes i mention it, then my audience tries, run into error, and that's bad.

this isn't a complaint though. I know that ergoemacs-mode has been use by far more people who otherwise may not, especially more serious emacs users.

maybe the elpa version will make this aspect better.

 Xah

Xah Lee

unread,
Jul 1, 2014, 12:19:00 PM7/1/14
to ErgoEmacs
that's excellent. Recently been thinking of a xah theme. In the past month, i've been designing a key sequence set for the whole emacs C-x keys. It's mostly done. (in my emacs init and been using it for a month) Haven't written about it though.

Matthew Fidler

unread,
Jul 2, 2014, 12:05:39 AM7/2/14
to ergo...@googlegroups.com

Modal ergoemacs-mode can support any type of modal layout, but I think you would have to modify the modal keymap with layout based exceptions with a hook.

Reply all
Reply to author
Forward
0 new messages