Code Monkey home page Code Monkey logo

findkeyconflicts's Introduction

FindKeyConflicts

Assist in finding key conflicts between various plugins. This plugin will report back shortcut keys that are mapped to more than one package. This does not guarantee that the listed plugins are necessarily in conflict, as details, such as context, are ignored. This is simply a tool to help assist what plugins may be conflicting.

Installation

Manual

Clone or copy this repository into the packages directory. By default, they are located at:

  • OS X: ~/Library/Application Support/Sublime Text 2/Packages/
  • Windows: %APPDATA%/Roaming/Sublime Text 2/Packages/
  • Linux: ~/.config/sublime-text-2/Packages/

Package Control

Installation through package control is recommended. It will handle updating your packages as they become available. To install, do the following.

  • In the Command Palette, enter Package Control: Install Package
  • Search for FindKeyConflicts

Usage

This plugin can be run through specifying commands on the command palette. The commands are listed in alphabetical order, beginning with modifiers (alt, cntl, shift, super), followed by keys. The commands are as follows:

FindKeyConflicts: All Key Maps to Quick Panel:

Displays all key mappings in a quick panel. Selecting an entry will open a buffer with additional details about the key binding.

FindKeyConflicts: All Key Maps to Buffer:

Displays all key mappings in a buffer.

FindKeyConflicts: (Direct) Conflicts to Quick Panel:

This command finds all direct key conflicts, and displays them on the quick panel. The last package listed under the command is the source for the command being run, if it is not limited by context. Selecting a particular entry will open a buffer with details about that key binding.

FindKeyConflicts: (Direct) Conflicts to Buffer:

Display key direct conflicts in a view. Using this will give a better idea of how commands conflict, as the context for the commands will be included in the output. The last package listed for a particular binding is the command that is used, if it is not limited by context.

FindKeyConflicts: Overlap Conflicts:

Displays key bindings that overlap with mutli part key bindings in a buffer. For example, if ["ctrl+t"] exists as one binding and ["ctrl+t", "t"], exists as another binding, this will be displayed.

FindKeyConflicts: All Conflicts:

Displays all conflicts in a buffer. This option will include both direct and overlapping conflicts.

FindKeyConflicts: Single Package Conflicts:

Displays conflicts that involve the selected package.

FindKeyConflicts: Multiple Package Conflicts:

Displays conflicts that involve the selected packages. Select (Done) when you are done selecting packages. You may use (View Selected) and (View Packages) to view the selected packages and the package list respsectively. Also, you may remove packages from the selected list by pressing enter when viewing the selected packages list.

FindKeyConflicts: Command Search:

Display a list of the packages containing keymap files. After selecting a package, a list of commands will be displayed in the quick panel. Selecting a command from the subsequent list will run the command.

Settings

ignored_packages:

An array containing packages to ignore. Note that the ignored_packages in the Preferences are automatically added to this list.

ignore_single_key:

Boolean value specifying if single key bindings should be ignored. False by default.

ignore_patterns:

Array containing key patterns to ignore. These should follow the same guidelines as specifying key bindings.

display_internal_conflicts:

Boolean value used to determine if internal command conflicts to a package should be displayed.

Notes

Thanks to bizoo for sharing their work with me. Thanks to getify for the json minifier. Thanks to facelessuser for the strip dangling commas work.

findkeyconflicts's People

Contributors

marcospb19 avatar oregu avatar pradyunsg avatar skuroda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

findkeyconflicts's Issues

Idea: add basic analysis for the context of conflicting keymaps

This is one of my overlap conflict:

 [ctrl+shift+r]
   delphi_switch_head_body                  Delphi                [{"operator": "equal", "operand": "source.pascal", "key": "selector"}]
   (ctrl+shift+r,ctrl+shift+c)
     python_regenerate_cache                User                  [{"operator": "equal", "operand": "source.python", "key": "selector"}]
   (ctrl+shift+r,ctrl+shift+d)
     goto_python_definition                 User                  [{"operator": "equal", "operand": "source.python", "key": "selector"}]

Actually, it's not a conflict because this keymap is used for different selector.
Maybe you can analyze the context of the keymap to remove these keymaps from conflicts.

Another candidate could be this:

 [ctrl+v]
   paste                                    Default               
   fuzzy_clipboard                          FuzzyFileNav          [{"key": "fuzzy_paste"}]

or this:

 [home]
   move_to                                  Default               
   repl_home                                SublimeREPL           [{"operator": "equal", "operand": true, "key": "setting.repl"}]

Usually, I think that this kind of test are used to enabled a keymap only in a very limited scope, so it's not really a conflict, but there's no way to know it for sure.
Maybe putting these conflicts in another section of the report is a good idea.

Thanks again for your work.

FKC won't work on my OS X install, .DS_Store error and inability to read my personal keybindings. Errors from console log(s) included.

First, thanks for this package, it looks extremely useful but unfortunately I am running into all kinds of problems getting results. Console shows it running into a couple of errors with .DS_Store and if I am able to delete .DS_Store in time before a new one is created then FKC tells me my custom /Default (OSX).sublime-keymap can't be read.

I can't get any output to really work but all these errors were received when I try to run "Overlap Conflicts" … other commands give similar/same errors with no output so it is not the overlap command.

Looking at the console revealed: OSError: [Errno 20] Not a directory: '/Users/jeremy/Library/Application Support/Sublime Text 2/Packages/.DS_Store'

Once I deleted the .DS_Store file from the Packages directory, FKC would list conflicts amongst packages but not read my /Packages/User/Default (OSX).sublime-keymap file. I only receive the pop-up reading to the effect of "could not parse a keymap file" once I have deleted the .DS_Store file in the Packages directory… otherwise it doesn't even get that far.

Here are the error logs. This is for the .DS_Store file error:
startup, version: 2217 osx x64 channel: stable
executable: /Applications/Sublime Text 2.app/Contents/MacOS/Sublime Text 2
working dir: /
packages path: /Users/jeremy/Library/Application Support/Sublime Text 2/Packages
settings path: /Users/jeremy/Library/Application Support/Sublime Text 2/Settings
PackageSetup not required
catalogue loaded
found 22 files for base name Default.sublime-keymap
found 2 files for base name Default.sublime-mousemap
found 17 files for base name Main.sublime-menu
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/AdvancedNewFile/AdvancedNewFile.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Alignment/Alignment.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/CSS/css_completions.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Color Highlighter/ColorHighlighter.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Color Highlighter/colors.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/comment.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/copy_path.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/delete_word.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/detect_indentation.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/duplicate_line.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/echo.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/exec.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/fold.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/font.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/goto_line.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/indentation.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/kill_ring.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/mark.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/new_templates.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/open_file_settings.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/open_in_browser.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/paragraph.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/save_on_focus_lost.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/scroll.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/set_unsaved_view_name.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/side_bar.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/sort.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/swap_line.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/switch_file.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/transform.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/transpose.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Default/trim_trailing_white_space.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/DetectSyntax/DetectSyntax.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/DetectSyntax/is_rails_file.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Diff/diff.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/ExportHtml/ExportBbcode.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/ExportHtml/ExportHtml.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/ExportHtml/HtmlAnnotations.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/FavoriteFiles/favorite_files.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/FavoriteFiles/favorites.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/FindKeyConflicts/find_key_conflicts.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/FindKeyConflicts/minify_json.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Goto Folder/GotoFolder.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/GotoRecent/goto_recent.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/HTML/encode_html_entities.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/HTML/html_completions.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Highlight/SublimeHighlight.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/HighlightWords/HighlightWords.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Markdown Preview/MarkdownPreview.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Markdown Preview/markdown2.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/footnotes.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/gather_missing_links.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/insert_references.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/jumpToMarker.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/list_markdown_references.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/paste_as_link.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/paste_as_reference.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/underlined_headers.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Marked.app Menu/MarkedCommand.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/New from Selection/new_from_selection.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Package Control/Package Control.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Pikachoose/fuzzy_file_nav.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/PlainTasks/PlainTasks.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/PlainTasksOF/PlainTasks.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/ReadmePlease/ReadmePlease.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Shebang/Commands.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Shell Turtlestein/shell_turtlestein.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Shell Turtlestein/sublime_readline.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/SideBarEnhancements/SideBar.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/SideBarEnhancements/StatusBarFileSize.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/SideBarEnhancements/StatusBarModifiedTime.py
Reloading plugin /Users/jeremy/Library/Application Support/Sublime Text 2/Packages/Whitespaces/Whitespaces.py
plugin init time: 0.552484
loading bindings
loading pointer bindings
found 2 files for base name Soda Light.sublime-theme
theme loaded
app ready
pre session restore time: 1.09412
using gamma: 2 (err: 6.9282)
wrote startup cache, added files: 3 orphaned files: 0 total files: 239 cache hits: 236
startup time: 1.31616 (package setup was not run)
found 2 files for base name Soda Light.sublime-theme
theme loaded
loaded 843 snippets
Package Control: Skipping automatic upgrade, last run at 2012-11-12 11:42:58, next run at 2012-11-12 12:42:58 or after
Exception in thread Thread-3:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "./find_key_conflicts.py", line 262, in run
File "./find_key_conflicts.py", line 270, in check_for_conflicts
OSError: [Errno 2] No such file or directory: '/Users/jeremy/Library/Application Support/Sublime Text 2/Packages/.DS_Store'

Error about personal keybindings when .DS_Store is deleted
If I am quick enough to delete the .DS_Store file before another is created I get results from package conflicts but not my keybindings and receive the afformentioned pop-up and this error:

error: Could not parse a keymap file. See console for details
FindKeyConflicts[Warning]: An error occured while parsing 'User/Default (OSX).sublime-keymap'

Again, thanks very much for sharing this plugin with us and for troubleshooting my errors. Much appreciated.

Partly Items don't appear

Dear Skuroda

I use Windows 7 64bit and have installed Sublime Text3 Dev latest version.
It seems that Partly I can't get proper result.
What I suppose that should appear doesn't.
I set every plugin custom 'Default (Windows).sublime-keymap" in plagin name folder in Packages Folder.
And the result in console when I excuted "All Key Maps to Buffer" is bellow.

Exception in thread Thread-34:
Traceback (most recent call last):
File "./threading.py", line 901, in _bootstrap_inner
File "find_key_conflicts in C:\Users\KIYO\AppData\Roaming\Sublime Text 3\Installed Packages\FindKeyConflicts.sublime-package", line 526, in run
File "find_key_conflicts in C:\Users\KIYO\AppData\Roaming\Sublime Text 3\Installed Packages\FindKeyConflicts.sublime-package", line 453, in manage_package
File "find_key_conflicts in C:\Users\KIYO\AppData\Roaming\Sublime Text 3\Installed Packages\FindKeyConflicts.sublime-package", line 531, in handle_key_map
TypeError: 'NoneType' object is not iterable

It does not work with Sublime Text2

Sublime Text2 (Version 2.0.2, Build 2221) In, python version for 2.6.9, logger.hasHandlers can not be used. For this reason, it is no longer able to use FindKeyConflicts.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.