Here are the coding guidelines for PhpWiki. !!! Code Indentation Style We follow, for the most part, the PEAR coding standards: There's code snippets for configuring Emacs and Vim as well as several other text editors at the above URL. !! Emacs Users For editing files in Emacs, set indent-tabs-mode to nil. Some people argue that it's better to use tabs and let people set their tab width, but I think we're better off using just spaces because aligned comments in the right region will not align correctly. For a detailed argument see . Also use a tab-width of eight, so that just in case tabs do creep into the source code, they have a standard width. Use php-mode as well. This is freely available on the net . Put something like this in your .emacs file: (autoload 'php-mode "php-mode" "PHP editing mode" t) (add-to-list 'auto-mode-alist '("\\.php\\d?$" . php-mode)) (add-hook 'php-mode-hook (lambda () (c-set-style "gnu") ;; This syntax table mod makes the second line in: ;; ;; function( $arg1, ;; $arg2 ); ;; ;; Line up correctly. ;; (modify-syntax-entry ?$ "'" php-mode-syntax-table) (set (make-local-variable 'tab-width) 8) (set (make-local-variable 'c-basic-offset) 4) (set (make-local-variable 'c-hanging-comment-ender-p) 'nil) (set (make-local-variable 'indent-tabs-mode) 'nil))) !!! I18N: Using gettext() String literals which end up making it into the HTML output should be wrapped with a call to ''gettext()''. This allows translations to be substituted when PhpWiki is run in non-english environments. Since xgettext (part of the "GNU gettext utilities") is used to find strings for translation, It is important that the argument of ''gettext()'' be a constant string literal, in double quotes ("). Remember that xgettext only knows about c/c++ line-continuation strings, it does not know about php's dot operator. You can now use _("foo") as an alias for gettext("foo"). OKAY: gettext("This is a message."); OKAY: _("Fazool."); OKAY: sprintf(_("Hello %s"), $name); OKAY: sprintf(_("Hello %s"), $name); BAD: _('This will be ignored by xgettext.'); BAD: _("Howdy" . ", wazoo"); BAD: _("Hello $name"); BAD: define("MES", "howdy"); gettext(MES); BAD: _($string); If you want Emacs po mode to automatically kick-in when you edit a po file, add the following to your .emacs file: (setq auto-mode-alist (cons '("\\.po[tx]?\\'\\|\\.po\\." . po-mode) auto-mode-alist)) (autoload 'po-mode "po-mode") !!! Mac OS X: Project Builder See INSTALL.MacOSX for instructions on using Project Builder with PhpWiki and SourceForge.