CppToolkit
Sublime Text 3+ plugin to make C++ life a little easier
Details
Installs
- Total 3K
- Win 2K
- Mac 385
- Linux 933
Dec 22 | Dec 21 | Dec 20 | Dec 19 | Dec 18 | Dec 17 | Dec 16 | Dec 15 | Dec 14 | Dec 13 | Dec 12 | Dec 11 | Dec 10 | Dec 9 | Dec 8 | Dec 7 | Dec 6 | Dec 5 | Dec 4 | Dec 3 | Dec 2 | Dec 1 | Nov 30 | Nov 29 | Nov 28 | Nov 27 | Nov 26 | Nov 25 | Nov 24 | Nov 23 | Nov 22 | Nov 21 | Nov 20 | Nov 19 | Nov 18 | Nov 17 | Nov 16 | Nov 15 | Nov 14 | Nov 13 | Nov 12 | Nov 11 | Nov 10 | Nov 9 | Nov 8 | Nov 7 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
Mac | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Linux | 0 | 1 | 0 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 0 | 0 | 0 |
Readme
- Source
- raw.githubusercontent.com
Cpp Toolkit
A collection of utilities for managing C++ code implementation.
Disclaimer: Sublime is not a fully featured C++ IDE and this plugin doesn't try to make it one. It simply tries to speed up your usual work
Features
- Build Implementation from the class definition
- Generate get/set commands for internal members
- Move implementations outside of the class definition
- (Coming soon) Build implementations for an entire class
Quick Tour
Auto Implement
Many IDEs out there make use their inherent understanding of you project through syntax and preprocessing to present perks like being able to automatically declare methods from the header within the source. This saves the developer loads of time.
Getter / Setter Functions
Getters and setters are used in a plentiful sense in modern C++. For this reason, there is also the ability to right click on members and build their respective functions.
Currently this does its best to identify the proper signature but may not always be what you're looking for. That said it should still speed up Sublime typing.
A Scenario
Let's say you have the header:
// my_file.h
namespace my_namespace
{
class MyClass : public SomeBase
{
public:
// ...
void getSomeData(float bar, MyStruct::SomeEnum val = MyStruct::Value) const override;
}
And now you want to move that to your source. Currently in Sublime you have a limited set of options. Until this plugin I would do the following:
- Move my cursor to the line and hit
Ctrl + C
to copy the whole line- If the definition was multiple lines, I would use
Ctrl + L
enough times to get it all or use my mouse
- If the definition was multiple lines, I would use
- Swap to the source with
Alt + O
- Move my cursor to where I could declare the method
- Paste in the header code via
Ctrl + V
- Highlight the line (or just have one cursor on it if one line) and
Shift + Tab
enough to set it - Fill in the ownership chain
- Die a little inside
- Go throughout the function and remove any cruft like
override;
and the= MyStrcut::Value
in the example above - Finally add the parentheses and get to freaking work
The Fix
With Cpp Toolkit
, the workflow is:
- Right click on the function name to declare
- Go to
C++ Toolkit > Declare in <source_file_name>.cpp
And bam! You'll be moved to the source file, all the right guts and ownership will be filled in, no pesky non-const classifiers or default values, and your cursor will be right where you need it to start typing the function body!
Note: At the moment, this assumes, just like the
Alt + O
shortcut, that the header and implementation are next to each other in the filesystem. In the future I may add ways to declare an implementation root or location or some such.
The Catch
Ultimately, this tool is parsing the file and doing what it can with immediate information but, as any C++ developer knows, the language has quite a few caveats so you may not get the perfect signature or ownership every time however it should still get you moving in the right direction and speed up a lot of typing.
Install
Using Package Control Sublime Package Manager
To install use these commands.
- Hit
Ctrl + Shift + P
- Type
install
and selectPackage Control: Install Package
- Type
CppToolkit
and selectCppToolkit
Or just clone this repo and place it into your Sublime user data directory under Packages.
Roadmap
There are many things to do for this plugin that I'm hoping to tick away at in my spare time
- Basic preprocess for things like
#ifdef 0 ... #endif
clauses Camel case/Snake case conversion when neededThis is already in the sweet CaseConversion plugin- Switch statement breakout (based on some kind of classifier)
- Smart inject based on other declarations in the source rather than always at the end
- Reverse implement to go from source to header under a given privilege
- Apply changes to function signatures in both header and source
Getter/Setter functions of members(done)- Have the commands work in both source and header, just using the parser to understand what commands can be used
- Hotkeys for select functions
- Implement a whole class by simply right clicking on the class name (woah)