========== FileHeader ========== FileHeader is a powerful file templating plugin for SublimeText 2 and SublimeText 3. It makes it easier to create new file with initial contents. It also can add new header to an existed file or directory. Features ========= - Add new file with initial contents. - Auto detect **New File** action from SulimeText or other plugin. - Add header to an existed file or directory. - Batch add header to files in the specified directory. - Auto update file last modified time and last modified by. - Auto detect file type. - Powerful template with Jinja2_. - Custom templates supported. - Rich languages supported. - Support both Sublime Text 2 and Sublime Text 3. Installation ============ Package Control --------------- Install `Package Control`_. Then **Package Control: Install Package**, look for **FileHeader** and install it. .. _Package Control: https://sublime.wbond.net/ Source Installation -------------------- Go to the "Packages" directory **(Preferences / Browse Packages)**. Then clone this repository:: git clone git@github.com:shiyanhui/FileHeader.git Or download zip from Github, and put it in "Packages" directory **(Preferences / Browse Packages)**. Usage ===== Create a new file ----------------- - Sidebar Menu .. image:: https://raw.github.com/shiyanhui/FileHeader/master/doc/img/new-file.gif - Shortcuts The default shortcuts is **super+alt+n** on OS X, **ctrl+alt+n** on Windows and Linux. - Context Menu Similar to **Sidebar Menu**. Add header to an existed file ----------------------------- - Sidebar Menu .. image:: https://raw.github.com/shiyanhui/FileHeader/master/doc/img/add-header.gif - Shortcuts The default shortcuts is **super+alt+a** on OS X, **ctrl+alt+a** on Windows and Linux. - Context Menu Similar to **Sidebar Menu**. Add header to files in the specified directory ---------------------------------------------- - Sidebar Menu .. image:: https://raw.github.com/shiyanhui/FileHeader/master/doc/img/add-header-dir.gif A very important feature of FileHeader is that it can automatically update **last_modified_time** and **last_modified_by** (see options below). Just look this picture, take care of the **@Last modified time:** before save and after save: .. image:: https://raw.github.com/shiyanhui/FileHeader/master/doc/img/update.gif Settings ======== There are two kinds of arguments: **options** and kinds of languages variables settings. **options** is the functional setting, **Default** is the default language variables settings. Language variables setting will cover that in **Default**. Open **Preferences => Package Settings => File Header => Settings - Default** for more details. Template ======== FileHeader use Jinja2_ template, find out how to use it `here `_. The template is made up of **header** and **body**. You also can write you own templates. Take the Python template header **Python.tmpl** for example. .. code-block:: ++ # -*- coding: utf-8 -*- # @Author: {{author}} # @Date: {{create_time}} # @Last modified by: {{last_modified_by}} # @Last Modified time: {{last_modified_time}} **{{ }}** is variable, you can set it in setting files. **create_time** will be set when you create a new file using FileHeader, **last_modified_time** and **last_modified_by** will be update every time you save your file. You can define your functions and classes or other contents in your **body** file. Also take Python template body for example. .. code-block:: python class MyClass(object): pass if __name__ == '__main__': pass FAQ === - **How to customize my headers?** Set **custom_template_header_path** to your path of customized header in user-settings, for example, **~/header/** NOTE: **DO NOT** modify directly that in **Packages/FileHeader** - **What if FileHeader conflicts with other file template plugin?** For example, **FileHeader** and **Javatar** conflicts in files with extension **.java**. The solution is, open any file with extension **.java** in sublime text, and open **Preferences ==> Settings - More ==> Syntax Specific - User**, then add **"enable_add_template_to_empty_file": false**. - **What if key-map of FileHeader conflicts with others?** Just change that of **FileHeader** or others. Other Editors ============= - `FileHeader for Atom `_ by `guiguan `_ If you have any questions, please let me know. 🙂 .. _Jinja2: http://jinja.pocoo.org/docs/