Skip to content

Commit

Permalink
Add keymap migration UI for idris-hackers#204
Browse files Browse the repository at this point in the history
  • Loading branch information
ulidtko committed May 1, 2018
1 parent bee20ee commit f2943b7
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 2 deletions.
30 changes: 28 additions & 2 deletions keymaps/language-idris.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,20 @@
"ctrl-i s": "language-idris:proof-search",
"ctrl-i t": "language-idris:type-of",
"ctrl-i w": "language-idris:make-with",
"ctrl-i enter": "language-idris:open-repl"
"ctrl-i enter": "language-idris:open-repl",

"ctrl-alt-a": "language-idris:legacy-keymap-notice",
"ctrl-alt-b": "language-idris:legacy-keymap-notice",
"ctrl-alt-c": "language-idris:legacy-keymap-notice",
"ctrl-alt-d": "language-idris:legacy-keymap-notice",
"ctrl-alt-l": "language-idris:legacy-keymap-notice",
"ctrl-alt-m": "language-idris:legacy-keymap-notice",
"ctrl-alt-p": "language-idris:legacy-keymap-notice",
"ctrl-alt-r": "language-idris:legacy-keymap-notice",
"ctrl-alt-s": "language-idris:legacy-keymap-notice",
"ctrl-alt-t": "language-idris:legacy-keymap-notice",
"ctrl-alt-w": "language-idris:legacy-keymap-notice",
"ctrl-alt-enter": "language-idris:legacy-keymap-notice"
},

".platform-darwin atom-text-editor[data-grammar~=\"idris\"]": {
Expand All @@ -30,6 +43,19 @@
"cmd-i s": "language-idris:proof-search",
"cmd-i t": "language-idris:type-of",
"cmd-i w": "language-idris:make-with",
"cmd-i enter": "language-idris:open-repl"
"cmd-i enter": "language-idris:open-repl",

"cmd-alt-a": "language-idris:legacy-keymap-notice",
"cmd-alt-b": "language-idris:legacy-keymap-notice",
"cmd-alt-c": "language-idris:legacy-keymap-notice",
"cmd-alt-d": "language-idris:legacy-keymap-notice",
"cmd-alt-l": "language-idris:legacy-keymap-notice",
"cmd-alt-m": "language-idris:legacy-keymap-notice",
"cmd-alt-p": "language-idris:legacy-keymap-notice",
"cmd-alt-r": "language-idris:legacy-keymap-notice",
"cmd-alt-s": "language-idris:legacy-keymap-notice",
"cmd-alt-t": "language-idris:legacy-keymap-notice",
"cmd-alt-w": "language-idris:legacy-keymap-notice",
"cmd-alt-enter": "language-idris:legacy-keymap-notice"
}
}
2 changes: 2 additions & 0 deletions lib/idris-controller.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Ipkg = require './utils/ipkg'
Symbol = require './utils/symbol'
editorHelper = require './utils/editor'
highlighter = require './utils/highlighter'
migrations = require './migrations'

class IdrisController
errorMarkers: []
Expand All @@ -29,6 +30,7 @@ class IdrisController
'language-idris:apropos': @runCommand @apropos
'language-idris:add-proof-clause': @runCommand @doAddProofClause
'language-idris:browse-namespace': @runCommand @doBrowseNamespace
'language-idris:legacy-keymap-notice': migrations.showKeymapDeprecationNotice

isIdrisFile: (uri) ->
uri?.match? /\.idr$/
Expand Down
83 changes: 83 additions & 0 deletions lib/migrations.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#
# Throw out this module as soon as it becomes a maintenance burden, or
# sufficient stabilization time has passed for the new keymap.
#

CSON = require 'cson-parser'

formatLegacyKeymap = () ->
legacyKeymap =
"atom-text-editor[data-grammar~=\"idris\"]":
"ctrl-alt-a": "language-idris:add-clause"
"ctrl-alt-b": "language-idris:browse-namespace"
"ctrl-alt-c": "language-idris:case-split"
"ctrl-alt-d": "language-idris:docs-for"
"ctrl-alt-l": "language-idris:make-lemma"
"ctrl-alt-m": "language-idris:make-case"
"ctrl-alt-p": "language-idris:add-proof-clause"
"ctrl-alt-r": "language-idris:typecheck"
"ctrl-alt-s": "language-idris:proof-search"
"ctrl-alt-t": "language-idris:type-of"
"ctrl-alt-w": "language-idris:make-with"
"ctrl-alt-enter": "language-idris:open-repl"
".platform-darwin atom-text-editor[data-grammar~=\"idris\"]":
"ctrl-cmd-a": "language-idris:add-clause"
"ctrl-cmd-b": "language-idris:browse-namespace"
"ctrl-cmd-c": "language-idris:case-split"
"ctrl-cmd-d": "language-idris:docs-for"
"ctrl-cmd-l": "language-idris:make-lemma"
"ctrl-cmd-m": "language-idris:make-case"
"ctrl-cmd-p": "language-idris:add-proof-clause"
"ctrl-cmd-r": "language-idris:typecheck"
"ctrl-cmd-s": "language-idris:proof-search"
"ctrl-cmd-t": "language-idris:type-of"
"ctrl-cmd-w": "language-idris:make-with"
"ctrl-cmd-enter": "language-idris:open-repl"

keymapExtension = atom.keymaps.getUserKeymapPath().split('.').pop()
if keymapExtension == 'cson'
return CSON.stringify(legacyKeymap, null, 2)
if keymapExtension == 'json'
return JSON.stringify(legacyKeymap, null, 2)


module.exports =
showKeymapDeprecationNotice: ->
detailMd = """
Please use <kbd>ctrl-i</kbd><kbd>r</kbd>,
<kbd>ctrl-i</kbd><kbd>t</kbd>,
<kbd>ctrl-i</kbd><kbd>c</kbd> shortcuts
instead of <kbd>ctrl-alt-r</kbd>,
<kbd>ctrl-alt-t</kbd>,
<kbd>ctrl-alt-c</kbd>... etc.
As usual, you can learn Idris shortcuts in Command Palette:
<kbd>ctrl-shift-p</kbd> or <kbd>cmd-shift-p</kbd>, then type `Idris`.
---
To get back the old `ctrl-alt` bindings *(not recommended)*,
click the "Edit keymap" button below, and paste.
"""

popup = atom.notifications.addInfo("Default Idris keymap has been changed.",
dismissable: true
description: detailMd
buttons: [
{ text: "Dismiss", onDidClick: () -> popup.dismiss() }
{
text: "Edit keymap"
className: 'btn btn-warning icon icon-clippy copy-icon'
onDidClick: () ->
content = formatLegacyKeymap()
console.log("Copying ", content)
atom.clipboard.write(content)
atom.commands.dispatch(atom.views.getView(atom.workspace),
'application:open-your-keymap')
popup.dismiss()
atom.notifications.addSuccess("Copied to clipboard",
description: "The old `ctrl-alt` Idris keymap can be pasted now."
)
}
]
)
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
"dependencies": {
"atom-message-panel": "^1.3.0",
"bennu": "17.3.0",
"cson-parser": "^1.0.9",
"nu-stream": "3.3.1",
"rx-lite": "4.0.0",
"@cycle/core": "3.1.0",
Expand Down

0 comments on commit f2943b7

Please sign in to comment.