<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ErAck</id>
	<title>Apache OpenOffice Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ErAck"/>
	<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/wiki/Special:Contributions/ErAck"/>
	<updated>2026-08-27T22:30:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Calc/ODFF_Implementation/Examine_functions&amp;diff=214743</id>
		<title>Calc/ODFF Implementation/Examine functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Calc/ODFF_Implementation/Examine_functions&amp;diff=214743"/>
		<updated>2013-02-06T18:26:25Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Examine Changes in Functions for ODFv1.2 */ implemented/integrated in LibO 4.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Examine Changes in Functions for ODFv1.2 ==&lt;br /&gt;
&lt;br /&gt;
This is a collection of the differences I found and what I know is already done or in progress. I also note, when I found problems in the draft spec itself. You are invited to add your observations. [[User:Regina|Regina]] 19:40, 10 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Statistical Functions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! ODFv1.2 !! CALC !! Action !! Progress ||&lt;br /&gt;
|-&lt;br /&gt;
! AVERAGEIF&lt;br /&gt;
| || implemented || implementation by Marina (makkica) ||{{bug|101466}} &amp;lt;br&amp;gt; integrated in LibO 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! AVERAGEIFS&lt;br /&gt;
| || implemented || implementation by Marina (makkica) ||{{bug|101466}} &amp;lt;br&amp;gt; integrated in LibO 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! BETADIST&lt;br /&gt;
| Draft Spec misses faktor 1/(b-a) in densitiy case || not yet implemented || Inform [[User:ErAck|Eike Rathke]] ||correct in draft 22a of ODFF ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Has density case and optional parameter, to choose between density and cumulative || not yet implemented || expand function to density case and additional parameter,tracked in {{Bug|91547}} || integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
! BINOMDIST&lt;br /&gt;
| Parameter C is integer with constraint to 0 and 1. It should be Logical as in other distributions || C=0 is density, all other values of C are treated as cumulative || || ||&lt;br /&gt;
|-&lt;br /&gt;
! LEGACY.CHIDIST&lt;br /&gt;
| Returns 1 for x &amp;amp;lt;0 || x &amp;amp;lt; 0 returns Err:502 || expand domain to x &amp;amp;lt; 0 internal,patch in {{Bug|94555}} ||integrated in OOo3.2 ||&lt;br /&gt;
|-&lt;br /&gt;
! CHISQDIST&lt;br /&gt;
| density function and cumulative left tail of chi-square distribution || not yet implemented || prepare Implementation, patch in {{Bug|94555}} || integrated in OOo3.2 ||&lt;br /&gt;
|-&lt;br /&gt;
! CHISQINV&lt;br /&gt;
| inverse of CHISQDIST(...TRUE()) || not yet implemented || prepare Implementation, patch in {{Bug|94555}} || integrated in OOo3.2 ||&lt;br /&gt;
|-&lt;br /&gt;
! EXPONDIST&lt;br /&gt;
| Parameter &amp;#039;&amp;#039;Cumulative&amp;#039;&amp;#039; has type Logical and is optional. || Last Parameter C has type Number and is not optional. C=0 returns denisity, other values for C return cumulative function. || || ||&lt;br /&gt;
|-&lt;br /&gt;
! FDIST&lt;br /&gt;
| density function and cumulative left tail of F-distribution || not yet implemented|| prepare for implementation || first draft, depends on BETADIST {{Bug|91547}} ||&lt;br /&gt;
|-&lt;br /&gt;
| || || Name conflicts with actual FDIST, which calculates right tail. OOo2.4 does not handle namespace correctly and takes new FDIST as old one || get new UI-name || have brought problem to dev@sc ||&lt;br /&gt;
|-&lt;br /&gt;
! FINV&lt;br /&gt;
| inverse of new FDIST || not yet implemented || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || Name conflicts with actual FINV, which calculates inverse for right tail. || get new UI-name || ||&lt;br /&gt;
|-&lt;br /&gt;
! GAMMA&lt;br /&gt;
| Parameter is constraint to &amp;gt;= 0 || Gamma is definied for all real numbers, but non-positive integers || Inform [[User:ErAck|Eike Rathke]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| || ||not yet implemented || prepare implementation using full domain. Add UI texts. patch in {{Bug|94555}} || integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
| ||is in subgroup Mathematical functions || will go to subgroup Statistical functions || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/] ||&lt;br /&gt;
|-&lt;br /&gt;
! GAMMALN&lt;br /&gt;
| is in subgroup Mathematical Functions || is in subgroup Statistical Functions || || ||&lt;br /&gt;
|-&lt;br /&gt;
! GAMMADIST&lt;br /&gt;
| Last Parameter has type Logical || Last Parameter has type Number || Change type internal to bool. Change UI texts. patch in {{Bug|94555}} || integrated in OOo3.2 ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Domain for Parameter x includes x &amp;amp;lt; 0 || x &amp;amp;lt; 0 returns Err:502 in OOo2.* || Change implementation || integrated in OOo3.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! GROWTH&lt;br /&gt;
| Last parameter has type Logical (in Excel too) || Last parameter has type Number || || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||is in subgroup Statistical Functions (in Excel too) || is in subgroup Array Functions || || ||&lt;br /&gt;
|-&lt;br /&gt;
! HYPGEOMDIST&lt;br /&gt;
| Optional, logical parameter to calculate &amp;quot;exact&amp;quot; or &amp;quot;at most&amp;quot; || no parameter, calculates always &amp;quot;exact&amp;quot; || || ||&lt;br /&gt;
|-&lt;br /&gt;
! INTERCEPT&lt;br /&gt;
| Current, &amp;quot;Calculates the point at which a line will intersect the y-values by using known x-values and y-values.&amp;quot; (BTW: That is literally from Excel help.) Problems:1. It calculates no point but a single value. 2. The line does not intersect the y-values but the y-axis. 3. It does not say, that the line is the linear regression of the known values.|| || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/] ||&lt;br /&gt;
|-&lt;br /&gt;
! NORMDIST&lt;br /&gt;
| Last Parameter has type Logical and is optional || Last Parameter has type Number and is required ||Change implementation, {{Bug|100119}}|| integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
| || ||Accuracy is insufficient for x&amp;amp;lt;&amp;amp;minus;2 because cancellation.||New implementation with ERFC.{{Bug|69069}}, {{Bug|97091}} ||integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
! LEGACY.NORMSDIST&lt;br /&gt;
| &amp;quot;This is exactly NORMDIST(x).&amp;quot; Should be &amp;quot;This is exactly NORMDIST(x;0;1).&amp;quot; because mean parameter and standard deviation parameter are not optional.|| || ||correct in draft 22a of ODFF ||&lt;br /&gt;
|-&lt;br /&gt;
| || ||Accuracy is insufficient for x&amp;amp;lt;&amp;amp;minus;2 because cancellation.||New implementation with ERFC. {{Bug|69069}}, {{Bug|97091}}|| integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
! LOGNORMDIST&lt;br /&gt;
| Four parameters, all but first parameter are optional ||Three parameters, all required||Change implementation {{Bug|100119}}|| integrated in OOo3.2 ||&lt;br /&gt;
|-&lt;br /&gt;
! PERCENTRANK&lt;br /&gt;
| It has an optional parameter &amp;#039;&amp;#039;Significance&amp;#039;&amp;#039;||not yet implemented|| || ||&lt;br /&gt;
|-&lt;br /&gt;
! PHI&lt;br /&gt;
| Description is unclear. PHI(x)=NORMDIST(x;0;1;FALSE()). It is the density function of the standard normal distribution || || ||correct in draft 22a of ODFF ||&lt;br /&gt;
|-&lt;br /&gt;
! POISSON&lt;br /&gt;
| Parameter &amp;#039;&amp;#039;Cumulative&amp;#039;&amp;#039; has type Logical and is optional.|| Parameter &amp;#039;C&amp;#039; is required. &amp;#039;C&amp;#039;=0 is density function, all others are cumulative||change in calc {{Bug|96837}}|| integrated in OOo3.1||&lt;br /&gt;
|-&lt;br /&gt;
! QUARTILE&lt;br /&gt;
| Example calculates with &amp;#039;&amp;#039;Quart=1.5&amp;#039;&amp;#039; although there is a constraint INT(Quart)=Quart|| || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/]||&lt;br /&gt;
|-&lt;br /&gt;
! RANK&lt;br /&gt;
| Description &amp;quot;If not 0, Data is ranked in descending order.&amp;quot; has to be &amp;quot;If not 0, Data is ranked in ascending order.&amp;quot;|| || ||correct in draft 22a of ODFF ||&lt;br /&gt;
|-&lt;br /&gt;
! SKEWP&lt;br /&gt;
| || not yet implemented|| || ||&lt;br /&gt;
|-&lt;br /&gt;
! STDEVA&lt;br /&gt;
| The text &amp;quot;cells with text are converted to 0;&amp;quot; conflicts with &amp;quot;The handling of strings is implementation defined.&amp;quot;|| || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/] ||&lt;br /&gt;
|-&lt;br /&gt;
! TDIST&lt;br /&gt;
| In Draft 26 it was corrected to show the cumulative function. In addition it was renamed to LEGACY.TDIST to be consistent with other right tailed distributions. || Calc (and Excel) evaluates the cumulative function. ||Implementation has to be adapted.|| not started ||&lt;br /&gt;
|-&lt;br /&gt;
! TREND&lt;br /&gt;
| The optional parameters &amp;#039;&amp;#039;knownX&amp;#039;&amp;#039; and &amp;#039;&amp;#039;newX&amp;#039;&amp;#039; may be empty, denoted as ;;|| &amp;#039;&amp;#039;knownX&amp;#039;&amp;#039; and &amp;#039;&amp;#039;knownY&amp;#039;&amp;#039; cannot be empty|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Parameter &amp;#039;&amp;#039;AllowOffset&amp;#039;&amp;#039; is Logical|| Parameter is 0 or &amp;#039;&amp;#039;not 0&amp;#039;&amp;#039;|| || ||&lt;br /&gt;
|-&lt;br /&gt;
! TRIMMEAN&lt;br /&gt;
| The limits in the definition formula are wrong. Either count i from 0, then sum from i=cutOff to n&amp;amp;minus;1&amp;amp;minus;cutOff, or count i from 1, then sum from i=cutOff+1 to n&amp;amp;minus;cutOff || || ||correct in draft 22a of ODFF ||&lt;br /&gt;
|-&lt;br /&gt;
! TTEST&lt;br /&gt;
| (1) All formulas miss the degrees of freedom. It is necessary for TDIST. In case unequal variance there must be defined, whether the degrees of freedom are made integer by FLOOR or whether they remain real. (2) case paired: &amp;lt;math&amp;gt;\scriptstyle \sqrt {n-1}&amp;lt;/math&amp;gt; is wrong because it is already contained in &amp;lt;math&amp;gt; s_{X_1 - X_2}&amp;lt;/math&amp;gt;. (3) case equal variance: definition of s² is missing. (4) case unequal variance: definition does not meet usual definitions. In fact it is the definition for the equal variance case, with pooled variance.(5) As TDIST actually returns the values of the CDF, this formulas has to be revised together with TDIST.|| ||Corrent implementation fits to draft, no action needed. ||draft 22a of ODFF has got correct definition for type 2 and 3, type 1 has got an error, which will be corrected soon. ||&lt;br /&gt;
|-&lt;br /&gt;
! WEIBULL&lt;br /&gt;
| Parameter &amp;#039;&amp;#039;Cumulative&amp;#039;&amp;#039; is logical.||Parameter is 0 or &amp;#039;&amp;#039;not 0&amp;#039;&amp;#039;|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Alpha and Beta are exchanged in the formula, compared with the current implementation in OOo, Excel and Gnumeric.|| || ||Draft 22a of ODFF has got a better description. ||&lt;br /&gt;
|-&lt;br /&gt;
! ZTEST&lt;br /&gt;
| || Calc calculates z-value wrong. Read discussion in {{Bug|90759}} || Correct sigma-bug|| integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
| || || Uses instable algorithm for standard deviation.||Change to stable version or use STDEV directly.|| ||&lt;br /&gt;
|-&lt;br /&gt;
| || Calculates &amp;lt;math&amp;gt;\scriptstyle 1-P( -|z| \le Z \le |z|)&amp;lt;/math&amp;gt;|| Beside the sigma-bug OOo calculates &amp;lt;math&amp;gt;\scriptstyle 1-P( Z \le z)&amp;lt;/math&amp;gt; for z&amp;amp;gt;0 and &amp;lt;math&amp;gt;\scriptstyle P( Z \le |z|)&amp;lt;/math&amp;gt; for z&amp;amp;lt;0|| || Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/] ||&lt;br /&gt;
|-&lt;br /&gt;
! Functionname&lt;br /&gt;
| ODF || Calc || Action || Progress ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Other Functions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! ODFv1.2 !! CALC !! Action !! Progress ||&lt;br /&gt;
|-&lt;br /&gt;
! CEILING&lt;br /&gt;
| Already second parameter (significance) is optional. || Only third parameter (mode) is optional. || Change in Calc and write additional parameter to file for backwards compatibility (not that easy because the actual value depends on the first parameter). &amp;lt;br&amp;gt; Until then let at least the interpreter handle it as optional. || - ||&lt;br /&gt;
|-&lt;br /&gt;
! FLOOR&lt;br /&gt;
| Already second parameter (significance) is optional. || Only third parameter (mode) is optional. || Change in Calc and write additional parameter to file for backwards compatibility (not that easy because the actual value depends on the first parameter). &amp;lt;br&amp;gt; Until then let at least the interpreter handle it as optional. || - ||&lt;br /&gt;
|-&lt;br /&gt;
! GCD&lt;br /&gt;
| &amp;quot;Return the largest value that can be evenly divided (no remainder) into the given numbers.&amp;quot; Should be &amp;quot;Return the largest value that can divide the given numbers evenly (no remainder).&amp;quot;|| - || - || Text is correct since OpenFormula draft 22.||&lt;br /&gt;
|-&lt;br /&gt;
! LOG&lt;br /&gt;
| Base (third parameter) is optional with default 10.||All parameters are required.||Change in Calc||Done (Lvyue) {{Bug|96835}}, integrated to OOo3.1||&lt;br /&gt;
|-&lt;br /&gt;
! ISOWEEKNUM&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! DATEDIF&lt;br /&gt;
| || not implemented yet || implementation by Winfried Donkers and Eike Rathke || implemented in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! PDURATION&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! COUNTIFS&lt;br /&gt;
| || implemented || implementation by Marina (makkica) ||{{bug|90269}} &amp;lt;br&amp;gt; integrated in LibO 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! NUMBERVALUE&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! XOR&lt;br /&gt;
| || implemented || implementation by Marina (makkica) || &amp;lt;br&amp;gt; implemented in LibO 4.0 by Winfried Donkers ||&lt;br /&gt;
|-&lt;br /&gt;
! IFERROR&lt;br /&gt;
| || not implemented yet || implementation by Winfried Donkers and Eike Rathke ||{{bug|92677}} &amp;lt;br&amp;gt; implemented in LibO 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IFNA&lt;br /&gt;
| || not implemented yet || implementation by Winfried Donkers and Eike Rathke ||{{bug|92677}} &amp;lt;br&amp;gt; implemented in LibO 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! CSC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! CSCH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! SEC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! SECH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! SUMIFS&lt;br /&gt;
| || implemented || implementation by Marina (makkica) ||{{bug|95144}} &amp;lt;br&amp;gt; integrated in LibO 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! BITAND&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! BITLSHIFT&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! BITOR&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! BITRSHIFT&lt;br /&gt;
| || not implemented yet || implementatin by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! BITXOR&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! FINDB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! LEFTB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! LENB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! MIDB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! REPLACEB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! RIGHTB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! SEARCHB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
|-&lt;br /&gt;
! IMCSCH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IMSEC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IMSECH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IMSINH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IMCOSH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IMTAN&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]]||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IMCOT&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! IMCSC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
|-&lt;br /&gt;
! Functionname&lt;br /&gt;
| ODF || Calc || Action || Progress ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category:Calc]]&lt;br /&gt;
&lt;br /&gt;
[[Category:To-Do]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Calc/ODFF_Implementation/Examine_functions&amp;diff=204889</id>
		<title>Calc/ODFF Implementation/Examine functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Calc/ODFF_Implementation/Examine_functions&amp;diff=204889"/>
		<updated>2012-08-26T14:56:19Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Other Functions */ implemented/integrated in LibO 3.5.0/3.6.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Examine Changes in Functions for ODFv1.2 ==&lt;br /&gt;
This is a collection of the differences I found and what I know is already done or in progress. I also note, when I found problems in the draft spec itself. You are invited to add your observations. [[User:Regina|Regina]] 19:40, 10 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Statistical Functions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! ODFv1.2 !! CALC !! Action !! Progress ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! AVERAGEIF&lt;br /&gt;
| || implemented || implementation by Marina (makkica) ||{{bug|101466}} ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! AVERAGEIFS&lt;br /&gt;
| || not implemented yet || implementation by Marina (makkica) ||{{bug|101466}} ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! BETADIST&lt;br /&gt;
| Draft Spec misses faktor 1/(b-a) in densitiy case || not yet implemented  || Inform [[User:ErAck|Eike Rathke]] ||correct in draft 22a of ODFF ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Has density case and optional parameter, to choose between density and cumulative || not yet implemented || expand function to density case and additional parameter,tracked in {{Bug|91547}} || integrated in OOo3.2||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! BINOMDIST&lt;br /&gt;
| Parameter C is integer with constraint to 0 and 1. It should be Logical as in other distributions || C=0 is density, all other values of C are treated as cumulative  ||  ||  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! LEGACY.CHIDIST&lt;br /&gt;
| Returns 1 for x &amp;amp;lt;0 || x &amp;amp;lt; 0 returns Err:502 || expand domain to x &amp;amp;lt; 0 internal,patch in {{Bug|94555}} ||integrated in OOo3.2 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CHISQDIST&lt;br /&gt;
| density function and cumulative left tail of chi-square distribution || not yet implemented || prepare Implementation, patch in {{Bug|94555}} || integrated in OOo3.2 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CHISQINV&lt;br /&gt;
| inverse of CHISQDIST(...TRUE()) || not yet implemented  || prepare Implementation, patch in {{Bug|94555}} || integrated in OOo3.2 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! EXPONDIST&lt;br /&gt;
| Parameter &amp;#039;&amp;#039;Cumulative&amp;#039;&amp;#039; has type Logical and is optional. || Last Parameter C has type Number and is not optional. C=0 returns denisity, other values for C return cumulative function. || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! FDIST&lt;br /&gt;
| density function and cumulative left tail of F-distribution || not yet implemented|| prepare for implementation || first draft, depends on BETADIST {{Bug|91547}} ||&lt;br /&gt;
|-&lt;br /&gt;
| ||  || Name conflicts with actual FDIST, which calculates right tail. OOo2.4 does not handle namespace correctly and takes new FDIST as old one || get new UI-name || have brought problem to dev@sc ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! FINV&lt;br /&gt;
| inverse of new FDIST || not yet implemented || || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||  || Name conflicts with actual FINV, which calculates inverse for right tail. || get new UI-name ||  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! GAMMA&lt;br /&gt;
| Parameter is constraint to &amp;gt;= 0 || Gamma is definied for all real numbers, but non-positive integers ||  Inform [[User:ErAck|Eike Rathke]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||  ||not yet implemented || prepare implementation using full domain. Add UI texts. patch in {{Bug|94555}} || integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
| ||is in subgroup Mathematical functions  || will go to subgroup Statistical functions || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! GAMMALN&lt;br /&gt;
| is in subgroup Mathematical Functions  || is in subgroup Statistical Functions || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! GAMMADIST&lt;br /&gt;
| Last Parameter has type Logical || Last Parameter has type Number || Change type internal to bool. Change UI texts. patch in {{Bug|94555}} || integrated in OOo3.2 ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Domain for Parameter x includes x &amp;amp;lt; 0 || x &amp;amp;lt; 0 returns Err:502 in OOo2.* || Change implementation || integrated in OOo3.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! GROWTH&lt;br /&gt;
| Last parameter has type Logical (in Excel too) || Last parameter has type Number || || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||is in subgroup Statistical Functions (in Excel too) || is in subgroup Array Functions || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! HYPGEOMDIST&lt;br /&gt;
| Optional, logical parameter to calculate &amp;quot;exact&amp;quot; or  &amp;quot;at most&amp;quot; || no parameter, calculates always &amp;quot;exact&amp;quot; || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! INTERCEPT&lt;br /&gt;
| Current, &amp;quot;Calculates the point at which a line will intersect the y-values by using known x-values and y-values.&amp;quot; (BTW: That is literally from Excel help.) Problems:1. It calculates no point but a single value. 2. The line does not intersect the y-values but the y-axis. 3. It does not say, that the line is the linear regression of the known values.|| || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! NORMDIST&lt;br /&gt;
| Last Parameter has type Logical and is optional || Last Parameter has type Number and is required ||Change implementation, {{Bug|100119}}|| integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
| || ||Accuracy is insufficient for x&amp;amp;lt;&amp;amp;minus;2 because cancellation.||New implementation with ERFC.{{Bug|69069}}, {{Bug|97091}} ||integrated in OOo3.2||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! LEGACY.NORMSDIST&lt;br /&gt;
| &amp;quot;This is exactly NORMDIST(x).&amp;quot; Should be &amp;quot;This is exactly NORMDIST(x;0;1).&amp;quot; because mean parameter and standard deviation parameter are not optional.|| || ||correct in draft 22a of ODFF ||&lt;br /&gt;
|-&lt;br /&gt;
| || ||Accuracy is insufficient for x&amp;amp;lt;&amp;amp;minus;2 because cancellation.||New implementation with ERFC. {{Bug|69069}}, {{Bug|97091}}|| integrated in OOo3.2||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! LOGNORMDIST&lt;br /&gt;
| Four parameters, all but first parameter are optional ||Three parameters, all required||Change implementation {{Bug|100119}}|| integrated in OOo3.2 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! PERCENTRANK&lt;br /&gt;
| It has an optional parameter &amp;#039;&amp;#039;Significance&amp;#039;&amp;#039;||not yet implemented|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! PHI&lt;br /&gt;
| Description is unclear. PHI(x)=NORMDIST(x;0;1;FALSE()). It is the density function of the standard normal distribution || || ||correct in draft 22a of ODFF ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! POISSON&lt;br /&gt;
| Parameter &amp;#039;&amp;#039;Cumulative&amp;#039;&amp;#039; has type Logical and is optional.|| Parameter &amp;#039;C&amp;#039; is required. &amp;#039;C&amp;#039;=0 is density function, all others are cumulative||change in calc {{Bug|96837}}|| integrated in OOo3.1||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! QUARTILE&lt;br /&gt;
| Example calculates with &amp;#039;&amp;#039;Quart=1.5&amp;#039;&amp;#039; although there is a constraint INT(Quart)=Quart|| || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/]||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! RANK&lt;br /&gt;
| Description &amp;quot;If not 0, Data is ranked in descending order.&amp;quot; has to be &amp;quot;If not 0, Data is ranked in ascending order.&amp;quot;|| || ||correct in draft 22a of ODFF ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SKEWP&lt;br /&gt;
| || not yet implemented|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! STDEVA&lt;br /&gt;
| The text &amp;quot;cells with text are converted to 0;&amp;quot; conflicts with &amp;quot;The handling of strings is implementation defined.&amp;quot;|| || ||Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/] ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! TDIST&lt;br /&gt;
| In Draft 26 it was corrected to show the cumulative function. In addition it was renamed to LEGACY.TDIST to be consistent with other right tailed distributions. || Calc (and Excel) evaluates the cumulative function.  ||Implementation has to be adapted.|| not started ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! TREND&lt;br /&gt;
| The optional parameters &amp;#039;&amp;#039;knownX&amp;#039;&amp;#039; and &amp;#039;&amp;#039;newX&amp;#039;&amp;#039; may be empty, denoted as ;;|| &amp;#039;&amp;#039;knownX&amp;#039;&amp;#039; and &amp;#039;&amp;#039;knownY&amp;#039;&amp;#039; cannot be empty|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Parameter &amp;#039;&amp;#039;AllowOffset&amp;#039;&amp;#039; is Logical|| Parameter is 0 or &amp;#039;&amp;#039;not 0&amp;#039;&amp;#039;|| || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! TRIMMEAN&lt;br /&gt;
| The limits in the definition formula are wrong. Either count i from 0, then sum from i=cutOff to n&amp;amp;minus;1&amp;amp;minus;cutOff, or count i from 1, then sum from i=cutOff+1 to n&amp;amp;minus;cutOff || || ||correct in draft 22a of ODFF ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! TTEST&lt;br /&gt;
| (1) All formulas miss the degrees of freedom. It is necessary for TDIST. In case unequal variance there must be defined, whether the degrees of freedom are made integer by FLOOR or whether they remain real. (2) case paired: &amp;lt;math&amp;gt;\scriptstyle \sqrt {n-1}&amp;lt;/math&amp;gt; is wrong because it is already contained in &amp;lt;math&amp;gt; s_{X_1 - X_2}&amp;lt;/math&amp;gt;. (3) case equal variance: definition of s² is missing. (4) case unequal variance: definition does not meet usual definitions. In fact it is the definition for the equal variance case, with pooled variance.(5) As TDIST actually returns the values of the CDF, this formulas has to be revised together with TDIST.|| ||Corrent implementation fits to draft, no action needed. ||draft 22a of ODFF has got correct definition for type 2 and 3, type 1 has got an error, which will be corrected soon. ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! WEIBULL&lt;br /&gt;
| Parameter &amp;#039;&amp;#039;Cumulative&amp;#039;&amp;#039; is logical.||Parameter is 0 or &amp;#039;&amp;#039;not 0&amp;#039;&amp;#039;|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Alpha and Beta are exchanged in the formula, compared with the current implementation in OOo, Excel and Gnumeric.|| || ||Draft 22a of ODFF has got a better description. ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! ZTEST&lt;br /&gt;
| || Calc calculates z-value wrong. Read discussion in {{Bug|90759}} || Correct sigma-bug|| integrated in OOo3.2||&lt;br /&gt;
|-&lt;br /&gt;
| ||  || Uses instable algorithm for standard deviation.||Change to stable version or use STDEV directly.||   ||&lt;br /&gt;
|-&lt;br /&gt;
| || Calculates &amp;lt;math&amp;gt;\scriptstyle 1-P( -|z| \le Z \le |z|)&amp;lt;/math&amp;gt;|| Beside the sigma-bug OOo calculates &amp;lt;math&amp;gt;\scriptstyle 1-P( Z \le z)&amp;lt;/math&amp;gt; for z&amp;amp;gt;0 and &amp;lt;math&amp;gt;\scriptstyle P( Z \le |z|)&amp;lt;/math&amp;gt; for z&amp;amp;lt;0||   || Mail to OASIS [http://lists.oasis-open.org/archives/office-comment/]  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Functionname&lt;br /&gt;
| ODF || Calc  || Action || Progress ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Other Functions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Function !! ODFv1.2 !! CALC !! Action !! Progress ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CEILING&lt;br /&gt;
| Already second parameter (significance) is optional. || Only third parameter (mode) is optional. || Change in Calc and write additional parameter to file for backwards compatibility (not that easy because the actual value depends on the first parameter). &amp;lt;br&amp;gt; Until then let at least the interpreter handle it as optional. || - ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! FLOOR&lt;br /&gt;
| Already second parameter (significance) is optional. || Only third parameter (mode) is optional. || Change in Calc and write additional parameter to file for backwards compatibility (not that easy because the actual value depends on the first parameter). &amp;lt;br&amp;gt; Until then let at least the interpreter handle it as optional. || - ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! GCD&lt;br /&gt;
| &amp;quot;Return the largest value that can be evenly divided (no remainder) into the given numbers.&amp;quot; Should be &amp;quot;Return the largest value that can divide the given numbers evenly (no remainder).&amp;quot;|| -    || - || Text is correct since OpenFormula draft 22.||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! LOG&lt;br /&gt;
| Base (third parameter) is optional with default 10.||All parameters are required.||Change in Calc||Done (Lvyue) {{Bug|96835}}, integrated to OOo3.1||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! ISOWEEKNUM&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! DATEDIF&lt;br /&gt;
| || not implemented yet || implementation by Winfried Donkers and Eike Rathke || implemented in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! PDURATION&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! COUNTIFS&lt;br /&gt;
| || not implemented yet || implementation by Marina (makkica) ||{{bug|90269}}||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! NUMBERVALUE&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! XOR&lt;br /&gt;
| || implemented || implementation by Marina (makkica) || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IFERROR&lt;br /&gt;
| || not implemented yet ||  implementation by Marina (makkica) ||{{bug|92677}} ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IFNA&lt;br /&gt;
| || not implemented yet ||  implementation by Marina (makkica) ||{{bug|92677}} ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CSC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! CSCH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SEC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SECH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111413}} &amp;lt;br&amp;gt; integrated in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SUMIFS&lt;br /&gt;
| || not implemented yet || implementation by Marina (makkica) ||{{bug|95144}} ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! BITAND&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! BITLSHIFT&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! BITOR&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! BITRSHIFT&lt;br /&gt;
| || not implemented yet || implementatin by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! BITXOR&lt;br /&gt;
| || not implemented yet || implementation by Wolfgang (wope)||{{bug|111519}} &amp;lt;br&amp;gt; implemented in LibO 3.5.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! FINDB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! LEFTB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! LENB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! MIDB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! REPLACEB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! RIGHTB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! SEARCHB&lt;br /&gt;
| || not implemented yet || || ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMCSCH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMSEC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMSECH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMSINH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMCOSH&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMTAN&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]]||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMCOT&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! IMCSC&lt;br /&gt;
| || not implemented yet ||Implementation by [[User:Regina|Regina]] ||Patch in {{bug|111609}} &amp;lt;br&amp;gt; integrated in LibO 3.6.0 ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Functionname&lt;br /&gt;
| ODF || Calc  || Action || Progress ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Calc]]&lt;br /&gt;
[[Category:To-Do]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=198300</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=198300"/>
		<updated>2011-11-02T02:23:05Z</updated>

		<summary type="html">&lt;p&gt;ErAck: reality check&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er, erack&lt;br /&gt;
* Areas of expertise:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== lately worked on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
For many more see&lt;br /&gt;
* [[Documentation/Dashboard/Wiki_Editing_Policy#List_of_Existing_Documentation_Templates]]&lt;br /&gt;
* [[:Category:Wiki_Templates]], especially&lt;br /&gt;
** [[:Category:Formatting_templates]]&lt;br /&gt;
** [[:Category:Wiki_Templates_Expressing_Quality]]&lt;br /&gt;
* [[Special:Mostlinkedtemplates]]&lt;br /&gt;
&lt;br /&gt;
=== Pretty Sortable Table ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=197263</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=197263"/>
		<updated>2011-07-30T18:39:37Z</updated>

		<summary type="html">&lt;p&gt;ErAck: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er, erack&lt;br /&gt;
* Working on:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Email Calc developers: [mailto:dev@sc.openoffice.org dev@sc.openoffice.org] mailing list&lt;br /&gt;
* Email personal: [mailto:erack@openoffice.org erack@openoffice.org]&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== currently working on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
For many more see&lt;br /&gt;
* [[Documentation/Dashboard/Wiki_Editing_Policy#List_of_Existing_Documentation_Templates]]&lt;br /&gt;
* [[:Category:Wiki_Templates]], especially&lt;br /&gt;
** [[:Category:Formatting_templates]]&lt;br /&gt;
** [[:Category:Wiki_Templates_Expressing_Quality]]&lt;br /&gt;
* [[Special:Mostlinkedtemplates]]&lt;br /&gt;
&lt;br /&gt;
=== Pretty Sortable Table ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=197262</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=197262"/>
		<updated>2011-07-30T18:38:55Z</updated>

		<summary type="html">&lt;p&gt;ErAck: update to reality&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er&lt;br /&gt;
* Working on:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Email Calc developers: [mailto:dev@sc.openoffice.org dev@sc.openoffice.org] mailing list&lt;br /&gt;
* Email personal: [mailto:erack@openoffice.org erack@openoffice.org]&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== currently working on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
For many more see&lt;br /&gt;
* [[Documentation/Dashboard/Wiki_Editing_Policy#List_of_Existing_Documentation_Templates]]&lt;br /&gt;
* [[:Category:Wiki_Templates]], especially&lt;br /&gt;
** [[:Category:Formatting_templates]]&lt;br /&gt;
** [[:Category:Wiki_Templates_Expressing_Quality]]&lt;br /&gt;
* [[Special:Mostlinkedtemplates]]&lt;br /&gt;
&lt;br /&gt;
=== Pretty Sortable Table ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=ICU/bugs_and_patches&amp;diff=197242</id>
		<title>ICU/bugs and patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=ICU/bugs_and_patches&amp;diff=197242"/>
		<updated>2011-07-20T11:38:57Z</updated>

		<summary type="html">&lt;p&gt;ErAck: updated version 4.0.1 for OOo 3.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List of patches applied to OOo&amp;#039;s [[ICU]] module (currently ICU v4.0.1 for OOo &amp;gt;= 3.2) and bugs and patches submitted to  [http://bugs.icu-project.org/trac/ ICU trac], the ICU bug tracking system.&lt;br /&gt;
&lt;br /&gt;
If you really &amp;#039;&amp;#039;have&amp;#039;&amp;#039; to apply a patch to ICU to make things work, &amp;#039;&amp;#039;&amp;#039;please&amp;#039;&amp;#039;&amp;#039; submit that patch to &amp;#039;&amp;#039;ICU trac&amp;#039;&amp;#039;, so the next version of ICU will include the changes, and list your patch with ICU trac ID here. We strive for being able to build against an unpatched ICU, so that configure --with-system-icu will be possible without loosing functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== reverted upstream changeset for tracker ticket 6249 ==&lt;br /&gt;
&lt;br /&gt;
An upstream change (for ICU&amp;#039;s [http://bugs.icu-project.org/trac/ticket/6249 tracker ticket 6249]) introduced a regression ([http://www.openoffice.org/issues/show_bug.cgi?id=99241 OOo issue 99241]). Reverting that upstream change (ICU&amp;#039;s [http://bugs.icu-project.org/trac/changeset/24081 changeset 24041]) solves the problem. Updated ICU ticket 6249 accordingly.&lt;br /&gt;
&lt;br /&gt;
== add RPATH for URE ==&lt;br /&gt;
&lt;br /&gt;
The patch changes RPATH from &amp;lt;code&amp;gt;$ORIGIN&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;$ORIGIN:$ORIGIN/../ure-link/lib&amp;lt;/code&amp;gt; because libicu*.so are linked against libstdc++.so.6 and libgcc_s.so.1 that are distributed with the new layered [[Uno/Runtime_Environment | UNO Runtime Environment (URE)]]. This to ensure that the libraries are found there in case they are not already loaded.&lt;br /&gt;
&lt;br /&gt;
However, one could argue that the libraries are already loaded when ICU is pulled in, which almost certainly is the case for libstdc++, and probably also for the libgcc_s GCC support library, but that for some machine models may contain some rarely used symbols such that it wasn&amp;#039;t loaded but ICU needs it. This is very unlikely though, but you never know..&lt;br /&gt;
&lt;br /&gt;
Anyway, the patch certainly is nothing to upstream, hence no ICU trac ID.&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;ll keep thinking about another solution.&lt;br /&gt;
&lt;br /&gt;
OOo developer: Stephan Bergmann &amp;lt;sb&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MinGW platform ==&lt;br /&gt;
&lt;br /&gt;
Patch to be able to build ICU on the Minimalist GNU for Windows platform. &amp;lt;br&amp;gt;&lt;br /&gt;
See [http://www.openoffice.org/nonav/issues/showattachment.cgi/57880/icu_4_0_icu_mingw.patch icu_4_0_icu_mingw.patch] attached to {{Bug|96100}}. &amp;lt;br&amp;gt;&lt;br /&gt;
Introduced with {{CWS|mingwport16}} for OOo3.1&lt;br /&gt;
&lt;br /&gt;
OOo port maintainer: Takashi Ono &amp;lt;tono&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Filed with ICU as http://bugs.icu-project.org/trac/ticket/6638&lt;br /&gt;
[[Category:I18n]]&lt;br /&gt;
&amp;lt;small&amp;gt;small text&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Adding_a_new_language_or_locale&amp;diff=196007</id>
		<title>Adding a new language or locale</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Adding_a_new_language_or_locale&amp;diff=196007"/>
		<updated>2011-04-15T21:07:39Z</updated>

		<summary type="html">&lt;p&gt;ErAck: adapted bugzilla URL to new system&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you plan a new localization of OOo and want to have &amp;#039;&amp;#039;&amp;#039;a new language or locale&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
added, some very basic assignments and mappings have to be done to make it&lt;br /&gt;
known to the code and the build system.&lt;br /&gt;
&lt;br /&gt;
* The numeric Microsoft&amp;amp;reg; locale identifier (LCID), here informally usually referred as &amp;#039;&amp;#039;MS-LangID&amp;#039;&amp;#039;, for attribution used by the core code and also needed for import and export of MS-Office document file formats.&lt;br /&gt;
* The ISO 639 language code and ISO 3166 country code for [[:Category:I18n|internationalization]], [[API]] and [http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office OpenDocument Format (ODF)] file storage.&lt;br /&gt;
* A mapping between those two.&lt;br /&gt;
* A language list box entry.&lt;br /&gt;
* Whether the language uses complex text layout (CTL).&lt;br /&gt;
* Whether the language is written from right to left (RTL).&lt;br /&gt;
* An entry for the build system to build the UI localization.&lt;br /&gt;
&lt;br /&gt;
If your language/locale is already present in one of the language list boxes&lt;br /&gt;
of the font attribution dialog (Format &amp;amp;rarr; Character &amp;amp;rarr; Font), probably&lt;br /&gt;
nothing needs to be done, except maybe an entry to the build system needs to&lt;br /&gt;
be added. If in doubt, just ask on the &amp;#039;&amp;#039;dev@l10n&amp;#039;&amp;#039; mailing list.&lt;br /&gt;
&lt;br /&gt;
To have a LangID assigned and the necessary mappings and entries added, please&lt;br /&gt;
first login to the OOo website and then submit an issue of type Enhancement to&lt;br /&gt;
Component &amp;#039;&amp;#039;l10n&amp;#039;&amp;#039; and Subcomponent &amp;#039;&amp;#039;i18npool&amp;#039;&amp;#039; by using&lt;br /&gt;
[http://openoffice.org/bugzilla/enter_bug.cgi?product=l10n&amp;amp;component=i18npool&amp;amp;cf_bug_type=ENHANCEMENT&amp;amp;rep_platform=All&amp;amp;op_sys=All&amp;amp;version=current&amp;amp;assigned_to=er@openoffice.org this URL].&lt;br /&gt;
&lt;br /&gt;
Your requested language usually will be added for the next minor release of OOo.&lt;br /&gt;
&lt;br /&gt;
Just state that you want Language (Country) [xxx-YY] added, and if it is CTL&lt;br /&gt;
or RTL please say so. The xxx here is the ISO 639-1 (two characters codes,&lt;br /&gt;
preferred if one exists for the language) or 639-2/639-3 (three characters&lt;br /&gt;
codes) language code and YY the ISO 3166 country code. If you don&amp;#039;t know them&lt;br /&gt;
don&amp;#039;t mind, the responsible i18n developer (assigned issue owner) will look&lt;br /&gt;
them up anyway. The best source is [http://www.sil.org/iso639-3/codes.asp SIL ISO 639-3].&lt;br /&gt;
&lt;br /&gt;
If you happen to know that MS already defined a language identifier for your&lt;br /&gt;
language/locale you may state that as well. URLs pointing to relevant&lt;br /&gt;
information can be found at&lt;br /&gt;
[http://www.erack.de/bookmarks/D.html#GIL_MS erAck&amp;#039;s link collection], try to&lt;br /&gt;
pick the &amp;#039;&amp;#039;NLS information page&amp;#039;&amp;#039; first. Unfortunately MS published several&lt;br /&gt;
resources with only partial information instead of consolidating all on just&lt;br /&gt;
one single page. They also change their URLs from time to time, which is why&lt;br /&gt;
this page here doesn&amp;#039;t directly link to them. Again, it doesn&amp;#039;t matter if you&lt;br /&gt;
don&amp;#039;t include the ID, the i18n developer will look it up anyway and assign an&lt;br /&gt;
ID unique within OOo if it doesn&amp;#039;t already exist.&lt;br /&gt;
&lt;br /&gt;
Adding a language to the language list box makes it available for character&lt;br /&gt;
attribution and spell-checking. Availability of spell checker, hyphenation and&lt;br /&gt;
thesaurus of course depends on the installed dictionaries. To be able to fully&lt;br /&gt;
support it as a locale, including number formats and calendar data, and having&lt;br /&gt;
it selectable as default document language we would need a locale data file.&lt;br /&gt;
Please see [[How to submit new Locale Data]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Category:Localization]]&lt;br /&gt;
[[Category:I18n]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=How_to_submit_new_Locale_Data&amp;diff=196006</id>
		<title>How to submit new Locale Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=How_to_submit_new_Locale_Data&amp;diff=196006"/>
		<updated>2011-04-15T21:05:18Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* General Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Information ==&lt;br /&gt;
&lt;br /&gt;
To be able to fully support a [[Adding_a_new_language_or_locale|new language or locale]]&lt;br /&gt;
or an already existing but not yet fully supported language/country&lt;br /&gt;
combination as a locale, including number formats and calendar data, and&lt;br /&gt;
having it selectable as default document language, OOo needs a locale data&lt;br /&gt;
file.&lt;br /&gt;
&lt;br /&gt;
Locale data files can quite easily be generated with the generator&lt;br /&gt;
available at http://www.it46.se/localegen/&lt;br /&gt;
&lt;br /&gt;
For technical details and semantics of elements please see the&lt;br /&gt;
[http://www.it46.se/localegen/docs/index.php generator&amp;#039;s documentation]&lt;br /&gt;
and the comments in the&lt;br /&gt;
[http://hg.services.openoffice.org/DEV300/file/tip/i18npool/source/localedata/data/locale.dtd locale data DTD file]&lt;br /&gt;
and as a sample locale data file for example the&lt;br /&gt;
[http://hg.services.openoffice.org/DEV300/file/tip/i18npool/source/localedata/data/en_US.xml en_US locale]&lt;br /&gt;
&lt;br /&gt;
Note that several locale data elements may be inherited from another locale&amp;#039;s&lt;br /&gt;
data by means of the &amp;#039;&amp;#039;ref=&amp;quot;...&amp;quot;&amp;#039;&amp;#039; attribute if they share identical data,&lt;br /&gt;
which may come handy if locales are to be created for the same language but&lt;br /&gt;
different countries that differ only in a few elements such as currency&lt;br /&gt;
symbols. This would have to be done manually though. Doing so also reduces the&lt;br /&gt;
memory footprint needed during runtime when the data libraries are loaded.&lt;br /&gt;
&lt;br /&gt;
If you want to create and contribute a locale data file for your locale, you&lt;br /&gt;
can either&lt;br /&gt;
&lt;br /&gt;
* Create the locale data file using the generator, login to the OOo website and then submit a new issue using [http://openoffice.org/bugzilla/enter_bug.cgi?product=l10n&amp;amp;component=localedata&amp;amp;cf_bug_type=ENHANCEMENT&amp;amp;rep_platform=All&amp;amp;op_sys=All&amp;amp;version=current&amp;amp;assigned_to=er@openoffice.org this URL], where you say that it is available. We would then contact Alberto, whom you granted the right to contribute your data, see http://www.it46.se/localegen/copyright.php&lt;br /&gt;
&lt;br /&gt;
* Or create the locale data file, login to the OOo website and then submit a new issue using [http://openoffice.org/bugzilla/enter_bug.cgi?product=l10n&amp;amp;component=localedata&amp;amp;cf_bug_type=PATCH&amp;amp;rep_platform=All&amp;amp;op_sys=All&amp;amp;version=current&amp;amp;assigned_to=er@openoffice.org this URL], and attach the generated file to that issue. &amp;lt;p&amp;gt; Please note that to integrate code or data contributed we need a signed [[Oracle Contributor Agreement]] form (OCA) filled-out. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt; This would be the preferred way if you plan to do other contributions that would need a signed OCA as well. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you came to this page because an already existing issue pointed you here to&lt;br /&gt;
submit new locale data, you don&amp;#039;t have to create a new issue using one of the&lt;br /&gt;
above URLs of course, attach the locale data file to the already existing&lt;br /&gt;
issue instead.&lt;br /&gt;
&lt;br /&gt;
== Pitfalls ==&lt;br /&gt;
&lt;br /&gt;
There are a few pitfalls or things to think about when generating locale data:&lt;br /&gt;
&lt;br /&gt;
=== Index Keys and Scripts ===&lt;br /&gt;
&lt;br /&gt;
==== Character Range ====&lt;br /&gt;
&lt;br /&gt;
In section &amp;#039;&amp;#039;H. Enumeration and Scripts&amp;#039;&amp;#039;, the default &amp;#039;&amp;#039;H1. Character range for indexes&amp;#039;&amp;#039;&lt;br /&gt;
entry is &amp;#039;&amp;#039;&amp;#039;A-Z&amp;#039;&amp;#039;&amp;#039;. If your language uses other characters, e.g. additionally&lt;br /&gt;
accented characters, or completely different characters, you probably want to&lt;br /&gt;
add them at the proper position. See the generator&amp;#039;s documentation and/or the&lt;br /&gt;
documentation in the DTD file mentioned above for the &amp;#039;&amp;#039;LC_INDEX&amp;#039;&amp;#039; section.&lt;br /&gt;
&lt;br /&gt;
==== Unicode Script ====&lt;br /&gt;
&lt;br /&gt;
The preselected &amp;#039;&amp;#039;&amp;#039;BasicLatin&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Latin1Supplement&amp;#039;&amp;#039;&amp;#039; scripts usually are&lt;br /&gt;
sufficient for Western European languages. If your language uses other or&lt;br /&gt;
completely different characters please select the appropriate Unicode&lt;br /&gt;
script(s). For the distribution of characters in different Unicode scripts see&lt;br /&gt;
[http://www.unicode.org/charts/ The Unicode Character Code Charts By Script].&lt;br /&gt;
&lt;br /&gt;
=== Currency Formats ===&lt;br /&gt;
&lt;br /&gt;
The generator in step 3 section &amp;#039;&amp;#039;I. Currency&amp;#039;&amp;#039; offers two list boxes,&lt;br /&gt;
&amp;#039;&amp;#039;I6. Currency format for positive values&amp;#039;&amp;#039; and &amp;#039;&amp;#039;I7. Currency format for negative values&amp;#039;&amp;#039;.&lt;br /&gt;
While the format for positive values defaulted to &amp;#039;&amp;#039;&amp;#039;$1&amp;#039;&amp;#039;&amp;#039; (currency symbol&lt;br /&gt;
immediately preceding the amount) may be correct, the default format for negative values&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;($1)&amp;#039;&amp;#039;&amp;#039; (parentheses around symbol and amount, but no minus sign) almost&lt;br /&gt;
certainly is not for countries other than US. Please take the time and choose&lt;br /&gt;
the correct entries of both list boxes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Localization]]&lt;br /&gt;
[[Category:I18n]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=How_to_submit_new_Locale_Data&amp;diff=196005</id>
		<title>How to submit new Locale Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=How_to_submit_new_Locale_Data&amp;diff=196005"/>
		<updated>2011-04-15T21:03:17Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* General Information */ adapted bugzilla URL to new system&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Information ==&lt;br /&gt;
&lt;br /&gt;
To be able to fully support a [[Adding_a_new_language_or_locale|new language or locale]]&lt;br /&gt;
or an already existing but not yet fully supported language/country&lt;br /&gt;
combination as a locale, including number formats and calendar data, and&lt;br /&gt;
having it selectable as default document language, OOo needs a locale data&lt;br /&gt;
file.&lt;br /&gt;
&lt;br /&gt;
Locale data files can quite easily be generated with the generator&lt;br /&gt;
available at http://www.it46.se/localegen/&lt;br /&gt;
&lt;br /&gt;
For technical details and semantics of elements please see the&lt;br /&gt;
[http://www.it46.se/localegen/docs/index.php generator&amp;#039;s documentation]&lt;br /&gt;
and the comments in the&lt;br /&gt;
[http://hg.services.openoffice.org/DEV300/file/tip/i18npool/source/localedata/data/locale.dtd locale data DTD file]&lt;br /&gt;
and as a sample locale data file for example the&lt;br /&gt;
[http://hg.services.openoffice.org/DEV300/file/tip/i18npool/source/localedata/data/en_US.xml en_US locale]&lt;br /&gt;
&lt;br /&gt;
Note that several locale data elements may be inherited from another locale&amp;#039;s&lt;br /&gt;
data by means of the &amp;#039;&amp;#039;ref=&amp;quot;...&amp;quot;&amp;#039;&amp;#039; attribute if they share identical data,&lt;br /&gt;
which may come handy if locales are to be created for the same language but&lt;br /&gt;
different countries that differ only in a few elements such as currency&lt;br /&gt;
symbols. This would have to be done manually though. Doing so also reduces the&lt;br /&gt;
memory footprint needed during runtime when the data libraries are loaded.&lt;br /&gt;
&lt;br /&gt;
If you want to create and contribute a locale data file for your locale, you&lt;br /&gt;
can either&lt;br /&gt;
&lt;br /&gt;
* Create the locale data file using the generator, login to the OOo website and then submit a new issue using [http://openoffice.org/bugzilla/enter_bug.cgi?product=l10n&amp;amp;component=localedata&amp;amp;cf_bug_type=ENHANCEMENT&amp;amp;rep_platform=All&amp;amp;op_sys=All&amp;amp;version=current&amp;amp;assigned_to=er@openoffice.org this URL], where you say that it is available. We would then contact Alberto, whom you granted the right to contribute your data, see http://www.it46.se/localegen/copyright.php&lt;br /&gt;
&lt;br /&gt;
* Or create the locale data file, login to the OOo website and then submit a new issue using [http://openoffice.org/bugzilla/enter_bug.cgi?product=l10n&amp;amp;component=localedata&amp;amp;cf_bug_type=ENHANCEMENT&amp;amp;rep_platform=All&amp;amp;op_sys=All&amp;amp;version=current&amp;amp;assigned_to=er@openoffice.org this URL], and attach the generated file to that issue. &amp;lt;p&amp;gt; Please note that to integrate code or data contributed we need a signed [[Oracle Contributor Agreement]] form (OCA) filled-out. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt; This would be the preferred way if you plan to do other contributions that would need a signed OCA as well. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you came to this page because an already existing issue pointed you here to&lt;br /&gt;
submit new locale data, you don&amp;#039;t have to create a new issue using one of the&lt;br /&gt;
above URLs of course, attach the locale data file to the already existing&lt;br /&gt;
issue instead.&lt;br /&gt;
&lt;br /&gt;
== Pitfalls ==&lt;br /&gt;
&lt;br /&gt;
There are a few pitfalls or things to think about when generating locale data:&lt;br /&gt;
&lt;br /&gt;
=== Index Keys and Scripts ===&lt;br /&gt;
&lt;br /&gt;
==== Character Range ====&lt;br /&gt;
&lt;br /&gt;
In section &amp;#039;&amp;#039;H. Enumeration and Scripts&amp;#039;&amp;#039;, the default &amp;#039;&amp;#039;H1. Character range for indexes&amp;#039;&amp;#039;&lt;br /&gt;
entry is &amp;#039;&amp;#039;&amp;#039;A-Z&amp;#039;&amp;#039;&amp;#039;. If your language uses other characters, e.g. additionally&lt;br /&gt;
accented characters, or completely different characters, you probably want to&lt;br /&gt;
add them at the proper position. See the generator&amp;#039;s documentation and/or the&lt;br /&gt;
documentation in the DTD file mentioned above for the &amp;#039;&amp;#039;LC_INDEX&amp;#039;&amp;#039; section.&lt;br /&gt;
&lt;br /&gt;
==== Unicode Script ====&lt;br /&gt;
&lt;br /&gt;
The preselected &amp;#039;&amp;#039;&amp;#039;BasicLatin&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Latin1Supplement&amp;#039;&amp;#039;&amp;#039; scripts usually are&lt;br /&gt;
sufficient for Western European languages. If your language uses other or&lt;br /&gt;
completely different characters please select the appropriate Unicode&lt;br /&gt;
script(s). For the distribution of characters in different Unicode scripts see&lt;br /&gt;
[http://www.unicode.org/charts/ The Unicode Character Code Charts By Script].&lt;br /&gt;
&lt;br /&gt;
=== Currency Formats ===&lt;br /&gt;
&lt;br /&gt;
The generator in step 3 section &amp;#039;&amp;#039;I. Currency&amp;#039;&amp;#039; offers two list boxes,&lt;br /&gt;
&amp;#039;&amp;#039;I6. Currency format for positive values&amp;#039;&amp;#039; and &amp;#039;&amp;#039;I7. Currency format for negative values&amp;#039;&amp;#039;.&lt;br /&gt;
While the format for positive values defaulted to &amp;#039;&amp;#039;&amp;#039;$1&amp;#039;&amp;#039;&amp;#039; (currency symbol&lt;br /&gt;
immediately preceding the amount) may be correct, the default format for negative values&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;($1)&amp;#039;&amp;#039;&amp;#039; (parentheses around symbol and amount, but no minus sign) almost&lt;br /&gt;
certainly is not for countries other than US. Please take the time and choose&lt;br /&gt;
the correct entries of both list boxes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Localization]]&lt;br /&gt;
[[Category:I18n]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/SECURITY/IntOver&amp;diff=195430</id>
		<title>Cpp Coding Standards/SECURITY/IntOver</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/SECURITY/IntOver&amp;diff=195430"/>
		<updated>2011-03-24T15:10:17Z</updated>

		<summary type="html">&lt;p&gt;ErAck: update external URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Be aware that integers have limited range – not properly checking valid input ranges before doing integer arithmetic, or assigning to other integer types of insufficient range, will lead to overflows. Often, integer overflows can be used as an attack vector to launch a subsequent buffer overflow, with the fatal consequences outlined in [[../../SECURITY#BuffOver|Security:BuffOver]].&lt;br /&gt;
&lt;br /&gt;
Hints:&lt;br /&gt;
*Read and understand [http://www.phrack.org/archives/60/p60_0x0a_Basic%20Integer%20Overflows_by_blexim.txt this background article] on integer overflows.&lt;br /&gt;
&lt;br /&gt;
*Generally, use sal_Size for buffer sizes and counts. There is usually no reason to use a signed value here (but watch out for assignments and comparisons with signed types).&lt;br /&gt;
&lt;br /&gt;
*If you perform integer arithmetic, and the result is used to index arrays, calculate sizes, or as a parameter to array-new, make sure the operands fall into a safe, and well-understood range (check &amp;#039;&amp;#039;before&amp;#039;&amp;#039; you perform the calculation). Be even more careful if the input for this aritmetics is coming from an untrusted source like values read from a document by a document parsing code.&lt;br /&gt;
&lt;br /&gt;
*Be extremely careful not to pass signed integers to memory allocation functions (new, alloca, rtl_allocateMemory), as they are interpreted as unsigned integers.&lt;br /&gt;
&lt;br /&gt;
*Triple-check any integer-related compiler warnings, and any cast operations that silence them.&lt;br /&gt;
&lt;br /&gt;
*Be aware of the [http://blogs.msdn.com/oldnewthing/archive/2004/01/29/64389.aspx implicit buffer overflows] in new[] operator (see [http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#624 C++ DR&amp;amp;nbsp;624]).&lt;br /&gt;
&lt;br /&gt;
See also [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncode/html/secure04102003.asp Reviewing Code for Integer Manipulation Vulnerabilities] (broken URL, update, anyone?).&lt;br /&gt;
[[Category:Coding Standards]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=How_to_submit_new_Locale_Data&amp;diff=195037</id>
		<title>How to submit new Locale Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=How_to_submit_new_Locale_Data&amp;diff=195037"/>
		<updated>2011-03-14T14:33:56Z</updated>

		<summary type="html">&lt;p&gt;ErAck: adapt URLs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Information ==&lt;br /&gt;
&lt;br /&gt;
To be able to fully support a [[Adding_a_new_language_or_locale|new language or locale]]&lt;br /&gt;
or an already existing but not yet fully supported language/country&lt;br /&gt;
combination as a locale, including number formats and calendar data, and&lt;br /&gt;
having it selectable as default document language, OOo needs a locale data&lt;br /&gt;
file.&lt;br /&gt;
&lt;br /&gt;
Locale data files can quite easily be generated with the generator&lt;br /&gt;
available at http://www.it46.se/localegen/&lt;br /&gt;
&lt;br /&gt;
For technical details and semantics of elements please see the&lt;br /&gt;
[http://www.it46.se/localegen/docs/index.php generator&amp;#039;s documentation]&lt;br /&gt;
and the comments in the&lt;br /&gt;
[http://hg.services.openoffice.org/DEV300/file/tip/i18npool/source/localedata/data/locale.dtd locale data DTD file]&lt;br /&gt;
and as a sample locale data file for example the&lt;br /&gt;
[http://hg.services.openoffice.org/DEV300/file/tip/i18npool/source/localedata/data/en_US.xml en_US locale]&lt;br /&gt;
&lt;br /&gt;
Note that several locale data elements may be inherited from another locale&amp;#039;s&lt;br /&gt;
data by means of the &amp;#039;&amp;#039;ref=&amp;quot;...&amp;quot;&amp;#039;&amp;#039; attribute if they share identical data,&lt;br /&gt;
which may come handy if locales are to be created for the same language but&lt;br /&gt;
different countries that differ only in a few elements such as currency&lt;br /&gt;
symbols. This would have to be done manually though. Doing so also reduces the&lt;br /&gt;
memory footprint needed during runtime when the data libraries are loaded.&lt;br /&gt;
&lt;br /&gt;
If you want to create and contribute a locale data file for your locale, you&lt;br /&gt;
can either&lt;br /&gt;
&lt;br /&gt;
* Create the locale data file using the generator, login to the OOo website and then submit a new issue using [http://openoffice.org/bugzilla/enter_bug.cgi?version=current&amp;amp;component=l10n&amp;amp;subcomponent=localedata&amp;amp;issue_type=ENHANCEMENT&amp;amp;assigned_to=er this URL], where you say that it is available. We would then contact Alberto, whom you granted the right to contribute your data, see http://www.it46.se/localegen/copyright.php&lt;br /&gt;
&lt;br /&gt;
* Or create the locale data file, login to the OOo website and then submit a new issue using [http://openoffice.org/bugzilla/enter_bug.cgi?version=current&amp;amp;component=l10n&amp;amp;subcomponent=localedata&amp;amp;issue_type=PATCH&amp;amp;assigned_to=er this URL], and attach the generated file to that issue. &amp;lt;p&amp;gt; Please note that to integrate code or data contributed we need a signed [[Oracle Contributor Agreement]] form (OCA) filled-out. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt; This would be the preferred way if you plan to do other contributions that would need a signed OCA as well. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you came to this page because an already existing issue pointed you here to&lt;br /&gt;
submit new locale data, you don&amp;#039;t have to create a new issue using one of the&lt;br /&gt;
above URLs of course, attach the locale data file to the already existing&lt;br /&gt;
issue instead.&lt;br /&gt;
&lt;br /&gt;
== Pitfalls ==&lt;br /&gt;
&lt;br /&gt;
There are a few pitfalls or things to think about when generating locale data:&lt;br /&gt;
&lt;br /&gt;
=== Index Keys and Scripts ===&lt;br /&gt;
&lt;br /&gt;
==== Character Range ====&lt;br /&gt;
&lt;br /&gt;
In section &amp;#039;&amp;#039;H. Enumeration and Scripts&amp;#039;&amp;#039;, the default &amp;#039;&amp;#039;H1. Character range for indexes&amp;#039;&amp;#039;&lt;br /&gt;
entry is &amp;#039;&amp;#039;&amp;#039;A-Z&amp;#039;&amp;#039;&amp;#039;. If your language uses other characters, e.g. additionally&lt;br /&gt;
accented characters, or completely different characters, you probably want to&lt;br /&gt;
add them at the proper position. See the generator&amp;#039;s documentation and/or the&lt;br /&gt;
documentation in the DTD file mentioned above for the &amp;#039;&amp;#039;LC_INDEX&amp;#039;&amp;#039; section.&lt;br /&gt;
&lt;br /&gt;
==== Unicode Script ====&lt;br /&gt;
&lt;br /&gt;
The preselected &amp;#039;&amp;#039;&amp;#039;BasicLatin&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Latin1Supplement&amp;#039;&amp;#039;&amp;#039; scripts usually are&lt;br /&gt;
sufficient for Western European languages. If your language uses other or&lt;br /&gt;
completely different characters please select the appropriate Unicode&lt;br /&gt;
script(s). For the distribution of characters in different Unicode scripts see&lt;br /&gt;
[http://www.unicode.org/charts/ The Unicode Character Code Charts By Script].&lt;br /&gt;
&lt;br /&gt;
=== Currency Formats ===&lt;br /&gt;
&lt;br /&gt;
The generator in step 3 section &amp;#039;&amp;#039;I. Currency&amp;#039;&amp;#039; offers two list boxes,&lt;br /&gt;
&amp;#039;&amp;#039;I6. Currency format for positive values&amp;#039;&amp;#039; and &amp;#039;&amp;#039;I7. Currency format for negative values&amp;#039;&amp;#039;.&lt;br /&gt;
While the format for positive values defaulted to &amp;#039;&amp;#039;&amp;#039;$1&amp;#039;&amp;#039;&amp;#039; (currency symbol&lt;br /&gt;
immediately preceding the amount) may be correct, the default format for negative values&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;($1)&amp;#039;&amp;#039;&amp;#039; (parentheses around symbol and amount, but no minus sign) almost&lt;br /&gt;
certainly is not for countries other than US. Please take the time and choose&lt;br /&gt;
the correct entries of both list boxes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Localization]]&lt;br /&gt;
[[Category:I18n]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Adding_a_new_language_or_locale&amp;diff=195036</id>
		<title>Adding a new language or locale</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Adding_a_new_language_or_locale&amp;diff=195036"/>
		<updated>2011-03-14T14:26:33Z</updated>

		<summary type="html">&lt;p&gt;ErAck: adapt URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you plan a new localization of OOo and want to have &amp;#039;&amp;#039;&amp;#039;a new language or locale&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
added, some very basic assignments and mappings have to be done to make it&lt;br /&gt;
known to the code and the build system.&lt;br /&gt;
&lt;br /&gt;
* The numeric Microsoft&amp;amp;reg; locale identifier (LCID), here informally usually referred as &amp;#039;&amp;#039;MS-LangID&amp;#039;&amp;#039;, for attribution used by the core code and also needed for import and export of MS-Office document file formats.&lt;br /&gt;
* The ISO 639 language code and ISO 3166 country code for [[:Category:I18n|internationalization]], [[API]] and [http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office OpenDocument Format (ODF)] file storage.&lt;br /&gt;
* A mapping between those two.&lt;br /&gt;
* A language list box entry.&lt;br /&gt;
* Whether the language uses complex text layout (CTL).&lt;br /&gt;
* Whether the language is written from right to left (RTL).&lt;br /&gt;
* An entry for the build system to build the UI localization.&lt;br /&gt;
&lt;br /&gt;
If your language/locale is already present in one of the language list boxes&lt;br /&gt;
of the font attribution dialog (Format &amp;amp;rarr; Character &amp;amp;rarr; Font), probably&lt;br /&gt;
nothing needs to be done, except maybe an entry to the build system needs to&lt;br /&gt;
be added. If in doubt, just ask on the &amp;#039;&amp;#039;dev@l10n&amp;#039;&amp;#039; mailing list.&lt;br /&gt;
&lt;br /&gt;
To have a LangID assigned and the necessary mappings and entries added, please&lt;br /&gt;
first login to the OOo website and then submit an issue of type Enhancement to&lt;br /&gt;
Component &amp;#039;&amp;#039;l10n&amp;#039;&amp;#039; and Subcomponent &amp;#039;&amp;#039;i18npool&amp;#039;&amp;#039; by using&lt;br /&gt;
[http://openoffice.org/bugzilla/enter_bug.cgi?version=current&amp;amp;component=l10n&amp;amp;subcomponent=i18npool&amp;amp;issue_type=ENHANCEMENT&amp;amp;assigned_to=er this URL].&lt;br /&gt;
&lt;br /&gt;
Your requested language usually will be added for the next minor release of OOo.&lt;br /&gt;
&lt;br /&gt;
Just state that you want Language (Country) [xxx-YY] added, and if it is CTL&lt;br /&gt;
or RTL please say so. The xxx here is the ISO 639-1 (two characters codes,&lt;br /&gt;
preferred if one exists for the language) or 639-2/639-3 (three characters&lt;br /&gt;
codes) language code and YY the ISO 3166 country code. If you don&amp;#039;t know them&lt;br /&gt;
don&amp;#039;t mind, the responsible i18n developer (assigned issue owner) will look&lt;br /&gt;
them up anyway. The best source is [http://www.sil.org/iso639-3/codes.asp SIL ISO 639-3].&lt;br /&gt;
&lt;br /&gt;
If you happen to know that MS already defined a language identifier for your&lt;br /&gt;
language/locale you may state that as well. URLs pointing to relevant&lt;br /&gt;
information can be found at&lt;br /&gt;
[http://www.erack.de/bookmarks/D.html#GIL_MS erAck&amp;#039;s link collection], try to&lt;br /&gt;
pick the &amp;#039;&amp;#039;NLS information page&amp;#039;&amp;#039; first. Unfortunately MS published several&lt;br /&gt;
resources with only partial information instead of consolidating all on just&lt;br /&gt;
one single page. They also change their URLs from time to time, which is why&lt;br /&gt;
this page here doesn&amp;#039;t directly link to them. Again, it doesn&amp;#039;t matter if you&lt;br /&gt;
don&amp;#039;t include the ID, the i18n developer will look it up anyway and assign an&lt;br /&gt;
ID unique within OOo if it doesn&amp;#039;t already exist.&lt;br /&gt;
&lt;br /&gt;
Adding a language to the language list box makes it available for character&lt;br /&gt;
attribution and spell-checking. Availability of spell checker, hyphenation and&lt;br /&gt;
thesaurus of course depends on the installed dictionaries. To be able to fully&lt;br /&gt;
support it as a locale, including number formats and calendar data, and having&lt;br /&gt;
it selectable as default document language we would need a locale data file.&lt;br /&gt;
Please see [[How to submit new Locale Data]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Category:Localization]]&lt;br /&gt;
[[Category:I18n]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191274</id>
		<title>Editor Vim</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191274"/>
		<updated>2011-01-04T17:44:14Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Resolve HG conflicts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There exist only two real editors in the programmer&amp;#039;s world ;-)  One is Vim,&lt;br /&gt;
and the other is the &amp;#039;&amp;#039;eier-legende-woll-milch-sau&amp;#039;&amp;#039; (sorry for that German&lt;br /&gt;
phrase being a modified translation of&lt;br /&gt;
&amp;#039;&amp;#039;allrounder - all-in-one device suitable for every purpose&amp;#039;&amp;#039;,&lt;br /&gt;
couldn&amp;#039;t resist ;-) (X)Emacs. So here we go for Vim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Vim settings ==&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; have the following settings. For the tabstops=4 setting it may&lt;br /&gt;
not be desired to have this globally effective, you may want to restrict it to&lt;br /&gt;
an OOo/SO environment by evaluating the $SOLARENV environment variable,&lt;br /&gt;
&amp;lt;code&amp;gt;if $SOLARENV != &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set ts=4                &amp;quot; tabstops are 4 (for all code)&lt;br /&gt;
set sw=4                &amp;quot; shiftwidth is 4&lt;br /&gt;
set expandtab           &amp;quot; expand tabs to spaces&lt;br /&gt;
set showmatch           &amp;quot; briefly jump to matching brackets&lt;br /&gt;
set showmode            &amp;quot; the mode we&amp;#039;re in&lt;br /&gt;
if version &amp;gt;= 600&lt;br /&gt;
    filetype on             &amp;quot; enable file type detection&lt;br /&gt;
    filetype plugin on      &amp;quot; enable file type plugins&lt;br /&gt;
    filetype indent on      &amp;quot; enable file type indents&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; previous and next compiler error (quickfix)&lt;br /&gt;
map &amp;lt;C-P&amp;gt; :cp&amp;lt;CR&amp;gt;&lt;br /&gt;
map &amp;lt;C-N&amp;gt; :cn&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot; Only do this part when compiled with support for autocommands.&lt;br /&gt;
if has(&amp;quot;autocmd&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; In text files, always limit the width of text to 78 characters, tabs are 8&lt;br /&gt;
    autocmd BufRead *.txt,*.doc,*.dok setlocal tw=78 ts=8 sw=8 fo+=rn1&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat resource files and headers like C files&lt;br /&gt;
    autocmd BufRead *.hrc,*.src setlocal ft=c&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat generated UNO header files like C++ files&lt;br /&gt;
    autocmd BufRead *.hdl setlocal ft=cpp&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; mail bodies have a textwidth of 72 characters, activate numbering&lt;br /&gt;
    &amp;quot; formatting, reset comments to default, no indenting&lt;br /&gt;
    autocmd FileType mail setlocal tw=72 fo+=rn1 comments&amp;amp; nocindent&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in C/C++ files without &amp;#039;*&amp;#039; middle part&lt;br /&gt;
    autocmd FileType c,cpp setlocal comments^=s:/**,mb:\ ,e:*/&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in IDL files have a textwidth of 72 characters&lt;br /&gt;
    autocmd FileType idl setlocal comments^=s:/**,mb:\ ,e:*/ tw=72&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; OOo .xcu configuration files and the like&lt;br /&gt;
    autocmd FileType xml setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; HTML files&lt;br /&gt;
    autocmd FileType html,css setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; setting up for :make&lt;br /&gt;
set makeprg=$SOLARENV/bin/build.pl\ \-P4\ \-\-\ \-P4&lt;br /&gt;
&lt;br /&gt;
&amp;quot; broken whitespace&lt;br /&gt;
:au Syntax * syn match Error /\s\+$/ | syn match Error /^\s* \t\s*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vim and the GNU ID-utils ==&lt;br /&gt;
&lt;br /&gt;
As mentioned in [[Little_Helpers#GNU_ID-utils | Little Helpers&amp;#039; GNU Id-utils]], the &amp;#039;&amp;#039;eid&amp;#039;&amp;#039; command makes use of some&lt;br /&gt;
environment variables when invoking the editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv VISUAL   vim&lt;br /&gt;
setenv EIDARG   &amp;#039;+/%s/&amp;#039;&lt;br /&gt;
setenv EIDLDEL  &amp;#039;\&amp;lt;&amp;#039;&lt;br /&gt;
setenv EIDRDEL  &amp;#039;\&amp;gt;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To be able to invoke the &amp;#039;&amp;#039;lid&amp;#039;&amp;#039; utility from within Vim we need a key mapping&lt;br /&gt;
and function call, you may place this section into your &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; GNU id-utils, taken from :h ident-search&lt;br /&gt;
&amp;quot; Generate the ID file in the current directory or in .. or ../.. or ../../..&lt;br /&gt;
&amp;quot; To use it, place the cursor on a word, type &amp;quot;_u&amp;quot; and vim will load the file&lt;br /&gt;
&amp;quot; that contains the word.  Search for the next occurrence of the word in the&lt;br /&gt;
&amp;quot; same file with &amp;quot;n&amp;quot;.  Go to the next file with &amp;quot;_n&amp;quot;.&lt;br /&gt;
map _u :call ID_search()&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
map _n :n&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
function ID_search()&lt;br /&gt;
    let g:word = expand(&amp;quot;&amp;lt;cword&amp;gt;&amp;quot;)&lt;br /&gt;
    let x = system(&amp;quot;lid --key=none &amp;quot;. g:word)&lt;br /&gt;
    let x = substitute(x, &amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;g&amp;quot;)&lt;br /&gt;
    execute &amp;quot;next &amp;quot; . x&lt;br /&gt;
endfun&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== lid.vim plugin ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=251 lid.vim] is&lt;br /&gt;
a plugin to integrate GNU id-utils with Vim, providing a &amp;#039;&amp;#039;lid -g&amp;#039;&amp;#039; output in&lt;br /&gt;
the &amp;#039;&amp;#039;quickfix&amp;#039;&amp;#039; window that can be travelled using the &amp;#039;&amp;#039;:cnext&amp;#039;&amp;#039; and&lt;br /&gt;
&amp;#039;&amp;#039;:cprev&amp;#039;&amp;#039; commands respectively their keyboard mappings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Ctags ==&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s easy, as vim has builtin support for ctags, see &amp;#039;&amp;#039;:h tagsrch.txt&amp;#039;&amp;#039;, in&lt;br /&gt;
&amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; just tell it where to search for the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Tags files are searched first relative to the current file, then relative to&lt;br /&gt;
&amp;quot; the current working directory, and last in the $HOME directory.&lt;br /&gt;
set tags=./tags,./../tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags,tags,../tags,../../tags,../../../tags,../../../../tags,../../../../../tags,~/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Exuberant Ctags&amp;#039;&amp;#039; information and a script how to create the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; database see the [[Little_Helpers#Exuberant_Ctags | Little Helpers&amp;#039; Exuberant Ctags]] section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Cscope ==&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Cscope&amp;#039;&amp;#039; information and a script how to create a cscope&lt;br /&gt;
database for an OOo project see the&lt;br /&gt;
[[Little_Helpers#Cscope | Little Helpers&amp;#039; Cscope]]&lt;br /&gt;
section.&lt;br /&gt;
&lt;br /&gt;
=== Builtin Cscope support ===&lt;br /&gt;
&lt;br /&gt;
Vim has builtin (well, if compiled in) support for cscope, see &amp;#039;&amp;#039;:h cscope&amp;#039;&amp;#039;.&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; you may want to setup some things, but this is also a matter of&lt;br /&gt;
work habits. Consider the following an example and consult the fine manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Cscope settings&lt;br /&gt;
if has(&amp;quot;cscope&amp;quot;)&lt;br /&gt;
    &amp;quot; quickfix window usage&lt;br /&gt;
    set cscopequickfix=s-,c-,d-,i-,t-,e-&lt;br /&gt;
    &amp;quot; :tag and the like use :cstag&lt;br /&gt;
    set cscopetag&lt;br /&gt;
    &amp;quot; first search cscope, than tags file&lt;br /&gt;
    set cscopetagorder=0&lt;br /&gt;
    set nocsverb&lt;br /&gt;
    &amp;quot; add any database in current directory&lt;br /&gt;
    if filereadable(&amp;quot;cscope.out&amp;quot;)&lt;br /&gt;
        cs add cscope.out&lt;br /&gt;
        &amp;quot; else add database pointed to by environment&lt;br /&gt;
    elseif $CSCOPE_DB != &amp;quot;&amp;quot;&lt;br /&gt;
        cs add $CSCOPE_DB&lt;br /&gt;
    endif&lt;br /&gt;
    set csverb&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== More comfortable plugin script cecscope.vim ===&lt;br /&gt;
&lt;br /&gt;
The&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1453 command and menu driven cscope interface]&lt;br /&gt;
eases things a bit. It requires vim7.0aa snapshot #188 or later, the Vim7.1&lt;br /&gt;
release does fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Include file searches in Vim ==&lt;br /&gt;
&lt;br /&gt;
Set the &amp;#039;&amp;#039;path&amp;#039;&amp;#039; variable in &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Where to look for files in gf and ^Wf and similar commands,&lt;br /&gt;
&amp;quot; and for include files for i_^X^I and i_^X^D commands.&lt;br /&gt;
&amp;quot; To use VIM_INC in OOo/SO environment define&lt;br /&gt;
&amp;quot; alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
&amp;quot; Note the two space characters in the second substitute, and execute the alias after a setsolar.&lt;br /&gt;
&amp;quot; Under 4NT you need some rubbish like (note this isn&amp;#039;t updated since ages)&lt;br /&gt;
&amp;quot; alias solvim=set _uq_%0=%@unique[%tmp%] &amp;amp;&amp;amp; echos VIM_INC=&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; echo %SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/ \+-I/,/g&amp;quot;&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; set /r _uq_%0 &amp;amp;&amp;amp; del /q _uq_%0&lt;br /&gt;
set path=.,./inc,./../inc,./../../inc,./../../../inc,./../../../../inc,$VIM_INC,,/usr/local/include,/usr/include&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you missed it in the comments above: you need to invoke a shell alias&lt;br /&gt;
after having sourced the environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcsh&lt;br /&gt;
alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
source LinuxX86Env.Set&lt;br /&gt;
solvim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: in Vim &amp;#039;&amp;#039;:h include-search&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compiling a source from within Vim ==&lt;br /&gt;
&lt;br /&gt;
Compiling the source from within the editor is of course desired, as warnings&lt;br /&gt;
and errors generated by the compiler let you directly jump to the line in&lt;br /&gt;
question. There are some quirks to be solved for the OOo/SO environment, but no&lt;br /&gt;
real problem, just examine the working &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; sections below. Pressing&lt;br /&gt;
Ctrl+K changes the current window&amp;#039;s directory locally to the one of the file&lt;br /&gt;
loaded, if there is a makfile.mk in that directory, sets the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039;&lt;br /&gt;
variable to the command needed to dmake just the current file, and executes it.&lt;br /&gt;
&lt;br /&gt;
For the quickfix window to pull its content from the compiler output we need to&lt;br /&gt;
have a valid error file setting, and as there&amp;#039;s always the hassle with DOS&lt;br /&gt;
based systems, we also need to take care of that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; This uses the TMP environment variable, be sure to have it set!&lt;br /&gt;
if $COMSPEC =~ &amp;quot;\\&amp;quot;&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having any DOS&lt;br /&gt;
    set makeef=$TMP\\vim##.err  &amp;quot; :make errorfile&lt;br /&gt;
else&lt;br /&gt;
    set makeef=$TMP/vim##.err   &amp;quot; :make errorfile&lt;br /&gt;
endif&lt;br /&gt;
if $TMP =~ &amp;quot;\\&amp;quot; &amp;amp;&amp;amp; ($COMSPEC =~ &amp;quot;4&amp;quot; || $SHELL =~ &amp;quot;4&amp;quot;)&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having some DOS assumed to be 4DOS compatible&lt;br /&gt;
    set shellpipe=\|&amp;amp;\ tee&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039; setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Call appropriate makeprg with Ctrl+K&lt;br /&gt;
map &amp;lt;C-K&amp;gt; :call Make()&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if $SOLARENV == &amp;quot;&amp;quot;&lt;br /&gt;
    &amp;quot; Normal makeprg, not in OpenOffice.org/StarOffice environment&lt;br /&gt;
    function Make()&lt;br /&gt;
        make&lt;br /&gt;
    endfun&lt;br /&gt;
else&lt;br /&gt;
    &amp;quot; Special dmake, only in OpenOffice.org/StarOffice environment&lt;br /&gt;
    set makeprg=dmake&lt;br /&gt;
    function SetMakeprg()&lt;br /&gt;
        &amp;quot; For a detached gvim we need to source the environment, assuming&lt;br /&gt;
        &amp;quot; the current working directory being source/core/tool/ or&lt;br /&gt;
        &amp;quot; similar, and having a copy of the setsolar -file environment&lt;br /&gt;
        &amp;quot; file as module/../ENV.$INPATH or in $SRC_ROOT set a&lt;br /&gt;
        &amp;quot; ln -s LinuxX86Env.Set ENV.$INPATH&lt;br /&gt;
        &amp;quot; For terminal vim re-sourcing the environment isn&amp;#039;t necessary.&lt;br /&gt;
        if has(&amp;quot;gui_running&amp;quot;)&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=source\ ./ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        else&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        endif&lt;br /&gt;
        &amp;quot; Just some copy&amp;amp;paste versions:&lt;br /&gt;
        &amp;quot; Entire module, edit ENV.... and set BUILD_COMMAND to content of build alias&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ $BUILD_COMMAND&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;set makeprg=dmake\ product=full&lt;br /&gt;
        &amp;quot; temporary override, no wall, no debug&lt;br /&gt;
        &amp;quot;if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;else&lt;br /&gt;
        &amp;quot;    set makeprg=dmake&lt;br /&gt;
        &amp;quot;endif&lt;br /&gt;
    endfun&lt;br /&gt;
    function Make()&lt;br /&gt;
        let my_local_path = expand(&amp;quot;%:h&amp;quot;)&lt;br /&gt;
        if (my_local_path == &amp;quot;&amp;quot;)&lt;br /&gt;
            let my_local_path = &amp;quot;.&amp;quot;&lt;br /&gt;
        endif&lt;br /&gt;
        if filereadable( my_local_path . &amp;quot;/makefile.mk&amp;quot; )&lt;br /&gt;
            exec &amp;#039;lcd &amp;#039; . my_local_path&lt;br /&gt;
            call SetMakeprg()&lt;br /&gt;
            make&lt;br /&gt;
        else&lt;br /&gt;
            echo &amp;quot;No makefile.mk in &amp;quot; . my_local_path&lt;br /&gt;
        endif&lt;br /&gt;
    endfun&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CVS/SVN/HG integration ==&lt;br /&gt;
&lt;br /&gt;
=== CVS/SVN/HG commands ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=90 vcscommand.vim - CVS/SVN integration plugin]&lt;br /&gt;
&lt;br /&gt;
A nice plugin to handle CVS, SVN and HG actions from within Vim. Most useful being&lt;br /&gt;
the VCSAnnotate and VCSVimDiff commands, IMHO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve CVS conflicts ===&lt;br /&gt;
&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1370 CVSconflict - CVS conflict resolution using vimdiff] &lt;br /&gt;
&lt;br /&gt;
A plugin that converts a source file containing CVS merge conflicts into two&lt;br /&gt;
VimDiff buffers that then can be easily edited.&lt;br /&gt;
&lt;br /&gt;
This also should work with inline [[Mercurial]] merge conflicts (no separate files created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve HG conflicts ===&lt;br /&gt;
&lt;br /&gt;
See Mercurial wiki [http://mercurial.selenic.com/wiki/MergingWithVim merging with vim] and [http://mercurial.selenic.com/wiki/TipsAndTricks#Using_Vim_as_the_filemerge_program using Vim as the filemerge program] for gvim diff.&lt;br /&gt;
&lt;br /&gt;
== Other useful plugins and resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1520 OmniCppComplete - C++ completion omnifunc with a ctags database]&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1997 undo_tags - small utility that lets you tag undo branches]&lt;br /&gt;
* [http://www.erack.de/bookmarks/D.html#VIM erAck&amp;#039;s &amp;#039;&amp;#039;VIM and related&amp;#039;&amp;#039; bookmarks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A note for developers on WIN\DOS ==&lt;br /&gt;
&lt;br /&gt;
Please don&amp;#039;t complicate life for developers on other platforms by interspersing&lt;br /&gt;
sources with CarriageReturn characters before linefeeds, which especially is&lt;br /&gt;
extremely nasty in patches contributed. As you probably can&amp;#039;t patch your&lt;br /&gt;
kernel&amp;#039;s IO to simply not automatically write CrLf instead of Lf in text files,&lt;br /&gt;
when using Vim use this setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;set fileformats=dos,unix  &amp;quot; Vim&amp;#039;s default on DOS/WIN/OS2&lt;br /&gt;
set fileformats=unix,dos  &amp;quot; Vim&amp;#039;s default on UNX, also use it on DOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Tools]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191273</id>
		<title>Editor Vim</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191273"/>
		<updated>2011-01-04T15:26:11Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Resolve HG conflicts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There exist only two real editors in the programmer&amp;#039;s world ;-)  One is Vim,&lt;br /&gt;
and the other is the &amp;#039;&amp;#039;eier-legende-woll-milch-sau&amp;#039;&amp;#039; (sorry for that German&lt;br /&gt;
phrase being a modified translation of&lt;br /&gt;
&amp;#039;&amp;#039;allrounder - all-in-one device suitable for every purpose&amp;#039;&amp;#039;,&lt;br /&gt;
couldn&amp;#039;t resist ;-) (X)Emacs. So here we go for Vim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Vim settings ==&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; have the following settings. For the tabstops=4 setting it may&lt;br /&gt;
not be desired to have this globally effective, you may want to restrict it to&lt;br /&gt;
an OOo/SO environment by evaluating the $SOLARENV environment variable,&lt;br /&gt;
&amp;lt;code&amp;gt;if $SOLARENV != &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set ts=4                &amp;quot; tabstops are 4 (for all code)&lt;br /&gt;
set sw=4                &amp;quot; shiftwidth is 4&lt;br /&gt;
set expandtab           &amp;quot; expand tabs to spaces&lt;br /&gt;
set showmatch           &amp;quot; briefly jump to matching brackets&lt;br /&gt;
set showmode            &amp;quot; the mode we&amp;#039;re in&lt;br /&gt;
if version &amp;gt;= 600&lt;br /&gt;
    filetype on             &amp;quot; enable file type detection&lt;br /&gt;
    filetype plugin on      &amp;quot; enable file type plugins&lt;br /&gt;
    filetype indent on      &amp;quot; enable file type indents&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; previous and next compiler error (quickfix)&lt;br /&gt;
map &amp;lt;C-P&amp;gt; :cp&amp;lt;CR&amp;gt;&lt;br /&gt;
map &amp;lt;C-N&amp;gt; :cn&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot; Only do this part when compiled with support for autocommands.&lt;br /&gt;
if has(&amp;quot;autocmd&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; In text files, always limit the width of text to 78 characters, tabs are 8&lt;br /&gt;
    autocmd BufRead *.txt,*.doc,*.dok setlocal tw=78 ts=8 sw=8 fo+=rn1&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat resource files and headers like C files&lt;br /&gt;
    autocmd BufRead *.hrc,*.src setlocal ft=c&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat generated UNO header files like C++ files&lt;br /&gt;
    autocmd BufRead *.hdl setlocal ft=cpp&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; mail bodies have a textwidth of 72 characters, activate numbering&lt;br /&gt;
    &amp;quot; formatting, reset comments to default, no indenting&lt;br /&gt;
    autocmd FileType mail setlocal tw=72 fo+=rn1 comments&amp;amp; nocindent&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in C/C++ files without &amp;#039;*&amp;#039; middle part&lt;br /&gt;
    autocmd FileType c,cpp setlocal comments^=s:/**,mb:\ ,e:*/&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in IDL files have a textwidth of 72 characters&lt;br /&gt;
    autocmd FileType idl setlocal comments^=s:/**,mb:\ ,e:*/ tw=72&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; OOo .xcu configuration files and the like&lt;br /&gt;
    autocmd FileType xml setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; HTML files&lt;br /&gt;
    autocmd FileType html,css setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; setting up for :make&lt;br /&gt;
set makeprg=$SOLARENV/bin/build.pl\ \-P4\ \-\-\ \-P4&lt;br /&gt;
&lt;br /&gt;
&amp;quot; broken whitespace&lt;br /&gt;
:au Syntax * syn match Error /\s\+$/ | syn match Error /^\s* \t\s*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vim and the GNU ID-utils ==&lt;br /&gt;
&lt;br /&gt;
As mentioned in [[Little_Helpers#GNU_ID-utils | Little Helpers&amp;#039; GNU Id-utils]], the &amp;#039;&amp;#039;eid&amp;#039;&amp;#039; command makes use of some&lt;br /&gt;
environment variables when invoking the editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv VISUAL   vim&lt;br /&gt;
setenv EIDARG   &amp;#039;+/%s/&amp;#039;&lt;br /&gt;
setenv EIDLDEL  &amp;#039;\&amp;lt;&amp;#039;&lt;br /&gt;
setenv EIDRDEL  &amp;#039;\&amp;gt;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To be able to invoke the &amp;#039;&amp;#039;lid&amp;#039;&amp;#039; utility from within Vim we need a key mapping&lt;br /&gt;
and function call, you may place this section into your &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; GNU id-utils, taken from :h ident-search&lt;br /&gt;
&amp;quot; Generate the ID file in the current directory or in .. or ../.. or ../../..&lt;br /&gt;
&amp;quot; To use it, place the cursor on a word, type &amp;quot;_u&amp;quot; and vim will load the file&lt;br /&gt;
&amp;quot; that contains the word.  Search for the next occurrence of the word in the&lt;br /&gt;
&amp;quot; same file with &amp;quot;n&amp;quot;.  Go to the next file with &amp;quot;_n&amp;quot;.&lt;br /&gt;
map _u :call ID_search()&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
map _n :n&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
function ID_search()&lt;br /&gt;
    let g:word = expand(&amp;quot;&amp;lt;cword&amp;gt;&amp;quot;)&lt;br /&gt;
    let x = system(&amp;quot;lid --key=none &amp;quot;. g:word)&lt;br /&gt;
    let x = substitute(x, &amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;g&amp;quot;)&lt;br /&gt;
    execute &amp;quot;next &amp;quot; . x&lt;br /&gt;
endfun&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== lid.vim plugin ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=251 lid.vim] is&lt;br /&gt;
a plugin to integrate GNU id-utils with Vim, providing a &amp;#039;&amp;#039;lid -g&amp;#039;&amp;#039; output in&lt;br /&gt;
the &amp;#039;&amp;#039;quickfix&amp;#039;&amp;#039; window that can be travelled using the &amp;#039;&amp;#039;:cnext&amp;#039;&amp;#039; and&lt;br /&gt;
&amp;#039;&amp;#039;:cprev&amp;#039;&amp;#039; commands respectively their keyboard mappings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Ctags ==&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s easy, as vim has builtin support for ctags, see &amp;#039;&amp;#039;:h tagsrch.txt&amp;#039;&amp;#039;, in&lt;br /&gt;
&amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; just tell it where to search for the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Tags files are searched first relative to the current file, then relative to&lt;br /&gt;
&amp;quot; the current working directory, and last in the $HOME directory.&lt;br /&gt;
set tags=./tags,./../tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags,tags,../tags,../../tags,../../../tags,../../../../tags,../../../../../tags,~/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Exuberant Ctags&amp;#039;&amp;#039; information and a script how to create the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; database see the [[Little_Helpers#Exuberant_Ctags | Little Helpers&amp;#039; Exuberant Ctags]] section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Cscope ==&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Cscope&amp;#039;&amp;#039; information and a script how to create a cscope&lt;br /&gt;
database for an OOo project see the&lt;br /&gt;
[[Little_Helpers#Cscope | Little Helpers&amp;#039; Cscope]]&lt;br /&gt;
section.&lt;br /&gt;
&lt;br /&gt;
=== Builtin Cscope support ===&lt;br /&gt;
&lt;br /&gt;
Vim has builtin (well, if compiled in) support for cscope, see &amp;#039;&amp;#039;:h cscope&amp;#039;&amp;#039;.&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; you may want to setup some things, but this is also a matter of&lt;br /&gt;
work habits. Consider the following an example and consult the fine manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Cscope settings&lt;br /&gt;
if has(&amp;quot;cscope&amp;quot;)&lt;br /&gt;
    &amp;quot; quickfix window usage&lt;br /&gt;
    set cscopequickfix=s-,c-,d-,i-,t-,e-&lt;br /&gt;
    &amp;quot; :tag and the like use :cstag&lt;br /&gt;
    set cscopetag&lt;br /&gt;
    &amp;quot; first search cscope, than tags file&lt;br /&gt;
    set cscopetagorder=0&lt;br /&gt;
    set nocsverb&lt;br /&gt;
    &amp;quot; add any database in current directory&lt;br /&gt;
    if filereadable(&amp;quot;cscope.out&amp;quot;)&lt;br /&gt;
        cs add cscope.out&lt;br /&gt;
        &amp;quot; else add database pointed to by environment&lt;br /&gt;
    elseif $CSCOPE_DB != &amp;quot;&amp;quot;&lt;br /&gt;
        cs add $CSCOPE_DB&lt;br /&gt;
    endif&lt;br /&gt;
    set csverb&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== More comfortable plugin script cecscope.vim ===&lt;br /&gt;
&lt;br /&gt;
The&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1453 command and menu driven cscope interface]&lt;br /&gt;
eases things a bit. It requires vim7.0aa snapshot #188 or later, the Vim7.1&lt;br /&gt;
release does fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Include file searches in Vim ==&lt;br /&gt;
&lt;br /&gt;
Set the &amp;#039;&amp;#039;path&amp;#039;&amp;#039; variable in &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Where to look for files in gf and ^Wf and similar commands,&lt;br /&gt;
&amp;quot; and for include files for i_^X^I and i_^X^D commands.&lt;br /&gt;
&amp;quot; To use VIM_INC in OOo/SO environment define&lt;br /&gt;
&amp;quot; alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
&amp;quot; Note the two space characters in the second substitute, and execute the alias after a setsolar.&lt;br /&gt;
&amp;quot; Under 4NT you need some rubbish like (note this isn&amp;#039;t updated since ages)&lt;br /&gt;
&amp;quot; alias solvim=set _uq_%0=%@unique[%tmp%] &amp;amp;&amp;amp; echos VIM_INC=&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; echo %SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/ \+-I/,/g&amp;quot;&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; set /r _uq_%0 &amp;amp;&amp;amp; del /q _uq_%0&lt;br /&gt;
set path=.,./inc,./../inc,./../../inc,./../../../inc,./../../../../inc,$VIM_INC,,/usr/local/include,/usr/include&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you missed it in the comments above: you need to invoke a shell alias&lt;br /&gt;
after having sourced the environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcsh&lt;br /&gt;
alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
source LinuxX86Env.Set&lt;br /&gt;
solvim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: in Vim &amp;#039;&amp;#039;:h include-search&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compiling a source from within Vim ==&lt;br /&gt;
&lt;br /&gt;
Compiling the source from within the editor is of course desired, as warnings&lt;br /&gt;
and errors generated by the compiler let you directly jump to the line in&lt;br /&gt;
question. There are some quirks to be solved for the OOo/SO environment, but no&lt;br /&gt;
real problem, just examine the working &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; sections below. Pressing&lt;br /&gt;
Ctrl+K changes the current window&amp;#039;s directory locally to the one of the file&lt;br /&gt;
loaded, if there is a makfile.mk in that directory, sets the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039;&lt;br /&gt;
variable to the command needed to dmake just the current file, and executes it.&lt;br /&gt;
&lt;br /&gt;
For the quickfix window to pull its content from the compiler output we need to&lt;br /&gt;
have a valid error file setting, and as there&amp;#039;s always the hassle with DOS&lt;br /&gt;
based systems, we also need to take care of that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; This uses the TMP environment variable, be sure to have it set!&lt;br /&gt;
if $COMSPEC =~ &amp;quot;\\&amp;quot;&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having any DOS&lt;br /&gt;
    set makeef=$TMP\\vim##.err  &amp;quot; :make errorfile&lt;br /&gt;
else&lt;br /&gt;
    set makeef=$TMP/vim##.err   &amp;quot; :make errorfile&lt;br /&gt;
endif&lt;br /&gt;
if $TMP =~ &amp;quot;\\&amp;quot; &amp;amp;&amp;amp; ($COMSPEC =~ &amp;quot;4&amp;quot; || $SHELL =~ &amp;quot;4&amp;quot;)&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having some DOS assumed to be 4DOS compatible&lt;br /&gt;
    set shellpipe=\|&amp;amp;\ tee&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039; setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Call appropriate makeprg with Ctrl+K&lt;br /&gt;
map &amp;lt;C-K&amp;gt; :call Make()&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if $SOLARENV == &amp;quot;&amp;quot;&lt;br /&gt;
    &amp;quot; Normal makeprg, not in OpenOffice.org/StarOffice environment&lt;br /&gt;
    function Make()&lt;br /&gt;
        make&lt;br /&gt;
    endfun&lt;br /&gt;
else&lt;br /&gt;
    &amp;quot; Special dmake, only in OpenOffice.org/StarOffice environment&lt;br /&gt;
    set makeprg=dmake&lt;br /&gt;
    function SetMakeprg()&lt;br /&gt;
        &amp;quot; For a detached gvim we need to source the environment, assuming&lt;br /&gt;
        &amp;quot; the current working directory being source/core/tool/ or&lt;br /&gt;
        &amp;quot; similar, and having a copy of the setsolar -file environment&lt;br /&gt;
        &amp;quot; file as module/../ENV.$INPATH or in $SRC_ROOT set a&lt;br /&gt;
        &amp;quot; ln -s LinuxX86Env.Set ENV.$INPATH&lt;br /&gt;
        &amp;quot; For terminal vim re-sourcing the environment isn&amp;#039;t necessary.&lt;br /&gt;
        if has(&amp;quot;gui_running&amp;quot;)&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=source\ ./ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        else&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        endif&lt;br /&gt;
        &amp;quot; Just some copy&amp;amp;paste versions:&lt;br /&gt;
        &amp;quot; Entire module, edit ENV.... and set BUILD_COMMAND to content of build alias&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ $BUILD_COMMAND&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;set makeprg=dmake\ product=full&lt;br /&gt;
        &amp;quot; temporary override, no wall, no debug&lt;br /&gt;
        &amp;quot;if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;else&lt;br /&gt;
        &amp;quot;    set makeprg=dmake&lt;br /&gt;
        &amp;quot;endif&lt;br /&gt;
    endfun&lt;br /&gt;
    function Make()&lt;br /&gt;
        let my_local_path = expand(&amp;quot;%:h&amp;quot;)&lt;br /&gt;
        if (my_local_path == &amp;quot;&amp;quot;)&lt;br /&gt;
            let my_local_path = &amp;quot;.&amp;quot;&lt;br /&gt;
        endif&lt;br /&gt;
        if filereadable( my_local_path . &amp;quot;/makefile.mk&amp;quot; )&lt;br /&gt;
            exec &amp;#039;lcd &amp;#039; . my_local_path&lt;br /&gt;
            call SetMakeprg()&lt;br /&gt;
            make&lt;br /&gt;
        else&lt;br /&gt;
            echo &amp;quot;No makefile.mk in &amp;quot; . my_local_path&lt;br /&gt;
        endif&lt;br /&gt;
    endfun&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CVS/SVN/HG integration ==&lt;br /&gt;
&lt;br /&gt;
=== CVS/SVN/HG commands ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=90 vcscommand.vim - CVS/SVN integration plugin]&lt;br /&gt;
&lt;br /&gt;
A nice plugin to handle CVS, SVN and HG actions from within Vim. Most useful being&lt;br /&gt;
the VCSAnnotate and VCSVimDiff commands, IMHO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve CVS conflicts ===&lt;br /&gt;
&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1370 CVSconflict - CVS conflict resolution using vimdiff] &lt;br /&gt;
&lt;br /&gt;
A plugin that converts a source file containing CVS merge conflicts into two&lt;br /&gt;
VimDiff buffers that then can be easily edited.&lt;br /&gt;
&lt;br /&gt;
This also should work with inline [[Mercurial]] merge conflicts (no separate files created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve HG conflicts ===&lt;br /&gt;
&lt;br /&gt;
See [http://mercurial.selenic.com/wiki/TipsAndTricks#Using_Vim_as_the_filemerge_program Mercurial wiki, using Vim as the filemerge program] for gvim diff.&lt;br /&gt;
&lt;br /&gt;
== Other useful plugins and resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1520 OmniCppComplete - C++ completion omnifunc with a ctags database]&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1997 undo_tags - small utility that lets you tag undo branches]&lt;br /&gt;
* [http://www.erack.de/bookmarks/D.html#VIM erAck&amp;#039;s &amp;#039;&amp;#039;VIM and related&amp;#039;&amp;#039; bookmarks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A note for developers on WIN\DOS ==&lt;br /&gt;
&lt;br /&gt;
Please don&amp;#039;t complicate life for developers on other platforms by interspersing&lt;br /&gt;
sources with CarriageReturn characters before linefeeds, which especially is&lt;br /&gt;
extremely nasty in patches contributed. As you probably can&amp;#039;t patch your&lt;br /&gt;
kernel&amp;#039;s IO to simply not automatically write CrLf instead of Lf in text files,&lt;br /&gt;
when using Vim use this setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;set fileformats=dos,unix  &amp;quot; Vim&amp;#039;s default on DOS/WIN/OS2&lt;br /&gt;
set fileformats=unix,dos  &amp;quot; Vim&amp;#039;s default on UNX, also use it on DOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Tools]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191272</id>
		<title>Editor Vim</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191272"/>
		<updated>2011-01-04T15:18:07Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* CVS/SVN/HG integration */ gvim diff to resolve HG conflicts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There exist only two real editors in the programmer&amp;#039;s world ;-)  One is Vim,&lt;br /&gt;
and the other is the &amp;#039;&amp;#039;eier-legende-woll-milch-sau&amp;#039;&amp;#039; (sorry for that German&lt;br /&gt;
phrase being a modified translation of&lt;br /&gt;
&amp;#039;&amp;#039;allrounder - all-in-one device suitable for every purpose&amp;#039;&amp;#039;,&lt;br /&gt;
couldn&amp;#039;t resist ;-) (X)Emacs. So here we go for Vim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Vim settings ==&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; have the following settings. For the tabstops=4 setting it may&lt;br /&gt;
not be desired to have this globally effective, you may want to restrict it to&lt;br /&gt;
an OOo/SO environment by evaluating the $SOLARENV environment variable,&lt;br /&gt;
&amp;lt;code&amp;gt;if $SOLARENV != &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set ts=4                &amp;quot; tabstops are 4 (for all code)&lt;br /&gt;
set sw=4                &amp;quot; shiftwidth is 4&lt;br /&gt;
set expandtab           &amp;quot; expand tabs to spaces&lt;br /&gt;
set showmatch           &amp;quot; briefly jump to matching brackets&lt;br /&gt;
set showmode            &amp;quot; the mode we&amp;#039;re in&lt;br /&gt;
if version &amp;gt;= 600&lt;br /&gt;
    filetype on             &amp;quot; enable file type detection&lt;br /&gt;
    filetype plugin on      &amp;quot; enable file type plugins&lt;br /&gt;
    filetype indent on      &amp;quot; enable file type indents&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; previous and next compiler error (quickfix)&lt;br /&gt;
map &amp;lt;C-P&amp;gt; :cp&amp;lt;CR&amp;gt;&lt;br /&gt;
map &amp;lt;C-N&amp;gt; :cn&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot; Only do this part when compiled with support for autocommands.&lt;br /&gt;
if has(&amp;quot;autocmd&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; In text files, always limit the width of text to 78 characters, tabs are 8&lt;br /&gt;
    autocmd BufRead *.txt,*.doc,*.dok setlocal tw=78 ts=8 sw=8 fo+=rn1&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat resource files and headers like C files&lt;br /&gt;
    autocmd BufRead *.hrc,*.src setlocal ft=c&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat generated UNO header files like C++ files&lt;br /&gt;
    autocmd BufRead *.hdl setlocal ft=cpp&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; mail bodies have a textwidth of 72 characters, activate numbering&lt;br /&gt;
    &amp;quot; formatting, reset comments to default, no indenting&lt;br /&gt;
    autocmd FileType mail setlocal tw=72 fo+=rn1 comments&amp;amp; nocindent&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in C/C++ files without &amp;#039;*&amp;#039; middle part&lt;br /&gt;
    autocmd FileType c,cpp setlocal comments^=s:/**,mb:\ ,e:*/&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in IDL files have a textwidth of 72 characters&lt;br /&gt;
    autocmd FileType idl setlocal comments^=s:/**,mb:\ ,e:*/ tw=72&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; OOo .xcu configuration files and the like&lt;br /&gt;
    autocmd FileType xml setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; HTML files&lt;br /&gt;
    autocmd FileType html,css setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; setting up for :make&lt;br /&gt;
set makeprg=$SOLARENV/bin/build.pl\ \-P4\ \-\-\ \-P4&lt;br /&gt;
&lt;br /&gt;
&amp;quot; broken whitespace&lt;br /&gt;
:au Syntax * syn match Error /\s\+$/ | syn match Error /^\s* \t\s*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vim and the GNU ID-utils ==&lt;br /&gt;
&lt;br /&gt;
As mentioned in [[Little_Helpers#GNU_ID-utils | Little Helpers&amp;#039; GNU Id-utils]], the &amp;#039;&amp;#039;eid&amp;#039;&amp;#039; command makes use of some&lt;br /&gt;
environment variables when invoking the editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv VISUAL   vim&lt;br /&gt;
setenv EIDARG   &amp;#039;+/%s/&amp;#039;&lt;br /&gt;
setenv EIDLDEL  &amp;#039;\&amp;lt;&amp;#039;&lt;br /&gt;
setenv EIDRDEL  &amp;#039;\&amp;gt;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To be able to invoke the &amp;#039;&amp;#039;lid&amp;#039;&amp;#039; utility from within Vim we need a key mapping&lt;br /&gt;
and function call, you may place this section into your &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; GNU id-utils, taken from :h ident-search&lt;br /&gt;
&amp;quot; Generate the ID file in the current directory or in .. or ../.. or ../../..&lt;br /&gt;
&amp;quot; To use it, place the cursor on a word, type &amp;quot;_u&amp;quot; and vim will load the file&lt;br /&gt;
&amp;quot; that contains the word.  Search for the next occurrence of the word in the&lt;br /&gt;
&amp;quot; same file with &amp;quot;n&amp;quot;.  Go to the next file with &amp;quot;_n&amp;quot;.&lt;br /&gt;
map _u :call ID_search()&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
map _n :n&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
function ID_search()&lt;br /&gt;
    let g:word = expand(&amp;quot;&amp;lt;cword&amp;gt;&amp;quot;)&lt;br /&gt;
    let x = system(&amp;quot;lid --key=none &amp;quot;. g:word)&lt;br /&gt;
    let x = substitute(x, &amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;g&amp;quot;)&lt;br /&gt;
    execute &amp;quot;next &amp;quot; . x&lt;br /&gt;
endfun&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== lid.vim plugin ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=251 lid.vim] is&lt;br /&gt;
a plugin to integrate GNU id-utils with Vim, providing a &amp;#039;&amp;#039;lid -g&amp;#039;&amp;#039; output in&lt;br /&gt;
the &amp;#039;&amp;#039;quickfix&amp;#039;&amp;#039; window that can be travelled using the &amp;#039;&amp;#039;:cnext&amp;#039;&amp;#039; and&lt;br /&gt;
&amp;#039;&amp;#039;:cprev&amp;#039;&amp;#039; commands respectively their keyboard mappings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Ctags ==&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s easy, as vim has builtin support for ctags, see &amp;#039;&amp;#039;:h tagsrch.txt&amp;#039;&amp;#039;, in&lt;br /&gt;
&amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; just tell it where to search for the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Tags files are searched first relative to the current file, then relative to&lt;br /&gt;
&amp;quot; the current working directory, and last in the $HOME directory.&lt;br /&gt;
set tags=./tags,./../tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags,tags,../tags,../../tags,../../../tags,../../../../tags,../../../../../tags,~/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Exuberant Ctags&amp;#039;&amp;#039; information and a script how to create the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; database see the [[Little_Helpers#Exuberant_Ctags | Little Helpers&amp;#039; Exuberant Ctags]] section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Cscope ==&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Cscope&amp;#039;&amp;#039; information and a script how to create a cscope&lt;br /&gt;
database for an OOo project see the&lt;br /&gt;
[[Little_Helpers#Cscope | Little Helpers&amp;#039; Cscope]]&lt;br /&gt;
section.&lt;br /&gt;
&lt;br /&gt;
=== Builtin Cscope support ===&lt;br /&gt;
&lt;br /&gt;
Vim has builtin (well, if compiled in) support for cscope, see &amp;#039;&amp;#039;:h cscope&amp;#039;&amp;#039;.&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; you may want to setup some things, but this is also a matter of&lt;br /&gt;
work habits. Consider the following an example and consult the fine manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Cscope settings&lt;br /&gt;
if has(&amp;quot;cscope&amp;quot;)&lt;br /&gt;
    &amp;quot; quickfix window usage&lt;br /&gt;
    set cscopequickfix=s-,c-,d-,i-,t-,e-&lt;br /&gt;
    &amp;quot; :tag and the like use :cstag&lt;br /&gt;
    set cscopetag&lt;br /&gt;
    &amp;quot; first search cscope, than tags file&lt;br /&gt;
    set cscopetagorder=0&lt;br /&gt;
    set nocsverb&lt;br /&gt;
    &amp;quot; add any database in current directory&lt;br /&gt;
    if filereadable(&amp;quot;cscope.out&amp;quot;)&lt;br /&gt;
        cs add cscope.out&lt;br /&gt;
        &amp;quot; else add database pointed to by environment&lt;br /&gt;
    elseif $CSCOPE_DB != &amp;quot;&amp;quot;&lt;br /&gt;
        cs add $CSCOPE_DB&lt;br /&gt;
    endif&lt;br /&gt;
    set csverb&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== More comfortable plugin script cecscope.vim ===&lt;br /&gt;
&lt;br /&gt;
The&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1453 command and menu driven cscope interface]&lt;br /&gt;
eases things a bit. It requires vim7.0aa snapshot #188 or later, the Vim7.1&lt;br /&gt;
release does fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Include file searches in Vim ==&lt;br /&gt;
&lt;br /&gt;
Set the &amp;#039;&amp;#039;path&amp;#039;&amp;#039; variable in &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Where to look for files in gf and ^Wf and similar commands,&lt;br /&gt;
&amp;quot; and for include files for i_^X^I and i_^X^D commands.&lt;br /&gt;
&amp;quot; To use VIM_INC in OOo/SO environment define&lt;br /&gt;
&amp;quot; alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
&amp;quot; Note the two space characters in the second substitute, and execute the alias after a setsolar.&lt;br /&gt;
&amp;quot; Under 4NT you need some rubbish like (note this isn&amp;#039;t updated since ages)&lt;br /&gt;
&amp;quot; alias solvim=set _uq_%0=%@unique[%tmp%] &amp;amp;&amp;amp; echos VIM_INC=&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; echo %SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/ \+-I/,/g&amp;quot;&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; set /r _uq_%0 &amp;amp;&amp;amp; del /q _uq_%0&lt;br /&gt;
set path=.,./inc,./../inc,./../../inc,./../../../inc,./../../../../inc,$VIM_INC,,/usr/local/include,/usr/include&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you missed it in the comments above: you need to invoke a shell alias&lt;br /&gt;
after having sourced the environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcsh&lt;br /&gt;
alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
source LinuxX86Env.Set&lt;br /&gt;
solvim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: in Vim &amp;#039;&amp;#039;:h include-search&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compiling a source from within Vim ==&lt;br /&gt;
&lt;br /&gt;
Compiling the source from within the editor is of course desired, as warnings&lt;br /&gt;
and errors generated by the compiler let you directly jump to the line in&lt;br /&gt;
question. There are some quirks to be solved for the OOo/SO environment, but no&lt;br /&gt;
real problem, just examine the working &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; sections below. Pressing&lt;br /&gt;
Ctrl+K changes the current window&amp;#039;s directory locally to the one of the file&lt;br /&gt;
loaded, if there is a makfile.mk in that directory, sets the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039;&lt;br /&gt;
variable to the command needed to dmake just the current file, and executes it.&lt;br /&gt;
&lt;br /&gt;
For the quickfix window to pull its content from the compiler output we need to&lt;br /&gt;
have a valid error file setting, and as there&amp;#039;s always the hassle with DOS&lt;br /&gt;
based systems, we also need to take care of that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; This uses the TMP environment variable, be sure to have it set!&lt;br /&gt;
if $COMSPEC =~ &amp;quot;\\&amp;quot;&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having any DOS&lt;br /&gt;
    set makeef=$TMP\\vim##.err  &amp;quot; :make errorfile&lt;br /&gt;
else&lt;br /&gt;
    set makeef=$TMP/vim##.err   &amp;quot; :make errorfile&lt;br /&gt;
endif&lt;br /&gt;
if $TMP =~ &amp;quot;\\&amp;quot; &amp;amp;&amp;amp; ($COMSPEC =~ &amp;quot;4&amp;quot; || $SHELL =~ &amp;quot;4&amp;quot;)&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having some DOS assumed to be 4DOS compatible&lt;br /&gt;
    set shellpipe=\|&amp;amp;\ tee&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039; setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Call appropriate makeprg with Ctrl+K&lt;br /&gt;
map &amp;lt;C-K&amp;gt; :call Make()&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if $SOLARENV == &amp;quot;&amp;quot;&lt;br /&gt;
    &amp;quot; Normal makeprg, not in OpenOffice.org/StarOffice environment&lt;br /&gt;
    function Make()&lt;br /&gt;
        make&lt;br /&gt;
    endfun&lt;br /&gt;
else&lt;br /&gt;
    &amp;quot; Special dmake, only in OpenOffice.org/StarOffice environment&lt;br /&gt;
    set makeprg=dmake&lt;br /&gt;
    function SetMakeprg()&lt;br /&gt;
        &amp;quot; For a detached gvim we need to source the environment, assuming&lt;br /&gt;
        &amp;quot; the current working directory being source/core/tool/ or&lt;br /&gt;
        &amp;quot; similar, and having a copy of the setsolar -file environment&lt;br /&gt;
        &amp;quot; file as module/../ENV.$INPATH or in $SRC_ROOT set a&lt;br /&gt;
        &amp;quot; ln -s LinuxX86Env.Set ENV.$INPATH&lt;br /&gt;
        &amp;quot; For terminal vim re-sourcing the environment isn&amp;#039;t necessary.&lt;br /&gt;
        if has(&amp;quot;gui_running&amp;quot;)&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=source\ ./ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        else&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        endif&lt;br /&gt;
        &amp;quot; Just some copy&amp;amp;paste versions:&lt;br /&gt;
        &amp;quot; Entire module, edit ENV.... and set BUILD_COMMAND to content of build alias&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ $BUILD_COMMAND&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;set makeprg=dmake\ product=full&lt;br /&gt;
        &amp;quot; temporary override, no wall, no debug&lt;br /&gt;
        &amp;quot;if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;else&lt;br /&gt;
        &amp;quot;    set makeprg=dmake&lt;br /&gt;
        &amp;quot;endif&lt;br /&gt;
    endfun&lt;br /&gt;
    function Make()&lt;br /&gt;
        let my_local_path = expand(&amp;quot;%:h&amp;quot;)&lt;br /&gt;
        if (my_local_path == &amp;quot;&amp;quot;)&lt;br /&gt;
            let my_local_path = &amp;quot;.&amp;quot;&lt;br /&gt;
        endif&lt;br /&gt;
        if filereadable( my_local_path . &amp;quot;/makefile.mk&amp;quot; )&lt;br /&gt;
            exec &amp;#039;lcd &amp;#039; . my_local_path&lt;br /&gt;
            call SetMakeprg()&lt;br /&gt;
            make&lt;br /&gt;
        else&lt;br /&gt;
            echo &amp;quot;No makefile.mk in &amp;quot; . my_local_path&lt;br /&gt;
        endif&lt;br /&gt;
    endfun&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CVS/SVN/HG integration ==&lt;br /&gt;
&lt;br /&gt;
=== CVS/SVN/HG commands ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=90 vcscommand.vim - CVS/SVN integration plugin]&lt;br /&gt;
&lt;br /&gt;
A nice plugin to handle CVS, SVN and HG actions from within Vim. Most useful being&lt;br /&gt;
the VCSAnnotate and VCSVimDiff commands, IMHO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve CVS conflicts ===&lt;br /&gt;
&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1370 CVSconflict - CVS conflict resolution using vimdiff] &lt;br /&gt;
&lt;br /&gt;
A plugin that converts a source file containing CVS merge conflicts into two&lt;br /&gt;
VimDiff buffers that then can be easily edited.&lt;br /&gt;
&lt;br /&gt;
This also should work with inline [[Mercurial]] merge conflicts (no separate files created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve HG conflicts ===&lt;br /&gt;
&lt;br /&gt;
See [http://mercurial.selenic.com/wiki/TipsAndTricks#Using_Vim_as_the_filemerge_program| Mercurial wiki, using Vim as the filemerge program] for gvim diff.&lt;br /&gt;
&lt;br /&gt;
== Other useful plugins and resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1520 OmniCppComplete - C++ completion omnifunc with a ctags database]&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1997 undo_tags - small utility that lets you tag undo branches]&lt;br /&gt;
* [http://www.erack.de/bookmarks/D.html#VIM erAck&amp;#039;s &amp;#039;&amp;#039;VIM and related&amp;#039;&amp;#039; bookmarks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A note for developers on WIN\DOS ==&lt;br /&gt;
&lt;br /&gt;
Please don&amp;#039;t complicate life for developers on other platforms by interspersing&lt;br /&gt;
sources with CarriageReturn characters before linefeeds, which especially is&lt;br /&gt;
extremely nasty in patches contributed. As you probably can&amp;#039;t patch your&lt;br /&gt;
kernel&amp;#039;s IO to simply not automatically write CrLf instead of Lf in text files,&lt;br /&gt;
when using Vim use this setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;set fileformats=dos,unix  &amp;quot; Vim&amp;#039;s default on DOS/WIN/OS2&lt;br /&gt;
set fileformats=unix,dos  &amp;quot; Vim&amp;#039;s default on UNX, also use it on DOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Tools]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191271</id>
		<title>Editor Vim</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=191271"/>
		<updated>2011-01-04T15:12:09Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Resolve CVS conflicts */ should also work with inline HG conflicts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There exist only two real editors in the programmer&amp;#039;s world ;-)  One is Vim,&lt;br /&gt;
and the other is the &amp;#039;&amp;#039;eier-legende-woll-milch-sau&amp;#039;&amp;#039; (sorry for that German&lt;br /&gt;
phrase being a modified translation of&lt;br /&gt;
&amp;#039;&amp;#039;allrounder - all-in-one device suitable for every purpose&amp;#039;&amp;#039;,&lt;br /&gt;
couldn&amp;#039;t resist ;-) (X)Emacs. So here we go for Vim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Vim settings ==&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; have the following settings. For the tabstops=4 setting it may&lt;br /&gt;
not be desired to have this globally effective, you may want to restrict it to&lt;br /&gt;
an OOo/SO environment by evaluating the $SOLARENV environment variable,&lt;br /&gt;
&amp;lt;code&amp;gt;if $SOLARENV != &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set ts=4                &amp;quot; tabstops are 4 (for all code)&lt;br /&gt;
set sw=4                &amp;quot; shiftwidth is 4&lt;br /&gt;
set expandtab           &amp;quot; expand tabs to spaces&lt;br /&gt;
set showmatch           &amp;quot; briefly jump to matching brackets&lt;br /&gt;
set showmode            &amp;quot; the mode we&amp;#039;re in&lt;br /&gt;
if version &amp;gt;= 600&lt;br /&gt;
    filetype on             &amp;quot; enable file type detection&lt;br /&gt;
    filetype plugin on      &amp;quot; enable file type plugins&lt;br /&gt;
    filetype indent on      &amp;quot; enable file type indents&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; previous and next compiler error (quickfix)&lt;br /&gt;
map &amp;lt;C-P&amp;gt; :cp&amp;lt;CR&amp;gt;&lt;br /&gt;
map &amp;lt;C-N&amp;gt; :cn&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot; Only do this part when compiled with support for autocommands.&lt;br /&gt;
if has(&amp;quot;autocmd&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; In text files, always limit the width of text to 78 characters, tabs are 8&lt;br /&gt;
    autocmd BufRead *.txt,*.doc,*.dok setlocal tw=78 ts=8 sw=8 fo+=rn1&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat resource files and headers like C files&lt;br /&gt;
    autocmd BufRead *.hrc,*.src setlocal ft=c&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat generated UNO header files like C++ files&lt;br /&gt;
    autocmd BufRead *.hdl setlocal ft=cpp&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; mail bodies have a textwidth of 72 characters, activate numbering&lt;br /&gt;
    &amp;quot; formatting, reset comments to default, no indenting&lt;br /&gt;
    autocmd FileType mail setlocal tw=72 fo+=rn1 comments&amp;amp; nocindent&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in C/C++ files without &amp;#039;*&amp;#039; middle part&lt;br /&gt;
    autocmd FileType c,cpp setlocal comments^=s:/**,mb:\ ,e:*/&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in IDL files have a textwidth of 72 characters&lt;br /&gt;
    autocmd FileType idl setlocal comments^=s:/**,mb:\ ,e:*/ tw=72&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; OOo .xcu configuration files and the like&lt;br /&gt;
    autocmd FileType xml setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; HTML files&lt;br /&gt;
    autocmd FileType html,css setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; setting up for :make&lt;br /&gt;
set makeprg=$SOLARENV/bin/build.pl\ \-P4\ \-\-\ \-P4&lt;br /&gt;
&lt;br /&gt;
&amp;quot; broken whitespace&lt;br /&gt;
:au Syntax * syn match Error /\s\+$/ | syn match Error /^\s* \t\s*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vim and the GNU ID-utils ==&lt;br /&gt;
&lt;br /&gt;
As mentioned in [[Little_Helpers#GNU_ID-utils | Little Helpers&amp;#039; GNU Id-utils]], the &amp;#039;&amp;#039;eid&amp;#039;&amp;#039; command makes use of some&lt;br /&gt;
environment variables when invoking the editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv VISUAL   vim&lt;br /&gt;
setenv EIDARG   &amp;#039;+/%s/&amp;#039;&lt;br /&gt;
setenv EIDLDEL  &amp;#039;\&amp;lt;&amp;#039;&lt;br /&gt;
setenv EIDRDEL  &amp;#039;\&amp;gt;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To be able to invoke the &amp;#039;&amp;#039;lid&amp;#039;&amp;#039; utility from within Vim we need a key mapping&lt;br /&gt;
and function call, you may place this section into your &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; GNU id-utils, taken from :h ident-search&lt;br /&gt;
&amp;quot; Generate the ID file in the current directory or in .. or ../.. or ../../..&lt;br /&gt;
&amp;quot; To use it, place the cursor on a word, type &amp;quot;_u&amp;quot; and vim will load the file&lt;br /&gt;
&amp;quot; that contains the word.  Search for the next occurrence of the word in the&lt;br /&gt;
&amp;quot; same file with &amp;quot;n&amp;quot;.  Go to the next file with &amp;quot;_n&amp;quot;.&lt;br /&gt;
map _u :call ID_search()&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
map _n :n&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
function ID_search()&lt;br /&gt;
    let g:word = expand(&amp;quot;&amp;lt;cword&amp;gt;&amp;quot;)&lt;br /&gt;
    let x = system(&amp;quot;lid --key=none &amp;quot;. g:word)&lt;br /&gt;
    let x = substitute(x, &amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;g&amp;quot;)&lt;br /&gt;
    execute &amp;quot;next &amp;quot; . x&lt;br /&gt;
endfun&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== lid.vim plugin ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=251 lid.vim] is&lt;br /&gt;
a plugin to integrate GNU id-utils with Vim, providing a &amp;#039;&amp;#039;lid -g&amp;#039;&amp;#039; output in&lt;br /&gt;
the &amp;#039;&amp;#039;quickfix&amp;#039;&amp;#039; window that can be travelled using the &amp;#039;&amp;#039;:cnext&amp;#039;&amp;#039; and&lt;br /&gt;
&amp;#039;&amp;#039;:cprev&amp;#039;&amp;#039; commands respectively their keyboard mappings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Ctags ==&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s easy, as vim has builtin support for ctags, see &amp;#039;&amp;#039;:h tagsrch.txt&amp;#039;&amp;#039;, in&lt;br /&gt;
&amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; just tell it where to search for the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Tags files are searched first relative to the current file, then relative to&lt;br /&gt;
&amp;quot; the current working directory, and last in the $HOME directory.&lt;br /&gt;
set tags=./tags,./../tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags,tags,../tags,../../tags,../../../tags,../../../../tags,../../../../../tags,~/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Exuberant Ctags&amp;#039;&amp;#039; information and a script how to create the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; database see the [[Little_Helpers#Exuberant_Ctags | Little Helpers&amp;#039; Exuberant Ctags]] section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Cscope ==&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Cscope&amp;#039;&amp;#039; information and a script how to create a cscope&lt;br /&gt;
database for an OOo project see the&lt;br /&gt;
[[Little_Helpers#Cscope | Little Helpers&amp;#039; Cscope]]&lt;br /&gt;
section.&lt;br /&gt;
&lt;br /&gt;
=== Builtin Cscope support ===&lt;br /&gt;
&lt;br /&gt;
Vim has builtin (well, if compiled in) support for cscope, see &amp;#039;&amp;#039;:h cscope&amp;#039;&amp;#039;.&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; you may want to setup some things, but this is also a matter of&lt;br /&gt;
work habits. Consider the following an example and consult the fine manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Cscope settings&lt;br /&gt;
if has(&amp;quot;cscope&amp;quot;)&lt;br /&gt;
    &amp;quot; quickfix window usage&lt;br /&gt;
    set cscopequickfix=s-,c-,d-,i-,t-,e-&lt;br /&gt;
    &amp;quot; :tag and the like use :cstag&lt;br /&gt;
    set cscopetag&lt;br /&gt;
    &amp;quot; first search cscope, than tags file&lt;br /&gt;
    set cscopetagorder=0&lt;br /&gt;
    set nocsverb&lt;br /&gt;
    &amp;quot; add any database in current directory&lt;br /&gt;
    if filereadable(&amp;quot;cscope.out&amp;quot;)&lt;br /&gt;
        cs add cscope.out&lt;br /&gt;
        &amp;quot; else add database pointed to by environment&lt;br /&gt;
    elseif $CSCOPE_DB != &amp;quot;&amp;quot;&lt;br /&gt;
        cs add $CSCOPE_DB&lt;br /&gt;
    endif&lt;br /&gt;
    set csverb&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== More comfortable plugin script cecscope.vim ===&lt;br /&gt;
&lt;br /&gt;
The&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1453 command and menu driven cscope interface]&lt;br /&gt;
eases things a bit. It requires vim7.0aa snapshot #188 or later, the Vim7.1&lt;br /&gt;
release does fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Include file searches in Vim ==&lt;br /&gt;
&lt;br /&gt;
Set the &amp;#039;&amp;#039;path&amp;#039;&amp;#039; variable in &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Where to look for files in gf and ^Wf and similar commands,&lt;br /&gt;
&amp;quot; and for include files for i_^X^I and i_^X^D commands.&lt;br /&gt;
&amp;quot; To use VIM_INC in OOo/SO environment define&lt;br /&gt;
&amp;quot; alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
&amp;quot; Note the two space characters in the second substitute, and execute the alias after a setsolar.&lt;br /&gt;
&amp;quot; Under 4NT you need some rubbish like (note this isn&amp;#039;t updated since ages)&lt;br /&gt;
&amp;quot; alias solvim=set _uq_%0=%@unique[%tmp%] &amp;amp;&amp;amp; echos VIM_INC=&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; echo %SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/ \+-I/,/g&amp;quot;&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; set /r _uq_%0 &amp;amp;&amp;amp; del /q _uq_%0&lt;br /&gt;
set path=.,./inc,./../inc,./../../inc,./../../../inc,./../../../../inc,$VIM_INC,,/usr/local/include,/usr/include&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you missed it in the comments above: you need to invoke a shell alias&lt;br /&gt;
after having sourced the environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcsh&lt;br /&gt;
alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
source LinuxX86Env.Set&lt;br /&gt;
solvim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: in Vim &amp;#039;&amp;#039;:h include-search&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compiling a source from within Vim ==&lt;br /&gt;
&lt;br /&gt;
Compiling the source from within the editor is of course desired, as warnings&lt;br /&gt;
and errors generated by the compiler let you directly jump to the line in&lt;br /&gt;
question. There are some quirks to be solved for the OOo/SO environment, but no&lt;br /&gt;
real problem, just examine the working &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; sections below. Pressing&lt;br /&gt;
Ctrl+K changes the current window&amp;#039;s directory locally to the one of the file&lt;br /&gt;
loaded, if there is a makfile.mk in that directory, sets the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039;&lt;br /&gt;
variable to the command needed to dmake just the current file, and executes it.&lt;br /&gt;
&lt;br /&gt;
For the quickfix window to pull its content from the compiler output we need to&lt;br /&gt;
have a valid error file setting, and as there&amp;#039;s always the hassle with DOS&lt;br /&gt;
based systems, we also need to take care of that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; This uses the TMP environment variable, be sure to have it set!&lt;br /&gt;
if $COMSPEC =~ &amp;quot;\\&amp;quot;&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having any DOS&lt;br /&gt;
    set makeef=$TMP\\vim##.err  &amp;quot; :make errorfile&lt;br /&gt;
else&lt;br /&gt;
    set makeef=$TMP/vim##.err   &amp;quot; :make errorfile&lt;br /&gt;
endif&lt;br /&gt;
if $TMP =~ &amp;quot;\\&amp;quot; &amp;amp;&amp;amp; ($COMSPEC =~ &amp;quot;4&amp;quot; || $SHELL =~ &amp;quot;4&amp;quot;)&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having some DOS assumed to be 4DOS compatible&lt;br /&gt;
    set shellpipe=\|&amp;amp;\ tee&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039; setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Call appropriate makeprg with Ctrl+K&lt;br /&gt;
map &amp;lt;C-K&amp;gt; :call Make()&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if $SOLARENV == &amp;quot;&amp;quot;&lt;br /&gt;
    &amp;quot; Normal makeprg, not in OpenOffice.org/StarOffice environment&lt;br /&gt;
    function Make()&lt;br /&gt;
        make&lt;br /&gt;
    endfun&lt;br /&gt;
else&lt;br /&gt;
    &amp;quot; Special dmake, only in OpenOffice.org/StarOffice environment&lt;br /&gt;
    set makeprg=dmake&lt;br /&gt;
    function SetMakeprg()&lt;br /&gt;
        &amp;quot; For a detached gvim we need to source the environment, assuming&lt;br /&gt;
        &amp;quot; the current working directory being source/core/tool/ or&lt;br /&gt;
        &amp;quot; similar, and having a copy of the setsolar -file environment&lt;br /&gt;
        &amp;quot; file as module/../ENV.$INPATH or in $SRC_ROOT set a&lt;br /&gt;
        &amp;quot; ln -s LinuxX86Env.Set ENV.$INPATH&lt;br /&gt;
        &amp;quot; For terminal vim re-sourcing the environment isn&amp;#039;t necessary.&lt;br /&gt;
        if has(&amp;quot;gui_running&amp;quot;)&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=source\ ./ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        else&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        endif&lt;br /&gt;
        &amp;quot; Just some copy&amp;amp;paste versions:&lt;br /&gt;
        &amp;quot; Entire module, edit ENV.... and set BUILD_COMMAND to content of build alias&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ $BUILD_COMMAND&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;set makeprg=dmake\ product=full&lt;br /&gt;
        &amp;quot; temporary override, no wall, no debug&lt;br /&gt;
        &amp;quot;if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;else&lt;br /&gt;
        &amp;quot;    set makeprg=dmake&lt;br /&gt;
        &amp;quot;endif&lt;br /&gt;
    endfun&lt;br /&gt;
    function Make()&lt;br /&gt;
        let my_local_path = expand(&amp;quot;%:h&amp;quot;)&lt;br /&gt;
        if (my_local_path == &amp;quot;&amp;quot;)&lt;br /&gt;
            let my_local_path = &amp;quot;.&amp;quot;&lt;br /&gt;
        endif&lt;br /&gt;
        if filereadable( my_local_path . &amp;quot;/makefile.mk&amp;quot; )&lt;br /&gt;
            exec &amp;#039;lcd &amp;#039; . my_local_path&lt;br /&gt;
            call SetMakeprg()&lt;br /&gt;
            make&lt;br /&gt;
        else&lt;br /&gt;
            echo &amp;quot;No makefile.mk in &amp;quot; . my_local_path&lt;br /&gt;
        endif&lt;br /&gt;
    endfun&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CVS/SVN/HG integration ==&lt;br /&gt;
&lt;br /&gt;
=== CVS/SVN/HG commands ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=90 vcscommand.vim - CVS/SVN integration plugin]&lt;br /&gt;
&lt;br /&gt;
A nice plugin to handle CVS, SVN and HG actions from within Vim. Most useful being&lt;br /&gt;
the VCSAnnotate and VCSVimDiff commands, IMHO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve CVS conflicts ===&lt;br /&gt;
&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1370 CVSconflict - CVS conflict resolution using vimdiff] &lt;br /&gt;
&lt;br /&gt;
A plugin that converts a source file containing CVS merge conflicts into two&lt;br /&gt;
VimDiff buffers that then can be easily edited.&lt;br /&gt;
&lt;br /&gt;
This also should work with inline [[Mercurial]] merge conflicts (no separate files created).&lt;br /&gt;
&lt;br /&gt;
== Other useful plugins and resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1520 OmniCppComplete - C++ completion omnifunc with a ctags database]&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1997 undo_tags - small utility that lets you tag undo branches]&lt;br /&gt;
* [http://www.erack.de/bookmarks/D.html#VIM erAck&amp;#039;s &amp;#039;&amp;#039;VIM and related&amp;#039;&amp;#039; bookmarks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A note for developers on WIN\DOS ==&lt;br /&gt;
&lt;br /&gt;
Please don&amp;#039;t complicate life for developers on other platforms by interspersing&lt;br /&gt;
sources with CarriageReturn characters before linefeeds, which especially is&lt;br /&gt;
extremely nasty in patches contributed. As you probably can&amp;#039;t patch your&lt;br /&gt;
kernel&amp;#039;s IO to simply not automatically write CrLf instead of Lf in text files,&lt;br /&gt;
when using Vim use this setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;set fileformats=dos,unix  &amp;quot; Vim&amp;#039;s default on DOS/WIN/OS2&lt;br /&gt;
set fileformats=unix,dos  &amp;quot; Vim&amp;#039;s default on UNX, also use it on DOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Tools]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Community_Council/Agenda&amp;diff=189289</id>
		<title>Community Council/Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Community_Council/Agenda&amp;diff=189289"/>
		<updated>2010-11-25T20:23:27Z</updated>

		<summary type="html">&lt;p&gt;ErAck: now the right position...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Community_Council}}&lt;br /&gt;
== Upcoming Meeting&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Date: 2010-11-04 (Derived from the [[Community Council/Calendar|Community Council Meeting Calendar]]) &lt;br /&gt;
&lt;br /&gt;
Time: [http://www.timeanddate.com/worldclock/fixedtime.html?day=04&amp;amp;month=11&amp;amp;year=2010&amp;amp;hour=19&amp;amp;min=30&amp;amp;sec=0&amp;amp;p1=0 19.30 UTC] (click on the link to show world clock times) &lt;br /&gt;
&lt;br /&gt;
Location: IRC&lt;br /&gt;
&lt;br /&gt;
== Agenda and Work Status  ==&lt;br /&gt;
&lt;br /&gt;
The following table represents the agenda of the upcoming meeting and the current work status of topics / action items. Working with this table is described in the [[Community Council/Meeting Guidelines|Community Council Meeting Guidelines]]. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | ID&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Topic&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Status&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Responsible&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Last Update&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Details&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0&amp;lt;br&amp;gt; &lt;br /&gt;
| List of Action Items of previous meeting for approval&amp;lt;br&amp;gt; &lt;br /&gt;
| &amp;#039;&amp;#039;none&amp;#039;&amp;#039;&amp;lt;br&amp;gt; &lt;br /&gt;
| all&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-10-14&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Meeting minutes of previous meeting at [[Community Council/Minutes#2010-10-14|Minutes#2010-10-14]]&amp;lt;u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/u&amp;gt; &lt;br /&gt;
*&amp;lt;u&amp;gt;Result&amp;lt;/u&amp;gt;: (to be confirmed)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 2010-10-14#1&amp;lt;br&amp;gt; &lt;br /&gt;
| Where do we stand&amp;lt;br&amp;gt; &lt;br /&gt;
| new&amp;lt;br&amp;gt; &lt;br /&gt;
| all&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-10-14&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Now that many members of the community council support the Document Foundation: how do find the best way to go on? &lt;br /&gt;
*Discussion: A summary seems hard to provide, so please consider to read the [[Community Council Log 20101014#IRC_Log_2010-10-14|IRC Log]]. &lt;br /&gt;
*Result: Cor and Martin will have a talk and discuss the topic. Additionally, some community council members request to resolve the issue by next Tuesday (2010-10-19).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#ffffcc&amp;quot; colspan=&amp;quot;6&amp;quot; | Note: Because of running out of time, the meeting has been. So no further Action Items (below) have been discussed.&lt;br /&gt;
|-&lt;br /&gt;
| 2010-03-04#2 &amp;lt;br&amp;gt; &lt;br /&gt;
| Refresh Incubator and NLC Project processes &amp;lt;br&amp;gt; &lt;br /&gt;
| Accepted&amp;lt;br&amp;gt; &lt;br /&gt;
| Louis &amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-03-18&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The NLC homepage (http://native-lang.openoffice.org/) has the language in the policy I wrote many years ago, and I&amp;#039;ll be using a version of that plus the earlier drafts submitted to resolve this. The hangup has been what to do with mothballed projects, what to do with the data. We will create an effective category, with very limited permissions, called something like, &amp;quot;Inactive Projects&amp;quot; and the data will remain there, unto perpetuity or the closes thing to it.  Expect new update by next CC meeting.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 2010-03-04#6 &amp;lt;br&amp;gt; &lt;br /&gt;
| Talk to Education Project Leads about structure and remit &amp;lt;br&amp;gt; &lt;br /&gt;
| Stalled&amp;lt;br&amp;gt; &lt;br /&gt;
| louis&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-03-18&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Louis to take this on and report by next CC meeting of discussions held with the responsible persons.  &amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2010-04-01#1 &amp;lt;br&amp;gt; &lt;br /&gt;
| Community situation &amp;lt;br&amp;gt; &lt;br /&gt;
| Accepted&amp;lt;br&amp;gt; &lt;br /&gt;
| All &amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-09-23&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*What do we see, where are we, what are we going to do about it.&amp;lt;br&amp;gt; &lt;br /&gt;
*Activities: &lt;br /&gt;
**All CC members are asked to think about it and Cor will prepare a proposal for an detailed agenda.&amp;lt;br&amp;gt; &lt;br /&gt;
**Leif already collected some issues (e.g. rare communication via blogs) and will send that to Cor.&amp;lt;br&amp;gt; &lt;br /&gt;
*Next Steps: Proposal that the CC&amp;amp;nbsp;will work on that at the OOoCon in Budapest. &lt;br /&gt;
**Cor send a mail on 2010-08-12 with some items for the agenda.&amp;lt;br&amp;gt; &lt;br /&gt;
*2010-09-03/09-21: Page with draft plan [[Community Council/collaboration in the OOo-community|improvement community collaboration]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 2010-04-29#2&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
Missing OOo desktop presence &lt;br /&gt;
&lt;br /&gt;
| Accepted&amp;lt;br&amp;gt; &lt;br /&gt;
| Christoph, Stefan &lt;br /&gt;
| 2010-09-21&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Request by a community member to discuss / decide the following question: &amp;quot;&amp;#039;&amp;#039;Why should OpenOffice.org give away it&amp;#039;s presence on the user&amp;#039;s desktop - the main place to be recognized by the people - only to support the &amp;quot;application independency&amp;quot; of ODF?&amp;#039;&amp;#039; A Sun employee stated &amp;quot;The idea of supporting ODF as a application independent open standard is the priority.&amp;quot; This leads / will lead to changes with regard to the document and application icon design. The current ODF &amp;quot;only&amp;quot; icons seem to be undesired by the community. Original request to the CC on ooo-discuss: [http://www.openoffice.org/servlets/ReadMsg?list=discuss&amp;amp;msgNo=65958 initial mail (2010-04-14)], [http://www.openoffice.org/servlets/BrowseList?listName=discuss&amp;amp;from=2361081&amp;amp;to=2361081&amp;amp;count=28&amp;amp;by=thread&amp;amp;first=1&amp;amp;windowSize=1000 full mail thread] &lt;br /&gt;
*Discussion: &lt;br /&gt;
**2010-04-29: Some members stated that the request should be &amp;quot;more actionable&amp;quot; and &amp;quot;better framed&amp;quot; to be decided by the community. Proposal has been made to forward the request to council-discuss to propose how to proceed. &lt;br /&gt;
**2010-05-02: Christoph forwarded the [http://council.openoffice.org/servlets/ReadMsg?list=discuss&amp;amp;msgNo=2564 request to the CC&amp;amp;nbsp;mailing list]. A first discussion took place. &lt;br /&gt;
**2010-05-20: Intensive discussion about the request and how to address it. Stefan and Christoph agreed to work out a request to the ODF Icons team to iterate on the design and/or processes. Maybe a &amp;quot;refreshed&amp;quot; team which may provide an agreed-upon proposal. Stefan stated that there shouldn&amp;#039;t be any dependency to the next/other releases. &lt;br /&gt;
**2010-06-08: Some opinions have been requested from people who initially worked in the branding initiative. Either there isn&amp;#039;t feedback yet, or the people aren&amp;#039;t currently available to support the i-Team. Ongoing ... &lt;br /&gt;
**2010-06-30: Still ongoing ... &lt;br /&gt;
**2010-07-22: Andreas provided some insight what currently happens within Oracle. The topic &amp;quot;icons&amp;quot; is currently addressed ... &lt;br /&gt;
***A discussion took place with Michael Bemmer and other people at Oracle. &lt;br /&gt;
***Outcome: Oracle marketing made a decision that is supposed to be communicated shortly. --&amp;amp;gt; Icons will be redesigned, for the long run, with constraints. &lt;br /&gt;
***Motivation: The current design fails with regard to usability aspects. --&amp;amp;gt; Redesign is intended with focus on usability. &lt;br /&gt;
***Constraints: The activity will be run open with all necessary involvements. &lt;br /&gt;
***Question to Andreas/Martin to discuss whether the official statement may be discussed with the community before it is going to be published &amp;quot;officially&amp;quot;. &lt;br /&gt;
***Decision to keep this CC Action Item open until there is more visible activity. &lt;br /&gt;
**2010-08-12: Marketing contact is in vacation, and information also depends on others at Oracle. More information defitively to come at the OOoCon, presentation &amp;quot;[http://www.ooocon.org/index.php/ooocon/2010/paper/view/215 Brand Refresh and new Brand Initiative]&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
**2010-09-21: Request for update sent to Oracle, nothing new yet. &lt;br /&gt;
*Next steps: Waiting for the reaction by Oracle, either getting in touch with the community or an official announcement.&amp;lt;br&amp;gt; &lt;br /&gt;
*Cornouws: discussed during OOoCon; looks as if we were able to bring accros the importancy, however, other tasks ask attention first from Oracle people.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2010-11-25#1 &amp;lt;br&amp;gt; &lt;br /&gt;
| Update OOo Internship Project 2010&amp;lt;br&amp;gt; &lt;br /&gt;
| New&amp;lt;br&amp;gt; &lt;br /&gt;
| JSC&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-11-25&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
* the project ended official on November 14th&amp;lt;br&amp;gt;&lt;br /&gt;
* 5 of 6 project finished successful. One project is put on hold by a request of the student because the lack of time. We offered to finish this project later after the exam when the student has more time again.&amp;lt;br&amp;gt;&lt;br /&gt;
* all projects had a good outcome which will result in a future office release or where we can at least use it as more than a good start point for further work on this topic/feature.&amp;lt;br&amp;gt;&lt;br /&gt;
* overall a good experience and a good project which we should definitely repeat&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Minutes of Previous Meetings  ==&lt;br /&gt;
&lt;br /&gt;
To be found [[Community Council/Minutes|here]]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Community_Council]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Community_Council/Agenda&amp;diff=189288</id>
		<title>Community Council/Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Community_Council/Agenda&amp;diff=189288"/>
		<updated>2010-11-25T20:20:17Z</updated>

		<summary type="html">&lt;p&gt;ErAck: repair&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Community_Council}}&lt;br /&gt;
== Upcoming Meeting&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Date: 2010-11-04 (Derived from the [[Community Council/Calendar|Community Council Meeting Calendar]]) &lt;br /&gt;
&lt;br /&gt;
Time: [http://www.timeanddate.com/worldclock/fixedtime.html?day=04&amp;amp;month=11&amp;amp;year=2010&amp;amp;hour=19&amp;amp;min=30&amp;amp;sec=0&amp;amp;p1=0 19.30 UTC] (click on the link to show world clock times) &lt;br /&gt;
&lt;br /&gt;
Location: IRC&lt;br /&gt;
&lt;br /&gt;
== Agenda and Work Status  ==&lt;br /&gt;
&lt;br /&gt;
The following table represents the agenda of the upcoming meeting and the current work status of topics / action items. Working with this table is described in the [[Community Council/Meeting Guidelines|Community Council Meeting Guidelines]]. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | ID&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Topic&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Status&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Responsible&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Last Update&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Details&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0&amp;lt;br&amp;gt; &lt;br /&gt;
| List of Action Items of previous meeting for approval&amp;lt;br&amp;gt; &lt;br /&gt;
| &amp;#039;&amp;#039;none&amp;#039;&amp;#039;&amp;lt;br&amp;gt; &lt;br /&gt;
| all&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-10-14&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Meeting minutes of previous meeting at [[Community Council/Minutes#2010-10-14|Minutes#2010-10-14]]&amp;lt;u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/u&amp;gt; &lt;br /&gt;
*&amp;lt;u&amp;gt;Result&amp;lt;/u&amp;gt;: (to be confirmed)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 2010-10-14#1&amp;lt;br&amp;gt; &lt;br /&gt;
| Where do we stand&amp;lt;br&amp;gt; &lt;br /&gt;
| new&amp;lt;br&amp;gt; &lt;br /&gt;
| all&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-10-14&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Now that many members of the community council support the Document Foundation: how do find the best way to go on? &lt;br /&gt;
*Discussion: A summary seems hard to provide, so please consider to read the [[Community Council Log 20101014#IRC_Log_2010-10-14|IRC Log]]. &lt;br /&gt;
*Result: Cor and Martin will have a talk and discuss the topic. Additionally, some community council members request to resolve the issue by next Tuesday (2010-10-19).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#ffffcc&amp;quot; colspan=&amp;quot;6&amp;quot; | Note: Because of running out of time, the meeting has been. So no further Action Items (below) have been discussed.&lt;br /&gt;
|-&lt;br /&gt;
| 2010-03-04#2 &amp;lt;br&amp;gt; &lt;br /&gt;
| Refresh Incubator and NLC Project processes &amp;lt;br&amp;gt; &lt;br /&gt;
| Accepted&amp;lt;br&amp;gt; &lt;br /&gt;
| Louis &amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-03-18&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*The NLC homepage (http://native-lang.openoffice.org/) has the language in the policy I wrote many years ago, and I&amp;#039;ll be using a version of that plus the earlier drafts submitted to resolve this. The hangup has been what to do with mothballed projects, what to do with the data. We will create an effective category, with very limited permissions, called something like, &amp;quot;Inactive Projects&amp;quot; and the data will remain there, unto perpetuity or the closes thing to it.  Expect new update by next CC meeting.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 2010-03-04#6 &amp;lt;br&amp;gt; &lt;br /&gt;
| Talk to Education Project Leads about structure and remit &amp;lt;br&amp;gt; &lt;br /&gt;
| Stalled&amp;lt;br&amp;gt; &lt;br /&gt;
| louis&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-03-18&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2010-04-01#1 &amp;lt;br&amp;gt; &lt;br /&gt;
*Louis to take this on and report by next CC meeting of discussions held with the responsible persons.  &amp;lt;br&amp;gt;&lt;br /&gt;
| Community situation &amp;lt;br&amp;gt; &lt;br /&gt;
| Accepted&amp;lt;br&amp;gt; &lt;br /&gt;
| All &amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-09-23&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*What do we see, where are we, what are we going to do about it.&amp;lt;br&amp;gt; &lt;br /&gt;
*Activities: &lt;br /&gt;
**All CC members are asked to think about it and Cor will prepare a proposal for an detailed agenda.&amp;lt;br&amp;gt; &lt;br /&gt;
**Leif already collected some issues (e.g. rare communication via blogs) and will send that to Cor.&amp;lt;br&amp;gt; &lt;br /&gt;
*Next Steps: Proposal that the CC&amp;amp;nbsp;will work on that at the OOoCon in Budapest. &lt;br /&gt;
**Cor send a mail on 2010-08-12 with some items for the agenda.&amp;lt;br&amp;gt; &lt;br /&gt;
*2010-09-03/09-21: Page with draft plan [[Community Council/collaboration in the OOo-community|improvement community collaboration]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 2010-04-29#2&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
Missing OOo desktop presence &lt;br /&gt;
&lt;br /&gt;
| Accepted&amp;lt;br&amp;gt; &lt;br /&gt;
| Christoph, Stefan &lt;br /&gt;
| 2010-09-21&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
*Request by a community member to discuss / decide the following question: &amp;quot;&amp;#039;&amp;#039;Why should OpenOffice.org give away it&amp;#039;s presence on the user&amp;#039;s desktop - the main place to be recognized by the people - only to support the &amp;quot;application independency&amp;quot; of ODF?&amp;#039;&amp;#039; A Sun employee stated &amp;quot;The idea of supporting ODF as a application independent open standard is the priority.&amp;quot; This leads / will lead to changes with regard to the document and application icon design. The current ODF &amp;quot;only&amp;quot; icons seem to be undesired by the community. Original request to the CC on ooo-discuss: [http://www.openoffice.org/servlets/ReadMsg?list=discuss&amp;amp;msgNo=65958 initial mail (2010-04-14)], [http://www.openoffice.org/servlets/BrowseList?listName=discuss&amp;amp;from=2361081&amp;amp;to=2361081&amp;amp;count=28&amp;amp;by=thread&amp;amp;first=1&amp;amp;windowSize=1000 full mail thread] &lt;br /&gt;
*Discussion: &lt;br /&gt;
**2010-04-29: Some members stated that the request should be &amp;quot;more actionable&amp;quot; and &amp;quot;better framed&amp;quot; to be decided by the community. Proposal has been made to forward the request to council-discuss to propose how to proceed. &lt;br /&gt;
**2010-05-02: Christoph forwarded the [http://council.openoffice.org/servlets/ReadMsg?list=discuss&amp;amp;msgNo=2564 request to the CC&amp;amp;nbsp;mailing list]. A first discussion took place. &lt;br /&gt;
**2010-05-20: Intensive discussion about the request and how to address it. Stefan and Christoph agreed to work out a request to the ODF Icons team to iterate on the design and/or processes. Maybe a &amp;quot;refreshed&amp;quot; team which may provide an agreed-upon proposal. Stefan stated that there shouldn&amp;#039;t be any dependency to the next/other releases. &lt;br /&gt;
**2010-06-08: Some opinions have been requested from people who initially worked in the branding initiative. Either there isn&amp;#039;t feedback yet, or the people aren&amp;#039;t currently available to support the i-Team. Ongoing ... &lt;br /&gt;
**2010-06-30: Still ongoing ... &lt;br /&gt;
**2010-07-22: Andreas provided some insight what currently happens within Oracle. The topic &amp;quot;icons&amp;quot; is currently addressed ... &lt;br /&gt;
***A discussion took place with Michael Bemmer and other people at Oracle. &lt;br /&gt;
***Outcome: Oracle marketing made a decision that is supposed to be communicated shortly. --&amp;amp;gt; Icons will be redesigned, for the long run, with constraints. &lt;br /&gt;
***Motivation: The current design fails with regard to usability aspects. --&amp;amp;gt; Redesign is intended with focus on usability. &lt;br /&gt;
***Constraints: The activity will be run open with all necessary involvements. &lt;br /&gt;
***Question to Andreas/Martin to discuss whether the official statement may be discussed with the community before it is going to be published &amp;quot;officially&amp;quot;. &lt;br /&gt;
***Decision to keep this CC Action Item open until there is more visible activity. &lt;br /&gt;
**2010-08-12: Marketing contact is in vacation, and information also depends on others at Oracle. More information defitively to come at the OOoCon, presentation &amp;quot;[http://www.ooocon.org/index.php/ooocon/2010/paper/view/215 Brand Refresh and new Brand Initiative]&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
**2010-09-21: Request for update sent to Oracle, nothing new yet. &lt;br /&gt;
*Next steps: Waiting for the reaction by Oracle, either getting in touch with the community or an official announcement.&amp;lt;br&amp;gt; &lt;br /&gt;
*Cornouws: discussed during OOoCon; looks as if we were able to bring accros the importancy, however, other tasks ask attention first from Oracle people.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2010-11-25#1 &amp;lt;br&amp;gt; &lt;br /&gt;
| Update OOo Internship Project 2010&amp;lt;br&amp;gt; &lt;br /&gt;
| New&amp;lt;br&amp;gt; &lt;br /&gt;
| JSC&amp;lt;br&amp;gt; &lt;br /&gt;
| 2010-11-25&amp;lt;br&amp;gt; &lt;br /&gt;
| &lt;br /&gt;
* the project ended official on November 14th&amp;lt;br&amp;gt;&lt;br /&gt;
* 5 of 6 project finished successful. One project is put on hold by a request of the student because the lack of time. We offered to finish this project later after the exam when the student has more time again.&amp;lt;br&amp;gt;&lt;br /&gt;
* all projects had a good outcome which will result in a future office release or where we can at least use it as more than a good start point for further work on this topic/feature.&amp;lt;br&amp;gt;&lt;br /&gt;
* overall a good experience and a good project which we should definitely repeat&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Minutes of Previous Meetings  ==&lt;br /&gt;
&lt;br /&gt;
To be found [[Community Council/Minutes|here]]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Community_Council]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Talk:Editor_Vim&amp;diff=189004</id>
		<title>Talk:Editor Vim</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Talk:Editor_Vim&amp;diff=189004"/>
		<updated>2010-11-22T13:24:00Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* VIM CVS and SSH configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VIM CVS and SSH configuration ==&lt;br /&gt;
&lt;br /&gt;
Would be nice to have a tutorial to use the CVS/SSH from OOo configured with the VCSCOMMAND plugin. This will make it easy to just use our keys with VIM directly on the CVS tree.&lt;br /&gt;
&lt;br /&gt;
: No special handling needed. With the SSH tunnel opened all CVS commands are handled transparently, also from VCScommand. --[[User:ErAck|erAck]] 13:24, 22 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User_talk:ErAck&amp;diff=188999</id>
		<title>User talk:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User_talk:ErAck&amp;diff=188999"/>
		<updated>2010-11-22T12:37:23Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* VCSCOMMAND */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VCSCOMMAND ==&lt;br /&gt;
&lt;br /&gt;
Hi you ever used the vcscommand? Wonder if there is a way to get the file up and running with the OOo&amp;#039;s CVS/Mercurial trees through ssh.&lt;br /&gt;
: I assume you refer the Vim http://www.vim.org/scripts/script.php?script_id=90 plugin. I use that, but never the VCSCommit command as I much prefer to commit a changeset containing all related files at once. I wonder though what you mean by &amp;lt;q&amp;gt;the OOo&amp;#039;s CVS/Mercurial trees through ssh&amp;lt;/q&amp;gt;, as the VCScommands always work against the local Mercurial repository. Not with CSV, but CSV is dead except for the web pages. With CSV you setup a tunnel anyway, so that should be transparent to VCScommand. AFAIR (years ago) there were no problems using that with CSV.&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=188997</id>
		<title>Editor Vim</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Editor_Vim&amp;diff=188997"/>
		<updated>2010-11-22T12:25:41Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* CVS/SVN integration */ HG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There exist only two real editors in the programmer&amp;#039;s world ;-)  One is Vim,&lt;br /&gt;
and the other is the &amp;#039;&amp;#039;eier-legende-woll-milch-sau&amp;#039;&amp;#039; (sorry for that German&lt;br /&gt;
phrase being a modified translation of&lt;br /&gt;
&amp;#039;&amp;#039;allrounder - all-in-one device suitable for every purpose&amp;#039;&amp;#039;,&lt;br /&gt;
couldn&amp;#039;t resist ;-) (X)Emacs. So here we go for Vim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Vim settings ==&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; have the following settings. For the tabstops=4 setting it may&lt;br /&gt;
not be desired to have this globally effective, you may want to restrict it to&lt;br /&gt;
an OOo/SO environment by evaluating the $SOLARENV environment variable,&lt;br /&gt;
&amp;lt;code&amp;gt;if $SOLARENV != &amp;quot;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set ts=4                &amp;quot; tabstops are 4 (for all code)&lt;br /&gt;
set sw=4                &amp;quot; shiftwidth is 4&lt;br /&gt;
set expandtab           &amp;quot; expand tabs to spaces&lt;br /&gt;
set showmatch           &amp;quot; briefly jump to matching brackets&lt;br /&gt;
set showmode            &amp;quot; the mode we&amp;#039;re in&lt;br /&gt;
if version &amp;gt;= 600&lt;br /&gt;
    filetype on             &amp;quot; enable file type detection&lt;br /&gt;
    filetype plugin on      &amp;quot; enable file type plugins&lt;br /&gt;
    filetype indent on      &amp;quot; enable file type indents&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; previous and next compiler error (quickfix)&lt;br /&gt;
map &amp;lt;C-P&amp;gt; :cp&amp;lt;CR&amp;gt;&lt;br /&gt;
map &amp;lt;C-N&amp;gt; :cn&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot; Only do this part when compiled with support for autocommands.&lt;br /&gt;
if has(&amp;quot;autocmd&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; In text files, always limit the width of text to 78 characters, tabs are 8&lt;br /&gt;
    autocmd BufRead *.txt,*.doc,*.dok setlocal tw=78 ts=8 sw=8 fo+=rn1&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat resource files and headers like C files&lt;br /&gt;
    autocmd BufRead *.hrc,*.src setlocal ft=c&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; Treat generated UNO header files like C++ files&lt;br /&gt;
    autocmd BufRead *.hdl setlocal ft=cpp&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; mail bodies have a textwidth of 72 characters, activate numbering&lt;br /&gt;
    &amp;quot; formatting, reset comments to default, no indenting&lt;br /&gt;
    autocmd FileType mail setlocal tw=72 fo+=rn1 comments&amp;amp; nocindent&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in C/C++ files without &amp;#039;*&amp;#039; middle part&lt;br /&gt;
    autocmd FileType c,cpp setlocal comments^=s:/**,mb:\ ,e:*/&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; AutoDoc comments in IDL files have a textwidth of 72 characters&lt;br /&gt;
    autocmd FileType idl setlocal comments^=s:/**,mb:\ ,e:*/ tw=72&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; OOo .xcu configuration files and the like&lt;br /&gt;
    autocmd FileType xml setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
    &amp;quot; HTML files&lt;br /&gt;
    autocmd FileType html,css setlocal sw=2&lt;br /&gt;
&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&amp;quot; setting up for :make&lt;br /&gt;
set makeprg=$SOLARENV/bin/build.pl\ \-P4\ \-\-\ \-P4&lt;br /&gt;
&lt;br /&gt;
&amp;quot; broken whitespace&lt;br /&gt;
:au Syntax * syn match Error /\s\+$/ | syn match Error /^\s* \t\s*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vim and the GNU ID-utils ==&lt;br /&gt;
&lt;br /&gt;
As mentioned in [[Little_Helpers#GNU_ID-utils | Little Helpers&amp;#039; GNU Id-utils]], the &amp;#039;&amp;#039;eid&amp;#039;&amp;#039; command makes use of some&lt;br /&gt;
environment variables when invoking the editor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv VISUAL   vim&lt;br /&gt;
setenv EIDARG   &amp;#039;+/%s/&amp;#039;&lt;br /&gt;
setenv EIDLDEL  &amp;#039;\&amp;lt;&amp;#039;&lt;br /&gt;
setenv EIDRDEL  &amp;#039;\&amp;gt;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To be able to invoke the &amp;#039;&amp;#039;lid&amp;#039;&amp;#039; utility from within Vim we need a key mapping&lt;br /&gt;
and function call, you may place this section into your &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; GNU id-utils, taken from :h ident-search&lt;br /&gt;
&amp;quot; Generate the ID file in the current directory or in .. or ../.. or ../../..&lt;br /&gt;
&amp;quot; To use it, place the cursor on a word, type &amp;quot;_u&amp;quot; and vim will load the file&lt;br /&gt;
&amp;quot; that contains the word.  Search for the next occurrence of the word in the&lt;br /&gt;
&amp;quot; same file with &amp;quot;n&amp;quot;.  Go to the next file with &amp;quot;_n&amp;quot;.&lt;br /&gt;
map _u :call ID_search()&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
map _n :n&amp;lt;Bar&amp;gt;execute &amp;quot;/\\&amp;lt;&amp;quot; . g:word . &amp;quot;\\&amp;gt;&amp;quot;&amp;lt;CR&amp;gt;&lt;br /&gt;
function ID_search()&lt;br /&gt;
    let g:word = expand(&amp;quot;&amp;lt;cword&amp;gt;&amp;quot;)&lt;br /&gt;
    let x = system(&amp;quot;lid --key=none &amp;quot;. g:word)&lt;br /&gt;
    let x = substitute(x, &amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;g&amp;quot;)&lt;br /&gt;
    execute &amp;quot;next &amp;quot; . x&lt;br /&gt;
endfun&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== lid.vim plugin ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=251 lid.vim] is&lt;br /&gt;
a plugin to integrate GNU id-utils with Vim, providing a &amp;#039;&amp;#039;lid -g&amp;#039;&amp;#039; output in&lt;br /&gt;
the &amp;#039;&amp;#039;quickfix&amp;#039;&amp;#039; window that can be travelled using the &amp;#039;&amp;#039;:cnext&amp;#039;&amp;#039; and&lt;br /&gt;
&amp;#039;&amp;#039;:cprev&amp;#039;&amp;#039; commands respectively their keyboard mappings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Ctags ==&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s easy, as vim has builtin support for ctags, see &amp;#039;&amp;#039;:h tagsrch.txt&amp;#039;&amp;#039;, in&lt;br /&gt;
&amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; just tell it where to search for the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Tags files are searched first relative to the current file, then relative to&lt;br /&gt;
&amp;quot; the current working directory, and last in the $HOME directory.&lt;br /&gt;
set tags=./tags,./../tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags,tags,../tags,../../tags,../../../tags,../../../../tags,../../../../../tags,~/tags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Exuberant Ctags&amp;#039;&amp;#039; information and a script how to create the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; database see the [[Little_Helpers#Exuberant_Ctags | Little Helpers&amp;#039; Exuberant Ctags]] section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vim and Cscope ==&lt;br /&gt;
&lt;br /&gt;
For general &amp;#039;&amp;#039;Cscope&amp;#039;&amp;#039; information and a script how to create a cscope&lt;br /&gt;
database for an OOo project see the&lt;br /&gt;
[[Little_Helpers#Cscope | Little Helpers&amp;#039; Cscope]]&lt;br /&gt;
section.&lt;br /&gt;
&lt;br /&gt;
=== Builtin Cscope support ===&lt;br /&gt;
&lt;br /&gt;
Vim has builtin (well, if compiled in) support for cscope, see &amp;#039;&amp;#039;:h cscope&amp;#039;&amp;#039;.&lt;br /&gt;
In &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; you may want to setup some things, but this is also a matter of&lt;br /&gt;
work habits. Consider the following an example and consult the fine manual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Cscope settings&lt;br /&gt;
if has(&amp;quot;cscope&amp;quot;)&lt;br /&gt;
    &amp;quot; quickfix window usage&lt;br /&gt;
    set cscopequickfix=s-,c-,d-,i-,t-,e-&lt;br /&gt;
    &amp;quot; :tag and the like use :cstag&lt;br /&gt;
    set cscopetag&lt;br /&gt;
    &amp;quot; first search cscope, than tags file&lt;br /&gt;
    set cscopetagorder=0&lt;br /&gt;
    set nocsverb&lt;br /&gt;
    &amp;quot; add any database in current directory&lt;br /&gt;
    if filereadable(&amp;quot;cscope.out&amp;quot;)&lt;br /&gt;
        cs add cscope.out&lt;br /&gt;
        &amp;quot; else add database pointed to by environment&lt;br /&gt;
    elseif $CSCOPE_DB != &amp;quot;&amp;quot;&lt;br /&gt;
        cs add $CSCOPE_DB&lt;br /&gt;
    endif&lt;br /&gt;
    set csverb&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== More comfortable plugin script cecscope.vim ===&lt;br /&gt;
&lt;br /&gt;
The&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1453 command and menu driven cscope interface]&lt;br /&gt;
eases things a bit. It requires vim7.0aa snapshot #188 or later, the Vim7.1&lt;br /&gt;
release does fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Include file searches in Vim ==&lt;br /&gt;
&lt;br /&gt;
Set the &amp;#039;&amp;#039;path&amp;#039;&amp;#039; variable in &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Where to look for files in gf and ^Wf and similar commands,&lt;br /&gt;
&amp;quot; and for include files for i_^X^I and i_^X^D commands.&lt;br /&gt;
&amp;quot; To use VIM_INC in OOo/SO environment define&lt;br /&gt;
&amp;quot; alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
&amp;quot; Note the two space characters in the second substitute, and execute the alias after a setsolar.&lt;br /&gt;
&amp;quot; Under 4NT you need some rubbish like (note this isn&amp;#039;t updated since ages)&lt;br /&gt;
&amp;quot; alias solvim=set _uq_%0=%@unique[%tmp%] &amp;amp;&amp;amp; echos VIM_INC=&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; echo %SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/ \+-I/,/g&amp;quot;&amp;gt;&amp;gt;_uq_%0 &amp;amp;&amp;amp; set /r _uq_%0 &amp;amp;&amp;amp; del /q _uq_%0&lt;br /&gt;
set path=.,./inc,./../inc,./../../inc,./../../../inc,./../../../../inc,$VIM_INC,,/usr/local/include,/usr/include&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you missed it in the comments above: you need to invoke a shell alias&lt;br /&gt;
after having sourced the environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcsh&lt;br /&gt;
alias solvim &amp;#039;if ( ! $?UPDMINOREXT ) setenv UPDMINOREXT &amp;quot;&amp;quot; ; setenv VIM_INC ./${INPATH}/inc,../${INPATH}/inc,../../${INPATH}/inc,../../../${INPATH}/inc,`echo $SOLARINC|sed -e &amp;quot;s/^-I//&amp;quot; -e &amp;quot;s/  *-I/,/g&amp;quot;`,${SOLARVERSION}/${INPATH}/inc${UPDMINOREXT}/offuh&amp;#039;&lt;br /&gt;
source LinuxX86Env.Set&lt;br /&gt;
solvim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also: in Vim &amp;#039;&amp;#039;:h include-search&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compiling a source from within Vim ==&lt;br /&gt;
&lt;br /&gt;
Compiling the source from within the editor is of course desired, as warnings&lt;br /&gt;
and errors generated by the compiler let you directly jump to the line in&lt;br /&gt;
question. There are some quirks to be solved for the OOo/SO environment, but no&lt;br /&gt;
real problem, just examine the working &amp;#039;&amp;#039;.vimrc&amp;#039;&amp;#039; sections below. Pressing&lt;br /&gt;
Ctrl+K changes the current window&amp;#039;s directory locally to the one of the file&lt;br /&gt;
loaded, if there is a makfile.mk in that directory, sets the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039;&lt;br /&gt;
variable to the command needed to dmake just the current file, and executes it.&lt;br /&gt;
&lt;br /&gt;
For the quickfix window to pull its content from the compiler output we need to&lt;br /&gt;
have a valid error file setting, and as there&amp;#039;s always the hassle with DOS&lt;br /&gt;
based systems, we also need to take care of that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; This uses the TMP environment variable, be sure to have it set!&lt;br /&gt;
if $COMSPEC =~ &amp;quot;\\&amp;quot;&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having any DOS&lt;br /&gt;
    set makeef=$TMP\\vim##.err  &amp;quot; :make errorfile&lt;br /&gt;
else&lt;br /&gt;
    set makeef=$TMP/vim##.err   &amp;quot; :make errorfile&lt;br /&gt;
endif&lt;br /&gt;
if $TMP =~ &amp;quot;\\&amp;quot; &amp;amp;&amp;amp; ($COMSPEC =~ &amp;quot;4&amp;quot; || $SHELL =~ &amp;quot;4&amp;quot;)&lt;br /&gt;
    &amp;quot; seems like we&amp;#039;re having some DOS assumed to be 4DOS compatible&lt;br /&gt;
    set shellpipe=\|&amp;amp;\ tee&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the &amp;#039;&amp;#039;makeprg&amp;#039;&amp;#039; setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot; Call appropriate makeprg with Ctrl+K&lt;br /&gt;
map &amp;lt;C-K&amp;gt; :call Make()&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if $SOLARENV == &amp;quot;&amp;quot;&lt;br /&gt;
    &amp;quot; Normal makeprg, not in OpenOffice.org/StarOffice environment&lt;br /&gt;
    function Make()&lt;br /&gt;
        make&lt;br /&gt;
    endfun&lt;br /&gt;
else&lt;br /&gt;
    &amp;quot; Special dmake, only in OpenOffice.org/StarOffice environment&lt;br /&gt;
    set makeprg=dmake&lt;br /&gt;
    function SetMakeprg()&lt;br /&gt;
        &amp;quot; For a detached gvim we need to source the environment, assuming&lt;br /&gt;
        &amp;quot; the current working directory being source/core/tool/ or&lt;br /&gt;
        &amp;quot; similar, and having a copy of the setsolar -file environment&lt;br /&gt;
        &amp;quot; file as module/../ENV.$INPATH or in $SRC_ROOT set a&lt;br /&gt;
        &amp;quot; ln -s LinuxX86Env.Set ENV.$INPATH&lt;br /&gt;
        &amp;quot; For terminal vim re-sourcing the environment isn&amp;#039;t necessary.&lt;br /&gt;
        if has(&amp;quot;gui_running&amp;quot;)&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=source\ ../../../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=source\ ./ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        else&lt;br /&gt;
            if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
            else&lt;br /&gt;
                set makeprg=dmake\ wall=t\ debug=t&lt;br /&gt;
            endif&lt;br /&gt;
        endif&lt;br /&gt;
        &amp;quot; Just some copy&amp;amp;paste versions:&lt;br /&gt;
        &amp;quot; Entire module, edit ENV.... and set BUILD_COMMAND to content of build alias&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ $BUILD_COMMAND&lt;br /&gt;
        &amp;quot;set makeprg=source\ ../../../ENV.$INPATH\ \&amp;amp;\&amp;amp;\ dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;set makeprg=dmake\ product=full&lt;br /&gt;
        &amp;quot; temporary override, no wall, no debug&lt;br /&gt;
        &amp;quot;if filereadable( &amp;quot;./prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ./$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;elseif filereadable( &amp;quot;../../../../prj/d.lst&amp;quot; )&lt;br /&gt;
        &amp;quot;    set makeprg=dmake\ ../../../../$INPATH/slo/%:t:r.obj&lt;br /&gt;
        &amp;quot;else&lt;br /&gt;
        &amp;quot;    set makeprg=dmake&lt;br /&gt;
        &amp;quot;endif&lt;br /&gt;
    endfun&lt;br /&gt;
    function Make()&lt;br /&gt;
        let my_local_path = expand(&amp;quot;%:h&amp;quot;)&lt;br /&gt;
        if (my_local_path == &amp;quot;&amp;quot;)&lt;br /&gt;
            let my_local_path = &amp;quot;.&amp;quot;&lt;br /&gt;
        endif&lt;br /&gt;
        if filereadable( my_local_path . &amp;quot;/makefile.mk&amp;quot; )&lt;br /&gt;
            exec &amp;#039;lcd &amp;#039; . my_local_path&lt;br /&gt;
            call SetMakeprg()&lt;br /&gt;
            make&lt;br /&gt;
        else&lt;br /&gt;
            echo &amp;quot;No makefile.mk in &amp;quot; . my_local_path&lt;br /&gt;
        endif&lt;br /&gt;
    endfun&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CVS/SVN/HG integration ==&lt;br /&gt;
&lt;br /&gt;
=== CVS/SVN/HG commands ===&lt;br /&gt;
&lt;br /&gt;
[http://vim.sourceforge.net/scripts/script.php?script_id=90 vcscommand.vim - CVS/SVN integration plugin]&lt;br /&gt;
&lt;br /&gt;
A nice plugin to handle CVS, SVN and HG actions from within Vim. Most useful being&lt;br /&gt;
the VCSAnnotate and VCSVimDiff commands, IMHO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Resolve CVS conflicts ===&lt;br /&gt;
&lt;br /&gt;
[http://www.vim.org/scripts/script.php?script_id=1370 CVSconflict - CVS conflict resolution using vimdiff] &lt;br /&gt;
&lt;br /&gt;
A plugin that converts a source file containing CVS merge conflicts into two&lt;br /&gt;
VimDiff buffers that then can be easily edited:&lt;br /&gt;
&lt;br /&gt;
== Other useful plugins and resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1520 OmniCppComplete - C++ completion omnifunc with a ctags database]&lt;br /&gt;
* [http://www.vim.org/scripts/script.php?script_id=1997 undo_tags - small utility that lets you tag undo branches]&lt;br /&gt;
* [http://www.erack.de/bookmarks/D.html#VIM erAck&amp;#039;s &amp;#039;&amp;#039;VIM and related&amp;#039;&amp;#039; bookmarks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A note for developers on WIN\DOS ==&lt;br /&gt;
&lt;br /&gt;
Please don&amp;#039;t complicate life for developers on other platforms by interspersing&lt;br /&gt;
sources with CarriageReturn characters before linefeeds, which especially is&lt;br /&gt;
extremely nasty in patches contributed. As you probably can&amp;#039;t patch your&lt;br /&gt;
kernel&amp;#039;s IO to simply not automatically write CrLf instead of Lf in text files,&lt;br /&gt;
when using Vim use this setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;set fileformats=dos,unix  &amp;quot; Vim&amp;#039;s default on DOS/WIN/OS2&lt;br /&gt;
set fileformats=unix,dos  &amp;quot; Vim&amp;#039;s default on UNX, also use it on DOS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Tools]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187459</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187459"/>
		<updated>2010-11-02T00:52:15Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Announcement */ preliminary times&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Announcement ==&lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up, starting 19:00 in the &amp;#039;&amp;#039;Schachcafé&amp;#039;&amp;#039;, see below under [[#How_to_get_there]]&lt;br /&gt;
*Saturday morning from 11:00 on - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning from 11:00 on - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org]&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
Ideas and topics that could be worked on are collected at [[Hackfest2010/Topics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to get there ===&lt;br /&gt;
&lt;br /&gt;
From Central Station (Hauptbahnhof):&lt;br /&gt;
* Take the city train &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; or &amp;#039;&amp;#039;S11&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Ohlsdorf&amp;#039;&amp;#039; or direction &amp;#039;&amp;#039;Airport/Poppenbüttel&amp;#039;&amp;#039; ([http://www.hvv.de/en/timetables-lines-routes/plans-line-route-networks/usar/ green line]).&lt;br /&gt;
* Get off at &amp;#039;&amp;#039;&amp;#039;Rübenkamp (City Nord)&amp;#039;&amp;#039;&amp;#039;, which is 8 stations from central station, the ride will take 17 minutes.&lt;br /&gt;
* Take the exit &amp;#039;&amp;#039;City Nord, Fachhochschule, Hebebrandstraße&amp;#039;&amp;#039; in the direction of travel, North.&lt;br /&gt;
* The restaurant &amp;#039;&amp;#039;[http://www.schachcafe-hamburg.de/ Schachcafé]&amp;#039;&amp;#039; where we meet for the social on Friday evening starting from 19:00 is located directly at the exit.&lt;br /&gt;
* To get to the &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039; location, either&lt;br /&gt;
** take the bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;S Hamburg Airport&amp;#039;&amp;#039; or &amp;#039;&amp;#039;U Alsterdorf&amp;#039;&amp;#039; and get off at the second stop &amp;#039;&amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;&amp;#039;, take the stairs on the right before the bridge, or&lt;br /&gt;
** walk about 1200m to the West along &amp;#039;&amp;#039;Hebebrandstraße&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Überseering&amp;#039;&amp;#039;, take the stairs on the right before the bridge&lt;br /&gt;
* then on the upper level walk straight into &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039;, see [http://www.openstreetmap.org/?lat=53.602862&amp;amp;lon=10.024229&amp;amp;zoom=18&amp;amp;layers=M map].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; The entire building complex is on two levels, the Attraktor e.V. is located on the upper level.&lt;br /&gt;
&lt;br /&gt;
If you know the way or dare to find your way ;-) you may walk from &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; exit South all the &amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;, cross the bridge and stay on the upper level. A nicer walk but may get tricky, see [http://www.openstreetmap.org/?lat=53.60327&amp;amp;lon=10.02789&amp;amp;zoom=17&amp;amp;layers=M map]. Not recommendable at night, at least not for the first time..&lt;br /&gt;
&lt;br /&gt;
=== How to get away ===&lt;br /&gt;
&lt;br /&gt;
The last bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Bf Rahlstedt&amp;#039;&amp;#039; to get to &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; goes at 22:52.&lt;br /&gt;
&lt;br /&gt;
At &amp;#039;&amp;#039;Rübenkamp&amp;#039;&amp;#039; the &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Blankenese&amp;#039;&amp;#039; to get to the Central Station runs every 20 minutes all night, on *:02 *:22 and *:42.&lt;br /&gt;
&lt;br /&gt;
=== Public transport tips ===&lt;br /&gt;
&lt;br /&gt;
If you stay all 3 days it pays to buy a 3-day ticket (&amp;#039;&amp;#039;3-Tage-Karte&amp;#039;&amp;#039;) for 15.90€. Staying less than 3 days if you plan more than 2 rides a day buy a 9 o&amp;#039;clock day ticket (&amp;#039;&amp;#039;9-Uhr-Tageskarte&amp;#039;&amp;#039;) after 9:00 for the Greater Hamburg Area (&amp;#039;&amp;#039;Großbereich&amp;#039;&amp;#039;) for 5.90€, valid until 6:00 in the morning of the following day. A single ticket (&amp;#039;&amp;#039;Einzelkarte&amp;#039;&amp;#039;) is 2.75€, round or return trips are not permitted.&lt;br /&gt;
&lt;br /&gt;
Subway and city trains run every 20 minutes the entire night during weekends.&lt;br /&gt;
&lt;br /&gt;
See [http://www.hvv.de/ HVV German] or [http://www.hvv.de/en/ HVV English] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;br /&gt;
{{CCBY}}&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187458</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187458"/>
		<updated>2010-11-02T00:49:00Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Announcement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Announcement ==&lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up, starting 19:00 in the &amp;#039;&amp;#039;Schachcafé&amp;#039;&amp;#039;, see below under [[#How_to_get_there]]&lt;br /&gt;
*Saturday morning - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org]&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
Ideas and topics that could be worked on are collected at [[Hackfest2010/Topics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to get there ===&lt;br /&gt;
&lt;br /&gt;
From Central Station (Hauptbahnhof):&lt;br /&gt;
* Take the city train &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; or &amp;#039;&amp;#039;S11&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Ohlsdorf&amp;#039;&amp;#039; or direction &amp;#039;&amp;#039;Airport/Poppenbüttel&amp;#039;&amp;#039; ([http://www.hvv.de/en/timetables-lines-routes/plans-line-route-networks/usar/ green line]).&lt;br /&gt;
* Get off at &amp;#039;&amp;#039;&amp;#039;Rübenkamp (City Nord)&amp;#039;&amp;#039;&amp;#039;, which is 8 stations from central station, the ride will take 17 minutes.&lt;br /&gt;
* Take the exit &amp;#039;&amp;#039;City Nord, Fachhochschule, Hebebrandstraße&amp;#039;&amp;#039; in the direction of travel, North.&lt;br /&gt;
* The restaurant &amp;#039;&amp;#039;[http://www.schachcafe-hamburg.de/ Schachcafé]&amp;#039;&amp;#039; where we meet for the social on Friday evening starting from 19:00 is located directly at the exit.&lt;br /&gt;
* To get to the &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039; location, either&lt;br /&gt;
** take the bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;S Hamburg Airport&amp;#039;&amp;#039; or &amp;#039;&amp;#039;U Alsterdorf&amp;#039;&amp;#039; and get off at the second stop &amp;#039;&amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;&amp;#039;, take the stairs on the right before the bridge, or&lt;br /&gt;
** walk about 1200m to the West along &amp;#039;&amp;#039;Hebebrandstraße&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Überseering&amp;#039;&amp;#039;, take the stairs on the right before the bridge&lt;br /&gt;
* then on the upper level walk straight into &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039;, see [http://www.openstreetmap.org/?lat=53.602862&amp;amp;lon=10.024229&amp;amp;zoom=18&amp;amp;layers=M map].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; The entire building complex is on two levels, the Attraktor e.V. is located on the upper level.&lt;br /&gt;
&lt;br /&gt;
If you know the way or dare to find your way ;-) you may walk from &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; exit South all the &amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;, cross the bridge and stay on the upper level. A nicer walk but may get tricky, see [http://www.openstreetmap.org/?lat=53.60327&amp;amp;lon=10.02789&amp;amp;zoom=17&amp;amp;layers=M map]. Not recommendable at night, at least not for the first time..&lt;br /&gt;
&lt;br /&gt;
=== How to get away ===&lt;br /&gt;
&lt;br /&gt;
The last bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Bf Rahlstedt&amp;#039;&amp;#039; to get to &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; goes at 22:52.&lt;br /&gt;
&lt;br /&gt;
At &amp;#039;&amp;#039;Rübenkamp&amp;#039;&amp;#039; the &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Blankenese&amp;#039;&amp;#039; to get to the Central Station runs every 20 minutes all night, on *:02 *:22 and *:42.&lt;br /&gt;
&lt;br /&gt;
=== Public transport tips ===&lt;br /&gt;
&lt;br /&gt;
If you stay all 3 days it pays to buy a 3-day ticket (&amp;#039;&amp;#039;3-Tage-Karte&amp;#039;&amp;#039;) for 15.90€. Staying less than 3 days if you plan more than 2 rides a day buy a 9 o&amp;#039;clock day ticket (&amp;#039;&amp;#039;9-Uhr-Tageskarte&amp;#039;&amp;#039;) after 9:00 for the Greater Hamburg Area (&amp;#039;&amp;#039;Großbereich&amp;#039;&amp;#039;) for 5.90€, valid until 6:00 in the morning of the following day. A single ticket (&amp;#039;&amp;#039;Einzelkarte&amp;#039;&amp;#039;) is 2.75€, round or return trips are not permitted.&lt;br /&gt;
&lt;br /&gt;
Subway and city trains run every 20 minutes the entire night during weekends.&lt;br /&gt;
&lt;br /&gt;
See [http://www.hvv.de/ HVV German] or [http://www.hvv.de/en/ HVV English] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;br /&gt;
{{CCBY}}&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187457</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187457"/>
		<updated>2010-11-02T00:44:10Z</updated>

		<summary type="html">&lt;p&gt;ErAck: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Announcement ==&lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up &lt;br /&gt;
*Saturday morning - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
Ideas and topics that could be worked on are collected at [[Hackfest2010/Topics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to get there ===&lt;br /&gt;
&lt;br /&gt;
From Central Station (Hauptbahnhof):&lt;br /&gt;
* Take the city train &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; or &amp;#039;&amp;#039;S11&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Ohlsdorf&amp;#039;&amp;#039; or direction &amp;#039;&amp;#039;Airport/Poppenbüttel&amp;#039;&amp;#039; ([http://www.hvv.de/en/timetables-lines-routes/plans-line-route-networks/usar/ green line]).&lt;br /&gt;
* Get off at &amp;#039;&amp;#039;&amp;#039;Rübenkamp (City Nord)&amp;#039;&amp;#039;&amp;#039;, which is 8 stations from central station, the ride will take 17 minutes.&lt;br /&gt;
* Take the exit &amp;#039;&amp;#039;City Nord, Fachhochschule, Hebebrandstraße&amp;#039;&amp;#039; in the direction of travel, North.&lt;br /&gt;
* The restaurant &amp;#039;&amp;#039;[http://www.schachcafe-hamburg.de/ Schachcafé]&amp;#039;&amp;#039; where we meet for the social on Friday evening starting from 19:00 is located directly at the exit.&lt;br /&gt;
* To get to the &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039; location, either&lt;br /&gt;
** take the bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;S Hamburg Airport&amp;#039;&amp;#039; or &amp;#039;&amp;#039;U Alsterdorf&amp;#039;&amp;#039; and get off at the second stop &amp;#039;&amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;&amp;#039;, take the stairs on the right before the bridge, or&lt;br /&gt;
** walk about 1200m to the West along &amp;#039;&amp;#039;Hebebrandstraße&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Überseering&amp;#039;&amp;#039;, take the stairs on the right before the bridge&lt;br /&gt;
* then on the upper level walk straight into &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039;, see [http://www.openstreetmap.org/?lat=53.602862&amp;amp;lon=10.024229&amp;amp;zoom=18&amp;amp;layers=M map].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; The entire building complex is on two levels, the Attraktor e.V. is located on the upper level.&lt;br /&gt;
&lt;br /&gt;
If you know the way or dare to find your way ;-) you may walk from &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; exit South all the &amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;, cross the bridge and stay on the upper level. A nicer walk but may get tricky, see [http://www.openstreetmap.org/?lat=53.60327&amp;amp;lon=10.02789&amp;amp;zoom=17&amp;amp;layers=M map]. Not recommendable at night, at least not for the first time..&lt;br /&gt;
&lt;br /&gt;
=== How to get away ===&lt;br /&gt;
&lt;br /&gt;
The last bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Bf Rahlstedt&amp;#039;&amp;#039; to get to &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; goes at 22:52.&lt;br /&gt;
&lt;br /&gt;
At &amp;#039;&amp;#039;Rübenkamp&amp;#039;&amp;#039; the &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Blankenese&amp;#039;&amp;#039; to get to the Central Station runs every 20 minutes all night, on *:02 *:22 and *:42.&lt;br /&gt;
&lt;br /&gt;
=== Public transport tips ===&lt;br /&gt;
&lt;br /&gt;
If you stay all 3 days it pays to buy a 3-day ticket (&amp;#039;&amp;#039;3-Tage-Karte&amp;#039;&amp;#039;) for 15.90€. Staying less than 3 days if you plan more than 2 rides a day buy a 9 o&amp;#039;clock day ticket (&amp;#039;&amp;#039;9-Uhr-Tageskarte&amp;#039;&amp;#039;) after 9:00 for the Greater Hamburg Area (&amp;#039;&amp;#039;Großbereich&amp;#039;&amp;#039;) for 5.90€, valid until 6:00 in the morning of the following day. A single ticket (&amp;#039;&amp;#039;Einzelkarte&amp;#039;&amp;#039;) is 2.75€, round or return trips are not permitted.&lt;br /&gt;
&lt;br /&gt;
Subway and city trains run every 20 minutes the entire night during weekends.&lt;br /&gt;
&lt;br /&gt;
See [http://www.hvv.de/ HVV German] or [http://www.hvv.de/en/ HVV English] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;br /&gt;
{{CCBY}}&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187456</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187456"/>
		<updated>2010-11-02T00:42:33Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Location */ more public transport&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Announcement ==&lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up &lt;br /&gt;
*Saturday morning - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to get there ===&lt;br /&gt;
&lt;br /&gt;
From Central Station (Hauptbahnhof):&lt;br /&gt;
* Take the city train &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; or &amp;#039;&amp;#039;S11&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Ohlsdorf&amp;#039;&amp;#039; or direction &amp;#039;&amp;#039;Airport/Poppenbüttel&amp;#039;&amp;#039; ([http://www.hvv.de/en/timetables-lines-routes/plans-line-route-networks/usar/ green line]).&lt;br /&gt;
* Get off at &amp;#039;&amp;#039;&amp;#039;Rübenkamp (City Nord)&amp;#039;&amp;#039;&amp;#039;, which is 8 stations from central station, the ride will take 17 minutes.&lt;br /&gt;
* Take the exit &amp;#039;&amp;#039;City Nord, Fachhochschule, Hebebrandstraße&amp;#039;&amp;#039; in the direction of travel, North.&lt;br /&gt;
* The restaurant &amp;#039;&amp;#039;[http://www.schachcafe-hamburg.de/ Schachcafé]&amp;#039;&amp;#039; where we meet for the social on Friday evening starting from 19:00 is located directly at the exit.&lt;br /&gt;
* To get to the &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039; location, either&lt;br /&gt;
** take the bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;S Hamburg Airport&amp;#039;&amp;#039; or &amp;#039;&amp;#039;U Alsterdorf&amp;#039;&amp;#039; and get off at the second stop &amp;#039;&amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;&amp;#039;, take the stairs on the right before the bridge, or&lt;br /&gt;
** walk about 1200m to the West along &amp;#039;&amp;#039;Hebebrandstraße&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Überseering&amp;#039;&amp;#039;, take the stairs on the right before the bridge&lt;br /&gt;
* then on the upper level walk straight into &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039;, see [http://www.openstreetmap.org/?lat=53.602862&amp;amp;lon=10.024229&amp;amp;zoom=18&amp;amp;layers=M map].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; The entire building complex is on two levels, the Attraktor e.V. is located on the upper level.&lt;br /&gt;
&lt;br /&gt;
If you know the way or dare to find your way ;-) you may walk from &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; exit South all the &amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;, cross the bridge and stay on the upper level. A nicer walk but may get tricky, see [http://www.openstreetmap.org/?lat=53.60327&amp;amp;lon=10.02789&amp;amp;zoom=17&amp;amp;layers=M map]. Not recommendable at night, at least not for the first time..&lt;br /&gt;
&lt;br /&gt;
=== How to get away ===&lt;br /&gt;
&lt;br /&gt;
The last bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Bf Rahlstedt&amp;#039;&amp;#039; to get to &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; goes at 22:52.&lt;br /&gt;
&lt;br /&gt;
At &amp;#039;&amp;#039;Rübenkamp&amp;#039;&amp;#039; the &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Blankenese&amp;#039;&amp;#039; to get to the Central Station runs every 20 minutes all night, on *:02 *:22 and *:42.&lt;br /&gt;
&lt;br /&gt;
=== Public transport tips ===&lt;br /&gt;
&lt;br /&gt;
If you stay all 3 days it pays to buy a 3-day ticket (&amp;#039;&amp;#039;3-Tage-Karte&amp;#039;&amp;#039;) for 15.90€. Staying less than 3 days if you plan more than 2 rides a day buy a 9 o&amp;#039;clock day ticket (&amp;#039;&amp;#039;9-Uhr-Tageskarte&amp;#039;&amp;#039;) after 9:00 for the Greater Hamburg Area (&amp;#039;&amp;#039;Großbereich&amp;#039;&amp;#039;) for 5.90€, valid until 6:00 in the morning of the following day. A single ticket (&amp;#039;&amp;#039;Einzelkarte&amp;#039;&amp;#039;) is 2.75€, round or return trips are not permitted.&lt;br /&gt;
&lt;br /&gt;
Subway and city trains run every 20 minutes the entire night during weekends.&lt;br /&gt;
&lt;br /&gt;
See [http://www.hvv.de/ HVV German] or [http://www.hvv.de/en/ HVV English] for details.&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
Ideas and topics that could be worked on are collected at [[Hackfest2010/Topics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;br /&gt;
{{CCBY}}&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187455</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=187455"/>
		<updated>2010-11-02T00:15:37Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Location */ How to get there&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Announcement ==&lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up &lt;br /&gt;
*Saturday morning - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to get there ===&lt;br /&gt;
&lt;br /&gt;
From Central Station (Hauptbahnhof):&lt;br /&gt;
* Take the city train &amp;#039;&amp;#039;S1&amp;#039;&amp;#039; or &amp;#039;&amp;#039;S11&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;Ohlsdorf&amp;#039;&amp;#039; or direction &amp;#039;&amp;#039;Airport/Poppenbüttel&amp;#039;&amp;#039; ([http://www.hvv.de/en/timetables-lines-routes/plans-line-route-networks/usar/ green line]).&lt;br /&gt;
* Get off at &amp;#039;&amp;#039;&amp;#039;Rübenkamp (City Nord)&amp;#039;&amp;#039;&amp;#039;, which is 8 stations from central station, the ride will take 17 minutes.&lt;br /&gt;
* Take the exit &amp;#039;&amp;#039;City Nord, Fachhochschule, Hebebrandstraße&amp;#039;&amp;#039; in the direction of travel, North.&lt;br /&gt;
* The restaurant &amp;#039;&amp;#039;[http://www.schachcafe-hamburg.de/ Schachcafé]&amp;#039;&amp;#039; where we meet for the social on Friday evening starting from 19:00 is located directly at the exit.&lt;br /&gt;
* To get to the &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039; location, either&lt;br /&gt;
** take the bus &amp;#039;&amp;#039;26&amp;#039;&amp;#039; direction &amp;#039;&amp;#039;S Hamburg Airport&amp;#039;&amp;#039; or &amp;#039;&amp;#039;U Alsterdorf&amp;#039;&amp;#039; and get off at the second stop &amp;#039;&amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;&amp;#039;, take the stairs on the right before the bridge, or&lt;br /&gt;
** walk about 1200m to the West along &amp;#039;&amp;#039;Hebebrandstraße&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Überseering&amp;#039;&amp;#039;, take the stairs on the right before the bridge&lt;br /&gt;
* then on the upper level walk straight into &amp;#039;&amp;#039;Attraktor e.V.&amp;#039;&amp;#039;, see [http://www.openstreetmap.org/?lat=53.602862&amp;amp;lon=10.024229&amp;amp;zoom=18&amp;amp;layers=M map].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; The entire building complex is on two levels, the Attraktor e.V. is located on the upper level.&lt;br /&gt;
&lt;br /&gt;
If you know the way or dare to find your way ;-) you may walk from &amp;#039;&amp;#039;S Rübenkamp&amp;#039;&amp;#039; exit South all the &amp;#039;&amp;#039;Dakarweg&amp;#039;&amp;#039;, cross the bridge and stay on the upper level. A nicer walk but may get tricky, see [http://www.openstreetmap.org/?lat=53.60327&amp;amp;lon=10.02789&amp;amp;zoom=17&amp;amp;layers=M map]. Not recommendable at night, at least not for the first time..&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
Ideas and topics that could be worked on are collected at [[Hackfest2010/Topics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;br /&gt;
{{CCBY}}&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186834</id>
		<title>Hackfest2010/Topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186834"/>
		<updated>2010-10-18T22:15:28Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Concrete Hacks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010 Topics}} &lt;br /&gt;
&lt;br /&gt;
==Concrete Hacks==&lt;br /&gt;
&lt;br /&gt;
Please add your ideas and topics you&amp;#039;d like to work on or mentor during the hackfest. Issues and/or features to be worked on should either be doable within two days, or at least could be given enough spin to be completed within a reasonable time and amount of effort after the hackfest. If available add links to the corresponding issue and possibly UX or other feature specifications.&lt;br /&gt;
&lt;br /&gt;
Note that this is not an agenda and does not involve any schedule, we&amp;#039;re &amp;quot;planning&amp;quot; more in an [http://www.unconference.net/ unConference] style, so about anything may go once the hackfest started. However, getting prepared for some tasks isn&amp;#039;t bad either..&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module || Topic || Remarks || Issue # || Mentor || Participants&amp;lt;br&amp;gt;Interested&lt;br /&gt;
|-&lt;br /&gt;
| Calc || Fill operations should not touch filtered rows || A long outstanding issue that if solved would ease many people&amp;#039;s itches..&amp;lt;br&amp;gt; A sketch of possible behavior is available at [[Calc/Drafts/Issue_33851#Fill_cells]] and [[Calc/Drafts/Issue_33851#Fill_series]] || {{Bug|89232}} || Eike Rathke [er] || Nehemiya MAMAN KAKALE&amp;lt;br&amp;gt;Wolfgang Pechlaner&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Writer || Unittests || How one creates unittests in the rather tightly coupled writer. || - || Bjoern Michaelsen [b_michaelsen] || Nehemiya MAMAN KAKALE&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| solenv || gbuild || The new GNU make based build system by the [[Build Environment Effort]]. || - || Bjoern Michaelsen [b_michaelsen] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Chart || implement manually resizing legend || A long outstanding feature request with up to now 116 votes.&amp;lt;br&amp;gt;I have looked in ODF spec in the mean time. It seems that there is no attribute width or height for a legend. So let the user choose the size can only be saved to file format using workarounds. Is that right? If yes, it would not be suitable for our weekend. iha: It is right that those attributes are not available so far in ODF, but this issue is really a pain for the users. ||{{Bug|28670}}|| Ingrid Halama [iha] || Regina&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Framework || Implement brackets for negative numbers so, that it is in the given list.|| This is one of the number formatting issues. Perhaps it can be used to get a start to understand number formatting. ||  {{Bug|15756}} || Eike Rathke [er] || Regina&lt;br /&gt;
|-|  ||  ||  ||  ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Mentors around==&lt;br /&gt;
&lt;br /&gt;
This is a list of hackers around, that are able to cover/mentor certain subject areas in the code base - if you have specific ideas/plans, poke them if they can help you with that.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Modules || Mentor(OOo user name) || Participants&amp;lt;br&amp;gt;Interested&lt;br /&gt;
|-&lt;br /&gt;
| Calc/I18N ||  Eike Rathke [er] || Nehemiya MAMAN KAKALE&amp;lt;br&amp;gt;Wolfgang Pechlaner&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Draw/Impress/VCL ||  Thorsten Behrens [thb] || Nehemiya MAMAN KAKALE&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Draw/Impress/Drawinglayer ||  Armin Le Grand [aw] || Nehemiya MAMAN KAKALE&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Writer || Cédric Bosdonnat [cedricbosdo]|| Nehemiya MAMAN KAKALE&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Writer/New Build System || Bjoern Michaelsen [b_michaelsen] || Nehemiya MAMAN KAKALE&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Calc ||  Niklas Nebel [nn] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| gsl ||  Philipp Lohmann [pl] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Chart ||  Ingrid Halama [iha] || Regina&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Writer || Michael Stahl [mst]|| {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=186806</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=186806"/>
		<updated>2010-10-17T14:43:34Z</updated>

		<summary type="html">&lt;p&gt;ErAck: TOC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Announcement ==&lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up &lt;br /&gt;
*Saturday morning - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
Ideas and topics that could be worked on are collected at [[Hackfest2010/Topics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;br /&gt;
{{CCBY}}&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186618</id>
		<title>Hackfest2010/Topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186618"/>
		<updated>2010-10-12T13:17:17Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Mentors around */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010 Topics}} &lt;br /&gt;
&lt;br /&gt;
==Concrete Hacks==&lt;br /&gt;
&lt;br /&gt;
Please add your ideas and topics you&amp;#039;d like to work on or mentor during the hackfest. Issues and/or features to be worked on should either be doable within two days, or at least could be given enough spin to be completed within a reasonable time and amount of effort after the hackfest. If available add links to the corresponding issue and possibly UX or other feature specifications.&lt;br /&gt;
&lt;br /&gt;
Note that this is not an agenda and does not involve any schedule, we&amp;#039;re &amp;quot;planning&amp;quot; more in an [http://www.unconference.net/ unConference] style, so about anything may go once the hackfest started. However, getting prepared for some tasks isn&amp;#039;t bad either..&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module || Topic || Remarks || Issue # || Mentor || Participants&amp;lt;br&amp;gt;Interested&lt;br /&gt;
|-&lt;br /&gt;
| Calc || Fill operations should not touch filtered rows || A long outstanding issue that if solved would ease many people&amp;#039;s itches..&amp;lt;br&amp;gt; A sketch of possible behavior is available at [[Calc/Drafts/Issue_33851#Fill_cells]] and [[Calc/Drafts/Issue_33851#Fill_series]] || {{Bug|89232}} || Eike Rathke [er] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Mentors around==&lt;br /&gt;
&lt;br /&gt;
This is a list of hackers around, that are able to cover/mentor certain subject areas in the code base - if you have specific ideas/plans, poke them if they can help you with that.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Modules || Mentor(OOo user name) || Participants&amp;lt;br&amp;gt;Interested&lt;br /&gt;
|-&lt;br /&gt;
| Calc/I18N ||  Eike Rathke [er] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Draw/Impress/VCL ||  Thorsten Behrens [thb] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
| Draw/Impress/Drawinglayer ||  Armin Le Grand [aw] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186489</id>
		<title>Hackfest2010/Topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186489"/>
		<updated>2010-10-10T21:44:16Z</updated>

		<summary type="html">&lt;p&gt;ErAck: &amp;quot;planning&amp;quot; an unConference...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010 Topics}} &lt;br /&gt;
&lt;br /&gt;
Please add your ideas and topics you&amp;#039;d like to work on or mentor during the hackfest. Issues and/or features to be worked on should either be doable within two days, or at least could be given enough spin to be completed within a reasonable time and amount of effort after the hackfest. If available add links to the corresponding issue and possibly UX or other feature specifications.&lt;br /&gt;
&lt;br /&gt;
Note that this is not an agenda and does not involve any schedule, we&amp;#039;re &amp;quot;planning&amp;quot; more in an [http://www.unconference.net/ unConference] style, so about anything may go once the hackfest started. However, getting prepared for some tasks isn&amp;#039;t bad either..&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module || Topic || Remarks || Issue # || Mentor || Participants&amp;lt;br&amp;gt;Interested&lt;br /&gt;
|-&lt;br /&gt;
| Calc || Fill operations should not touch filtered rows || A long outstanding issue that if solved would ease many people&amp;#039;s itches..&amp;lt;br&amp;gt; A sketch of possible behavior is available at [[Calc/Drafts/Issue_33851#Fill_cells]] and [[Calc/Drafts/Issue_33851#Fill_series]] || {{Bug|89232}} || Eike Rathke [er] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=186488</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=186488"/>
		<updated>2010-10-10T20:55:53Z</updated>

		<summary type="html">&lt;p&gt;ErAck: add Hackfest2010/Topics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
&lt;br /&gt;
== Announcement ==&lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up &lt;br /&gt;
*Saturday morning - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
Ideas and topics that could be worked on are collected at [[Hackfest2010/Topics]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;br /&gt;
{{CCBY}}&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186486</id>
		<title>Hackfest2010/Topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010/Topics&amp;diff=186486"/>
		<updated>2010-10-10T20:37:59Z</updated>

		<summary type="html">&lt;p&gt;ErAck: hackfest topics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010 Topics}} &lt;br /&gt;
&lt;br /&gt;
Please add your ideas and topics you&amp;#039;d like to work on or mentor during the hackfest. Issues and/or features to be worked on should either be doable within two days, or at least could be given enough spin to be completed within a reasonable time and amount of effort after the hackfest. If available add links to the corresponding issue and possibly UX or other feature specifications.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module || Topic || Remarks || Issue # || Mentor || Participants&amp;lt;br&amp;gt;Interested&lt;br /&gt;
|-&lt;br /&gt;
| Calc || Fill operations should not touch filtered rows || A long outstanding issue that if solved would ease many people&amp;#039;s itches..&amp;lt;br&amp;gt; A sketch of possible behavior is available at [[Calc/Drafts/Issue_33851#Fill_cells]] and [[Calc/Drafts/Issue_33851#Fill_series]] || {{Bug|89232}} || Eike Rathke [er] || {you}&amp;lt;br&amp;gt;{and you}&amp;lt;br&amp;gt;{and you} ;-)&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=186485</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=186485"/>
		<updated>2010-10-10T20:07:25Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Pretty Sortable Table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er&lt;br /&gt;
* Working on:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Email Calc developers: [mailto:dev@sc.openoffice.org dev@sc.openoffice.org] mailing list&lt;br /&gt;
* Email personal: [mailto:er@openoffice.org er@openoffice.org], [mailto:eike.rathke@oracle.com eike.rathke@oracle.com]&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* GullFOSS: http://blogs.sun.com/GullFOSS&lt;br /&gt;
* Company Name: Oracle Deutschland B.V. &amp;amp; Co. KG&lt;br /&gt;
* Company URL: http://oracle.com/office&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== currently working on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
For many more see&lt;br /&gt;
* [[Documentation/Dashboard/Wiki_Editing_Policy#List_of_Existing_Documentation_Templates]]&lt;br /&gt;
* [[:Category:Wiki_Templates]], especially&lt;br /&gt;
** [[:Category:Formatting_templates]]&lt;br /&gt;
** [[:Category:Wiki_Templates_Expressing_Quality]]&lt;br /&gt;
* [[Special:Mostlinkedtemplates]]&lt;br /&gt;
&lt;br /&gt;
=== Pretty Sortable Table ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column 1 Header || Column 2 Header&lt;br /&gt;
|-&lt;br /&gt;
| some data column 1 || and some data column 2&lt;br /&gt;
|-&lt;br /&gt;
| more data column 1 || even more data column 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=186333</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=186333"/>
		<updated>2010-10-07T19:13:36Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er&lt;br /&gt;
* Working on:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Email Calc developers: [mailto:dev@sc.openoffice.org dev@sc.openoffice.org] mailing list&lt;br /&gt;
* Email personal: [mailto:er@openoffice.org er@openoffice.org], [mailto:eike.rathke@oracle.com eike.rathke@oracle.com]&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* GullFOSS: http://blogs.sun.com/GullFOSS&lt;br /&gt;
* Company Name: Oracle Deutschland B.V. &amp;amp; Co. KG&lt;br /&gt;
* Company URL: http://oracle.com/office&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== currently working on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
For many more see&lt;br /&gt;
* [[Documentation/Dashboard/Wiki_Editing_Policy#List_of_Existing_Documentation_Templates]]&lt;br /&gt;
* [[:Category:Wiki_Templates]], especially&lt;br /&gt;
** [[:Category:Formatting_templates]]&lt;br /&gt;
** [[:Category:Wiki_Templates_Expressing_Quality]]&lt;br /&gt;
* [[Special:Mostlinkedtemplates]]&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=186332</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=186332"/>
		<updated>2010-10-07T19:06:44Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er&lt;br /&gt;
* Working on:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Email Calc developers: [mailto:dev@sc.openoffice.org dev@sc.openoffice.org] mailing list&lt;br /&gt;
* Email personal: [mailto:er@openoffice.org er@openoffice.org], [mailto:eike.rathke@oracle.com eike.rathke@oracle.com]&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* GullFOSS: http://blogs.sun.com/GullFOSS&lt;br /&gt;
* Company Name: Oracle Deutschland B.V. &amp;amp; Co. KG&lt;br /&gt;
* Company URL: http://oracle.com/office&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== currently working on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
For many more see&lt;br /&gt;
* [[Documentation/Dashboard/Wiki_Editing_Policy#List_of_Existing_Documentation_Templates]]&lt;br /&gt;
* [[:Category:Wiki_Templates]]&lt;br /&gt;
* [[Special:Mostlinkedtemplates]]&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010/de&amp;diff=186327</id>
		<title>Hackfest2010/de</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010/de&amp;diff=186327"/>
		<updated>2010-10-07T18:40:25Z</updated>

		<summary type="html">&lt;p&gt;ErAck: I&amp;#039;m back in&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010|For the English version of this page, please click here.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Geschätzte OOo-Hacker, &lt;br /&gt;
&lt;br /&gt;
die OOoCon ist nun zuende, und wir stellen mal wieder fest, wie wichtig und effektiv persönliche Treffen sind - leider haben wir davon im Jahr viel zu wenig. Um das Problem mal grundlegend zu fixen, kündigen wir hiermit das OOo HackFest in Hamburg an, ein Event speziell für und mit Entwicklern, bei dem wir gemeinschaftlich am Code arbeiten wollen. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Das OpenOffice.org HackFest findet am Wochenende vom 6./7. November 2010 im [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg] statt&amp;#039;&amp;#039;&amp;#039;, das Programm wird in etwa folgendermaßen aussehen: &lt;br /&gt;
&lt;br /&gt;
*Freitag abend - Bierchen &amp;amp;amp; Kennenlernen &lt;br /&gt;
*Samstag morgen - Einführungsvorträge, Hands-on sessions &lt;br /&gt;
*Samstag nachmittag/nacht - gemeinschaftliches Hacken &amp;amp;amp; Bugfixen &lt;br /&gt;
*Sonntag morgen - wrap-up, review, dokumentieren&lt;br /&gt;
&lt;br /&gt;
Es wird ein limitiertes Budget für Reisekosten geben, für Übernachtungen steht ein großer (leider unbeheizter) Raum zur Verfügung, also an Isomatte und Schlafsack denken. Für etwas komfortablere und dennoch preiswerte Übernachtungsmöglichkeiten siehe die [[Sleeping in Hamburg|entsprechende Wikiseite]]. &lt;br /&gt;
&lt;br /&gt;
Wir freuen uns, euch dort zu sehen und versorgen euch bald mit weiteren Informationen zum Programm. Um euch anzumelden, genügt eine kurze formlose E-Mail an [mailto:hackfest@openoffice.org hackfest@openoffice.org], wir melden uns dann bei euch mit weiteren Infos.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Viele Grüße von euren HackFest-Organisatoren &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{CCBY}} &lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=186326</id>
		<title>Hackfest2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hackfest2010&amp;diff=186326"/>
		<updated>2010-10-07T18:39:47Z</updated>

		<summary type="html">&lt;p&gt;ErAck: I&amp;#039;m back in&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenOffice.org HackFest 2010}} &lt;br /&gt;
&lt;br /&gt;
[[Hackfest2010/de|Für die deutsche Version dieser Seite klickt bitte hier.]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dear OOo hackers, &lt;br /&gt;
&lt;br /&gt;
the OOoCon just ended, and we realize how little time we can spend together face2face each year. To properly fix that problem, we hereby announce the next event around OpenOffice.org - a HackFest in Hamburg, specifically targeted to developers, to give all of us more face time &amp;amp;amp; collectively work on the code. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The OpenOffice.org HackFest will take place on the weekend of November 6./7. 2010 in the [http://wiki.attraktor.org/index.php/Mex Attraktor in Hamburg]&amp;#039;&amp;#039;&amp;#039;, and a tentative program could look like this: &lt;br /&gt;
&lt;br /&gt;
*Friday night - beer &amp;amp;amp; fun, warming up &lt;br /&gt;
*Saturday morning - Intro talks, Hands-on sessions &lt;br /&gt;
*Saturday afternoon/night - collective hacking, bug fixing &lt;br /&gt;
*Sunday morning - wrap-up, review, document&lt;br /&gt;
&lt;br /&gt;
For those who are in need for a bursary, we have a limited travel funding budget available. For sleeping, couchsurfing at the organizers is available. Be aware that would be in an unheated loft, so bringing a sleeping mat and a good sleeping bag would be essential. For more comfortable reasonably priced acommodations see [[Sleeping in Hamburg|the wiki page]].&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
We look forward to meet you there, stay tuned for further announcements around programme and sponsoring! To register yourself, just drop a short note to [mailto:hackfest@openoffice.org hackfest@openoffice.org] and we&amp;#039;ll follow up with further information soon.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Faithfully, your HackFest organizers &lt;br /&gt;
&lt;br /&gt;
Eike, Florian &amp;amp;amp; Thorsten&amp;lt;br&amp;gt;[mailto:hackfest@openoffice.org hackfest@openoffice.org] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Location at OpenStreetMap: [http://www.openstreetmap.org/?lat=53.603016&amp;amp;lon=10.022952&amp;amp;zoom=18&amp;amp;layers=M http://www.openstreetmap.org/?lat=53.603016&amp;amp;amp;lon=10.022952&amp;amp;amp;zoom=18&amp;amp;amp;layers=M]&amp;lt;br&amp;gt;Location at Google Maps: [http://maps.google.com/maps?f=d&amp;amp;source=s_d&amp;amp;saddr=53.602915,10.022873&amp;amp;daddr=&amp;amp;geocode=&amp;amp;hl=en&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=0&amp;amp;sz=19&amp;amp;sll=53.602983,10.022873&amp;amp;sspn=0.001372,0.00213&amp;amp;ie=UTF8&amp;amp;ll=53.603007,10.022691&amp;amp;spn=0.002744,0.004259&amp;amp;t=h&amp;amp;z=18 http://maps.google.com/maps?f=d&amp;amp;amp;source=s_d&amp;amp;amp;saddr=53.602915,10.022873&amp;amp;amp;daddr=&amp;amp;amp;geocode=&amp;amp;amp;hl=en&amp;amp;amp;mra=dme&amp;amp;amp;mrcr=0&amp;amp;amp;mrsp=0&amp;amp;amp;sz=19&amp;amp;amp;sll=53.602983,10.022873&amp;amp;amp;sspn=0.001372,0.00213&amp;amp;amp;ie=UTF8&amp;amp;amp;ll=53.603007,10.022691&amp;amp;amp;spn=0.002744,0.004259&amp;amp;amp;t=h&amp;amp;amp;z=18]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{{CCBY}} &lt;br /&gt;
&lt;br /&gt;
[[Category:Conferences]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=NLC:New_Translators_Start_here&amp;diff=186166</id>
		<title>NLC:New Translators Start here</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=NLC:New_Translators_Start_here&amp;diff=186166"/>
		<updated>2010-10-05T10:24:52Z</updated>

		<summary type="html">&lt;p&gt;ErAck: some grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Working together with OpenOffice.org L10n Team ==&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org L10n provides localized builds for many [[Languages|languages]]. Joining your native language project is a great opportunity to help making OpenOffice.org reach more users. Browse the [[Languages|languages list]] and get in touch with project leads.&lt;br /&gt;
&lt;br /&gt;
To get in touch with the general OpenOffice.org translation community please come and say hello on the mailto:dev@l10n.openoffice.org mailing list  [http://l10n.openoffice.org/servlets/SummarizeList?listName=dev (browse archive)].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;For&amp;#039;&amp;#039;&amp;#039; translation teams, with every new milestone (version of OpenOffice.org code) we provide source messages from both UI and Help to be translated.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;From&amp;#039;&amp;#039;&amp;#039; translation teams, we need a translation file, a &amp;lt;tt&amp;gt;SDF/GSI&amp;lt;/tt&amp;gt; file containing all the English strings translated into your language (or at least 80% UI translated).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Translation teams have the possibility to maintain a localized web site at http://xx.openoffice.org (xx being a language code) if they become a native language project in the [[NLC|Native Language Confederation]], translate user documentation published on the wiki, upload localized templates and localize OpenOffice.org templates and extensions repositories web sites. It is possible to prepare and publish locale data, spellcheck and thesaurus dictionaries, hyphenation patterns and autocorrect data as well as advanced grammar checking support. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Translating OpenOffice.org ==&lt;br /&gt;
&lt;br /&gt;
Click here to view [[Translation:General_Information|general information on translating]] OpenOffice.org using either Pootle or using Gettext PO and managing translations outside Pootle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Starting a new localization project ==&lt;br /&gt;
&lt;br /&gt;
First thing is to prepare new [[Adding_a_new_language_or_locale|language or locale support]] and [[How_to_submit_new_Locale_|submit it]] for integration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing localized builds ==&lt;br /&gt;
&lt;br /&gt;
[[NLC/localizedQA|Testing your localized builds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== I need help ==&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org is a large and complex project, so it is particularly difficult for a newcomer. Don&amp;#039;t feel discouraged if you become confused or can&amp;#039;t get an overview of the project. &lt;br /&gt;
&lt;br /&gt;
In any case, we are all here to help each other. Please ask on the [mailto:dev@l10n.openoffice.org dev@l10n.openoffice.org] mailing list if you have any problems. We will work things out together.&lt;br /&gt;
&lt;br /&gt;
Good luck with your localization. :)&lt;br /&gt;
&lt;br /&gt;
[[Category:Localization|!]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Scaddins&amp;diff=182325</id>
		<title>Scaddins</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Scaddins&amp;diff=182325"/>
		<updated>2010-09-08T20:54:27Z</updated>

		<summary type="html">&lt;p&gt;ErAck: point to category Add-In (singular), not Add-Ins&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Source code module &amp;#039;&amp;#039;&amp;#039;scaddins&amp;#039;&amp;#039;&amp;#039; contains Add-Ins for the [[Calc]] spreadsheet application. For information about how to write an Add-In please see articles in the category [[:Category:Add-In|Add-In]].&lt;br /&gt;
&lt;br /&gt;
Currently the module contains&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;source/&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;analysis/&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
**: Analysis Add-In for Microsoft Excel interoperability&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;datefunc/&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
**: functions for date calculation&lt;br /&gt;
&lt;br /&gt;
Please note that these Add-Ins make use of the OOo resource system for localized function names, depending on modules [[Tools]] and [[Vcl]], and thus are not pure UNO components using the SDK only.&lt;br /&gt;
&lt;br /&gt;
[[Category:Source_directories]]&lt;br /&gt;
[[Category:Calc]]&lt;br /&gt;
[[Category:Add-In]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Little_Helpers&amp;diff=182324</id>
		<title>Little Helpers</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Little_Helpers&amp;diff=182324"/>
		<updated>2010-09-08T20:48:14Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* mkd */ enable parallel dmake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some &amp;#039;&amp;#039;&amp;#039;Little Helpers&amp;#039;&amp;#039;&amp;#039; for the enthusiastic developer, such as&lt;br /&gt;
small scripts that help to tame the OOo code base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tools for maintaining identifier databases ==&lt;br /&gt;
&lt;br /&gt;
=== GNU ID-utils ===&lt;br /&gt;
&lt;br /&gt;
The GNU ID-utils are a powerful set of utilities to generate and query a&lt;br /&gt;
database of file names and identifiers, invoke your favourite editor with the&lt;br /&gt;
resulting set of files, or accomplish any other task with the resultset. Be&lt;br /&gt;
sure to &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; use the original version 3.2, use the Debian package&lt;br /&gt;
instead, or maybe some other distribution&amp;#039;s package. For details why and how&lt;br /&gt;
to patch a self-compiled version 3.2d see&lt;br /&gt;
[http://jroller.com/page/erAck?entry=gnu_id_utils this blog entry].&lt;br /&gt;
&lt;br /&gt;
The ID-utils come with an &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;;;; id-utils.el -- emacs interface to `lid -R grep&amp;#039;, a.k.a. `gid&amp;#039; &amp;#039;&amp;#039; &amp;lt;br&amp;gt;&lt;br /&gt;
For how to interface with the &amp;#039;&amp;#039;vim&amp;#039;&amp;#039; editor see the&lt;br /&gt;
[[Editor_Vim#Vim_and_the_GNU_ID-utils | Vim editor&amp;#039;s GNU ID-utils]] section.&lt;br /&gt;
Generally, the editor invoking functionality of ID-utils uses the shell&lt;br /&gt;
variables &amp;#039;&amp;#039;VISUAL&amp;#039;&amp;#039; or &amp;#039;&amp;#039;EDITOR&amp;#039;&amp;#039;, &amp;#039;&amp;#039;EIDARG&amp;#039;&amp;#039;, &amp;#039;&amp;#039;EIDLDEL&amp;#039;&amp;#039; and &amp;#039;&amp;#039;EIDRDEL&amp;#039;&amp;#039;, so&lt;br /&gt;
it should be possible to invoke any capable editor. Citing from the&lt;br /&gt;
documentation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   `eid&amp;#039; invokes the editor defined by the environment variable&lt;br /&gt;
`VISUAL&amp;#039;.  If `VISUAL&amp;#039; is undefined, it uses the environment variable&lt;br /&gt;
`EDITOR&amp;#039; instead.  If `EDITOR&amp;#039; is undefined, it defaults to `vi&amp;#039;.  It&lt;br /&gt;
is possible for `eid&amp;#039; to pass the editor an initial search pattern so&lt;br /&gt;
that your cursor will immediately alight on the token of interest.&lt;br /&gt;
This feature is controlled by the following environment variables:&lt;br /&gt;
`EIDARG&amp;#039;&lt;br /&gt;
     A printf(3) format string for the editor argument to search for the&lt;br /&gt;
     matching token.  For `vi&amp;#039;, this should be `+/%s/&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
`EIDLDEL&amp;#039;&lt;br /&gt;
     The regular-expression meta-character(s) for delimiting the&lt;br /&gt;
     beginning of a word (the ``eid&amp;#039; Left DELimiter&amp;#039;).  `eid&amp;#039; inserts&lt;br /&gt;
     this in front of the matching token when a word-search is desired.&lt;br /&gt;
     For `vi&amp;#039;, this should be `\&amp;lt;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
`EIDRDEL&amp;#039;&lt;br /&gt;
     The regular-expression meta-character(s) for delimiting the end of&lt;br /&gt;
     a word (the ``eid&amp;#039; Right DELimiter&amp;#039;).  `eid&amp;#039; inserts this in end&lt;br /&gt;
     of the matching token when a word-search is desired.  For `vi&amp;#039;,&lt;br /&gt;
     this should be `\&amp;gt;&amp;#039;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ID-utils use an extension &amp;amp;rarr; language mapping file &amp;lt;tt&amp;gt;id-lang.map&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Either edit the system-wide file of your installation or a local copy thereof.&lt;br /&gt;
Here we&amp;#039;re assuming a local copy as &amp;lt;tt&amp;gt;$HOME/devbase/id-lang.map&amp;lt;/tt&amp;gt;, add the&lt;br /&gt;
following entries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Treat OOo/SO resource header files as C files&lt;br /&gt;
*.hrc           C&lt;br /&gt;
# Treat OOo/SO header files generated from *.idl as C++ files&lt;br /&gt;
*.hdl           C++&lt;br /&gt;
# Treat OOo IDL files as C++ files, not exactly a header file, but ...&lt;br /&gt;
*.idl           C++&lt;br /&gt;
# Treat OOo/SO resource files as C files&lt;br /&gt;
*.src           C&lt;br /&gt;
# Treat OOo/SO *.mk files as makefiles&lt;br /&gt;
*.mk            make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; The &amp;#039;&amp;#039;*.mk make&amp;#039;&amp;#039; entry doesn&amp;#039;t seem to work, the makefile.mk&amp;#039;s IDs&lt;br /&gt;
are not added to the database, didn&amp;#039;t investigate yet why.&lt;br /&gt;
&lt;br /&gt;
Then the script below may be invoked either&lt;br /&gt;
* In a module&amp;#039;s directory without parameters, creating an ID database for just the single module.&lt;br /&gt;
* In the &amp;#039;&amp;#039;$SRC_ROOT&amp;#039;&amp;#039; directory for all modules: &amp;lt;code&amp;gt;mkid-script &amp;#039;*&amp;#039;&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Note the literal &amp;#039;*&amp;#039; asterisk that is not to be expanded by the shell. &amp;lt;br&amp;gt; The file size of the generated &amp;#039;&amp;#039;ID&amp;#039;&amp;#039; file using this method currently (m223) is 31MB.&lt;br /&gt;
* In the &amp;#039;&amp;#039;$SRC_ROOT&amp;#039;&amp;#039; directory for specified modules: &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;mkid-script &amp;#039;{module1,module2,solver}&amp;#039;&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Again, note the literal argument enclosed in single quotes for the file name expansion, which is done by the script. If the argument was not passed literally, only the first module would be included, and other strange things may happen.. Wildcards may be used as usual. &amp;lt;br&amp;gt; It is a good idea to include the &amp;#039;&amp;#039;solver&amp;#039;&amp;#039; module to gather identifiers from delivered header files. &amp;lt;br&amp;gt; Ignore messages like &amp;lt;br&amp;gt; &amp;#039;&amp;#039;mkid: can&amp;#039;t lstat `unxlngi4.pro&amp;#039; from `.../SRC680/src.m180/solver&amp;#039; &amp;#039;&amp;#039; or &amp;lt;br&amp;gt; &amp;#039;&amp;#039;mkid: can&amp;#039;t lstat `build&amp;#039; from `.../SRC680/src.m180/module1/unxlngi4.pro/misc&amp;#039; &amp;#039;&amp;#039; &amp;lt;br&amp;gt; They result from the INPATH relevant arguments passed for each module and don&amp;#039;t harm.&lt;br /&gt;
&lt;br /&gt;
You may also manually invoke &amp;#039;&amp;#039;mkid&amp;#039;&amp;#039; in the &amp;#039;&amp;#039;$SRC_ROOT&amp;#039;&amp;#039; directory for all&lt;br /&gt;
modules, this is a safe bet but may include more than you want if you have&lt;br /&gt;
output directories for multiple platforms, all identifiers present there will&lt;br /&gt;
get duplicated, triplicated, ... the command line for this is &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;mkid --lang-map=$HOME/devbase/id-lang.map --statistics&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mkid-script ====&lt;br /&gt;
&lt;br /&gt;
The module-wise script, suggested name: &amp;lt;tt&amp;gt;$HOME/devbase/mkid-script&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/tcsh&lt;br /&gt;
&lt;br /&gt;
# Either the current module, or all modules can be ID&amp;#039;ed if $1 is&lt;br /&gt;
# specified as literal &amp;#039;*&amp;#039; unexpanded. Will be expanded here.&lt;br /&gt;
# Instead of &amp;#039;*&amp;#039; _any_ shell wildcard should be possible, e.g. &amp;#039;{.,bf_*}&amp;#039;.&lt;br /&gt;
# Output directories except $INPATH/inc and $INPATH/misc/build are skipped in&lt;br /&gt;
# these cases.&lt;br /&gt;
# A simple ALL generator, not ignoring any directory, is the parameter &amp;#039;all&amp;#039;.&lt;br /&gt;
# Warning, that may create a huge database and massively duplicated entries if&lt;br /&gt;
# more than one platform&amp;#039;s output directory exists.&lt;br /&gt;
&lt;br /&gt;
if ( { ( which mkid &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
    echo generating IDs&lt;br /&gt;
    if ( &amp;quot;$1&amp;quot; == &amp;quot;-o&amp;quot; ) then&lt;br /&gt;
        set output=&amp;quot;--output=$2&amp;quot;&lt;br /&gt;
        shift&lt;br /&gt;
        shift&lt;br /&gt;
    else&lt;br /&gt;
        set output=&amp;quot;&amp;quot;&lt;br /&gt;
    endif&lt;br /&gt;
    if ( &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ) then&lt;br /&gt;
        set module=&amp;quot;.&amp;quot;&lt;br /&gt;
        #set exclude=./{common,unxlngi6,unxsols4,wntmsci10}{,.pro}&lt;br /&gt;
        # Wildcards not only make updates unnecessary but also suppress &amp;quot;no&lt;br /&gt;
        # match&amp;quot; error messages. The CVS* and .svn* directories are included&lt;br /&gt;
        # for the case of a freshly checked out source that does not have any&lt;br /&gt;
        # output directories yet. Otherwise that would still lead to a &amp;quot;no&lt;br /&gt;
        # match&amp;quot; error if no wildcarded names matched.&lt;br /&gt;
        set exclude=./{CVS*,.svn*,common*,*unxlng*,*unxsol*,*unxmac*,*wntmsc*}&lt;br /&gt;
    else if ( &amp;quot;`basename &amp;#039;$1&amp;#039;`&amp;quot; == &amp;quot;*&amp;quot; ) then&lt;br /&gt;
        set module=&amp;quot;$1&amp;quot;&lt;br /&gt;
        echo module: $module&lt;br /&gt;
        # prevent command line overflow with a full exclude&lt;br /&gt;
        set exclude=&amp;quot;x&amp;quot;&lt;br /&gt;
        echo exclude: $exclude&lt;br /&gt;
    else if ( &amp;quot;$1&amp;quot; == &amp;quot;all&amp;quot; ) then&lt;br /&gt;
        set module=&amp;quot;$1&amp;quot;&lt;br /&gt;
        echo module: $module&lt;br /&gt;
        set exclude=&amp;quot;nothing&amp;quot;&lt;br /&gt;
        echo exclude: $exclude&lt;br /&gt;
    else&lt;br /&gt;
        set module=&amp;quot;$1&amp;quot;&lt;br /&gt;
        echo module: $module&lt;br /&gt;
        set exclude=$1/{CVS*,.svn*,common*,*unxlng*,*unxsol*,*unxmac*,*wntmsc*}&lt;br /&gt;
        echo exclude: $exclude&lt;br /&gt;
    endif&lt;br /&gt;
&lt;br /&gt;
    if ( &amp;quot;`basename &amp;#039;$1&amp;#039;`&amp;quot; == &amp;quot;*&amp;quot; ) then&lt;br /&gt;
        # test for ls overrun&lt;br /&gt;
        set dcommand=&amp;quot;ls -d $module/*&amp;quot;&lt;br /&gt;
        if ( ! { ( $dcommand &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
            echo &amp;quot;$0 : ls overrun, trying find $module -mindepth 1 -maxdepth 1&amp;quot;&lt;br /&gt;
            # test for find mindepth/maxdepth availability&lt;br /&gt;
            set dcommand=&amp;quot;find $module -mindepth 1 -maxdepth 1&amp;quot;&lt;br /&gt;
            if ( ! { ( $dcommand &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
                echo &amp;quot;$0 : find doesn&amp;#039;t know options -mindepth -maxdepth&amp;quot;&lt;br /&gt;
                echo &amp;quot;$0 : too bad, giving up.&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
            endif&lt;br /&gt;
        endif&lt;br /&gt;
        # Only positive list of module subdirectories and files,&lt;br /&gt;
        # excluding output directories except $INPATH/{inc,misc/build}&lt;br /&gt;
        set dirs=&amp;quot;$module/$INPATH/inc $module/$INPATH/misc/build `$dcommand | sed -e &amp;#039;/\(\/\(CVS\|common\|.*unxlng\|.*unxsol\|.*unxmac\|.*wntmsc\|Jamfile\|cscope\.\|tags\|ID\)\)\|^solver\//d&amp;#039;`&amp;quot;&lt;br /&gt;
        echo dirs: $dirs&lt;br /&gt;
        echo Creating output: $output&lt;br /&gt;
        mkid --lang-map=$HOME/devbase/id-lang.map --include=&amp;#039;C C++ asm perl java make&amp;#039; $output --statistics $dirs&lt;br /&gt;
    else if ( &amp;quot;$1&amp;quot; == &amp;quot;all&amp;quot; ) then&lt;br /&gt;
        echo Creating output: $output&lt;br /&gt;
        mkid --lang-map=$HOME/devbase/id-lang.map --include=&amp;#039;C C++ asm perl java make&amp;#039; $output --statistics&lt;br /&gt;
    else&lt;br /&gt;
        # all but negative list plus INPATH relevants&lt;br /&gt;
        echo Creating output: $output&lt;br /&gt;
        mkid --lang-map=$HOME/devbase/id-lang.map --include=&amp;#039;C C++ asm perl java make&amp;#039; $output --statistics --prune=&amp;quot;$exclude&amp;quot; $module $module/$INPATH/inc $module/$INPATH/misc/build&lt;br /&gt;
    endif&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
    echo no ID-utils&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exuberant Ctags ===&lt;br /&gt;
&lt;br /&gt;
The Exuberant Ctags utility interfaces nicely with Emacs and Vim and enables&lt;br /&gt;
quick lookup for declarations and definitions of macros, typedefs, constants,&lt;br /&gt;
enums, variables, structs and classes and their methods and implementation. You&lt;br /&gt;
should get the latest version available at http://ctags.sourceforge.net/, which&lt;br /&gt;
currently (2006-08-27) is v5.6, older versions included by distributions for&lt;br /&gt;
example don&amp;#039;t automatically recognize .mk files as makefiles, and v5.6 also&lt;br /&gt;
added a patch needed for the &amp;#039;&amp;#039;vim 7.0 omni-completion&amp;#039;&amp;#039; feature. Ctags creates&lt;br /&gt;
a file &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; in the current directory, if not told otherwise.&lt;br /&gt;
&lt;br /&gt;
As creating a tags file over all modules and directories exceeded the 2GB file&lt;br /&gt;
size limit, a positive directory list was used to go along with a &amp;#039;*&amp;#039;&lt;br /&gt;
parameter, identical to the one used in the &amp;#039;&amp;#039;mkid-script&amp;#039;&amp;#039; above. The file&lt;br /&gt;
size of the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; file generated for &amp;#039;*&amp;#039; currently (m182) is 398MB.&lt;br /&gt;
&lt;br /&gt;
==== ctags-script ====&lt;br /&gt;
&lt;br /&gt;
For use with the OOo code base a script with a syntax similar to the ID-utils&lt;br /&gt;
script above comes handy, suggested name: &amp;lt;tt&amp;gt;$HOME/devbase/ctags-script&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/tcsh&lt;br /&gt;
&lt;br /&gt;
# Either the current module, or all modules can be ctag&amp;#039;ed if $1 is&lt;br /&gt;
# specified as literal &amp;#039;*&amp;#039; unexpanded. Will be expanded here.&lt;br /&gt;
# Instead of &amp;#039;*&amp;#039; _any_ shell wildcard should be possible, e.g. &amp;#039;{.,bf_*}&amp;#039;.&lt;br /&gt;
# NOTE: ctags on &amp;#039;*&amp;#039; exceeded 2GB file size limit if for _all_ OOo modules and&lt;br /&gt;
# no positive dirs list was used.&lt;br /&gt;
&lt;br /&gt;
if ( &amp;quot;$?MYCTAGS&amp;quot; == &amp;quot;0&amp;quot; ) then&lt;br /&gt;
    set MYCTAGS=&amp;quot;ctags&amp;quot;&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
if ( { ( which &amp;quot;$MYCTAGS&amp;quot; &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
    echo generating ctags&lt;br /&gt;
    # Options necessary for the Vim OmniCppComplete plugin,&lt;br /&gt;
    # http://www.vim.org/scripts/script.php?script_id=1520&lt;br /&gt;
    # --c++-kinds=+p  : Adds prototypes in the database for C++ files.&lt;br /&gt;
    # --fields=+iaS   : Adds inheritance (i), access (a) and function &lt;br /&gt;
    #                   signatures (S) informations.&lt;br /&gt;
    # --extra=+q      : Adds context to the tag name. Note: Without this&lt;br /&gt;
    #                   option, the script cannot get class members.&lt;br /&gt;
    set omnicppoptions=&amp;quot;--c++-kinds=+p --fields=+iaS --extra=+q&amp;quot;&lt;br /&gt;
    if ( &amp;quot;$1&amp;quot; == &amp;quot;--global&amp;quot; ) then&lt;br /&gt;
        if ( ! $?UPDMINOREXT ) set UPDMINOREXT=&amp;quot;&amp;quot;&lt;br /&gt;
        &amp;quot;$MYCTAGS&amp;quot; -h &amp;quot;+.hdl.hrc&amp;quot; --langmap=c:+.hdl.hrc.src $omnicppoptions -R $SOLARVERSION/$INPATH/inc$UPDMINOREXT&lt;br /&gt;
    else&lt;br /&gt;
        if ( &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ) then&lt;br /&gt;
            set module=&amp;quot;.&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            set module=&amp;quot;$1&amp;quot;&lt;br /&gt;
            echo module: $module&lt;br /&gt;
        endif&lt;br /&gt;
        # test for ls overrun&lt;br /&gt;
        set dcommand=&amp;quot;ls -d $module/*&amp;quot;&lt;br /&gt;
        if ( ! { ( $dcommand &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
            echo &amp;quot;$0 : ls overrun, trying find $module -mindepth 1 -maxdepth 1&amp;quot;&lt;br /&gt;
            # test for find mindepth/maxdepth availability&lt;br /&gt;
            set dcommand=&amp;quot;find $module -mindepth 1 -maxdepth 1&amp;quot;&lt;br /&gt;
            if ( ! { ( $dcommand &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
                echo &amp;quot;$0 : find doesn&amp;#039;t know options -mindepth -maxdepth&amp;quot;&lt;br /&gt;
                echo &amp;quot;$0 : too bad, giving up.&amp;quot;&lt;br /&gt;
                exit 1&lt;br /&gt;
            endif&lt;br /&gt;
        endif&lt;br /&gt;
        # Only positive list of module subdirectories and files,&lt;br /&gt;
        # excluding output directories except $INPATH/{inc,misc/build}&lt;br /&gt;
        set dirs=&amp;quot;$module/$INPATH/inc $module/$INPATH/misc/build `$dcommand | sed -e &amp;#039;/\(\/\(CVS\|\.svn\|common\|.*unxlng\|.*unxsol\|.*unxmac\|.*wntmsc\|Jamfile\|cscope\.\|tags\|ID\)\)\|^solver\//d&amp;#039;`&amp;quot;&lt;br /&gt;
        echo dirs: $dirs&lt;br /&gt;
        &amp;quot;$MYCTAGS&amp;quot; -h &amp;quot;+.hdl.hrc&amp;quot; --langmap=c:+.hdl.hrc.src $omnicppoptions -R $dirs&lt;br /&gt;
    endif&lt;br /&gt;
else&lt;br /&gt;
    echo no ctags&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ignore messages like&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;ctags: Warning: cannot open source file &amp;quot;./unxlngi6.pro/misc/build&amp;quot; : No such file or directory&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
or consider them purely informational.&lt;br /&gt;
&lt;br /&gt;
Note that also here, if more than one module is to be specified, the shell&lt;br /&gt;
filename glob-patterns and metanotations have to be passed in single quotes.&lt;br /&gt;
Though tagging an entire OOo code base would result in a &amp;quot;file overflow&amp;quot; with&lt;br /&gt;
more than 2GB this isn&amp;#039;t a problem in practice, at least with Vim, don&amp;#039;t know&lt;br /&gt;
about other editors, since it may search the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; files going up the&lt;br /&gt;
directory hierarchy if a tag is not found in the current directory&amp;#039;s tags file.&lt;br /&gt;
So generate the &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; file in the modules you are interested in, using the&lt;br /&gt;
script without parameters, then &amp;lt;code&amp;gt;cd $SRC_ROOT&amp;lt;/code&amp;gt; and invoke&lt;br /&gt;
&amp;lt;code&amp;gt;scriptname --global&amp;lt;/code&amp;gt; to produce a tags file for the &amp;#039;&amp;#039;solver&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
A final &amp;lt;tt&amp;gt;ctags&amp;lt;/tt&amp;gt; note: In some cases, you might have more than one version of &amp;lt;tt&amp;gt;ctags&amp;lt;/tt&amp;gt; on your system.  E.g., there is a version that ships with Emacs (and is often in &amp;lt;tt&amp;gt;/usr/local/bin&amp;lt;/tt&amp;gt;) that doesn&amp;#039;t support the same arguments as Exhuberant &amp;lt;tt&amp;gt;ctags&amp;lt;/tt&amp;gt;; if this is the case (you&amp;#039;ll see an error message from the script like &amp;quot;&amp;lt;tt&amp;gt;unrecognized option `--langmap=c:+.hdl.hrc.src&amp;#039;&amp;lt;/tt&amp;gt;&amp;quot;) then you can set the MYCTAGS variable, e.g., from a &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; shell:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MYCTAGS=/usr/bin/ctags $HOME/devbase/ctags-script --global&lt;br /&gt;
MYCTAGS=/usr/bin/ctags CTAGS=-e $HOME/devbase/ctags-script --global # generate TAGS for Emacs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If all you have is the Emacs version, you will want to rewrite the script (or provide a better solution here).&lt;br /&gt;
&lt;br /&gt;
=== Cscope ===&lt;br /&gt;
&lt;br /&gt;
Cscope is another utility to query a database for code elements. It comes with&lt;br /&gt;
a cumbersome screen-oriented interactive tool to browse source files, but also&lt;br /&gt;
interfaces nicely with Vim and Emacs. Unfortunately it is not able to cope with&lt;br /&gt;
the entire OOo source base it seems, so for &amp;#039;*&amp;#039; even when called with a list of&lt;br /&gt;
files to work on, at the end it displayed&lt;br /&gt;
&amp;#039;&amp;#039;Input string too long, limit 50251&amp;#039;&amp;#039;&lt;br /&gt;
and no output was generated. Didn&amp;#039;t investigate yet what exactly is the&lt;br /&gt;
problem. However, using it on a subset of several modules is possible.&lt;br /&gt;
&lt;br /&gt;
==== cscope-script ====&lt;br /&gt;
&lt;br /&gt;
This script may be used to generate a &amp;#039;&amp;#039;cscope.out&amp;#039;&amp;#039; database file, same&lt;br /&gt;
parameter syntax as the mkid-script and ctags-script above. Suggested name:&lt;br /&gt;
&amp;lt;tt&amp;gt;$HOME/devbase/cscope-script&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/tcsh&lt;br /&gt;
&lt;br /&gt;
# Either the current module, or all modules can be tagID&amp;#039;ed if $1 is&lt;br /&gt;
# specified as literal &amp;#039;*&amp;#039; unexpanded. Will be expanded here.&lt;br /&gt;
# Instead of &amp;#039;*&amp;#039; _any_ shell wildcard should be possible, e.g. &amp;#039;{.,bf_*}&amp;#039;.&lt;br /&gt;
# NOTE: cscope on &amp;#039;*&amp;#039; hanged if for _all_ OOo modules and no positive dirs list&lt;br /&gt;
# was used. Even with the generated cscope.files it still refuses to complete&lt;br /&gt;
# its work.&lt;br /&gt;
&lt;br /&gt;
if ( { ( which cscope &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
    echo generating cscope&lt;br /&gt;
    if ( &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ) then&lt;br /&gt;
        set module=&amp;quot;.&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        set module=&amp;quot;$1&amp;quot;&lt;br /&gt;
        echo module: $module&lt;br /&gt;
    endif&lt;br /&gt;
    # test for ls overrun&lt;br /&gt;
    set dcommand=&amp;quot;ls -d $module/*&amp;quot;&lt;br /&gt;
    if ( ! { ( $dcommand &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
        echo &amp;quot;$0 : ls overrun, trying find $module -mindepth 1 -maxdepth 1&amp;quot;&lt;br /&gt;
        # test for find mindepth/maxdepth availability&lt;br /&gt;
        set dcommand=&amp;quot;find $module -mindepth 1 -maxdepth 1&amp;quot;&lt;br /&gt;
        if ( ! { ( $dcommand &amp;gt;&amp;gt; /dev/null ) } ) then&lt;br /&gt;
            echo &amp;quot;$0 : find doesn&amp;#039;t know options -mindepth -maxdepth&amp;quot;&lt;br /&gt;
            echo &amp;quot;$0 : too bad, giving up.&amp;quot;&lt;br /&gt;
            exit 1&lt;br /&gt;
        endif&lt;br /&gt;
    endif&lt;br /&gt;
    # Only positive list of module subdirectories and files,&lt;br /&gt;
    # excluding output directories except $INPATH/{inc,misc/build}&lt;br /&gt;
    set dirs=&amp;quot;$module/$INPATH/inc $module/$INPATH/misc/build `$dcommand | sed -e &amp;#039;/\(\/\(CVS\|\.svn\|common\|.*unxlng\|.*unxsol\|.*unxmac\|.*wntmsc\|Jamfile\|cscope\.\|tags\|ID\)\)\|^solver\//d&amp;#039;`&amp;quot;&lt;br /&gt;
    echo dirs: $dirs&lt;br /&gt;
    ( find $dirs -name &amp;#039;*.[hc]&amp;#039; -o -name &amp;#039;*.[hc]xx&amp;#039; -o -name &amp;#039;*.[hc]pp&amp;#039; -o -name &amp;#039;*.[hs]rc&amp;#039; &amp;gt;cscope.files ) &amp;gt;&amp;gt;&amp;amp; /dev/null&lt;br /&gt;
    if ( `uname` == &amp;quot;SunOS&amp;quot; ) then&lt;br /&gt;
        cscope -b -c&lt;br /&gt;
    else&lt;br /&gt;
        cscope -b -c -q&lt;br /&gt;
    endif&lt;br /&gt;
else&lt;br /&gt;
    echo no cscope&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;#039;&amp;#039;find&amp;#039;&amp;#039; command is executed in a subshell with stderr redirected&lt;br /&gt;
to /dev/null to suppress all the &amp;#039;&amp;#039;find: ./unxlngi6.pro/misc/build: No such file or directory&amp;#039;&amp;#039;&lt;br /&gt;
and the like warning messages. Remove the parentheses and the redirection in&lt;br /&gt;
case you suspect errors in your environment.&lt;br /&gt;
&lt;br /&gt;
=== All together now ===&lt;br /&gt;
&lt;br /&gt;
Surely we don&amp;#039;t want to invoke all these scripts separately all the times, so&lt;br /&gt;
here&amp;#039;s a small wrapper just to prove that the suggested names actually make&lt;br /&gt;
sense ;-)  let&amp;#039;s call it &amp;lt;tt&amp;gt;$HOME/devbase/tagsID&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/tcsh&lt;br /&gt;
&lt;br /&gt;
# Either the current module, or all modules can be tagID&amp;#039;ed if $1 is&lt;br /&gt;
# specified as literal &amp;#039;*&amp;#039; unexpanded. Will be expanded here.&lt;br /&gt;
# Instead of &amp;#039;*&amp;#039; _any_ shell wildcard should be possible, e.g. &amp;#039;{.,bf_*}&amp;#039;.&lt;br /&gt;
# NOTE: ctags on &amp;#039;*&amp;#039; exceeds 2GB file size limit if for _all_ OOo modules.&lt;br /&gt;
# NOTE: cscope on &amp;#039;*&amp;#039; hangs if for _all_ OOo modules.&lt;br /&gt;
# Which actually is the reason we invoke it last just in case we forgot..&lt;br /&gt;
&lt;br /&gt;
${0:h}/ctags-script &amp;quot;$1&amp;quot;&lt;br /&gt;
${0:h}/mkid-script &amp;quot;$1&amp;quot;&lt;br /&gt;
${0:h}/cscope-script &amp;quot;$1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same syntax as with the other scripts applies: filename glob-patterns and&lt;br /&gt;
metanotations have to be passed as literals, enquoted with single quotes.&lt;br /&gt;
Invoking it in a module&amp;#039;s directory without passing an argument creates&lt;br /&gt;
databases for that single module.&lt;br /&gt;
&lt;br /&gt;
== Build selected source code files with debug ==&lt;br /&gt;
&lt;br /&gt;
Sometimes only a few files need to be build with debug instead of an entire&lt;br /&gt;
module, which significantly saves time. Change into the directory and invoke&lt;br /&gt;
the following script with the files of interest passed as arguments, for&lt;br /&gt;
example, in &amp;lt;tt&amp;gt;sc/source/core/tool&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkd token.cxx compiler.cxx interpr*.cxx&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To also link the library in the module&amp;#039;s &amp;#039;&amp;#039;util&amp;#039;&amp;#039; directory pass the &amp;#039;&amp;#039;--link&amp;#039;&amp;#039;&lt;br /&gt;
or &amp;#039;&amp;#039;-l&amp;#039;&amp;#039; option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkd -l token.cxx compiler.cxx interpr*.cxx&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mkd ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Compile source files (in current directory!) passed as arguments with debug.&lt;br /&gt;
# Option --link or -l also links the library in the module&amp;#039;s util directory.&lt;br /&gt;
&lt;br /&gt;
# Do parallel build, set to empty if not wanted.&lt;br /&gt;
PARALLEL=&amp;quot;-P4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;$INPATH&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;No \$INPATH, source environment!&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
UTIL=&amp;quot;&amp;quot;&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;--link&amp;quot; -o &amp;quot;$1&amp;quot; == &amp;quot;-l&amp;quot; ]; then&lt;br /&gt;
    UTIL=&amp;quot;Yes&amp;quot;&lt;br /&gt;
    shift&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Determine the current hierarchy depth by looking upwards for the prj/d.lst&lt;br /&gt;
# file, but no more than MAX levels up.&lt;br /&gt;
DLST=&amp;quot;prj/d.lst&amp;quot;&lt;br /&gt;
SUBS=&amp;quot;&amp;quot;&lt;br /&gt;
MAX=5&lt;br /&gt;
for (( LEVEL=0 ; LEVEL &amp;lt; MAX ; ++LEVEL )); do&lt;br /&gt;
    if [ -f &amp;quot;${SUBS}${DLST}&amp;quot; ]; then&lt;br /&gt;
        break&lt;br /&gt;
    fi&lt;br /&gt;
    SUBS=&amp;quot;../$SUBS&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
OUTP=&amp;quot;${SUBS}${INPATH}/slo&amp;quot;&lt;br /&gt;
if [ $LEVEL == $MAX ]; then&lt;br /&gt;
    echo &amp;quot;No ${SUBS}${DLST} found! (LEVEL $LEVEL)&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
ERR=0&lt;br /&gt;
# Force compilation of files passed as arguments.&lt;br /&gt;
for x in &amp;quot;$@&amp;quot;; do&lt;br /&gt;
    FILE=&amp;quot;${x//*\//}&amp;quot;&lt;br /&gt;
    BASE=&amp;quot;${FILE%.*}&amp;quot;&lt;br /&gt;
    FULL=&amp;quot;${OUTP}/${BASE}.obj&amp;quot;&lt;br /&gt;
    rm &amp;quot;$FULL&amp;quot;&lt;br /&gt;
    if [ -z &amp;quot;$PARALLEL&amp;quot; ]; then&lt;br /&gt;
        dmake debug=t &amp;quot;$FULL&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    ERR=$?&lt;br /&gt;
    if [ $ERR != 0 ]; then&lt;br /&gt;
        break&lt;br /&gt;
    fi&lt;br /&gt;
done&lt;br /&gt;
# If no error, compile yet uncompiled files and create archive, if any.&lt;br /&gt;
if [ $ERR == 0 ]; then&lt;br /&gt;
    dmake $PARALLEL debug=t&lt;br /&gt;
    ERR=$?&lt;br /&gt;
fi&lt;br /&gt;
# Some modules, such as Writer, have an extra archiving step one level up, e.g.&lt;br /&gt;
# in sw/source/core/ if files in sw/source/core/layout/ were compiled.&lt;br /&gt;
# Do this only if deeper than in module level.&lt;br /&gt;
if (( LEVEL &amp;gt; 1 )); then&lt;br /&gt;
    if [ $ERR == 0 -a -f ../makefile.mk ]; then&lt;br /&gt;
        pushd ..&lt;br /&gt;
        dmake debug=t&lt;br /&gt;
        ERR=$?&lt;br /&gt;
        popd&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
# If no error, link library if requested.&lt;br /&gt;
if [ $ERR == 0 -a -n &amp;quot;$UTIL&amp;quot; ]; then&lt;br /&gt;
    UTIL=&amp;quot;${SUBS}util&amp;quot;&lt;br /&gt;
    if [ ! -d &amp;quot;$UTIL&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;No $UTIL directory, no linking.&amp;quot;&lt;br /&gt;
        exit&lt;br /&gt;
    fi&lt;br /&gt;
    cd &amp;quot;$UTIL&amp;quot;&lt;br /&gt;
    dmake debug=t&lt;br /&gt;
    ERR=$?&lt;br /&gt;
fi&lt;br /&gt;
exit $ERR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Tools]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Calc/Implementation/Spreadsheet_Functions&amp;diff=178087</id>
		<title>Calc/Implementation/Spreadsheet Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Calc/Implementation/Spreadsheet_Functions&amp;diff=178087"/>
		<updated>2010-08-13T19:58:57Z</updated>

		<summary type="html">&lt;p&gt;ErAck: elaborate on non-scalar arguments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Calc]]&lt;br /&gt;
[[Category:Implementation]]&lt;br /&gt;
&lt;br /&gt;
Procedure to add a new [[Calc]] spreadsheet function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Let&amp;#039;s assume you want to implement a new spreadsheet function and the function&lt;br /&gt;
was defined by the&lt;br /&gt;
[http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office-formula OASIS OpenDocument Format Formula subcommittee],&lt;br /&gt;
see latest revision of the&lt;br /&gt;
[http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula specification (draft)].&lt;br /&gt;
Let&amp;#039;s further assume the function&amp;#039;s name is &amp;#039;&amp;#039;&amp;#039;MYFUNC&amp;#039;&amp;#039;&amp;#039; and will take&lt;br /&gt;
2 parameters, of which the second parameter is optional and defaulted to 0, and&lt;br /&gt;
returns a number, as following:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Syntax:&amp;#039;&amp;#039;&amp;#039; MYFUNC( &amp;#039;&amp;#039;Number&amp;#039;&amp;#039; Param1 [ ; &amp;#039;&amp;#039;Number&amp;#039;&amp;#039; Param2 = 0 ] ) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; Number&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Make the formula compiler know the function ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== formula/inc/formula/compiler.hrc ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;sc/inc/compiler.hrc&amp;#039;&amp;#039;&amp;#039; up to and including version DEV300_m38&amp;#039;&amp;#039;  &lt;br /&gt;
&lt;br /&gt;
These are the defines used by the resources for function names and the Function&lt;br /&gt;
Wizard, and the numerical values of OpCode for the formula compiler and&lt;br /&gt;
interpreter. Note that once defined the &amp;#039;&amp;#039;names&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;must not be changed&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
because they are used by the localization tools as identifiers.&lt;br /&gt;
&lt;br /&gt;
Add a new define, in this case for 2 parameters append it to the section for&lt;br /&gt;
functions with more than 1 parameter near the end of the file. Name the define&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SC_OPCODE_MYFUNC&amp;#039;&amp;#039;&amp;#039; and insert it right before the define of&lt;br /&gt;
SC_OPCODE_STOP_2_PAR, give it the value SC_OPCODE_STOP_2_PAR had, and&lt;br /&gt;
increment the values of SC_OPCODE_STOP_2_PAR and SC_OPCODE_LAST_OPCODE_ID. If&lt;br /&gt;
before the section looked like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#define SC_OPCODE_STOP_2_PAR        393&lt;br /&gt;
&lt;br /&gt;
#define SC_OPCODE_LAST_OPCODE_ID    392      /* last OpCode */&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
it should then be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#define SC_OPCODE_MYFUNC            393&lt;br /&gt;
#define SC_OPCODE_STOP_2_PAR        394&lt;br /&gt;
&lt;br /&gt;
#define SC_OPCODE_LAST_OPCODE_ID    393      /* last OpCode */&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== formula/inc/formula/opcode.hxx ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;sc/inc/opcode.hxx&amp;#039;&amp;#039;&amp;#039; up to and including version DEV300_m38&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Here the &amp;#039;&amp;#039;OpCodeEnum&amp;#039;&amp;#039; values are defined. Note that in a non-product build&lt;br /&gt;
(--enable-dbgutil during configure) there is a&lt;br /&gt;
&amp;lt;code&amp;gt;typedef OpCodeEnum OpCode;&amp;lt;/code&amp;gt;&lt;br /&gt;
to show enum names in the debugger, while in a product build it is&lt;br /&gt;
&amp;lt;code&amp;gt;typedef OpCodeEnum USHORT;&amp;lt;/code&amp;gt;&lt;br /&gt;
to save some memory, since compilers tend to produce an &amp;#039;&amp;#039;int&amp;#039;&amp;#039; for an enum.&lt;br /&gt;
&lt;br /&gt;
Find a &amp;quot;right&amp;quot; place for the new enum. Although the way the definitions are&lt;br /&gt;
setup the placement doesn&amp;#039;t matter, there are sections with different topics,&lt;br /&gt;
such as &amp;#039;&amp;#039;String functions&amp;#039;&amp;#039; and &amp;#039;&amp;#039;Statistical functions&amp;#039;&amp;#039;. Maybe the correct&lt;br /&gt;
place for MYFUNC would be under &amp;#039;&amp;#039;miscellaneous&amp;#039;&amp;#039;. Best practice is to add&lt;br /&gt;
a new OpCode to the end of such section. Name the OpCode &amp;#039;&amp;#039;&amp;#039;ocMyFunc&amp;#039;&amp;#039;&amp;#039; and add&lt;br /&gt;
the line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
        ocMyFunc            = SC_OPCODE_MYFUNC,&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== formula/source/core/resource/core_resource.src ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;sc/source/core/src/compiler.src&amp;#039;&amp;#039;&amp;#039; up to and including version DEV300_m38&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
These are the resources for function names. There are 3 resource bundles:&lt;br /&gt;
&lt;br /&gt;
; RID_SC_FUNCTION_NAMES : English UI display names. These get localized for the UI of other languages.&lt;br /&gt;
; RID_SC_FUNCTION_NAMES_ENGLISH : These English names are used internally to store/load [[ODF]] v1.0/v1.1 and for [[API]] [http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XFunctionAccess.html XFunctionAccess]. Usually the name is identical to that in RID_SC_FUNCTION_NAMES. Once defined and &amp;quot;in the wild&amp;quot;, the name &amp;#039;&amp;#039;&amp;#039;must not be changed&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
; RID_SC_FUNCTION_NAMES_ENGLISH_ODFF : These English names are used internally to store/load ODFF aka OpenFormula as of [[ODF]] v1.2. Once defined, the name &amp;#039;&amp;#039;&amp;#039;must not be changed&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
The new function name must be defined for all 3 resource bundles.&lt;br /&gt;
&lt;br /&gt;
To the end of &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Resource RID_SC_FUNCTION_NAMES&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    String SC_OPCODE_MYFUNC&lt;br /&gt;
    {&lt;br /&gt;
        Text [ en-US ] = &amp;quot;MYFUNC&amp;quot; ;&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;[ en-US ]&amp;lt;/code&amp;gt; field tells the localization tools that the name may&lt;br /&gt;
be localized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the end of &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Resource RID_SC_FUNCTION_NAMES_ENGLISH&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    String SC_OPCODE_MYFUNC { Text = &amp;quot;MYFUNC&amp;quot; ; };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The absence of the &amp;lt;code&amp;gt;[ en-US ]&amp;lt;/code&amp;gt; field tells the localization tools&lt;br /&gt;
that the name &amp;#039;&amp;#039;&amp;#039;must not&amp;#039;&amp;#039;&amp;#039; be localized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the end of &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Resource RID_SC_FUNCTION_NAMES_ENGLISH_ODFF&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    String SC_OPCODE_MYFUNC { Text = &amp;quot;MYFUNC&amp;quot; ; };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, the absence of the &amp;lt;code&amp;gt;[ en-US ]&amp;lt;/code&amp;gt; field tells the localization&lt;br /&gt;
tools that the name &amp;#039;&amp;#039;&amp;#039;must not&amp;#039;&amp;#039;&amp;#039; be localized.&lt;br /&gt;
&lt;br /&gt;
=== The compiler knows the function ===&lt;br /&gt;
&lt;br /&gt;
After having added the necessary entries to &amp;lt;tt&amp;gt;formula/inc/formula/compiler.hrc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;formula/inc/formula/opcode.hxx&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;formula/source/core/resource/core_resource.src&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;sc/inc/compiler.hrc&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;sc/inc/opcode.hxx&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;sc/source/core/src/compiler.src&amp;lt;/tt&amp;gt; respectively), the&lt;br /&gt;
formula compiler now knows the new function name and is able to compile an&lt;br /&gt;
expression where it is used, and it can be stored in and loaded from&lt;br /&gt;
a document. Of course nothing else works, the interpreter doesn&amp;#039;t know how to&lt;br /&gt;
handle it and will generate an error if encountered. The function and its&lt;br /&gt;
parameters will not appear in the Function Wizard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publish the function to the Function Wizard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sc/inc/scfuncs.hrc ===&lt;br /&gt;
&lt;br /&gt;
Function groups (categories) and HelpIDs for functions are defined here. Lookup&lt;br /&gt;
the group where functions of ID_FUNCTION_GRP_... matching the new function&amp;#039;s&lt;br /&gt;
category are defined and append an entry, incrementing the offset of the last&lt;br /&gt;
entry by one. For our function that could be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#define HID_FUNC_MYFUNC             (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+56)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sc/source/ui/src/scfuncs.src ===&lt;br /&gt;
&lt;br /&gt;
This large resource file contains all elements necessary to display functions&lt;br /&gt;
in the Function Wizard. It defines the function&amp;#039;s short description, the number&lt;br /&gt;
of parameters, whether they are optional, and the description of each&lt;br /&gt;
parameter. For a detailed description of fields see the comment on top of the&lt;br /&gt;
file.&lt;br /&gt;
&lt;br /&gt;
Add the new function to the end of one of the two resource blocks&lt;br /&gt;
RID_SC_FUNCTION_DESCRIPTIONS1 or RID_SC_FUNCTION_DESCRIPTIONS2. Which one&lt;br /&gt;
doesn&amp;#039;t really matter, but functions should be more or less equally distributed&lt;br /&gt;
over the two blocks. There are two blocks because one resource block couldn&amp;#039;t&lt;br /&gt;
have more than 64k data, just another legacy from Win16 times.. looked up again&lt;br /&gt;
right now (2008-08-23) in the meantime this restriction seems to have been&lt;br /&gt;
obsoleted, which would have to be verified by a test build using one resource&lt;br /&gt;
block only though.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    Resource SC_OPCODE_MYFUNC&lt;br /&gt;
    {&lt;br /&gt;
        String 1 // Description&lt;br /&gt;
        {&lt;br /&gt;
            Text [ en-US ] = &amp;quot;Calculates foo, optionally using bar.&amp;quot; ;&lt;br /&gt;
        };&lt;br /&gt;
        ExtraData =&lt;br /&gt;
        {&lt;br /&gt;
            0;&lt;br /&gt;
            ID_FUNCTION_GRP_MATH;&lt;br /&gt;
            U2S( HID_FUNC_MYFUNC );&lt;br /&gt;
            2;  0;  1;&lt;br /&gt;
            0;&lt;br /&gt;
        };&lt;br /&gt;
        String 2 // Name of Parameter 1&lt;br /&gt;
        {&lt;br /&gt;
            Text [ en-US ] = &amp;quot;Number&amp;quot; ;&lt;br /&gt;
        };&lt;br /&gt;
        String 3 // Description of Parameter 1&lt;br /&gt;
        {&lt;br /&gt;
            Text [ en-US ] = &amp;quot;A value for which foo is to be calculated.&amp;quot; ;&lt;br /&gt;
        };&lt;br /&gt;
        String 4 // Name of Parameter 2&lt;br /&gt;
        {&lt;br /&gt;
            Text [ en-US ] = &amp;quot;Number&amp;quot; ;&lt;br /&gt;
        };&lt;br /&gt;
        String 5 // Description of Parameter 2&lt;br /&gt;
        {&lt;br /&gt;
            Text [ en-US ] = &amp;quot;The bar value.&amp;quot; ;&lt;br /&gt;
        };&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some comments on the ExtraData block, for more details see scfuncs.src:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ExtraData =&lt;br /&gt;
{&lt;br /&gt;
    0;                      // The function is not suppressed and available in UI.&lt;br /&gt;
    ID_FUNCTION_GRP_MATH;   // The category in which the function is displayed.&lt;br /&gt;
    U2S( HID_FUNC_MYFUNC ); // The HelpID of this function.&lt;br /&gt;
    2;  0;  1;              // 2 parameters, of which the 2nd is optional.&lt;br /&gt;
    0;                      // None of the parameters are suppressed in the UI.&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sc/util/hidother.src ===&lt;br /&gt;
&lt;br /&gt;
Here the HelpIDs to be used within the Function Wizard are propagated to the&lt;br /&gt;
help system. Go to the end of the section containing HID_FUNC_... and append an&lt;br /&gt;
entry,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
hidspecial HID_FUNC_MYFUNC          { HelpID = HID_FUNC_MYFUNC; };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The Function Wizard knows the function ===&lt;br /&gt;
&lt;br /&gt;
Now the Function Wizard can display the function and its parameters, and&lt;br /&gt;
online-help may be authored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Let the interpreter handle the function ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sc/source/core/inc/interpre.hxx ===&lt;br /&gt;
&lt;br /&gt;
Add a member method to &amp;lt;tt&amp;gt;class ScInterpreter&amp;lt;/tt&amp;gt; that will handle the new&lt;br /&gt;
function. Here this would be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void ScMyFunc();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Take care that the new member function doesn&amp;#039;t resemble the name of some&lt;br /&gt;
already existing class, for example the method for the ADDRESS() function is&lt;br /&gt;
named ScAddressFunc() because ScAddress(), if called without&lt;br /&gt;
&amp;lt;tt&amp;gt;this-&amp;amp;gt;&amp;lt;/tt&amp;gt; prefix, would be the ctor of class ScAddress instead. If in&lt;br /&gt;
doubt, add ...Func() to the name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sc/source/core/tool/interpr4.cxx ===&lt;br /&gt;
&lt;br /&gt;
In method ScInterpreter::Interpret() add to &amp;lt;code&amp;gt;switch ( eOp )&amp;lt;/code&amp;gt; the&lt;br /&gt;
call to the member function for the OpCode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
                case ocMyFunc           : ScMyFunc();                   break;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sc/source/core/tool/interpr?.cxx ===&lt;br /&gt;
&lt;br /&gt;
Pick one of the interpr?.cxx source files where the new method may fit. There&lt;br /&gt;
is no general advice which file exactly that might be, be sensible. As a guide line&lt;br /&gt;
&lt;br /&gt;
; interpr1.cxx : Basic math functions and informational functions.&lt;br /&gt;
; interpr2.cxx : Date functions and financial functions.&lt;br /&gt;
; interpr3.cxx : Statistical functions.&lt;br /&gt;
; interpr4.cxx : Interpreter managing and stack related functions, you shouldn&amp;#039;t need to add anything there.&lt;br /&gt;
; interpr5.cxx : Matrix functions.&lt;br /&gt;
; interpr6.cxx : Some number crunching that in the past had to be compiled without optimizations, though in the mean time code changed and this probably is not necessary anymore.&lt;br /&gt;
&lt;br /&gt;
For our function, since that expects two, one optional, numerical scalar&lt;br /&gt;
arguments, this would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void ScInterpreter::ScMyFunc()&lt;br /&gt;
{&lt;br /&gt;
    BYTE nParamCount = GetByte();&lt;br /&gt;
    // The MustHaveParamCount...() functions check the number of parameters and&lt;br /&gt;
    // if they do not fit push an error on the stack, if the method fails&lt;br /&gt;
    // (returns false) we return immediately.&lt;br /&gt;
    if ( !MustHaveParamCount( nParamCount, 1, 2 ) )&lt;br /&gt;
        return;&lt;br /&gt;
&lt;br /&gt;
    // Arguments are popped from the stack from right to left.&lt;br /&gt;
    double fParam2;&lt;br /&gt;
    if (nParamCount == 2)&lt;br /&gt;
        fParam2 = GetDouble();&lt;br /&gt;
    else&lt;br /&gt;
        fParam2 = 0.0;&lt;br /&gt;
&lt;br /&gt;
    double fVal = GetDouble();&lt;br /&gt;
    if ( /* does fVal meet all constraints */ )&lt;br /&gt;
    {&lt;br /&gt;
        double fResult = /* calculate foo */ ;&lt;br /&gt;
        PushDouble( fResult );&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
        PushIllegalArgument();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The not so easy case of non-scalar arguments ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;tt&amp;gt;StackVar&amp;lt;/tt&amp;gt; argument types ====&lt;br /&gt;
&lt;br /&gt;
If the new function would handle parameters that are not scalar values, for&lt;br /&gt;
example a NumberSequence or matrix/array, they would have to be treated&lt;br /&gt;
explicitly, checking and reacting on the type of each argument. Lookout for&lt;br /&gt;
functions that use the &amp;lt;code&amp;gt;GetType()&amp;lt;/code&amp;gt; call and handle &amp;lt;tt&amp;gt;StackVar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;svDoubleRef&amp;lt;/code&amp;gt; or similar. Ask on the dev@sc mailing list if in&lt;br /&gt;
doubt.&lt;br /&gt;
&lt;br /&gt;
The most common &amp;lt;tt&amp;gt;StackVar&amp;lt;/tt&amp;gt; types obtainable with &amp;lt;code&amp;gt;GetStackType()&amp;lt;/code&amp;gt;are:&lt;br /&gt;
&lt;br /&gt;
; svDouble : A double value.&lt;br /&gt;
; svString : A literal string text.&lt;br /&gt;
; svSingleRef : A single cell reference.&lt;br /&gt;
; svDoubleRef : A cell range reference.&lt;br /&gt;
; svRefList : A list of cell range references.&lt;br /&gt;
; svMatrix : A matrix/array.&lt;br /&gt;
&lt;br /&gt;
There are a few other types available with &amp;lt;code&amp;gt;GetRawStackType()&amp;lt;/code&amp;gt; for&lt;br /&gt;
specific situations, these are converted to &amp;#039;&amp;#039;svDouble&amp;#039;&amp;#039; in&lt;br /&gt;
&amp;lt;code&amp;gt;GetStackType()&amp;lt;/code&amp;gt; and returned as 0.0 by &amp;lt;code&amp;gt;PopDouble()&amp;lt;/code&amp;gt; and&lt;br /&gt;
&amp;lt;code&amp;gt;GetDouble()&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
; svMissing : An empty parameter without value, if that should not be converted to 0.0 use &amp;lt;code&amp;gt;GetDoubleWithDefault(double)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; svEmptyCell : A previous expression returned an empty cell, it may depend on context whether that is to be interpreted as double or string.&lt;br /&gt;
&lt;br /&gt;
The general template to act on each parameter in sequence from right to left is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    // Note: use short instead of BYTE when doing the (nParamCount-- &amp;gt; 0) loop below.&lt;br /&gt;
    short nParamCount = GetByte();&lt;br /&gt;
    if (MustHaveParamCountMin( nParamCount, 1))     // In case your function needs at least one parameter.&lt;br /&gt;
    {&lt;br /&gt;
        size_t nRefInList = 0;&lt;br /&gt;
        while(nParamCount-- &amp;gt; 0)&lt;br /&gt;
        {&lt;br /&gt;
            if (nGlobalError)&lt;br /&gt;
                Pop();&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                switch (GetStackType())&lt;br /&gt;
                {&lt;br /&gt;
                    case svDouble :&lt;br /&gt;
                        {&lt;br /&gt;
                            double fVal = PopDouble();&lt;br /&gt;
                            if (!nGlobalError)&lt;br /&gt;
                            {&lt;br /&gt;
                                ...&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    break;&lt;br /&gt;
                    case svString :&lt;br /&gt;
                        {&lt;br /&gt;
                            String aStr( PopString());&lt;br /&gt;
                            if (!nGlobalError)&lt;br /&gt;
                            {&lt;br /&gt;
                                ...&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    break;&lt;br /&gt;
                    case svSingleRef :&lt;br /&gt;
                        {&lt;br /&gt;
                            ScAddress aAdr;&lt;br /&gt;
                            PopSingleRef( aAdr);&lt;br /&gt;
                            if (!nGlobalError)&lt;br /&gt;
                            {&lt;br /&gt;
                                ScBaseCell* pCell = GetCell( aAdr);&lt;br /&gt;
                                if (HasCellValueData( pCell))&lt;br /&gt;
                                {&lt;br /&gt;
                                    double fVal = GetCellValue( aAdr, pCell);&lt;br /&gt;
                                    if (!nGlobalError)&lt;br /&gt;
                                    {&lt;br /&gt;
                                        ...&lt;br /&gt;
                                    }&lt;br /&gt;
                                }&lt;br /&gt;
                                else&lt;br /&gt;
                                {&lt;br /&gt;
                                    String aStr;&lt;br /&gt;
                                    GetCellString( aStr, pCell);&lt;br /&gt;
                                    if (!nGlobalError)&lt;br /&gt;
                                    {&lt;br /&gt;
                                        ...&lt;br /&gt;
                                    }&lt;br /&gt;
                                }&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    break;&lt;br /&gt;
                    case svDoubleRef:&lt;br /&gt;
                    case svRefList:&lt;br /&gt;
                        {&lt;br /&gt;
                            ScRange aRange;&lt;br /&gt;
                            PopDoubleRef( aRange, nParamCount, nRefInList);&lt;br /&gt;
                            if (!nGlobalError)&lt;br /&gt;
                            {&lt;br /&gt;
                                double fVal;&lt;br /&gt;
                                USHORT nErr = 0;&lt;br /&gt;
                                ScValueIterator aValIter( pDok, aRange );&lt;br /&gt;
                                if (aValIter.GetFirst( fVal, nErr))&lt;br /&gt;
                                {&lt;br /&gt;
                                    do&lt;br /&gt;
                                    {&lt;br /&gt;
                                        if (nErr)&lt;br /&gt;
                                            break;&lt;br /&gt;
                                        ...&lt;br /&gt;
                                    } while (aValIter.GetNext( fVal, nErr));&lt;br /&gt;
                                }&lt;br /&gt;
                                SetError( nErr);&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    break;&lt;br /&gt;
                    case svMatrix:&lt;br /&gt;
                        {&lt;br /&gt;
                            ScMatrixRef pMat = GetMatrix();&lt;br /&gt;
                            if (pMat)&lt;br /&gt;
                            {&lt;br /&gt;
                                ...&lt;br /&gt;
                            }&lt;br /&gt;
                            // else: GetMatrix did set errIllegalParameter&lt;br /&gt;
                        }&lt;br /&gt;
                    break;&lt;br /&gt;
                    default:&lt;br /&gt;
                        PopError();&lt;br /&gt;
                        SetError( errIllegalParameter);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        Push...(...);  // Don&amp;#039;t forget to push a result ;-)&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course your function may require specific treatment of parameters depending&lt;br /&gt;
on parameter types of other parameters, or bail out if a parameter type does&lt;br /&gt;
not match an expected type, this template is meant as guidance only.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== sc/source/core/tool/parclass.cxx ====&lt;br /&gt;
&lt;br /&gt;
Describes how parameters are to be treated if the function is used in an array&lt;br /&gt;
context expression, AKA array formula, where cell range references may be&lt;br /&gt;
treated differently from non-array context. If the function does not accept&lt;br /&gt;
other than scalar arguments, nothing has to be done here and the function does&lt;br /&gt;
not need an entry. Else the type of each parameter has to be set to one of:&lt;br /&gt;
&lt;br /&gt;
; Value : Function expects a single scalar value.&lt;br /&gt;
; Reference : A cell range reference is passed as reference and not converted to array.&lt;br /&gt;
; Array : In array context a cell range reference is converted to array.&lt;br /&gt;
; ForceArray : A cell range reference is always converted to an array and the ForceArray context is propagated to all functions and operators in this parameter&amp;#039;s expression.&lt;br /&gt;
; ReferenceOrForceArray : A cell range reference is not converted to an array, but a ForceArray context is propagated to all functions and operators in this parameter&amp;#039;s expression. Only LOOKUP() uses this, other functions should not need it.&lt;br /&gt;
&lt;br /&gt;
For a more detailed description of these types please read the comments for&lt;br /&gt;
&amp;lt;tt&amp;gt;ScParameterClassification::Type&amp;lt;/tt&amp;gt; in&lt;br /&gt;
&amp;lt;tt&amp;gt;sc/source/core/inc/parclass.hxx&amp;lt;/tt&amp;gt;. Ask on the dev@sc mailing list if in&lt;br /&gt;
doubt.&lt;br /&gt;
&lt;br /&gt;
Set the &amp;lt;tt&amp;gt;ScParameterClassification::CommonData.bRepeatLast&amp;lt;/tt&amp;gt; member&lt;br /&gt;
variable to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; if the function accepts multiple parameters that&lt;br /&gt;
are of the same type as the last one specified, e.g. for SUM() that accepts&lt;br /&gt;
multiple &amp;#039;&amp;#039;Reference&amp;#039;&amp;#039; parameters. If the function does not accept multiple&lt;br /&gt;
parameters of the same type, set the value to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Excel import/export ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sc/source/filter/excel/xlformula.cxx ===&lt;br /&gt;
&lt;br /&gt;
If the new function is also supported by Microsoft Excel&amp;amp;reg;, for&lt;br /&gt;
import/export it has to be added to the binary filter as well. Depending on&lt;br /&gt;
from which version Excel knows the function, it has to be added to a&lt;br /&gt;
corresponding &amp;lt;code&amp;gt;XclFunctionInfo&amp;lt;/code&amp;gt; table in &amp;lt;tt&amp;gt;xlformula.cxx&amp;lt;/tt&amp;gt;. Ask&lt;br /&gt;
our Excel expert Daniel on the dev@sc mailing list for details. For details of&lt;br /&gt;
the tables&amp;#039; content see the declaration of &amp;lt;code&amp;gt;struct XclFunctionInfo&amp;lt;/code&amp;gt;&lt;br /&gt;
in &amp;lt;tt&amp;gt;sc/source/filter/inc/xlformula.hxx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oox/source/xls/formulabase.cxx ===&lt;br /&gt;
&lt;br /&gt;
As if that wasn&amp;#039;t enough, nearly the same has to be added to the new binary&lt;br /&gt;
filter for Microsoft Excel&amp;amp;reg; that shares some mechanisms with the new&lt;br /&gt;
[[WikiPedia:Office_Open_XML | Microsoft Office Open XML (MOOXML)]] filter. The&lt;br /&gt;
implementation in &amp;lt;tt&amp;gt;sc/source/filter/{excel,xcl97}/&amp;lt;/tt&amp;gt; will be deprecated&lt;br /&gt;
later. For details of the new tables see declaration of &amp;lt;code&amp;gt;struct FunctionInfo&amp;lt;/code&amp;gt;&lt;br /&gt;
in &amp;lt;tt&amp;gt;oox/inc/oox/xls/formulabase.hxx&amp;lt;/tt&amp;gt;.&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Community_Council_Log_20100812&amp;diff=178013</id>
		<title>Community Council Log 20100812</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Community_Council_Log_20100812&amp;diff=178013"/>
		<updated>2010-08-12T20:54:14Z</updated>

		<summary type="html">&lt;p&gt;ErAck: IRC Log 2010-08-12&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Community_Council}}&lt;br /&gt;
&lt;br /&gt;
== IRC Log 2010-08-12  ==&lt;br /&gt;
&lt;br /&gt;
* Supposed start time: [http://www.timeanddate.com/worldclock/fixedtime.html?day=12&amp;amp;month=08&amp;amp;year=2010&amp;amp;hour=18&amp;amp;min=30&amp;amp;sec=0&amp;amp;p1=0 18:30 UTC]&lt;br /&gt;
* Location: IRC&lt;br /&gt;
&lt;br /&gt;
== Council Members  ==&lt;br /&gt;
&lt;br /&gt;
=== Attendees ===&lt;br /&gt;
&lt;br /&gt;
*Andreas Bartel (Andreas_UX)&lt;br /&gt;
*Christoph Noack (christoph_n)&lt;br /&gt;
*Cor Nouws (CorNouws)&lt;br /&gt;
*Eike Rathke (erAck)&lt;br /&gt;
*Jürgen Schmidt (jsc)&lt;br /&gt;
*Stefan Taxhet (stx12)&lt;br /&gt;
*Olivier Hallot (olivierhallot)&lt;br /&gt;
&lt;br /&gt;
=== Absent  ===&lt;br /&gt;
&lt;br /&gt;
*Charles-H. Schulz&lt;br /&gt;
*Louis Suárez-Potts&lt;br /&gt;
*Matthias Hütsch&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
&lt;br /&gt;
Times are in CEST (UTC+2)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 20:52 || jsc || ok, let us start with the official meeting&lt;br /&gt;
|-&lt;br /&gt;
| 20:52 || jsc || The minutes from the last meeting can be found under http://wiki.services.openoffice.org/wiki/Community_Council/Minutes#2010-07-22&lt;br /&gt;
|-&lt;br /&gt;
| 20:53 || jsc || do you all agree and accept the minutes from the last meeting?&lt;br /&gt;
|-&lt;br /&gt;
| 20:53 || Andreas_UX || I do&lt;br /&gt;
|-&lt;br /&gt;
| 20:53 || stx12 || ok&lt;br /&gt;
|-&lt;br /&gt;
| 20:53 || olivierhallot || +1&lt;br /&gt;
|-&lt;br /&gt;
| 20:53 || Andreas_UX || by the way, can someone add me to the mailing list&lt;br /&gt;
|-&lt;br /&gt;
| 20:53 || Andreas_UX || or tell me how to do that myself&lt;br /&gt;
|-&lt;br /&gt;
| 20:54 || stx12 || i&amp;#039;ll add you &lt;br /&gt;
|-&lt;br /&gt;
| 20:54 || jsc || 2010-03-04#2: Refresh Incubator and NLC Project processes -&amp;amp;gt; Louis&lt;br /&gt;
|-&lt;br /&gt;
| 20:54 || jsc || Louis is not here today, so i expect no update.&lt;br /&gt;
|-&lt;br /&gt;
| 20:54 || Andreas_UX || thx stephan&lt;br /&gt;
|-&lt;br /&gt;
| 20:54 || olivierhallot || he already started somthing in the NLC list&lt;br /&gt;
|-&lt;br /&gt;
| 20:55 || jsc || 2010-03-04#3 : Publicize the open slot at the start of the CC meetings -&amp;amp;gt; Juergen&lt;br /&gt;
|-&lt;br /&gt;
| 20:55 || jsc || ah ok thanks, but i would be nice if he would update the status in our agenda. I will remind him.&lt;br /&gt;
|-&lt;br /&gt;
| 20:56 || jsc || i have updated the status in the agenda ...&lt;br /&gt;
|-&lt;br /&gt;
| 20:56 || jsc || i have changed the name according the voting on the list and have added a template for a reminder email.&lt;br /&gt;
|-&lt;br /&gt;
| 20:57 || jsc || well the template could be changed or improved if necessary. I kept it simple.&lt;br /&gt;
|-&lt;br /&gt;
| 20:57 || jsc || i think this AI is done now.&lt;br /&gt;
|-&lt;br /&gt;
| 20:58 || jsc || any feedback?&lt;br /&gt;
|-&lt;br /&gt;
| 20:58 || stx12 || sounds good; i forgot about the schedule for this slot - every second cc meeting? &lt;br /&gt;
|-&lt;br /&gt;
| 20:58 || Andreas_UX || what about timing? Did we come to an agreement?&lt;br /&gt;
|-&lt;br /&gt;
| 20:59 || jsc || yes, that was the idea. The next would be in Budapest.&lt;br /&gt;
|-&lt;br /&gt;
| 20:59 || erAck || jsc: where is the template?&lt;br /&gt;
|-&lt;br /&gt;
| 20:59 || Andreas_UX || this one http://wiki.services.openoffice.org/wiki/Community_Council/Meeting_Guidelines/Public_Invitation_Reminder_Template&lt;br /&gt;
|-&lt;br /&gt;
| 20:59 || Andreas_UX || ?&lt;br /&gt;
|-&lt;br /&gt;
| 20:59 || jsc || it&amp;#039;s a link under the related section in the meeting guidelines&lt;br /&gt;
|-&lt;br /&gt;
| 21:00 || * ||  stx12 thinks the item is done&lt;br /&gt;
|-&lt;br /&gt;
| 21:00 || jsc || i think the timeline was the first 30 min of our regular meeting. Please correct me if i am wrong&lt;br /&gt;
|-&lt;br /&gt;
| 21:01 || jsc || i can add a further sentence in the guidelines to make the timeline clear&lt;br /&gt;
|-&lt;br /&gt;
| 21:01 || jsc || it&amp;#039;s a minor change. I am still thinking that it is done&lt;br /&gt;
|-&lt;br /&gt;
| 21:01 || jsc || next ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:02 || jsc || 2010-03-04#6: Talk to Education Project Leads about structure and remit -&amp;amp;gt; Cor&lt;br /&gt;
|-&lt;br /&gt;
| 21:02 || jsc || it&amp;#039;s stalled ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:02 || Andreas_UX || ok&lt;br /&gt;
|-&lt;br /&gt;
| 21:03 || Andreas_UX || can someone explain to me what this AI is all about?&lt;br /&gt;
|-&lt;br /&gt;
| 21:03 || Andreas_UX || thanks!&lt;br /&gt;
|-&lt;br /&gt;
| 21:03 || Andreas_UX || any specific focus?&lt;br /&gt;
|-&lt;br /&gt;
| 21:03 || jsc || 2010-04-01#7: Talk to NLC about ‘NLC of the Month’ for OOo Newsletter -&amp;amp;gt; Charles&lt;br /&gt;
|-&lt;br /&gt;
| 21:03 || jsc || again, i expect no update because Charles is not here today. Does anybody else want to add something &lt;br /&gt;
|-&lt;br /&gt;
| 21:03 || stx12 || i think it&amp;#039;s easier to explain this in a face2face meeting.&lt;br /&gt;
|-&lt;br /&gt;
| 21:04 || jsc || sorry, mmh yes but maybe we can discuss this in Budapest in detail.&lt;br /&gt;
|-&lt;br /&gt;
| 21:04 || -!- ||  christoph_n has joined #ooocouncil&lt;br /&gt;
|-&lt;br /&gt;
| 21:04 || jsc || yes i agree to Stefan on this point&lt;br /&gt;
|-&lt;br /&gt;
| 21:04 || Andreas_UX || i am ok with that&lt;br /&gt;
|-&lt;br /&gt;
| 21:04 || christoph_n || Sorry, I know I&amp;#039;m late :-(&lt;br /&gt;
|-&lt;br /&gt;
| 21:04 || olivierhallot || ok for me.&lt;br /&gt;
|-&lt;br /&gt;
| 21:05 || jsc || 2010-04-01#1: Community situation -&amp;amp;gt; all&lt;br /&gt;
|-&lt;br /&gt;
| 21:05 || erAck || jsc: as 2010-04-01#7 says &amp;quot;This month the Hungarian team ...&amp;quot; we might at least update the Last Update date.&lt;br /&gt;
|-&lt;br /&gt;
| 21:05 || jsc || any updates &lt;br /&gt;
|-&lt;br /&gt;
| 21:06 || jsc || erAck: i will remind Charles to update it&lt;br /&gt;
|-&lt;br /&gt;
| 21:07 || jsc || i think this AI is one for Budapest as well. Cor send an email today with some points he want to discuss ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:07 || jsc || this AI = 2010-04-01#1 &lt;br /&gt;
|-&lt;br /&gt;
| 21:08 || jsc || anyway, anybody who wants to add something here and today?&lt;br /&gt;
|-&lt;br /&gt;
| 21:08 || erAck || I think that&amp;#039;s best done face2face.&lt;br /&gt;
|-&lt;br /&gt;
| 21:08 || jsc || ok, next&lt;br /&gt;
|-&lt;br /&gt;
| 21:08 || christoph_n || Yes.&lt;br /&gt;
|-&lt;br /&gt;
| 21:09 || Andreas_UX || hi christoph!&lt;br /&gt;
|-&lt;br /&gt;
| 21:09 || christoph_n || Hi all!&lt;br /&gt;
|-&lt;br /&gt;
| 21:09 || jsc || 2010-04-29#2: scrolling, scrolling ... -&amp;amp;gt; Missing OOo desktop presence -&amp;amp;gt; Christoph, Stefan&lt;br /&gt;
|-&lt;br /&gt;
| 21:09 || stx12 || hi&lt;br /&gt;
|-&lt;br /&gt;
| 21:09 || olivierhallot || me too I have to bring an issue here...&lt;br /&gt;
|-&lt;br /&gt;
| 21:09 || christoph_n || Again, sorry for missing the first half hour ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:10 || stx12 || no change since the last update Andreas_UX gave &lt;br /&gt;
|-&lt;br /&gt;
| 21:10 || christoph_n || Stefan, concerning this AI, did you get any update by Michael? Or, Andreas, is there any news?&lt;br /&gt;
|-&lt;br /&gt;
| 21:10 || jsc || no problem , you got 4 new AI&amp;#039;s&lt;br /&gt;
|-&lt;br /&gt;
| 21:10 || christoph_n || jsc: only 4? ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:10 || Andreas_UX || since the last chat, nothing really happend. at least nothing I know of&lt;br /&gt;
|-&lt;br /&gt;
| 21:11 || Andreas_UX || I am still expecting marketing to go public with their decision and ellaborate a bit&lt;br /&gt;
|-&lt;br /&gt;
| 21:11 || christoph_n || There have been some questions on the releases list. Some guessed there might be holiday time...&lt;br /&gt;
|-&lt;br /&gt;
| 21:11 || Andreas_UX || it really is&lt;br /&gt;
|-&lt;br /&gt;
| 21:11 || Andreas_UX || holiday time&lt;br /&gt;
|-&lt;br /&gt;
| 21:12 || jsc || we should ask marketing to come as soon as possible with an update -&amp;amp;gt; AI owners???&lt;br /&gt;
|-&lt;br /&gt;
| 21:13 || christoph_n || Who is responsible here? Rosana?&lt;br /&gt;
|-&lt;br /&gt;
| 21:13 || stx12 || christoph_n: she is involved but depends on others. and is on vacation...&lt;br /&gt;
|-&lt;br /&gt;
| 21:13 || Andreas_UX || Rosana is the communication channel, yes&lt;br /&gt;
|-&lt;br /&gt;
| 21:14 || Andreas_UX || I&amp;#039;d guess at least&lt;br /&gt;
|-&lt;br /&gt;
| 21:14 || christoph_n || So pinging here doesn&amp;#039;t make sense at the moment?&lt;br /&gt;
|-&lt;br /&gt;
| 21:14 || stx12 || not for a week. &lt;br /&gt;
|-&lt;br /&gt;
| 21:14 || jsc || can we expect something for Budapest?&lt;br /&gt;
|-&lt;br /&gt;
| 21:14 || Andreas_UX || I am. However, not sure about that.&lt;br /&gt;
|-&lt;br /&gt;
| 21:15 || stx12 || i would hope so; rosana has a talk about the topic anyway. &lt;br /&gt;
|-&lt;br /&gt;
| 21:15 || christoph_n || Ah, I didn&amp;#039;t knew that. Maybe this could be added to the AI comments (I&amp;#039;ll do that), if anybody has questions and may need some reference.&lt;br /&gt;
|-&lt;br /&gt;
| 21:16 || jsc || at least an update that it will take some more time would be a good one ;-) &lt;br /&gt;
|-&lt;br /&gt;
| 21:16 || stx12 || http://www.ooocon.org/index.php/ooocon/2010/paper/view/215&lt;br /&gt;
|-&lt;br /&gt;
| 21:16 || christoph_n || Well, the AI is already from end of April. I know, a rather young one (looking at the others), but nevertheless...&lt;br /&gt;
|-&lt;br /&gt;
| 21:17 || christoph_n || stx: &amp;quot;&amp;amp;lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&amp;amp;gt; 	  &amp;quot; :-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:17 || jsc || with me as the CCC we will work on AI&amp;#039;s :-) &lt;br /&gt;
|-&lt;br /&gt;
| 21:17 || -!- ||  CorNouws has joined #ooocouncil&lt;br /&gt;
|-&lt;br /&gt;
| 21:17 || christoph_n || jsc: :-)))&lt;br /&gt;
|-&lt;br /&gt;
| 21:17 || christoph_n || Hi Cor!&lt;br /&gt;
|-&lt;br /&gt;
| 21:17 || CorNouws || HI christoph_n, all&lt;br /&gt;
|-&lt;br /&gt;
| 21:18 || erAck || hi!&lt;br /&gt;
|-&lt;br /&gt;
| 21:18 || Andreas_UX || hey Core!&lt;br /&gt;
|-&lt;br /&gt;
| 21:18 || stx12 || hi cor; just in time to say goodbye ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:18 || jsc || hi Cor, bye Cor we are already done ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:18 || jsc || ok not really, do you want to share anything with us? &lt;br /&gt;
|-&lt;br /&gt;
| 21:18 || CorNouws || Sorry I missed some - prolly the most essetial part ot evening&lt;br /&gt;
|-&lt;br /&gt;
| 21:19 || CorNouws || jsc: Ah, not so much on the agenda?&lt;br /&gt;
|-&lt;br /&gt;
| 21:19 || jsc || did you finished the work on your floor?&lt;br /&gt;
|-&lt;br /&gt;
| 21:19 || * ||  erAck proposes to run a quick update on 2010-03-04#6, if there is any.&lt;br /&gt;
|-&lt;br /&gt;
| 21:19 || stx12 || just a heads up for CorNouws and christoph_n: the CC meeting is scheduled for tuesday 1600 and we plan to have dinner afterwards&lt;br /&gt;
|-&lt;br /&gt;
| 21:19 || CorNouws || partly ... have cleaned half of it, have to dry, new oil later this evening, and the second half tomorrow&lt;br /&gt;
|-&lt;br /&gt;
| 21:20 || CorNouws || stx12: great :-) where will the meeting be?&lt;br /&gt;
|-&lt;br /&gt;
| 21:20 || jsc || cor: sounds good and will make your family happy&lt;br /&gt;
|-&lt;br /&gt;
| 21:20 || stx12 || i talked to the organizers (peter); we will have a room at the university. &lt;br /&gt;
|-&lt;br /&gt;
| 21:21 || CorNouws || and since I am part of my family ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:21 || christoph_n || stx12: Thanks!!!&lt;br /&gt;
|-&lt;br /&gt;
| 21:21 || erAck || CorNouws: sure? ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:21 || jsc || stx12: i assume you will inform us in time with the details&lt;br /&gt;
|-&lt;br /&gt;
| 21:21 || stx12 || jsc: yes&lt;br /&gt;
|-&lt;br /&gt;
| 21:21 || CorNouws || OK, I will mail peter too, since we need three/four rooms close, for the various meetings, so that people are able to attend two at the same time&lt;br /&gt;
|-&lt;br /&gt;
| 21:22 || * ||  stx12 hopes that we will not feel like on a main station in the cc meeting&lt;br /&gt;
|-&lt;br /&gt;
| 21:23 || jsc || i would say we are done with the official meeting for today&lt;br /&gt;
|-&lt;br /&gt;
| 21:23 || Andreas_UX || seems to :-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:23 || Andreas_UX || so&lt;br /&gt;
|-&lt;br /&gt;
| 21:23 || erAck || we skipped one AI, Cor, any news on 2010-03-04#6 Talk to Education Project Leads about structure and remit &lt;br /&gt;
|-&lt;br /&gt;
| 21:23 || CorNouws || stx12: I&amp;#039;ll try to get other project plan their meetings at diferent times, slots so to say&lt;br /&gt;
|-&lt;br /&gt;
| 21:23 || olivierhallot || I have to bring an issue...&lt;br /&gt;
|-&lt;br /&gt;
| 21:24 || jsc || by the way, has anybody of you logged the meeting? I forgot it :-(  &lt;br /&gt;
|-&lt;br /&gt;
| 21:24 || stx12 || olivierhallot: go ahead&lt;br /&gt;
|-&lt;br /&gt;
| 21:24 || Andreas_UX || shoot olivier&lt;br /&gt;
|-&lt;br /&gt;
| 21:24 || jsc || o sorry Olivier, please go ahead ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:24 || erAck || jsc: my continuous log should be running.&lt;br /&gt;
|-&lt;br /&gt;
| 21:24 || olivierhallot || shooting...  it is the new Broffice.org brand, comming closer to OO new brand...&lt;br /&gt;
|-&lt;br /&gt;
| 21:25 || olivierhallot || please look at http://qa.openoffice.org/issues/show_bug.cgi?id=113843&lt;br /&gt;
|-&lt;br /&gt;
| 21:25 || olivierhallot ||  I am uploading the files&lt;br /&gt;
|-&lt;br /&gt;
| 21:25 || CorNouws || erAck: no news on that, still same status&lt;br /&gt;
|-&lt;br /&gt;
| 21:25 || olivierhallot || we request to update the logo on the new release&lt;br /&gt;
|-&lt;br /&gt;
| 21:26 || stx12 || so you are looking for a contact that helps you to integrate the change? &lt;br /&gt;
|-&lt;br /&gt;
| 21:26 || CorNouws || olivierhallot: not that it really matters: but looks very good to me. And indeed, coming closer to.&lt;br /&gt;
|-&lt;br /&gt;
| 21:27 || olivierhallot || sort of. We are submitting this new brand design for approval of the CC.&lt;br /&gt;
|-&lt;br /&gt;
| 21:31 || stx12 || to me the design looks ok; have you heard any feedback from the branding list? &lt;br /&gt;
|-&lt;br /&gt;
| 21:31 || erAck || um.. is the CC in the position to approve a brand design?&lt;br /&gt;
|-&lt;br /&gt;
| 21:31 || CorNouws || Do they have a branding list in Brazil too?&lt;br /&gt;
|-&lt;br /&gt;
| 21:32 || CorNouws || erAck: IIRC, the cc decided about the special position of the BrOffice.org brand&lt;br /&gt;
|-&lt;br /&gt;
| 21:32 || christoph_n || erAck: For OOo, I would be sure that we speak for the community. For the BrOffice.org, I simply don&amp;#039;t know.&lt;br /&gt;
|-&lt;br /&gt;
| 21:32 || olivierhallot || we have not  a local lists but it was a decision of consensus among our NGO members&lt;br /&gt;
|-&lt;br /&gt;
| 21:32 || christoph_n || Especially since we didn&amp;#039;t &amp;quot;approve&amp;quot; the OOo logo ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:33 || CorNouws || so it is correct, or at least very polite, that Olivier/Br.Office ask the CC&lt;br /&gt;
|-&lt;br /&gt;
| 21:33 || Andreas_UX || �indeed good point&lt;br /&gt;
|-&lt;br /&gt;
| 21:33 || christoph_n || CorNouws: Correct.&lt;br /&gt;
|-&lt;br /&gt;
| 21:34 || christoph_n || From my side, if it goes well with the OOo logo, I recommend to use it. If the BrOffice.org community comes to another decision, it is their right to optimize the branding for their region (my personal thoughts).&lt;br /&gt;
|-&lt;br /&gt;
| 21:34 || christoph_n || By the way: This doesn&amp;#039;t make sense only, if we get a trademark policy for the new logo that finally works!&lt;br /&gt;
|-&lt;br /&gt;
| 21:35 || christoph_n || (I mean the OOo logo)&lt;br /&gt;
|-&lt;br /&gt;
| 21:35 || olivierhallot || Christoph: we, as BrOffice.org, consider ourselves as OpenOffice.org in Brazil. Nothing more, nothing less.&lt;br /&gt;
|-&lt;br /&gt;
| 21:35 || stx12 || yes, the status of broffice.org/openoffice.org is still in discussion &lt;br /&gt;
|-&lt;br /&gt;
| 21:35 || christoph_n || oliverhallot: I know :-) But you did excellent work to grow BrOffice.org in your region ... so how should I be able to decide something like that? ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:36 || stx12 || and so i think an update of the broffice.org design as proposed by olivierhallot is appropriate &lt;br /&gt;
|-&lt;br /&gt;
| 21:36 || CorNouws || olivierhallot:  Yes, you expplained some time before (on a mil list?) the situation that it is not easy to change to OpenOffice.org in Brazil, because of the strong current brand, although legaly it woudl be possible now. Did I understand that correct?&lt;br /&gt;
|-&lt;br /&gt;
| 21:37 || jsc || olivier: sure and the Brazil community did a very good job ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:37 || CorNouws || stx12: +1&lt;br /&gt;
|-&lt;br /&gt;
| 21:37 || jsc || +1 &lt;br /&gt;
|-&lt;br /&gt;
| 21:38 || olivierhallot || Cor: exact. Thanks to Stephan recent mail to us with the Court decision, we have already a clear &amp;quot;legal&amp;quot; explanation. But market is another story.&lt;br /&gt;
|-&lt;br /&gt;
| 21:40 || stx12 || olivierhallot: i think we have to continue the evaluation of the legal aspects. as soon as we have this clarfied we should talk about the long term route. &lt;br /&gt;
|-&lt;br /&gt;
| 21:40 || stx12 || but in the meantime it makes sense that broffice follows the OpenOffice.org brand refresh&lt;br /&gt;
|-&lt;br /&gt;
| 21:41 || christoph_n || stx12: Stefan, if the community cannot safely use the OOo logo, does it make sense to integrate the new BrOffice.org logo?&lt;br /&gt;
|-&lt;br /&gt;
| 21:42 || olivierhallot || stx12: I am sure we will have time to talk about that in Budapest&lt;br /&gt;
|-&lt;br /&gt;
| 21:42 || stx12 || that&amp;#039;s what i mean with follow the brand refresh; use the logo as proposed by olivierhallot that is close to the new design&lt;br /&gt;
|-&lt;br /&gt;
| 21:42 || stx12 || olivierhallot: yes, I&amp;#039;m looking forward to this. &lt;br /&gt;
|-&lt;br /&gt;
| 21:42 || Andreas_UX || I would support that&lt;br /&gt;
|-&lt;br /&gt;
| 21:43 || christoph_n || Mmmh, I don&amp;#039;t get it.&lt;br /&gt;
|-&lt;br /&gt;
| 21:44 || Andreas_UX || what do you mean chris?&lt;br /&gt;
|-&lt;br /&gt;
| 21:44 || Andreas_UX || maybe I don&amp;#039;t get that too ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:44 || christoph_n || So I understand that it is desired to let BrOffice.org follow the brand refresh ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:45 || christoph_n || ... this makes sense if the new logo is accepted and there is a clear policy how to use it. Otherwise ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:45 || CorNouws || christoph_n: ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:45 || CorNouws || what logo do we see in OpenOffice.org ?&lt;br /&gt;
|-&lt;br /&gt;
| 21:45 || christoph_n || ... it would make less sense. And here, it seems that we don&amp;#039;t have the appropriate Trademark Policy.&lt;br /&gt;
|-&lt;br /&gt;
| 21:46 || christoph_n || So, if there is no clear idea for the community how to use the new OOo logo, why join the effort.&lt;br /&gt;
|-&lt;br /&gt;
| 21:46 || jsc || the proposed brand from Olivier for now. Ongoing discussion if the brand BrOffice.org can be moved into OpenOffice.org in a smooth and well prepared transition + a good and also well prepared marketing campaign ... &lt;br /&gt;
|-&lt;br /&gt;
| 21:47 || stx12 || i would not block olivier&amp;#039;s activity by creating this dependency. &lt;br /&gt;
|-&lt;br /&gt;
| 21:48 || christoph_n || stx12: I don&amp;#039;t want to block it. It is just a matter of being aware of it ... here we talk about months of waiting.&lt;br /&gt;
|-&lt;br /&gt;
| 21:48 || CorNouws || I see no special problem for the new BrOo logo. It can be used in the product just as the OOO new logo. And the policy will foolow soon.&lt;br /&gt;
|-&lt;br /&gt;
| 21:48 || jsc || sure not directly but it good be a way for the future if all agree&lt;br /&gt;
|-&lt;br /&gt;
| 21:48 || stx12 || i will follow up on the usage question in the next days. and basically it doesn&amp;#039;t change anything for the broffice team. &lt;br /&gt;
|-&lt;br /&gt;
| 21:48 || christoph_n || stx12: That would be great. There is real demand to get this clarified.&lt;br /&gt;
|-&lt;br /&gt;
| 21:48 || CorNouws || oops s/OOO/OOo ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:49 || christoph_n || CorNouws: ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:49 || stx12 || christoph_n: yes, i&amp;#039;m aware of that &lt;br /&gt;
|-&lt;br /&gt;
| 21:50 || christoph_n || Okay, thanks!&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || jsc || to summarize it ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || jsc || we all accept the proposal from Olivier&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || jsc ||  &lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || Andreas_UX || yes&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || Andreas_UX || i do&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || erAck || +1&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || CorNouws || ok&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || stx12 || ok&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || olivierhallot || Gentlemen, thank you very much indeed.&lt;br /&gt;
|-&lt;br /&gt;
| 21:51 || jsc || anything else for today?&lt;br /&gt;
|-&lt;br /&gt;
| 21:52 || * ||  CorNouws my floor ...&lt;br /&gt;
|-&lt;br /&gt;
| 21:52 || christoph_n || +1 (by considering to the comments above)&lt;br /&gt;
|-&lt;br /&gt;
| 21:52 || christoph_n || CorNouws: flOOor&lt;br /&gt;
|-&lt;br /&gt;
| 21:52 || Andreas_UX || you&amp;#039;re funny today ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:52 || olivierhallot || Just a practical note: to whom should I assign this  branding issue?&lt;br /&gt;
|-&lt;br /&gt;
| 21:53 || * ||  christoph_n is always funny :-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:53 || CorNouws || :-D&lt;br /&gt;
|-&lt;br /&gt;
| 21:53 || stx12 || i think it need a bit more work; i guess we&amp;#039;ll need exact replacements for the files. &lt;br /&gt;
|-&lt;br /&gt;
| 21:54 || stx12 || those affected like splash...&lt;br /&gt;
|-&lt;br /&gt;
| 21:54 || CorNouws || think I have to  leave - erAck: can you pls send me the log (of the first part)?&lt;br /&gt;
|-&lt;br /&gt;
| 21:54 || erAck || CorNouws: I&amp;#039;ll do.&lt;br /&gt;
|-&lt;br /&gt;
| 21:54 || stx12 || i&amp;#039;ll see who can guide you there... &lt;br /&gt;
|-&lt;br /&gt;
| 21:54 || CorNouws || thnks all &amp;amp;amp; bye bye &lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || Andreas_UX || I will join you Core ;-)&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || jsc || bye Cor&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || erAck || bye&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || olivierhallot || bye&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || christoph_n || Bye Cor, bye Andreas!&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || Andreas_UX || Have a good one everybody!&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || -!- ||  CorNouws has left #ooocouncil []&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || -!- ||  Andreas_UX has quit [Quit: Andreas_UX]&lt;br /&gt;
|-&lt;br /&gt;
| 21:55 || olivierhallot || bye all!&lt;br /&gt;
|-&lt;br /&gt;
| 21:56 || -!- ||  olivierhallot has left #ooocouncil []&lt;br /&gt;
|-&lt;br /&gt;
| 21:56 || christoph_n || Okay, then I&amp;#039;ll update the AI ... thanks to all and have a nice evening!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== URIs mentioned ===&lt;br /&gt;
* [[Community_Council/Minutes#2010-07-22]] &amp;amp;nbsp;&amp;amp;nbsp;(jsc 20:52)&lt;br /&gt;
* [[Community_Council/Meeting_Guidelines/Public_Invitation_Reminder_Template]] &amp;amp;nbsp;&amp;amp;nbsp;(Andreas_UX 20:59)&lt;br /&gt;
* http://www.ooocon.org/index.php/ooocon/2010/paper/view/215 &amp;amp;nbsp;&amp;amp;nbsp;(stx12 21:16)&lt;br /&gt;
* http://qa.openoffice.org/issues/show_bug.cgi?id=113843 &amp;amp;nbsp;&amp;amp;nbsp;(olivierhallot 21:25)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Community_Council]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck/WorkFlow&amp;diff=177201</id>
		<title>User:ErAck/WorkFlow</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck/WorkFlow&amp;diff=177201"/>
		<updated>2010-08-05T12:53:13Z</updated>

		<summary type="html">&lt;p&gt;ErAck: /* System */ removed mentioning the totally outdated VirtualBox image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here I&amp;#039;m noting down my work flow and environment I use when working on code,&lt;br /&gt;
hopefully giving some useful hints for others.&lt;br /&gt;
&lt;br /&gt;
== System ==&lt;br /&gt;
&lt;br /&gt;
Preferably Debian. Etch did it. Lenny does it better. Which is what I use at home. At work I use&lt;br /&gt;
Kubuntu, Solaris/SPARC, Solaris/x86, MacOSX/x86, and with a ten-foot pole only&lt;br /&gt;
when necessary Windows XP.&lt;br /&gt;
&lt;br /&gt;
== Shell environment ==&lt;br /&gt;
&lt;br /&gt;
With the migration to [[OOo_and_Subversion| SVN]] the .svn/* subdirectories&amp;#039;&lt;br /&gt;
content came in the way when using &amp;#039;&amp;#039;grep -r ...&amp;#039;&amp;#039;, so in &amp;#039;&amp;#039;~/.bashrc&amp;#039;&amp;#039;&lt;br /&gt;
I have&lt;br /&gt;
 export GREP_OPTIONS=&amp;#039;--exclude-dir=.svn&amp;#039;&lt;br /&gt;
respectively in &amp;#039;&amp;#039;~/.cshrc&amp;#039;&amp;#039;&lt;br /&gt;
 setenv GREP_OPTIONS &amp;#039;--exclude-dir=.svn&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; On some systems there&amp;#039;s an old version of grep that doesn&amp;#039;t know&lt;br /&gt;
that option and bails out if set. This will break the build later, so check by&lt;br /&gt;
setting the variable and invoke grep to see whether it complains, and if so do&lt;br /&gt;
not set the variable.&lt;br /&gt;
&lt;br /&gt;
With the migration to [[Mercurial]] this is obsolete unless you plan to work&lt;br /&gt;
on old branches of the SVN repository, or have other sources managed by SVN.&lt;br /&gt;
&lt;br /&gt;
== Vim editor ==&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m a Vim addict since the mid 90s, so I use the stuff lined out in [[Editor Vim]].&lt;br /&gt;
&lt;br /&gt;
=== A useful link for gvim ===&lt;br /&gt;
&lt;br /&gt;
I usually use plain &amp;#039;&amp;#039;vim&amp;#039;&amp;#039; in a build environment shell, but to be able to&lt;br /&gt;
[[Editor_Vim#Compiling_a_source_from_within_Vim| compile sources]] also from&lt;br /&gt;
within a detached &amp;#039;&amp;#039;gvim&amp;#039;&amp;#039; I setup a symbolic link in &amp;#039;&amp;#039;$SRC_ROOT&amp;#039;&amp;#039; after having&lt;br /&gt;
[[#Configure| configured]] and sourced the build environment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ln -s LinuxX86Env.Set.sh ENV.$INPATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
for bash respectively &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ln -s LinuxX86Env.Set ENV.$INPATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
for tcsh.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Out of habits introduced at Sun Hamburg labs, I usually follow the same naming&lt;br /&gt;
scheme also at home when setting up [[CWS]]s, which is to checkout source code&lt;br /&gt;
into a subdirectory of &amp;lt;code&amp;gt;$CWS_WORK_STAMP/$WORK_STAMP/ooo&amp;lt;/code&amp;gt;,&lt;br /&gt;
for example &amp;lt;tt&amp;gt;cwsname/DEV300/ooo&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== configure ===&lt;br /&gt;
&lt;br /&gt;
When I don&amp;#039;t need a full-blown tree because I don&amp;#039;t plan to work on globally&lt;br /&gt;
used stuff that would also affect the much disregarded &amp;#039;&amp;#039;binfilter&amp;#039;&amp;#039; binary&lt;br /&gt;
filter module, I of course exclude that from the build, and I exclude many&lt;br /&gt;
others as well. This boils build time down to 3.5 hours for the entire tree&lt;br /&gt;
[hey, you Windows guys are getting envious, aren&amp;#039;t you? ;-)]. My configure&lt;br /&gt;
call currently (2009-03-14) is&lt;br /&gt;
&lt;br /&gt;
 ./configure --enable-dbgutil --disable-strip-solver  --with-use-shell=bash --disable-binfilter --without-fonts --without-ppds --disable-build-mozilla --with-system-stdlibs --disable-systray --with-build-version=&amp;quot;Built by erAck&amp;quot; --with-vendor=&amp;quot;erAck&amp;quot; --disable-odk --disable-qadevooo --disable-pdfimport --disable-mediawiki --disable-reportdesign --disable-neon --with-system-zlib --with-system-openssl --with-system-jpeg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Especially note&lt;br /&gt;
; --enable-dbgutil : This builds a non-product version with assertions and various checks during runtime enabled. The output directories are without the &amp;#039;&amp;#039;.pro&amp;#039;&amp;#039; extension, for example &amp;#039;&amp;#039;unxlngi6&amp;#039;&amp;#039; instead of &amp;#039;&amp;#039;unxlngi6.pro&amp;#039;&amp;#039;&lt;br /&gt;
; --disable-strip-solver : Symbols are not stripped from the libraries, so we&amp;#039;ll have useful information in the debugger for backtraces.&lt;br /&gt;
; --with-use-shell=bash : use &amp;#039;&amp;#039;bash&amp;#039;&amp;#039; shell instead of the default &amp;#039;&amp;#039;tcsh&amp;#039;&amp;#039;. &amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; if you do not specify this and source the resulting &amp;lt;tt&amp;gt;LinuxX86Env.Set.sh&amp;lt;/tt&amp;gt; to work in bash, the &amp;lt;tt&amp;gt;SHELL&amp;lt;/tt&amp;gt; environment variable will still contain &amp;#039;&amp;#039;/bin/tcsh&amp;#039;&amp;#039;, this may be needed for the build pocess [does it really? I&amp;#039;d consider it a bug], but will interfere with other tools attempting to invoke a shell that is thought to match the current shell, e.g. if you &amp;lt;code&amp;gt;source ENV.$INPATH&amp;lt;/code&amp;gt; from within &amp;#039;&amp;#039;gvim&amp;#039;&amp;#039; as mentioned above in [[#A_useful_link_for_gvim| a useful link for gvim]].&lt;br /&gt;
&lt;br /&gt;
=== More shell variables ===&lt;br /&gt;
&lt;br /&gt;
I add these to the end of LinuxX86Env.Set.sh, replace &amp;#039;&amp;#039;cwsname&amp;#039;&amp;#039; and &amp;#039;&amp;#039;m42&amp;#039;&amp;#039;&lt;br /&gt;
and the content of &amp;#039;&amp;#039;my_OOO_TREE&amp;#039;&amp;#039; as appropriate. For &amp;#039;&amp;#039;tcsh&amp;#039;&amp;#039; replace&lt;br /&gt;
&amp;#039;&amp;#039;export var=&amp;quot;...&amp;quot;&amp;#039;&amp;#039; with &amp;#039;&amp;#039;setenv var &amp;quot;...&amp;quot;&amp;#039;&amp;#039; and add to LinuxX86Env.Set&lt;br /&gt;
instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export CWS_WORK_STAMP=&amp;quot;cwsname&amp;quot;&lt;br /&gt;
export my_UPDMINOR=&amp;quot;m42&amp;quot;&lt;br /&gt;
export WORKSPACE_STAMP=&amp;quot;$CWS_WORK_STAMP&amp;quot;&lt;br /&gt;
export my_OOO_TREE=&amp;quot;$HOME/ooo/src/$WORKSPACE_STAMP/$WORK_STAMP&amp;quot;&lt;br /&gt;
export TMP=&amp;quot;/tmp&amp;quot;&lt;br /&gt;
export CCACHE_DIR=&amp;quot;$my_OOO_TREE/.ccache_${INPATH}&amp;quot;&lt;br /&gt;
ccache -M 2G -F 100000&lt;br /&gt;
export LOCALINSTALLDIR=&amp;quot;$my_OOO_TREE/inst.${my_UPDMINOR}&amp;quot;&lt;br /&gt;
export PKGFORMAT=&amp;quot;installed&amp;quot;&lt;br /&gt;
export BUILD_COMMAND=&amp;quot;perl $SRC_ROOT/solenv/bin/build.pl&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; TMP : For some reason (is there any?) configure does not inherit that, so set again.&lt;br /&gt;
; CCACHE_DIR and ccache : Speeds up things significantly when rebuilding source. Note that the cache directory is setup such that different milestones and product and non-product versions don&amp;#039;t interfere.&lt;br /&gt;
; LOCALINSTALLDIR and PKGFORMAT : Building the installation set in module &amp;#039;&amp;#039;instsetoo_native&amp;#039;&amp;#039; creates a directly usable installation instead of packages. The location is, for example, .../cwsname/inst.m42/... &amp;lt;br&amp;gt; See also [http://blogs.sun.com/GullFOSS/entry/the_fastest_way_to_get GullFOSS entry].&lt;br /&gt;
; BUILD_COMMAND : &amp;#039;&amp;#039;build&amp;#039;&amp;#039; actually is an alias, setting up a variable enables use in inherited shells, from within the editor, or simply in a &amp;lt;code&amp;gt;time $BUILD_COMMAND --all&amp;lt;/code&amp;gt; invocation.&lt;br /&gt;
&lt;br /&gt;
{{Documentation/Caution| Using LOCALINSTALLDIR with a build in instsetoo_native is not deterministic if not building with PKGFORMAT installed or building for several languages or building language packs.}}&lt;br /&gt;
&lt;br /&gt;
In these cases it is necessary to not set LOCALINSTALLDIR and let the build create deb or rpm packages, and after a complete build use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export LOCALINSTALLDIR=YourLocation&lt;br /&gt;
cd $SRC_ROOT/instsetoo_native/util&lt;br /&gt;
dmake openoffice_en-US PKGFORMAT=installed&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you also set &amp;lt;code&amp;gt;FORCE2ARCHIVE=TRUE&amp;lt;/code&amp;gt; you&amp;#039;d get a .tar.gz archive you could extract to any place.&lt;br /&gt;
&lt;br /&gt;
YMMV..  See [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=25968 this mail] for details about LOCALINSTALLDIR.&lt;br /&gt;
&lt;br /&gt;
==== ccache ====&lt;br /&gt;
&lt;br /&gt;
On my system I have setup a symbolic link&lt;br /&gt;
&amp;lt;tt&amp;gt;/usr/local/bin/gcc -&amp;gt; /usr/bin/ccache&amp;lt;/tt&amp;gt;&lt;br /&gt;
so every source I build uses ccache, I never encountered problems with that.&lt;br /&gt;
If you want to use ccache selectively for OOo, add the following variables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== build ===&lt;br /&gt;
&lt;br /&gt;
In the OOo tree&amp;#039;s root, effectively being &amp;lt;tt&amp;gt;.../cwsname/DEV300/ooo&amp;lt;/tt&amp;gt;&lt;br /&gt;
in this example, execute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source LinuxX86Env.Set.sh&lt;br /&gt;
./bootstrap&lt;br /&gt;
cd instsetoo_native&lt;br /&gt;
build --all -- -P2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that I don&amp;#039;t invoke the &amp;#039;&amp;#039;dmake&amp;#039;&amp;#039; command in the tree&amp;#039;s root.&lt;br /&gt;
Reasons are:&lt;br /&gt;
&lt;br /&gt;
* Fine grained call of the &amp;#039;&amp;#039;build&amp;#039;&amp;#039; command, specifying the number of processes to use. Here I create 2 dmake processes per source directory entered by the build script. As a rule of thumb, use 2 processes per CPU core, so if one is waiting for disk IO the other can do useful things. Yes, this is a much simplified view.. For a CPU having 2 cores, this would make 4 processes. However, instead of simply specifying -P4 for dmake I prefer 2 build processes and 2 dmake processes per build process, which would be&lt;br /&gt;
** &amp;lt;code&amp;gt;build -P2 --all -- -P2&amp;lt;/code&amp;gt;&lt;br /&gt;
* In case the build breaks, for example in module &amp;#039;&amp;#039;svx&amp;#039;&amp;#039;, after having fixed things the build can be easily continued in that module by retrieving and editing the command line, while still in module &amp;#039;&amp;#039;instsetoo_native&amp;#039;&amp;#039;:&lt;br /&gt;
** &amp;lt;code&amp;gt;build --all:svx -- -P2&amp;lt;/code&amp;gt;&lt;br /&gt;
* In case I&amp;#039;m short of disk space, which may happen if I build both, product and non-product, I add the &amp;#039;&amp;#039;--dlv_switch -link&amp;#039;&amp;#039; option, that creates hard links of the files delivered to the solver instead of copying them, which may save 500MB or so per build.&lt;br /&gt;
** &amp;lt;code&amp;gt;build --dlv_switch -link --all -- -P2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Build can create a HTML status page to load in the browser and watch progress. Add the &amp;#039;&amp;#039;--html&amp;#039;&amp;#039; option and to still see the console output add &amp;#039;&amp;#039;--dontgraboutput&amp;#039;&amp;#039; as well. The HTML page is created as &amp;lt;tt&amp;gt;$SRC_ROOT/$INPATH.build.html&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;build --html --dontgraboutput --dlv_switch -link --all -- -P2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ah, and of course I use&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
time $BUILD_COMMAND --html --dontgraboutput --dlv_switch -link --all -- -P2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
instead and hope the build doesn&amp;#039;t break so I can see 1:55:03 or some such ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== product and non-product ====&lt;br /&gt;
&lt;br /&gt;
To build a product version additionally to the non-product version it would be&lt;br /&gt;
enough to configure again but omit the &amp;#039;&amp;#039;--enable-dbgutil&amp;#039;&amp;#039; option. However,&lt;br /&gt;
that would overwrite the already existing environment files, so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv LinuxX86.Set LinuxX86.non-pro.Set&lt;br /&gt;
mv LinuxX86.Set.sh LinuxX86.non-pro.Set.sh&lt;br /&gt;
rm ENV.$INPATH&lt;br /&gt;
ln -s LinuxX86.non-pro.Set.sh ENV.$INPATH&lt;br /&gt;
./configure ... with all other options except --enable-dbgutil ...&lt;br /&gt;
# Again, edit the environment files as mentioned above to add variables, but&lt;br /&gt;
# this time set LOCALINSTALLDIR to &amp;quot;$my_OOO_TREE/inst_pro.${my_UPDMINOR}&amp;quot;&lt;br /&gt;
# to not overwrite the non-pro installation!&lt;br /&gt;
mv LinuxX86.Set LinuxX86.pro.Set&lt;br /&gt;
mv LinuxX86.Set.sh LinuxX86.pro.Set.sh&lt;br /&gt;
source LinuxX86.pro.Set.sh&lt;br /&gt;
ln -s LinuxX86.pro.Set.sh ENV.$INPATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that it is not needed to execute &amp;#039;&amp;#039;./bootstrap&amp;#039;&amp;#039; again, as the resulting&lt;br /&gt;
&amp;#039;&amp;#039;dmake&amp;#039;&amp;#039; executable is copied to and executed from solenv/$OUTPATH/bin for&lt;br /&gt;
both, pro and non-pro. Having renamed the LinuxX86.Set.sh it wouldn&amp;#039;t even work&lt;br /&gt;
because bootstrap sources that.&lt;br /&gt;
&lt;br /&gt;
Note also that $INPATH contains either &amp;#039;&amp;#039;unxlngi6&amp;#039;&amp;#039; for non-product or&lt;br /&gt;
&amp;#039;&amp;#039;unxlngi6.pro&amp;#039;&amp;#039; for product, whereas $OUTPATH contains always &amp;#039;&amp;#039;unxlngi6&amp;#039;&amp;#039;&lt;br /&gt;
without any extension. This may be confusing, as one would assume $OUTPATH&lt;br /&gt;
would be used for the output directories. Just remember that $INPATH is used in&lt;br /&gt;
the &amp;#039;&amp;#039;solver&amp;#039;&amp;#039; path to pull in header files and libraries. In fact, $OUTPATH is&lt;br /&gt;
a base name that gets extended in makefiles with &amp;#039;&amp;#039;.pro&amp;#039;&amp;#039; for product output&lt;br /&gt;
directories, or may be extended with other extensions, for legacy reasons, see&lt;br /&gt;
&amp;lt;tt&amp;gt;solenv/inc/settings.mk&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
&lt;br /&gt;
Run the office from the installation. Do not attempt to run it from the&lt;br /&gt;
&amp;#039;&amp;#039;solver/bin&amp;#039;&amp;#039; directory, it won&amp;#039;t work. Also do not run it from within the&lt;br /&gt;
build environment&amp;#039;s shell, as libraries from the wrong path would be pulled in&lt;br /&gt;
and subsequent libraries not be found. Use a clean shell instead. In the&lt;br /&gt;
example used here, the executable to run would be&lt;br /&gt;
&amp;lt;tt&amp;gt;.../cwsname/DEV300/inst.m42/openoffice.org3/program/soffice&amp;lt;/tt&amp;gt;, execute&lt;br /&gt;
it once to verify successful installation and step through the initial wizard.&lt;br /&gt;
&lt;br /&gt;
To load documents attached to issues it is a good idea to set macro security&lt;br /&gt;
to the highest possible value, i.e. execute macros only if the document&lt;br /&gt;
resides in a specific location. Go to&lt;br /&gt;
&amp;#039;&amp;#039;Tools &amp;amp;rarr; Options &amp;amp;rarr; OpenOffice.org &amp;amp;rarr; Security &amp;amp;rarr; Macro Security&amp;#039;&amp;#039;&lt;br /&gt;
and choose &amp;#039;&amp;#039;Security Level&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Very high&amp;#039;&amp;#039;&amp;#039;. If you need to execute macros to&lt;br /&gt;
reproduce a bug you may add a directory to &amp;#039;&amp;#039;Trusted Sources&amp;#039;&amp;#039; in which you put&lt;br /&gt;
such documents after having inspected the macros coming with the document.&lt;br /&gt;
&lt;br /&gt;
Other options I modify:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;OpenOffice.org &amp;amp;rarr; Paths&amp;#039;&amp;#039;&lt;br /&gt;
** Change &amp;#039;&amp;#039;My Documents&amp;#039;&amp;#039; to the desired location; I have a &amp;lt;tt&amp;gt;bugdocs&amp;lt;/tt&amp;gt; folder.&lt;br /&gt;
* &amp;#039;&amp;#039;Load/Save &amp;amp;rarr; General&amp;#039;&amp;#039;&lt;br /&gt;
** Uncheck &amp;#039;&amp;#039;Save AutoRecovery information every ... minutes&amp;#039;&amp;#039;. &amp;lt;br&amp;gt; It usually gets in the way at the most inconvenient point when debugging.&lt;br /&gt;
** Uncheck &amp;#039;&amp;#039;Size optimization for ODF format&amp;#039;&amp;#039;. &amp;lt;br&amp;gt; It&amp;#039;s much easier to view the XML streams with each element on its own line when necessary, instead of everything on just one line. &amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;Hint:&amp;#039;&amp;#039;&amp;#039; use the [[Xmlpp| XML pretty printer (xmlpp)]] to reformat streams of documents that were saved with this option enabled.&lt;br /&gt;
* &amp;#039;&amp;#039;Language Settings &amp;amp;rarr; Languages&amp;#039;&amp;#039;&lt;br /&gt;
** I check &amp;#039;&amp;#039;Enabled for Asian languages&amp;#039;&amp;#039; and &amp;#039;&amp;#039;Enabled for complex text layout (CTL)&amp;#039;&amp;#039; because I also work on [[I18n|i18n]], not needed otherwise.&lt;br /&gt;
&lt;br /&gt;
== Little Helpers ==&lt;br /&gt;
&lt;br /&gt;
To tame the source base I heavily use exuberant ctags and GNU id-utils and&lt;br /&gt;
sometimes cscope. For scripts generating databases suitable for OOo see the&lt;br /&gt;
[[Little Helpers]].&lt;br /&gt;
&lt;br /&gt;
=== Setting up the ctags and ID databases ===&lt;br /&gt;
&lt;br /&gt;
In the build environment shell I create the ctags and GNU ID-utils databases&lt;br /&gt;
using the scripts mentioned:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd $SRC_ROOT&lt;br /&gt;
mkid-script &amp;#039;*&amp;#039;&lt;br /&gt;
ctags-script --global&lt;br /&gt;
cd sc&lt;br /&gt;
tagsID &amp;#039;{.,../formula}&amp;#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;#039;*&amp;#039; and &amp;#039;{.,../formula}&amp;#039; are enclosed in single quotes to prevent&lt;br /&gt;
pathname and brace expansion on the command line. This creates&lt;br /&gt;
&lt;br /&gt;
; ID&lt;br /&gt;
: Id-utils database for the entire OOo tree; generating this takes some time, 20 minutes or so.&lt;br /&gt;
; tags&lt;br /&gt;
: Tag file for $SRC_ROOT/solver/inc, containing symbols of all delivered header files.&lt;br /&gt;
; sc/tags&lt;br /&gt;
: Tag file for modules &amp;#039;&amp;#039;sc&amp;#039;&amp;#039; and &amp;#039;&amp;#039;formula&amp;#039;&amp;#039;.&lt;br /&gt;
; sc/ID&lt;br /&gt;
: Id-utils database for modules &amp;#039;&amp;#039;sc&amp;#039;&amp;#039; and &amp;#039;&amp;#039;formula&amp;#039;&amp;#039;.&lt;br /&gt;
; sc/cscope.*&lt;br /&gt;
: Cscope database for modules &amp;#039;&amp;#039;sc&amp;#039;&amp;#039; and &amp;#039;&amp;#039;formula&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Because I work within the &amp;#039;&amp;#039;sc&amp;#039;&amp;#039; module and the compiler and tokens are now&lt;br /&gt;
derived from classes declared in module &amp;#039;&amp;#039;formula&amp;#039;&amp;#039;, I setup the combined&lt;br /&gt;
databases, so Vim sees them as one entity. The global &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; file is pulled&lt;br /&gt;
in when an identifier is not found in the local &amp;#039;&amp;#039;tags&amp;#039;&amp;#039; file, and the global&lt;br /&gt;
&amp;#039;&amp;#039;ID&amp;#039;&amp;#039; file comes in handy when working on changes that affect the entire&lt;br /&gt;
office, for example to lookup where a certain method is used.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
Let assume we want to debug a call to an interpreter function. Let further&lt;br /&gt;
assume we don&amp;#039;t know the implementation name and we don&amp;#039;t bother looking it up&lt;br /&gt;
through the chain resource file, resource header file, opcode file, and guess&lt;br /&gt;
the corresponding interpreter function&amp;#039;s method (for details see&lt;br /&gt;
[[Calc/Implementation/Spreadsheet_Functions| implementation of spreadsheet functions]]).&lt;br /&gt;
&lt;br /&gt;
Per debug session, I prefer having a terminal with 3 tabs open:&lt;br /&gt;
&lt;br /&gt;
# Shell with build environment, lets call it &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;uild.&lt;br /&gt;
# Shell from which I run the office, lets call it &amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;un.&lt;br /&gt;
# Shell for debugger, lets call it &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039;ebug.&lt;br /&gt;
&lt;br /&gt;
This way they don&amp;#039;t interfere with each other, preserving all stdout/stderr&lt;br /&gt;
from the office run and having a clean screen for the debugger, which should&lt;br /&gt;
not be started from within the build environment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Build selected files with debug ===&lt;br /&gt;
&lt;br /&gt;
Of course we could build just the entire &amp;#039;&amp;#039;sc&amp;#039;&amp;#039; module with debug, but&lt;br /&gt;
I suppose you&amp;#039;re just too impatient to wait for it, as I am. Instead, lets&lt;br /&gt;
build just some objects with debug in the &amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;uild shell:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd $SRC_ROOT/sc/source/core/tool&lt;br /&gt;
dmake killobj&lt;br /&gt;
dmake debug=t&lt;br /&gt;
cd ../../../util&lt;br /&gt;
dmake debug=t&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; dmake killobj&lt;br /&gt;
: Removes object files corresponding to all source files in the current directory.&lt;br /&gt;
; dmake debug=t&lt;br /&gt;
: Builds all object files with debug that need to be rebuild.&lt;br /&gt;
The final &amp;#039;&amp;#039;dmake debug=t&amp;#039;&amp;#039; in &amp;#039;&amp;#039;util&amp;#039;&amp;#039; links the shared libraries.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;sc/unxlngi6/lib/libscli.so&amp;lt;/tt&amp;gt; shared library now has debug&lt;br /&gt;
information for those objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== mkd script ====&lt;br /&gt;
&lt;br /&gt;
Now wait, instead of killing all objects in the &amp;#039;&amp;#039;tools&amp;#039;&amp;#039; directory,&lt;br /&gt;
selectively building only interpreter relevant files would be sufficient.&lt;br /&gt;
A [[Little_Helpers#mkd| script &amp;#039;&amp;#039;mkd&amp;#039;&amp;#039;]] called as&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;#039;&amp;#039;&amp;#039;mkd interpr*.cxx&amp;#039;&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; is a reusable solution. The second dmake&lt;br /&gt;
call in the script is to build the object archive or other targets for the&lt;br /&gt;
directory if all sources were successfully compiled. After that we still need&lt;br /&gt;
to cd into the &amp;#039;&amp;#039;util&amp;#039;&amp;#039; directory to link the library using &amp;#039;&amp;#039;dmake debug=t&amp;#039;&amp;#039;.&lt;br /&gt;
This can be accomplished by passing the &amp;#039;&amp;#039;--link&amp;#039;&amp;#039; or &amp;#039;&amp;#039;-l&amp;#039;&amp;#039; option to the&lt;br /&gt;
script, so &amp;lt;code&amp;gt;&amp;#039;&amp;#039;&amp;#039;mkd -l interpr*.cxx&amp;#039;&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; does it all.&lt;br /&gt;
&lt;br /&gt;
==== Formula compiler, tokens, interpreter and document access ====&lt;br /&gt;
&lt;br /&gt;
To not only have the interpreter with debug but also the compiler and methods&lt;br /&gt;
that access the document and retrieve values from cells or interpret&lt;br /&gt;
recursively, this comes handy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# To get down to the compiler roots add module formula core&lt;br /&gt;
cd $SRC_ROOT/formula/source/core/api&lt;br /&gt;
mkd -l *.cxx&lt;br /&gt;
# Calc related&lt;br /&gt;
cd $SRC_ROOT/sc/source/core/tool&lt;br /&gt;
mkd compiler*.cxx token*.cxx interpr*.cxx&lt;br /&gt;
cd ../data&lt;br /&gt;
mkd -l doc*.cxx tab*.cxx col*.cxx cell*.cxx&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Run the office ===&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;un shell&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# cd into the 3-layer office library directory&lt;br /&gt;
cd .../cwsname/DEV300/inst.m42/openoffice.org/basis3.0/program&lt;br /&gt;
&lt;br /&gt;
# Create a backup of the original libraries and symbolic links to the debug&lt;br /&gt;
# libraries, only needed the first time of course:&lt;br /&gt;
mkdir bkp&lt;br /&gt;
cp -p libsc* bkp&lt;br /&gt;
cp -p libvba* bkp&lt;br /&gt;
cp -p libfor* bkp&lt;br /&gt;
ln -sf ../../../../ooo/sc/unxlngi6/lib/libsc* .&lt;br /&gt;
ln -sf ../../../../ooo/sc/unxlngi6/lib/libvba* .&lt;br /&gt;
ln -sf ../../../../ooo/formula/unxlngi6/lib/libfor* .&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; This is explicitly for debugging Calc, other modules, other&lt;br /&gt;
libraries, of course.. You do not need this to run the office. Creating&lt;br /&gt;
symbolic links doesn&amp;#039;t necessarily work with all libraries, as some of them&lt;br /&gt;
then won&amp;#039;t find the appropriate run path to dlopen other libraries. Some need&lt;br /&gt;
to be copied instead. This may need experimenting. However, it works for the&lt;br /&gt;
Calc libraries.&lt;br /&gt;
&lt;br /&gt;
Then execute the office:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
../../../openoffice.org3/program/scalc &amp;amp; sleep 8 ; ps&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This starts Calc in the background, sleeps for 8 seconds during startup (you&lt;br /&gt;
may have to adapt the duration on a slower machine), and then displays the&lt;br /&gt;
process list, one of them being &amp;#039;&amp;#039;soffice.bin&amp;#039;&amp;#039;, for example&lt;br /&gt;
&lt;br /&gt;
  1234 pts/6    00:00:01 soffice.bin&lt;br /&gt;
&lt;br /&gt;
Remember the PID or copy it to the clipboard or selection.&lt;br /&gt;
&lt;br /&gt;
=== Debug the beast ===&lt;br /&gt;
&lt;br /&gt;
In the &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039;ebug shell it is best to cd into some source code subdirectory,&lt;br /&gt;
for example &amp;lt;tt&amp;gt;sc/source/core/tool&amp;lt;/tt&amp;gt;, otherwise the debugger sometimes may&lt;br /&gt;
not find included header files when stepping through inline methods. You may of&lt;br /&gt;
course also use the --cd option instead, or put a &amp;#039;&amp;#039;cd&amp;#039;&amp;#039; command in a gdb&lt;br /&gt;
command file and execute it on startup for frequent use. Consult the&lt;br /&gt;
documentation for details. Then invoke the &amp;#039;&amp;#039;gdb&amp;#039;&amp;#039; debugger with the Text User&lt;br /&gt;
Interface, &amp;#039;&amp;#039;gdbtui&amp;#039;&amp;#039;, and attach it to the office executable already running:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
gdbtui --pid=1234&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, if that doesn&amp;#039;t work&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
gdbtui .../cwsname/DEV300/inst.m42/openoffice.org3/program/soffice.bin 1234&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;1234&amp;#039;&amp;#039; is of course the actual PID of the running process. If your&lt;br /&gt;
system doesn&amp;#039;t have &amp;#039;&amp;#039;gdbtui&amp;#039;&amp;#039;, try &amp;lt;code&amp;gt;gdb -tui&amp;lt;/code&amp;gt; or&lt;br /&gt;
&amp;lt;code&amp;gt;gdb --tui&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;gdb --interpreter=tui&amp;lt;/code&amp;gt; instead. If that&lt;br /&gt;
still doesn&amp;#039;t come up with an extra text frame, you&amp;#039;re out of luck or on MacOSX&lt;br /&gt;
or both ;-)&lt;br /&gt;
&lt;br /&gt;
When it loads the libraries you may have to press the enter key a few times&lt;br /&gt;
during the listing, and then it waits for command input, with the executable&lt;br /&gt;
being interrupted. To debug some interpreter function as mentioned above, the&lt;br /&gt;
central entry point would be to set a breakpoint at ScInterpreter::Interpret(),&lt;br /&gt;
so enter&lt;br /&gt;
&lt;br /&gt;
 b &amp;#039;ScInterpreter::Interpret()&amp;#039;&lt;br /&gt;
 c&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; sets a breakpoint, here at the entry of the desired function, and&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; continues running the program. Note that you don&amp;#039;t have to type the&lt;br /&gt;
full classname::method for the breakpoint, it is sufficient to type an&lt;br /&gt;
unambiguous portion of the name an press the &amp;#039;&amp;#039;Tab&amp;#039;&amp;#039; key for completion. This&lt;br /&gt;
might be&lt;br /&gt;
&lt;br /&gt;
 b &amp;#039;ScInterpreter::Int&amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the leading single quote is needed for this functionality.&lt;br /&gt;
&lt;br /&gt;
If you now enter a formula in a cell, the debugger breaks as soon as&lt;br /&gt;
ScInterpreter::Interpret() is reached and you may start stepping through. In&lt;br /&gt;
command line mode this would be pressing &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Enter&amp;#039;&amp;#039; for next program&lt;br /&gt;
line, stepping over function calls, or &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Enter&amp;#039;&amp;#039; stepping into function&lt;br /&gt;
calls. The previous command could be repeated by just pressing &amp;#039;&amp;#039;Enter&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
However, we started with the TUI, so we will take advantage of it. Press&lt;br /&gt;
&amp;#039;&amp;#039;Ctrl-x&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; to switch to &amp;#039;&amp;#039;SingleKey&amp;#039;&amp;#039; mode, from now on you can use&lt;br /&gt;
just &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039;. A single &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; continues execution. Other single&lt;br /&gt;
keys do different things, experiment or read the fine manual.. You may leave&lt;br /&gt;
SingleKey mode at any time by pressing &amp;#039;&amp;#039;&amp;#039;q&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
As detailed documentation for gdb and TUI sometimes is not installed on systems&lt;br /&gt;
(check &amp;lt;code&amp;gt;info gdb&amp;lt;/code&amp;gt;) and the &amp;#039;&amp;#039;info&amp;#039;&amp;#039; program is cumbersome to use if&lt;br /&gt;
not used to, here&amp;#039;s the online documentation:&lt;br /&gt;
[http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html Debugging with GDB]&lt;br /&gt;
and the&lt;br /&gt;
[http://sourceware.org/gdb/current/onlinedocs/gdb_24.html GDB Text User Interface]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
&lt;br /&gt;
The [[Debugging]] page gives useful hints and tips.&lt;br /&gt;
&lt;br /&gt;
== Profiling ==&lt;br /&gt;
&lt;br /&gt;
I use the great [[Callgrind]] and KCachegrind tools to create call graphs and&lt;br /&gt;
see where performance bottlenecks are.&lt;br /&gt;
&lt;br /&gt;
Performance profiling of course needs to be done in a product version, compiled&lt;br /&gt;
with optimizations and without assertions and test code. So cd into&lt;br /&gt;
.../cwsname/DEV300/ooo and &amp;lt;code&amp;gt;source ENV.unxlngi6.pro&amp;lt;/code&amp;gt;. Everything&lt;br /&gt;
needed to be done hopefully is explained in&lt;br /&gt;
[[Callgrind#Profiling_OpenOffice.org| profiling OOo with callgrind]].&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=OpenOffice.org_Internship/Projects/2010/Add_new_spreadsheet_functions_and_parameters_according_to_ODFF&amp;diff=176857</id>
		<title>OpenOffice.org Internship/Projects/2010/Add new spreadsheet functions and parameters according to ODFF</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=OpenOffice.org_Internship/Projects/2010/Add_new_spreadsheet_functions_and_parameters_according_to_ODFF&amp;diff=176857"/>
		<updated>2010-07-28T13:37:27Z</updated>

		<summary type="html">&lt;p&gt;ErAck: first shot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Internship 2010: Add new spreadsheet functions and parameters according to ODFF}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The [[OpenDocument| OASIS OpenDocument Format (ODF)]] specification part 2, OpenFormula aka ODFF, standardizes on recalulcated formula expression as used by [[Calc]] and introduces new functions and parameters that need to be implemented.&lt;br /&gt;
&lt;br /&gt;
== Project plan ==&lt;br /&gt;
* Align and enhance the already existing [[Calc/ODFF_Implementation/Examine_functions| overview and comparison]] of differences between implemented spreadsheet functions and the current ODFF draft.&lt;br /&gt;
* Determine the most important functions to be implemented.&lt;br /&gt;
* Implement functions in&lt;br /&gt;
** compiler&lt;br /&gt;
** interpreter&lt;br /&gt;
** function wizard resources&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* Code documentation.&lt;br /&gt;
* Function and parameter descriptions in the Formula Wizard.&lt;br /&gt;
* Provide input for the online help / documentation team.&lt;br /&gt;
&lt;br /&gt;
== Project status ==&lt;br /&gt;
* The project is accepted for the OpenOffice.org summer internship program 2010&lt;br /&gt;
* Evaluation and comparison is ongoing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Calc]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=176170</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=176170"/>
		<updated>2010-07-20T10:44:07Z</updated>

		<summary type="html">&lt;p&gt;ErAck: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er&lt;br /&gt;
* Working on:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Email Calc developers: [mailto:dev@sc.openoffice.org dev@sc.openoffice.org] mailing list&lt;br /&gt;
* Email personal: [mailto:er@openoffice.org er@openoffice.org], [mailto:eike.rathke@oracle.com eike.rathke@oracle.com]&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* GullFOSS: http://blogs.sun.com/GullFOSS&lt;br /&gt;
* Company Name: Oracle Deutschland B.V. &amp;amp; Co. KG&lt;br /&gt;
* Company URL: http://oracle.com/office&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== currently working on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/Dashboard/Wiki Editing Policy]] and [[Special:Mostlinkedtemplates]] and [[:Category:Wiki_Templates_Expressing_Quality]] and [[:Category:Formatting_templates]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Outdated}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Outdated}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=175329</id>
		<title>User:ErAck</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:ErAck&amp;diff=175329"/>
		<updated>2010-07-15T08:59:25Z</updated>

		<summary type="html">&lt;p&gt;ErAck: Oracle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| [[Image:ErAck_128x128.png‎]]&lt;br /&gt;
|}&lt;br /&gt;
* Name: Eike Rathke&lt;br /&gt;
* Nick: erAck&lt;br /&gt;
* OOo: er&lt;br /&gt;
* Working on:&lt;br /&gt;
** [[Calc]] spreadsheet application compiler, interpreter, engine&lt;br /&gt;
** number formatter&lt;br /&gt;
** [[I18npool|internationalization (i18n)]] and locale data, &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; localization (l10n)&lt;br /&gt;
*** .signature: number formatter stricken i18n transpositionizer&lt;br /&gt;
* IRC: irc://irc.freenode.net/#dev.openoffice.org&lt;br /&gt;
* Email Calc developers: [mailto:dev@sc.openoffice.org dev@sc.openoffice.org] mailing list&lt;br /&gt;
* Email personal: [mailto:er@openoffice.org er@openoffice.org], [mailto:eike.rathke@oracle.com eike.rathke@oracle.com]&lt;br /&gt;
* Private URL: http://www.erack.de/&lt;br /&gt;
* μBlog: http://identi.ca/erack&lt;br /&gt;
* Blog: http://jroller.com/erAck&lt;br /&gt;
* GullFOSS: http://blogs.sun.com/GullFOSS&lt;br /&gt;
* Company Name: Oracle Deutschland B.V. &amp;amp; Co. KG&lt;br /&gt;
* Company URL: http://www.oracle.com/us/products/applications/open-office/index.html&lt;br /&gt;
* Location: Hamburg, Germany&lt;br /&gt;
* Timezone: UTC+1 with DST rule TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== currently working on ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula OASIS OpenDocument file format formula specification], ODFF aka OpenFormula.&lt;br /&gt;
* mentorship for implementors, review of patches and integration.&lt;br /&gt;
* Bits of formula compiler and interpreter changes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Calc/ODFF_Implementation/Schedule | ODFF implementation]], changes to formula parser/compiler and interpreter in Calc.&lt;br /&gt;
* [[Calc/InProgress/Performance| Calc performance improvements]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work flow ==&lt;br /&gt;
&lt;br /&gt;
My personal [[/WorkFlow| work flow and environment]] when working on code.&lt;br /&gt;
&lt;br /&gt;
== Wiki stuff ==&lt;br /&gt;
&lt;br /&gt;
Edit help: [[:Category:Help]]&lt;br /&gt;
&lt;br /&gt;
=== Code syntax highlighting ===&lt;br /&gt;
&lt;br /&gt;
Code syntax highlighting is possible with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;$LANGUAGE&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;#039;&amp;#039;$LANGUAGE&amp;#039;&amp;#039; is one of this list that was dynamically generated using &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;invalid&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; the old SwinBrain CodeSyntaxHighlight does not work anymore since the wiki upgrade on 2008-02-14&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[language]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
produces rubbish now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/Dashboard/Wiki Editing Policy]] and [[Special:Mostlinkedtemplates]] and [[:Category:Wiki_Templates_Expressing_Quality]] and [[:Category:Formatting_templates]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Caution| Do or don&amp;#039;t.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Caution| Do or don&amp;#039;t.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Note| Note that.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Note| Note that.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Template:Documentation/Tip| Tip.}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Template:Documentation/Tip| Tip.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Documentation/Outdated}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
{{Documentation/Outdated}}&lt;br /&gt;
&lt;br /&gt;
{{LinkBanner}}&lt;br /&gt;
&lt;br /&gt;
=== new topic ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Oracle_Contributor_Agreement&amp;diff=174255</id>
		<title>Oracle Contributor Agreement</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Oracle_Contributor_Agreement&amp;diff=174255"/>
		<updated>2010-07-06T16:25:35Z</updated>

		<summary type="html">&lt;p&gt;ErAck: fax is dead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submit a signed and filled-out copy of the [http://www.openoffice.org/licenses/sca.pdf Sun Microsystems Inc. Contributor Agreement (SCA)]. It is a pdf and you must print it out and scan a signed original and email to Copyrightfax@sun.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We explain our reasons for requiring the SCA in the [http://www.openoffice.org/FAQs/faq-licensing.html#usinglicenses Licensing FAQ]. The FAQ further explain the use and advantages of our copyright policy. &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org maintains a [http://www.openoffice.org/copyright/copyrightapproved.html list of persons and companies] who have filed a copyright assignment. If you have filed an Agreement or prior form and your name is not on the list, please [mailto:webmasters@openoffice.org contact us]; additionally you may also add an entry to the [[Pending SCAs]] section to track the enquiry.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also:&amp;#039;&amp;#039;&amp;#039; [http://contributing.openoffice.org/programming.html#sca Contributing: How to submit code to OpenOffice.org]&lt;br /&gt;
&lt;br /&gt;
[[Category:Policy]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Calc/hacks/number_of_rows&amp;diff=174227</id>
		<title>Calc/hacks/number of rows</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Calc/hacks/number_of_rows&amp;diff=174227"/>
		<updated>2010-07-06T14:41:38Z</updated>

		<summary type="html">&lt;p&gt;ErAck: Available as of m84&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/Note| As of DEV300_m84 the number of rows was increased to 1048576 (1M).}}&lt;br /&gt;
&lt;br /&gt;
Regard this article as historical, though the content is still applicable to columns or in case you want to increase the number of rows to 2097152 (2M ;-)&lt;br /&gt;
&lt;br /&gt;
Now and then people ask whether increasing the row limit above 64k lines or the column limit above 256 columns for OpenOffice.org version 2.4 or [http://www.oooninja.com/2008/03/openofficeorg-30-new-features.html 1024 columns for 3.0] would be possible.&lt;br /&gt;
&lt;br /&gt;
Well, it depends on your goal. For personal use, you may set &amp;lt;code&amp;gt;MAXROWCOUNT_DEFINE&amp;lt;/code&amp;gt; in &amp;lt;tt&amp;gt;sc/inc/address.hxx&amp;lt;/tt&amp;gt; to&lt;br /&gt;
a different value, multiple of 128, then recompile the application respectively the &amp;lt;tt&amp;gt;libsc680*.so&amp;lt;/tt&amp;gt; and shove it under your existing installation. However, doing so implies that you don&amp;#039;t save to any binary file format like Excel or whatsoever, otherwise you risk loss of data. You&amp;#039;ll also encounter drawing layer misfits in higher row numbers, may experience performance problems, and there maybe other quirks. It generally works for data and formulas, but otherwise is completely untested.&lt;br /&gt;
&lt;br /&gt;
For the  number of columns, the same applies to the &amp;lt;code&amp;gt;MAXCOLCOUNT_DEFINE&amp;lt;/code&amp;gt; in &amp;lt;tt&amp;gt;sc/inc/address.hxx&amp;lt;/tt&amp;gt;, except that the value must be a multiple of 16 instead.&lt;br /&gt;
&lt;br /&gt;
A successful proof of concept was done by Laurent Godard, using 2,000,000 rows and 32,000 columns, resulting in the lower right corner cell address &amp;#039;&amp;#039;&amp;#039;AUHT2000000&amp;#039;&amp;#039;&amp;#039; ... see http://blogs.nuxeo.com/dev/2006/08/the-spreadsheet-next.html&lt;br /&gt;
&lt;br /&gt;
Please note again that this is a &amp;#039;&amp;#039;hack&amp;#039;&amp;#039;. Although it may serve you for some data crunching, exchanging documents with other releases or applications will not work.&lt;br /&gt;
&lt;br /&gt;
However, we should implement this expansion properly, also to be able to handle larger spreadsheet documents created with other applications. There are RFEs for this, http://qa.openoffice.org/issues/show_bug.cgi?id=30215 for number of rows and http://qa.openoffice.org/issues/show_bug.cgi?id=86049 for number of columns.&lt;br /&gt;
&lt;br /&gt;
[[Category:Calc|Hack]]&lt;br /&gt;
[[Category:Hack]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Calc/Drafts/Issue_33851&amp;diff=174224</id>
		<title>Calc/Drafts/Issue 33851</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Calc/Drafts/Issue_33851&amp;diff=174224"/>
		<updated>2010-07-06T14:22:09Z</updated>

		<summary type="html">&lt;p&gt;ErAck: Category:Done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before 2008-03 this used to be a &amp;#039;&amp;#039;&amp;#039;specification draft&amp;#039;&amp;#039;&amp;#039; for [http://www.openoffice.org/issues/show_bug.cgi?id=33851 issue 33851], which is about how filtered rows should be treated during cut/copy/paste/fill cells operations, and due to its length and controversial discussion is unlikely to be read and understood, so presenting the outcome in a wiki page and editing that instead is much more appropriate. Please bear in mind that this page is geared towards developing a &amp;#039;&amp;#039;&amp;#039;specification&amp;#039;&amp;#039;&amp;#039; (see also [[:Category:Specification]]), don&amp;#039;t discuss here, use the Talk page (&amp;#039;&amp;#039;&amp;#039;discussion&amp;#039;&amp;#039;&amp;#039; link above) instead, or even better chime in to [http://ux.openoffice.org/servlets/BrowseList?list=discuss&amp;amp;by=thread&amp;amp;from=1971545 the thread on the discuss@ux mailing list]. Thanks.&lt;br /&gt;
&lt;br /&gt;
With fixing the most critical issues of not overwriting data in {{CWS|filteredrows}} as discussed in the UX thread mentioned, behavior changed. For details please see the [http://sc.openoffice.org/servlets/ReadMsg?list=features&amp;amp;msgNo=265 announcement mail]. Sections in this page are marked with &amp;#039;&amp;#039;&amp;#039;CWS filteredrows&amp;#039;&amp;#039;&amp;#039; to line out the changes.&lt;br /&gt;
&lt;br /&gt;
Due to time restrictions there is no implementation for cases where a fill operation starts on a single cell with no selection crossing filtered rows. These need still to be implemented and we have {{bug|89232}} for this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General overview ==&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s consensus that operations modifying the document&amp;#039;s content should not modify content of rows that are not displayed due to an applied filter setting. Some simply argue &amp;#039;&amp;#039;do it like Excel&amp;#039;&amp;#039;, however, that&amp;#039;s not what Excel does, see single topics below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copy cells ==&lt;br /&gt;
&lt;br /&gt;
This sounds easy: just copy the cells that are visible (not filtered out).&lt;br /&gt;
&lt;br /&gt;
Note that the current Calc implementation does not allow a multi-selection to be copied to the clipboard. It reached consensus that the current Calc behavior, to treat the visible rows as one area, is sufficient.&lt;br /&gt;
&lt;br /&gt;
* For what to do during paste if the cells contain formulas with relative references see below under [[#Paste cells]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; As an implementation detail always the entire selection is copied to the internal clipboard, differentiation is done during paste or when creating the transfer object for other applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cut cells ==&lt;br /&gt;
&lt;br /&gt;
Sounds the same as &amp;#039;&amp;#039;copy cells&amp;#039;&amp;#039;, just cut the cells that are visible. Though the paste case may be easier, probably the references should be adjusted the same way as usual in a cut/paste scenario.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; Excel 2003 in this case cuts &amp;#039;&amp;#039;&amp;#039;all&amp;#039;&amp;#039;&amp;#039; cells, including filtered. &amp;#039;&amp;#039;Do it like Excel&amp;#039;&amp;#039; probably does not apply here.&lt;br /&gt;
&lt;br /&gt;
Note that current Calc implementation does not allow a multi-selection to be copied to the clipboard.&lt;br /&gt;
&lt;br /&gt;
* For what to do during paste if the cells contain formulas with relative references see below under [[#Paste cells]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Please note, that &amp;#039;&amp;#039;&amp;#039;cut&amp;#039;&amp;#039;&amp;#039; could break formulas inside the &amp;#039;&amp;#039;&amp;#039;hidden cells&amp;#039;&amp;#039;&amp;#039;, so cutting only the visible portion is quite dangerous. I have added additional comments on this issue in the section on [[#Paste_cut_cells|&amp;#039;&amp;#039;Paste Cut Cells&amp;#039;&amp;#039;]] (also note, that this comment applies only to &amp;#039;&amp;#039;Cut&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; to &amp;#039;&amp;#039;Copy&amp;#039;&amp;#039;) - [[User:Discoleo|Discoleo]] 20:16, 16 January 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Cut is disabled if the selection crosses filtered rows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Paste cells ==&lt;br /&gt;
&lt;br /&gt;
Do not touch rows that are filtered-out.&lt;br /&gt;
&lt;br /&gt;
* How to handle the case when the area in clipboard is larger than a selected area to be pasted to?&lt;br /&gt;
** Excel 2003 ignores the selection.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Asks for confirmation before using the enlarged area.&lt;br /&gt;
* How to handle the case when the selected area is larger than the area in clipboard?&lt;br /&gt;
** Excel 2003 ignores the selection except if a multiple of the columns of the clipboard content is selected.&lt;br /&gt;
*** I think we should ignore the selection, EXCEPT if pasting single cell, in which case we should respect the selection. --[[User:Kpalagin|Kpalagin]] 17:59, 14 January 2007 (CET)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Same as in an unfiltered selection the clipboard content is repeated until the selection is filled.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; Excel 2003 pastes also to filtered rows. &amp;#039;&amp;#039;Do it like Excel&amp;#039;&amp;#039; probably does not apply here.&lt;br /&gt;
** Agreed here.--[[User:Kpalagin|Kpalagin]] 17:59, 14 January 2007 (CET)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Does not paste to filtered rows. The clipboard content is distributed over the visible rows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Paste copied cells ===&lt;br /&gt;
&lt;br /&gt;
It reached consensus that the current Calc behavior, to treat the visible rows as one area and thus paste as one area, is sufficient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Paste copied cells with formulas ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;NOTE:&amp;#039;&amp;#039;&amp;#039; Excel 2003 does not paste the formulas if the cells were copied from a filtered range, only the values are pasted. &amp;#039;&amp;#039;Do it like Excel&amp;#039;&amp;#039; probably does not apply here.&lt;br /&gt;
** I think we should &amp;#039;&amp;#039;Do it like Excel&amp;#039;&amp;#039;. We can have 3 cases:&lt;br /&gt;
**# Identical formulas in selected cells, in which case it is sufficient to copy just one cell.&lt;br /&gt;
**# Formulas are different, in which case trying to guess user&amp;#039;s intention is fruitless.&lt;br /&gt;
**# Single cell is copied. This should be allowed regardless of filtering. --[[User:Kpalagin|Kpalagin]] 17:59, 14 January 2007 (CET)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Pastes the formulas as usual. Pasting values only can always be achieved by using Paste Special.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Paste copied cells with formulas containing cell references =====&lt;br /&gt;
Adjust formulas, as usual in copy/paste.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; References are adapted for each slice of visible rows as if it was pasted individually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Paste copied formula cells to filtered rows =====&lt;br /&gt;
Do not touch hidden cells. --[[User:Kpalagin|Kpalagin]] 17:59, 14 January 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Filtered rows are not touched.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Paste copied formula cells to visible cells=====&lt;br /&gt;
Adjust references.--[[User:Kpalagin|Kpalagin]] 17:59, 14 January 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; References are adapted for each slice of visible rows as if it was pasted individually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Paste cut cells ===&lt;br /&gt;
&lt;br /&gt;
Because the &amp;#039;&amp;#039;&amp;#039;Cut&amp;#039;&amp;#039;&amp;#039; could/would break formulas in &amp;#039;&amp;#039;hidden cells&amp;#039;&amp;#039;&lt;br /&gt;
* =&amp;gt; cutting both &amp;#039;&amp;#039;&amp;#039;hidden and non-hidden&amp;#039;&amp;#039;&amp;#039; seems an option&lt;br /&gt;
* =&amp;gt; alternative: provide user with the option to select between the 2 possibilities&lt;br /&gt;
Let&amp;#039;s ask user.&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
* this is a problem specific for &amp;#039;&amp;#039;&amp;#039;CUT&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* it does NOT apply for &amp;#039;&amp;#039;&amp;#039;Copy&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Copy&amp;#039;&amp;#039;&amp;#039; does NOT break hidden cells&lt;br /&gt;
** therefore this comment applies soley to &amp;#039;&amp;#039;&amp;#039;Cut&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- [[User:Discoleo|Discoleo]] 01:09, 12 January 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
NOTE: this section is about &amp;#039;&amp;#039;pasting&amp;#039;&amp;#039; cells that were cut, the comment belongs to [[#Cut cells]] instead.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; In general the handling is identical to pasting copied cells, with the exception that references are adapted as usual in cut/paste of course instead of copy/paste.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Paste cut cells with formulas ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Paste cut cells with formulas containing cell references =====&lt;br /&gt;
&lt;br /&gt;
Adjust references as usual in a cut/paste scenario.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Does it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Paste cut formula cells to filtered rows =====&lt;br /&gt;
Do not touch hidden cells. --[[User:Kpalagin|Kpalagin]] 17:59, 14 January 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Filtered rows are not touched.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Paste cut formula cells to visible cells=====&lt;br /&gt;
Adjust formulas, as usual in cut/paste.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; Does it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fill cells ==&lt;br /&gt;
&lt;br /&gt;
Fill only non-filtered (visible) rows.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; If a selection crosses filtered rows, Fill operations are disabled. Starting from a single row and dragging the corner currently does not take filtered rows into account. This needs to be implemented later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fill cells with formulas containing cell references ===&lt;br /&gt;
&lt;br /&gt;
* How to adapt relative cell references?&lt;br /&gt;
** Treat as if the visible area was a contiguous area? Probably the best.&lt;br /&gt;
*** The same as if one single cell was copied to the clipboard and then pasted to several locations, leaving out the hidden rows. Most logical. And is also what Excel 2003 does.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fill series ==&lt;br /&gt;
&lt;br /&gt;
# Fill continuously in the non-filtered (visible) rows?&lt;br /&gt;
# Or fill with gaps, leaving out the values that would go into the filtered rows?&lt;br /&gt;
# Or do nothing? &lt;br /&gt;
#* Excel 2003 disables Fill Series on filtered ranges.&lt;br /&gt;
#* Probably the best, fill series on a filtered range doesn&amp;#039;t make much sense anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CWS filteredrows:&amp;#039;&amp;#039;&amp;#039; If a selection crosses filtered rows, Fill operations are disabled. Starting from a single row and dragging the corner currently does not take filtered rows into account. This needs to be implemented later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scenario 1 ===&lt;br /&gt;
If you want to get some serial numbering for visible data after filtering, &amp;#039;&amp;#039;Fill Series&amp;#039;&amp;#039; would be a good function to do that, if rows what have been filtered out will be ignored. &lt;br /&gt;
* Current behaviour: &amp;#039;&amp;#039;Fill Series&amp;#039;&amp;#039; will also fill invisible rows&lt;br /&gt;
* Desired behaviour: &amp;#039;&amp;#039;Fill Series&amp;#039;&amp;#039; should be available, but only touch visible cells.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Calc|Drafts/Issue 33851]]&lt;br /&gt;
[[Category:Draft]]&lt;br /&gt;
[[Category:Done]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Engineering_and_SI_Number_Format_in_Calc&amp;diff=174214</id>
		<title>Engineering and SI Number Format in Calc</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Engineering_and_SI_Number_Format_in_Calc&amp;diff=174214"/>
		<updated>2010-07-06T13:01:30Z</updated>

		<summary type="html">&lt;p&gt;ErAck: added file formats placeholders&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{User Experience Community}}=Explanation of Notations=&lt;br /&gt;
The following is a short description of all the number formats to be discussed here.&lt;br /&gt;
==Engineering Notation==&lt;br /&gt;
This type of notation is an offshoot of Scientific Notation. The difference is that the exponent is only shown in multiples of 3. Thus a number such as 153,100 becomes 153.1E+3 in Engineering notation[[http://en.wikipedia.org/wiki/Engineering_notation]] instead of 1.531E+5 in scientific.&lt;br /&gt;
==SI Notation==&lt;br /&gt;
This is what&amp;#039;s known as SI Prefix[[http://en.wikipedia.org/wiki/SI_prefix]] notation. Similar to Engineering Notation the exponent also runs in multiples of 3 (usually), but the difference is that instead of showing the E+/- notation a symbol is given for each exponent. E.g. 153,100 in SI notation would be 153.1k.&lt;br /&gt;
==Binary Prefix Notation==&lt;br /&gt;
This is very similar to SI, but is intended for use when referring to sizes of data storage. Binary Prefix[[http://en.wikipedia.org/wiki/Binary_prefix]] Notation works in much a similar way, but is not calculated using 10 as a multiple (as with Scientific). Rather the closest matching power of 2 is used. Thus instead of 1000 we get 1024. As a convention similar symbols to SI is used, but with an &amp;quot;i&amp;quot; suffix to distinguish then. E.g. 153,100 in Binary Prefix Notation would become 149.51Ki.&lt;br /&gt;
=Examples from other software=&lt;br /&gt;
Example of how other software handle these formats.&lt;br /&gt;
==Engineering Notation in Microsoft Excel 2003==&lt;br /&gt;
[[File:Excel2003_custom_notation.png]]&lt;br /&gt;
=Format Strings=&lt;br /&gt;
Each number format requires a format string to indicate not just what type of format to use, but also details as per how many decimals to display. In all numeric notations the format string could indicate how many digits to display for the fraction portion of the number. E.g. 0.00+E0 would force a 2 decimal fraction if needed or not.&lt;br /&gt;
==Engineering Notation==&lt;br /&gt;
The Excel format string for engineering notation is similar to the scientific notation, except that it starts with 3 hashes (#). See the sample above. The current scientific notation in both Excel and OOo Calc is the same except for this point. Both use E+ to indicate exponent notation. The digit(s) after this indicate how many digits to use for the exponent. E.g. 0.0+E000 would force 3 digits for the exponent, if not needed it becomes padded with zeros. A further use of the Excel format string is that not only normal engineering notation is possible, but also notation in other multiples. E.g. ####E+0 would format 153,100 as 15.310E+4.&lt;br /&gt;
&lt;br /&gt;
An alternative mentioned would be to substitute F for E instead. In this case ###.000E+00 would be equivalent to 0.000F+0.&lt;br /&gt;
==SI Notation==&lt;br /&gt;
There is (yet) no sample format string for this. Therefore we need to decide on one. A proposed idea would be to use a S to force SI notation. E.g. 0.00S. There&amp;#039;s has one problem as the s is also used to denote seconds when formatting numbers as time units. So a different character should be used. Thus not one of the following already used: A, D, E, H, I, M, P, S, Y. A suggestion would be T stemming from the 1st non-used letter in the word meTric.&lt;br /&gt;
==Binary Prefix Notation==&lt;br /&gt;
Simple really, use B as for SI. It&amp;#039;s not used in any other normal format.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO:&amp;#039;&amp;#039;&amp;#039; how to persistently store the feature in various file formats.&lt;br /&gt;
== ODF ==&lt;br /&gt;
== OOXML ==&lt;br /&gt;
== .xls and .doc binary formats ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Calc]]&lt;br /&gt;
[[Category:To-Do]]&lt;br /&gt;
[[Category:Feature]]&lt;br /&gt;
[[Category:Draft]]&lt;/div&gt;</summary>
		<author><name>ErAck</name></author>
	</entry>
</feed>