On 01.03.2010 16:59, Mart Frauenlob wrote:
> On 01.03.2010 12:06, Mart Frauenlob wrote:
>> On 28.02.2010 09:29, Mart Frauenlob wrote:
> 
>>> after I upgraded from etch to lenny a few days ago (new config files
>>> have been installed for vim), I noticed that syntax highlighting for my
>>> bash scripts is not working as before.
>>>
>>> There are some things i've noticed, where of the first is worse to me.
>>>
>>> 1: If I put the following statement onto a single line, it does not
>>> cause problems:
>>> RESULT_ARR[IDX++]="[$((m_count++))]=\"${str_attr_name}[$((opt_idx++))]=\\\"${tmp_content}\\\"\""
>>>
>>> But as soon as i put it into a for loop:
>>>
>>> for tmp_content in ${str_attr_val}; do
>>>
>>> RESULT_ARR[IDX++]="[$((m_count++))]=\"${str_attr_name}[$((opt_idx++))]=\\\"${tmp_content}\\\"\""
>>> done
>>>
>>> Everything from the 'done' word is marked with as syntax error, making
>>> the whole file unreadable (could turn of syntax highlighting).
>>>
>>>
>>> 2:
>>> if [[ $1 = +([[:digit:]]) ]]; then
>>>     ...
>>> fi
>>>
>>> is good, but with:
>>>
>>> case "$1" in
>>>     +([[:digit:]])) :
>>>     ;;
>>> esac
>>>
>>> the last 2 `]]' are shown in red background (syntax error).
>>>
>>> 3: This one causes everything after the `'' (single quote) to be
>>> rendered as error:
>>> [[ $x = *\'* ]] && ...
>>>
>>>
>>> this is my .vimrc:
>>>
>>> set ts=4
>>> set sw=4
>>> let g:is_bash= 1
>>> let sh_minlines= 500
>>>
>>> Any ideas how I could get that fixed?
>>> Many of my scripts are garbled now. they are more readable without
>>> syntax highlighting.
> 
>>
>> I've tried to look up this problem with vim syntax highlighting a bit more.
>> It seems to me that escaping (single|double quotes?) in any loop
>> statement does not work.
>> So I've to correct my first report, those escaping problems lead to the
>> result, that all following code is formatted as it was inside quotes
>> (not rendered as error, like the [[:digit:]] string).
>>
>> So this one:
>> for tmp_content in ${str_attr_val}; do
>>
>> RESULT_ARR[IDX++]="[$((m_count++))]=\"${str_attr_name}[$((opt_idx++))]=\\\"${tmp_content}\\\"\""
>> done
>> needs a `"' (double quote) added, to become valid for vim (while
>> becoming invalid in case of shell syntax).
>> Same thing inside an if statement:
>> if true; then
>>
>> RESULT_ARR[IDX++]="[$((m_count++))]=\"${str_attr_name}[$((opt_idx++))]=\\\"${tmp_content}\\\"\""
>> fi
>> while inside a case statement it remains rendered valid.
>>
>> And this one:
>> [[ $x = *\'* ]] &&
>> needs `' ]]' to become valid for vim.
>>
>> I guess that could be fixed by modifying
>> /usr/share/vim/vim71/syntax/sh.vim - but I'm lost on how to.
>> It all worked out of the box on sarge and etch.
>> Most of the work I do on linux is write bash scripts with vim. This is
>> now messed up since the upgrade to lenny.
>> Any hints? Please anyone?
> 
> 
> Trimming it down more:
> var[0]="\"foo bar\"" is valid on a line for itself.
> 
> But:
> if true; then
>     echo "\"foo\""
>     var="\"foo bar\""
>     var[0]="\"foo bar\""
> fi
> 
> the 'echo' and the 'var=' escape well, but the 'var[0]=' array member
> assignment fails.

Hello,

though I'm mainly talking to myself here, I got some updates.
I manually compiled/installed the vim versions 6.4, 7.0, 7.1 and 7.2.
Running version 6.4 and 7.0 with a slightly modified vimrc from the etch
version (vimrc.dpkg-old) (leaving out some debian specific things), I
get back the bash script syntax highlighting I was used to in sarge and
etch.
However vim versions 7.1 and 7.2 seem to have changed. I get different
results with both. I don't know if this is caused by the sh.vim or the
actual vim code, but however it does not seem to be a debian specific
problem, as far as I can tell.
Guess I need to find the time to talk to the people in the vim mailing list.

Good day

Mart


-- 
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org 
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4b8d5790.6070...@chello.at

Reply via email to