问题
I want to edit find_under_expand
(ctrl+d
) to consider hyphenated words, as single words. So when I try to replace all instance of var a
, it shouldn't match substrings of "a" in words like a-b
, which it currently does.
I'm assuming find_under_expand
wraps your current selection in regex boundaries like this: \ba\b
I need it to wrap in something like this: \b(?<!-)a(?!-)\b
Is the find_under_expand
command's source available to edit? Or do I have to rewrite the whole thing? I'm not sure where to begin.
回答1:
Sublime's commands are implemented in one of several ways: as macros, as plugins, and internally as part of the compiled program (probably as C++). The default macros and plugins can be found in the Packages/Default
directory in ST2 (where Packages
is the directory opened when selecting Preferences -> Browse Packages...
), or zipped in the Installed Packages/Default.sublime-package
file in ST3, extractable using @skuroda's excellent PackageResourceViewer plugin, available via Package Control. Macros have .sublime-macro
extensions, while plugins are written in Python and have .py
extensions.
I searched all through the Defaults
package in ST3 (things are generally the same as in ST2), and was unable to find a macro or .py
file that included the find_under_expand
command, or FindUnderExpand
, which is the convention when naming command classes in plugins. Therefore, I strongly suspect that this command is internal to Sublime, probably written in C++ and linked into the executable or in a .dll|.dylib|.so
library.
So, it doesn't look like there's an existing file that you could easily modify to adjust for your negative lookahead/lookbehind patterns (I assume that's what those are, my regex is a bit rusty...). Instead, you'll have to implement your own plugin from scratch that reads the "word_separators"
value in your settings file, which the current implementation of find_under_expand
doesn't seem to be doing, judging from your previous question and my own testing. Theoretically, this shouldn't be too terribly difficult - you can just open up a quick panel where the user enters the pattern/regex to be searched for, and you can just iterate through the current view looking for matches and highlighting/selecting them.
Good luck!
来源:https://stackoverflow.com/questions/23999800/how-to-edit-built-in-command-behavior