====== How to write new plugins ====== Writing a new plugin for lcd4linux is quite easy, if you follow these steps: * **Get the SVN (Subversion) version**: This is **very** important, because it makes it much easier for us to commit your changes into the official code. If you need help with SVN, look at the SVN section at the [[:Download|Download]] page. * There's no need to keep two seperate directories (one with the original, one with your modifications): Subversion does this job for you. * **Always** do a //svn up// before editing, to ensure you're working on current code. * use **plugin_sample.c** as a template, but **do not** simply copy it, but let subversion do the job: svn cp plugin_sample.c plugin_.c * edit //plugin_.c// * add a short **description** what this plugin is for * add your **copyright notice** (important: your name and email) * **Please** do not modify the GPL part! (Yes, you have to put your code under GPL, otherwise I'll refuse your patch) * do some **documentation** (I know that //real programmers write programs, not documentation//, but...) * use one or more of the example functions as templates for your own functions * register your new functions in the //init()// function, delete the sample ones * edit //plugin.c//, add prototypes and the call to your //plugin_init_*// and //plugin_exit_*// function (just search for //sample//, copy&paste the corresponding areas, but try to keep it in alphabetical order) * edit //Makefile.am// and add your //plugin_*.c// to EXTRA_lcd4linux_SOURCES (again, copy&paste the //sample// areas, take care for alphabetical order) * edit //plugins.m4// and copy&paste all //sample// areas (alphabetical order, please) * run //./bootstrap//, //./configure// and //make// * test with //interactive mode// (lcd4linux -i) * run //./indent.sh// to apply coding style (this does source code formatting) * send us a patch: * run //svn diff >your_patch.diff// and send us the file * run //svn commit -m ""// if you have SVN developer access and '''you know what you're doing''' * **add documentation to the wiki!!!** It's easy, believe me! ----