Solved

vim php indentation

Posted on 2004-04-28
7
1,148 Views
Last Modified: 2006-11-17
This is admittedly a minor issue, but given how much time I spend using vim, I would very much appreciate an answer.

How can I set vim's indentation such that <?php and the corresponding ?> have the same indentation? Currently when I type ?> the indentation remains as great as the preceding line's indentation, rather than the indentation of <?php. I've tried cindent, autoindent, and even smartindent.

Example:
      <span id="StatusText">
      <hr />
      <?php
            echo "username: " . $username . "<hr />";
            echo "balance: " . $balance . " <hr />";
            ?>
            <br />
            <?php
                  echo "hello"
                   ?>


Thanks
0
Comment
Question by:bobwood2000
  • 3
  • 3
7 Comments
 
LVL 12

Expert Comment

by:Ivanov_G
ID: 10947685

set autoindent
set tabstop=3D8                   " Tabs are always 8 characters!!!
set softtabstop=3D4 shiftwidth=3D4  " default character indentation level
set expandtab                   " use spaces instead of tabs for indentation

set ruler           " show cursor postion
set esckeys         " allow cursor keys in insert mode
set showcmd         " Show (partial) command in status line.
"set hlsearch        " Highlight all matches of the last search pattern (so=
metimes annoying, good for code)
set showmatch       " show matching parens/brackets
set backspace=3D2     " allows for backspace beyond current insert session
set joinspaces      " insert 2 spaces after a period when joining lines
set fileformat=3Dunix " The Right Way(tm)
" Don't be noisy, don't flash the screen
set noerrorbells visualbell
" note : this only works for the console!  it is reset when gvim starts
set t_vb=3D
0
 

Author Comment

by:bobwood2000
ID: 10947957
I tried your vimrc file, but it doesn't seem to change anything. I did have to modify it a bit though (eg. changed 3D8 to 3), such that it would work with my version of vim (6.2.426).
0
 
LVL 10

Expert Comment

by:eeBlueShadow
ID: 10948012
I get annoyed with the same thing.

You might find it interesting that the short tags <? and ?> pair up correctly. In fact, the indent file for PHP (the rules about when to indent) say:

      " Indent after php open tags
      if line =~ '<?php'
            let ind = ind + &sw
      endif
      if cline =~ '\?\>' " Please fix this...
            let ind = ind - &sw
      endif

so even the original writer couldn't get it to work
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:bobwood2000
ID: 10948893
Interesting...what file did those regular expressions come from? And, why does "let ind = ind - &sw" cause the indent to change?

For me the short tags (e.g. <? and ?>) don't cause any change in indenting at all. However, I have to use the long tag (e.g. <?php) since otherwise it confuses the <?xml tag with <?php.
0
 
LVL 10

Accepted Solution

by:
eeBlueShadow earned 300 total points
ID: 10949334
OK, I have a solution.

I have Vim installed on Windows, and in the vim62 installation directory there is a folder called indent. In there is a file php.vim (you could just search for a file called php.vim)

Change the following lines:

setlocal indentkeys+=0=,0),=EO
to
setlocal indentkeys+=0=,0),=EO,<>>

      if cline =~ '\?\>' " Please fix this...
to
      if cline =~ '?>' " Fixed!

and it should work fine.

_Blue
0
 
LVL 10

Expert Comment

by:eeBlueShadow
ID: 10949460
The code is written in Vims own script language, type :help vim-script-intro for more info

_Blue
0
 

Author Comment

by:bobwood2000
ID: 10949536
Works wonderfully! Thanks!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
Author Note: Since this E-E article was originally written, years ago, formal testing has come into common use in the world of PHP.  PHPUnit (http://en.wikipedia.org/wiki/PHPUnit) and similar technologies have enjoyed wide adoption, making it possib…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now