WordPress TextMate Bundle
For WordPress Version: 2.9
The WordPress TextMate Bundle is a TextMate bundle built with the sole purpose of reducing the amount of time spent digging around the WordPress core to look up the little things that we work with every day.
The plugin features auto-completion of WordPress functions, snippets for common sections of code, and templates for WordPress components. We even snuck in function completion for the Carrington template framework functions. We're always making improvements as we find more that we want covered by the plugin (coming with the WordPress 3.0 code base consolidation).
- Auto-completion of WordPress functions with parameter hinting.
- Parameter hinting for common functions like
[get_]bloginfo()and query vars.
- Snippets of common page and plugin parts like widget blogs, admin menus, and loops.
- Templates for some WordPress components like plugins and page templates.
- Carrington Blog function completion support
- Fully tab stopped parameter entries in function templates
- Function definition tool-tips
- Goto function command to jump to file and line number where a function is defined
- Validation of your Plugin's
README.txtfile against the WordPress online validator
- Internationalization of strings in proper context
General function completion can be invoked with a slight modification of the regular PHP function completion. We chose to use control-shift-escape as its easy to remember next to the regular PHP command (option-escape). The completed function will include parameter hits for the function as best as my simple grep of the core will allow. I'm still trying to build a better way of grabbing comprehensive function definitions.
"Common" function prefixes are duplicated in to their own commands. They all pull from the same function definition list, but offer a limited scope search. These limited scopes are available for:
get_⇥, ie: get_permalink, get_post_meta
is_⇥, ie: is_home, is_search
the_⇥, ie: the_post, the_title
wp_⇥, ie: wp_cache_add, wp_themes_dir
esc_⇥, ie: esc_attr_e
Functions that have many options or required a bit of special attention have been expanded in to their own completions:
get_bloginfo⇥ for bloginfo vars
wp_list_pages⇥ for listing pages and providing a standard starting point
metadata⇥ for quick access to the WordPress metadata apis
Each of these is invoked with a tab trigger, for example:
We can't (yet) look at the current project to pull in any custom defined functions (ie: in plugins and theme function files), but we're working on that possibility.
Partial function definitions can be brought up by selecting or setting the carat inside the function that needs to be defined and then using Command-Shift-H to bring up the tool tip.
The second line of the tool-tip lists the file and line number where the function is defined to make looking up the details of the function more convenient.
When pointed to an install of the current version of WordPress the bundle can jump to the definition of a function so that the function can be inspected.
Simply place the carat in a function name, or highlight the function, and press Command-Shift-Option-H. If needed (and it will be the first time you run the command) you'll be directed to enter the full path to your WordPress (or WordPress MU) install in the Preferences (Command-Option-,) before the function completion can work properly.
The bundle includes snippets for some common operations we encounter during WordPress development. These include:
plugin_head⇥ - Insert plugin header
adminsubmenu⇥ - Add admin menu/submenu
widget⇥ - Add widget and widget control for WordPress 2.8+
widget-old⇥ - Add widget and widget control for versions older than WordPress 2.8
nwpq⇥ New WP_Query
theme_head⇥ - Theme head
comment⇥ - Comment template
commentform⇥ - Comment form template
post⇥ - Post template
sidebar⇥ - Sidebar template
Actions & Filters
We've also included a complete list of built in WordPress Actions & Filters so that using
add_filter⇥ brings up a pre-compiled list of available actions and filters.
enqueue⇥ you'll be presented with a list of options for enqueuing scripts and styles. All the standard script options are included when using the straight enqueue option, or a parameter hinted function template can be inserted for enqueuing custom scripts.
Who can ever remember all the user role levels? Now you don't have to. With
user_can⇥ you'll be presented with all the available user role levels to choose from.
Included are functions for quickly accessing common object members for post objects, query objects and the database object. The currently available completions are:
qv1⇥ for query vars
pv⇥ for post vars
wpdb⇥ for wbdb vars and methods
wp_query⇥ for wp_query vars and methods
Strings can be wrapped in internationalization functions using the shortcut
command-shift-i. Strings are wrapped according to their proper context:
- selected text inside single or double quotes is appropriately broken out of their quotes and added to
- selected strings, including their quotes, are added to an
- selected text in HTML scope are added to a
<?php _e() ?>block
Plugin README.txt Creation & Validation
readme⇥ to drop in a template of the WordPress plugin
README.txt validation just got a little bit easier. The bundle includes functionality to validate your
README.txt file without leaving TextMate. Once validated the
README.txt can be modified in the validation window and resubmitted if necessary.
Why bother typing your name and URL each time you create a new plugin or theme? Set these Variables in TextMate (Preferences > Advanced > Shell Variables) to have them automatically replaced with the values you specify:
There's even more included that's not yet mentioned here. Just browse through the bundle menu to see everything that's available and play around with some of the function completions to see the multiple-levels of assistance that it provides.
The bundle will be kept up to date with WordPress' latest release. There will be no conscious effort made to retain backwards compatibility. As of the WordPress 2.9 release the version of this plugin that is compatible with WordPress 2.8 has been tagged in the GitHub repository.
If you find a bug, would like to see a feature implemented, or would like to contribute a feature to the project please use the Issue Tracker over at our GitHub project page. We're not opposed to anything, though you may have to put up with our ideals in how we like to implement things ;)
Bundle Maintainer: Shawn Parker
Donations help make this project possible. If you find this project helpful, please help and contribute to the cause.
Additional thanks to:
- Gordon Brander for helping get this project off the ground.
- The talented crew at Crowd Favorite for their various contributions and testing.
- Mark Jaquith for making a better Widget Template and for contributions to WordPress.
- Eric Marden for helping with various consistency issues and updates.
- And, not least of all, everyone who has contributed to WordPress.