Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

vim php indentation

Posted on 2004-04-28
7
Medium Priority
?
1,181 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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 1200 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

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

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

Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
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 dynamically set the form action using jQuery.
Suggested Courses

877 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