From e9268b9180222b7fbb65732abef4422861435df9 Mon Sep 17 00:00:00 2001 From: "Robert E. Griffith" <36312888+bobjunga@users.noreply.github.com> Date: Sat, 14 Mar 2020 19:58:03 -0400 Subject: [PATCH 1/6] add 'text-subtle' and 'icon-circle-slash' to kinbinding rows that are not currently in atom.keymaps.keybindings --- lib/package-keymap-view.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/package-keymap-view.js b/lib/package-keymap-view.js index 47236b0f..a9082b48 100644 --- a/lib/package-keymap-view.js +++ b/lib/package-keymap-view.js @@ -132,6 +132,7 @@ export default class PackageKeymapView { continue } + const keyBindingRow = document.createElement('tr') keyBindingRow.dataset.selector = selector keyBindingRow.dataset.keystrokes = keystrokes @@ -161,6 +162,26 @@ export default class PackageKeymapView { sourceTd.textContent = KeybindingsPanel.determineSource(source) keyBindingRow.appendChild(sourceTd) + // if the keybinding from the source file is not installed, mark it as inactive + var sourceRegex = new RegExp(source); + var isBindingInstalled = atom.keymaps.keyBindings.find((kb)=>{ + let matched = kb.selector == selector + && sourceRegex.test(kb.source) + && kb.command == command + && (kb.keystrokes.length < 1 || kb.keystrokes[0] == keystrokes[0]) + && (kb.keystrokes.length < 2 || kb.keystrokes[1] == keystrokes[1]); + return matched; + }); + + if (!isBindingInstalled) { + keyBindingRow.classList.add('text-subtle'); + keystrokesTd.classList.add('icon', 'icon-circle-slash'); + this.disposables.add(atom.tooltips.add(keystrokesTd, { + title: "Disabled. This binding it not in the list of active bindings" + })); + } + + this.refs.keybindingItems.appendChild(keyBindingRow) } } From 4f6036d7bf8ab55938fe37656f85111d4e58dd82 Mon Sep 17 00:00:00 2001 From: "Robert E. Griffith" <36312888+bobjunga@users.noreply.github.com> Date: Sat, 14 Mar 2020 23:35:15 -0400 Subject: [PATCH 2/6] add spec. corrected error in match condition --- lib/package-keymap-view.js | 4 +-- spec/installed-package-view-spec.coffee | 38 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/lib/package-keymap-view.js b/lib/package-keymap-view.js index a9082b48..14fd8665 100644 --- a/lib/package-keymap-view.js +++ b/lib/package-keymap-view.js @@ -132,7 +132,6 @@ export default class PackageKeymapView { continue } - const keyBindingRow = document.createElement('tr') keyBindingRow.dataset.selector = selector keyBindingRow.dataset.keystrokes = keystrokes @@ -168,8 +167,7 @@ export default class PackageKeymapView { let matched = kb.selector == selector && sourceRegex.test(kb.source) && kb.command == command - && (kb.keystrokes.length < 1 || kb.keystrokes[0] == keystrokes[0]) - && (kb.keystrokes.length < 2 || kb.keystrokes[1] == keystrokes[1]); + && kb.keystrokes == keystrokes; return matched; }); diff --git a/spec/installed-package-view-spec.coffee b/spec/installed-package-view-spec.coffee index 1cc93e26..824f6ee9 100644 --- a/spec/installed-package-view-spec.coffee +++ b/spec/installed-package-view-spec.coffee @@ -270,6 +270,44 @@ describe "InstalledPackageView", -> } """ + describe "when a package keybinding is installed", -> + it "does not decorate its row with and first column with text-subtle and icon.inoc-circle-slash classes", -> + waitsForPromise -> + atom.packages.activatePackage(path.join(__dirname, 'fixtures', 'language-test')) + + runs -> + pack = atom.packages.getActivePackage('language-test') + card = new PackageKeymapView(pack) + jasmine.attachToDOM(card.element) + + normalKeyRows = card.element.querySelectorAll('.package-keymap-table tr.text-subtle') + expect(normalKeyRows.length).toBe 0 + + disabledKeysByIcon = card.element.querySelectorAll('.package-keymap-table td.icon.icon-circle-slash') + expect(disabledKeysByIcon.length).toBe 0 + + describe "when a package keybinding is not installed", -> + it "decorates its row with and first column with text-subtle and icon.inoc-circle-slash classes", -> + it "decorates rows with a disabled keybinding", -> + waitsForPromise -> + atom.packages.activatePackage(path.join(__dirname, 'fixtures', 'language-test')) + + runs -> + atom.keymaps.keyBindings = atom.keymaps.keyBindings.filter (keyBinding) -> + return !(/language-test/.test(keyBinding.source) || keyBinding.selector == 'test') + + pack = atom.packages.getActivePackage('language-test') + card = new PackageKeymapView(pack) + jasmine.attachToDOM(card.element) + + disabledKeyRows = card.element.querySelectorAll('.package-keymap-table tr.text-subtle') + expect(disabledKeyRows.length).toBe 1 + + disabledKeysByIcon = card.element.querySelectorAll('.package-keymap-table td.icon.icon-circle-slash') + expect(disabledKeysByIcon.length).toBe 1 + + + describe "when the package is active", -> it "displays the correct enablement state", -> packageCard = null From 81ea90750a876a43a00ef2019cb60547e40b4b53 Mon Sep 17 00:00:00 2001 From: "Robert E. Griffith" <36312888+bobjunga@users.noreply.github.com> Date: Sun, 15 Mar 2020 13:21:23 -0400 Subject: [PATCH 3/6] fix coffee script lint error --- spec/installed-package-view-spec.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/installed-package-view-spec.coffee b/spec/installed-package-view-spec.coffee index 824f6ee9..53a7d233 100644 --- a/spec/installed-package-view-spec.coffee +++ b/spec/installed-package-view-spec.coffee @@ -294,7 +294,7 @@ describe "InstalledPackageView", -> runs -> atom.keymaps.keyBindings = atom.keymaps.keyBindings.filter (keyBinding) -> - return !(/language-test/.test(keyBinding.source) || keyBinding.selector == 'test') + return not (/language-test/.test(keyBinding.source) or keyBinding.selector is 'test') pack = atom.packages.getActivePackage('language-test') card = new PackageKeymapView(pack) From 3d1237c918b34ecf572e0d1a0407f86c0c507702 Mon Sep 17 00:00:00 2001 From: "Robert E. Griffith" <36312888+bobjunga@users.noreply.github.com> Date: Sun, 15 Mar 2020 13:42:07 -0400 Subject: [PATCH 4/6] fix more lint errors --- lib/package-keymap-view.js | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/package-keymap-view.js b/lib/package-keymap-view.js index 14fd8665..eafe686f 100644 --- a/lib/package-keymap-view.js +++ b/lib/package-keymap-view.js @@ -162,24 +162,23 @@ export default class PackageKeymapView { keyBindingRow.appendChild(sourceTd) // if the keybinding from the source file is not installed, mark it as inactive - var sourceRegex = new RegExp(source); - var isBindingInstalled = atom.keymaps.keyBindings.find((kb)=>{ - let matched = kb.selector == selector - && sourceRegex.test(kb.source) - && kb.command == command - && kb.keystrokes == keystrokes; - return matched; - }); + var sourceRegex = new RegExp(source) + var isBindingInstalled = atom.keymaps.keyBindings.find((kb) => { + let matched = kb.selector === selector && + sourceRegex.test(kb.source) && + kb.command === command && + kb.keystrokes === keystrokes + return matched + }); if (!isBindingInstalled) { - keyBindingRow.classList.add('text-subtle'); - keystrokesTd.classList.add('icon', 'icon-circle-slash'); - this.disposables.add(atom.tooltips.add(keystrokesTd, { - title: "Disabled. This binding it not in the list of active bindings" - })); + keyBindingRow.classList.add('text-subtle') + keystrokesTd.classList.add('icon', 'icon-circle-slash') + this.disposables.add(atom.tooltips.add(keystrokesTd, { + title: "Disabled. This binding it not in the list of active bindings" + })) } - this.refs.keybindingItems.appendChild(keyBindingRow) } } From c21b9c56abbdf77bbd42cfdec8bdf5d649067620 Mon Sep 17 00:00:00 2001 From: "Robert E. Griffith" <36312888+bobjunga@users.noreply.github.com> Date: Sun, 15 Mar 2020 13:47:09 -0400 Subject: [PATCH 5/6] emptying more lint from my pockets. --- lib/package-keymap-view.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/package-keymap-view.js b/lib/package-keymap-view.js index eafe686f..1d4884df 100644 --- a/lib/package-keymap-view.js +++ b/lib/package-keymap-view.js @@ -169,13 +169,13 @@ export default class PackageKeymapView { kb.command === command && kb.keystrokes === keystrokes return matched - }); + }) if (!isBindingInstalled) { keyBindingRow.classList.add('text-subtle') keystrokesTd.classList.add('icon', 'icon-circle-slash') this.disposables.add(atom.tooltips.add(keystrokesTd, { - title: "Disabled. This binding it not in the list of active bindings" + title: "Disabled. This binding it not in the list of active bindings" })) } From ce8cc64601b7964e28076453929d37b0b035bcdc Mon Sep 17 00:00:00 2001 From: "Robert E. Griffith" <36312888+bobjunga@users.noreply.github.com> Date: Sun, 15 Mar 2020 14:09:41 -0400 Subject: [PATCH 6/6] more lint (I found the local lint so this should be it) --- lib/package-keymap-view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/package-keymap-view.js b/lib/package-keymap-view.js index 1d4884df..1d03fe97 100644 --- a/lib/package-keymap-view.js +++ b/lib/package-keymap-view.js @@ -175,7 +175,7 @@ export default class PackageKeymapView { keyBindingRow.classList.add('text-subtle') keystrokesTd.classList.add('icon', 'icon-circle-slash') this.disposables.add(atom.tooltips.add(keystrokesTd, { - title: "Disabled. This binding it not in the list of active bindings" + title: 'Disabled. This binding it not in the list of active bindings' })) }