> > > > I guess it's a simple thing but couldn't find a definite answer yet.
> > > > Is there a way to make commands such as
> > > >
> > > > syn off
> > > > set foldmethod=expr
> > > >
> > > > local in a sense that they should only effect the window in which
they
> > > > are issued?
> > >
> > > 1. Frist, 'set foldmethod=' is already local to window, so there's no
> > > problem.
> > >
> > > 2. 'syn off' is global, but if you, instead of 'syn off' do 'set
filetype='
> > > (set filetype to empty), which is window-local, you'll get equivalent
> > > result.
> > > Does this work for you ?
> >
> > Thanks for the reply, actually these 2 commands are just examples from
> > what I really would like to do. In more detail, I have a function:
> >
> > function! ReFold()
> >     syn off | syn on
> >     set foldmethod=expr
> >     set foldexpr=0
> >     syn region myFold start='{' end='}' transparent fold
> >     syntax sync fromstart
> >     set foldmethod=syntax
> >     echo
> > endfunction
> >
> > And whenever I call this function in a window it also effects the
> > other windows. So my real question (sorry if I should have explained
> > it better in the first email) is how to make the function ReFold act
> > locally.

The solution that I have in mind is this.
Let's say your language is abc (perl, c, cpp, etc). Let's denote is abc
for sake of this example.

1. Create file ~/.vim/after/synatx/abc-x.vim
2. Put this nito file abc-x.vim:

    if exists("b:current_syntax") | finish | endif
    runtime syntax/abc.vim
    set foldmethod=expr
    set foldexpr=0
    syn region myFold start='{' end='}' transparent fold
    syntax sync fromstart
    set foldmethod=syntax

3. In the window where you want to turn own ReFold, you do
    :set filetype=abc-x
To reset folsing & back:
    :set filetype=abc

I expect this shall do it.

Note that this solution will trigger your custom additions
in all windows where filetype if abc-x, but leave intact windows
with different filetypes.

Explanation:
The thing in your ReFold that scrambles syntax of other
windows is 'syn off|syn on'. You need to avoid 'syn off|syn on' on
one hand, and still preserve your local syntax-related commands.
My solution above tries to to do exactly this.


The language is C. And my problem is that I frequently have several
source files open (all C) and would like to avoid the scrambling in
this situation (I don't care so much about other file types as I only
have C source files).

Anyway, your suggestion is still useful, I'll try to avoid the 'syn
off| syn on' part and all the rest then should be okay (if I
understand you correctly, they are window-local anyway).

Reply via email to