/SublimeClang

C/C++/ObjC/ObjC++ autocompletions and code navigation

Primary LanguageC

Fork of quarnster/SublimeClang

Description

Clang plugin for Sublime Text 2 / Sublime Text 3 providing auto complete suggestions for C/C++/ObjC/ObjC++. It'll also optionally parse the code as it's typed and show errors and warnings.

Installation

TODO (Update)

Usage

After installation, suggestions from clang should be provided when triggering the autocomplete operation in Sublime Text 2/ Sublime Text 3. By default it'll inhibit the Sublime Text 2/ Sublime Text 3 built in word completion, but the inhibition can be disabled by setting the configuration option "inhibit_sublime_completions" to false.

If you modify a file that clang can compile and if there are any errors or warnings in that file, you should see the output in the output panel, as well as having the warnings and errors marked in the source file.

There's also the following key-bindings (tweak Default.sublime-keymaps to change):

alt+d,alt+dGo to the parent reference of whatever is under the current cursor position
alt+d,alt+iGo to the implementation
alt+d,alt+bGo back to where you were before hitting alt+d,alt+d or alt+d,alt+i
alt+d,alt+cClear the cache. Will force all files to be reparsed when needed
alt+d,alt+wManually warm up the cache
alt+d,alt+rManually reparse the current file
alt+d,alt+tToggle whether Clang completion is enabled or not. Useful if the complete operation is slow and you only want to use it selectively
alt+d,alt+pToggle the Clang output panel
alt+d,alt+eGo to next error or warning in the file
alt+shift+d,alt+shift+eGo to the previous error or warning in the file
alt+d,alt+sRun the Clang static analyzer on the current file
alt+d,alt+oRun the Clang static analyzer on the current project
alt+d,alt+fToggle whether fast (but possibly inaccurate) completions are used or not

Global Configure / Project Configure

  1. See Preferences -> Package Settings -> SublimeClang -> Default to see all options. You could set one or more options in User Setting file to override default values. (Global Configuration)
  2. Also could set options for one project All options in default configuration file can override in project file, just add prefix "sublimeclang_" for the option.
  3. Tips: you may want to set "sublimeclang_enable_fast_completions": false for a C++ project, otherwise completion may not work well.
  4. This is a sample project:
    {
        "folders":
        [
            {
                "path": "/home/julee/Documents/code/amb"
            }
        ],
        "settings":
        {
            "sublimeclang_enable_fast_completions": false,
            "sublimeclang_options":
            [
                "-Wall",
                "-I/usr/include/x86_64-linux-gnu/c++/5",
                "-I${project_path:include}"
            ]
        }
    }

Show your support

Donate

License

This plugin is using the zlib license

Copyright (c) 2011-2012 Fredrik Ehnbom

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

   1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.

   2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.

   3. This notice may not be removed or altered from any source
   distribution.

And in addition to this, clang itself is using the following license:

University of Illinois/NCSA
Open Source License

Copyright (c) 2003-2012 University of Illinois at Urbana-Champaign.
All rights reserved.

Developed by:

    LLVM Team

    University of Illinois at Urbana-Champaign

    http://llvm.org

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimers.

    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimers in the
      documentation and/or other materials provided with the distribution.

    * Neither the names of the LLVM Team, University of Illinois at
      Urbana-Champaign, nor the names of its contributors may be used to
      endorse or promote products derived from this Software without specific
      prior written permission.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE.