On Wed, Jun 14, 2006 at 05:20:50PM +0800, Edward L. Fox wrote:
> Hi VIMmers,
> 
> According to the user manual ":h statusline", we should be able to
> evaluate a customized function to generate the statusline text:
> 
> -------------------- 8< --------------------
>    When the option starts with "%!" then it is used as an expression,
>    evaluated and the result is used as the option value.  Example:
>        :set statusline=%!MyStatusLine()
>     The result can contain %{} items that will be evaluated too.
> -------------------- 8< --------------------
> 
> But...
> 
> -------------------- 8< --------------------
> :function! MyStatusLine()
> :    return 'test'
> :endfunction
> :set statusline=%!MyStatusLine()
> -------------------- 8< --------------------
> 
> VIM complains:
> 
> E539: Illegal character <!>: statusline=%!MyStatusLine()
> 
> What seems to be the matter?
> 
> 
> Regards,
> 
> 
> Edward L. Fox


Looks like a bug to me.  The code to evaluate the "%!" is in
there but the option processing rejects the statusline with a
bang(!) in it.

This is probably not the best patch to the source, but it allows
the statusline string to make it through the option check:


--- src/option.h.00     2006-04-24 06:20:49.000000000 -0700
+++ src/option.h        2006-06-14 07:46:06.845082413 -0700
@@ -282,7 +282,7 @@
 #define STL_HIGHLIGHT  '#'             /* highlight name */
 #define STL_TABPAGENR  'T'             /* tab page label nr */
 #define STL_TABCLOSENR 'X'             /* tab page close nr */
-#define STL_ALL                ((char_u *) "fFtcvVlLknoObBrRhHmYyWwMpPaN{#")
+#define STL_ALL                ((char_u *) "fFtcvVlLknoObBrRhHmYyWwMpPaN{#!")
 
 /* flags used for parsed 'wildmode' */
 #define WIM_FULL       1



Alternatively, if your status line function is returning a string and
not another status line to be evaluated, you could use:

:set statusline=%{MyStatusLine()}


gm
-- 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Gregory H. Margo
gmargo at yahoo/com, gmail/com, pacbell/net; greg at margofamily/org

Reply via email to