Re: [Python-Dev] PEP 7 updated

2010-05-13 Thread Brett Cannon
Feel free to look at Misc/Vim/python.vim and see if this works better
than what is already there.

On Wed, May 12, 2010 at 20:47, Trent Nelson tr...@snakebite.org wrote:

 Does anyone know of a way to teach vim that C sources in a python checkout
 should have 4-space indents without changing the defaults for other C files?

 I use this in my vimrc:

 
  indentation: use detectindent plugin if possible
 
 set autoindent
 set smartindent
 try
    let g:detectindent_preferred_expandtab = 1
    let g:detectindent_preferred_tabsize = 8
    let g:detectindent_preferred_indent = 4

    source $VIMRUNTIME/plugin/detectindent.vim
    au BufNewFile,BufRead * .* DetectIndent
 catch
    set smarttab
    set expandtab
    set tabstop=8
    set shiftwidth=4
    set softtabstop=4
    set textwidth=80
 endtry

 *** And this is plugin/detectindent.vim:

  Name:          detectindent (global plugin)
  Version:       1.0
  Author:        Ciaran McCreesh ciaranm at gentoo.org
  Updates:       http://dev.gentoo.org/~ciaranm/vim/
  Purpose:       Detect file indent settings
 
  License:       You may redistribute this plugin under the same terms as
 Vim
                 itself.
 
  Usage:         :DetectIndent
 
                  to prefer expandtab to noexpandtab when detection is
                  impossible:
                 :let g:detectindent_preferred_expandtab = 1
 
                  to set a preferred indent level when detection is
                  impossible:
                 :let g:detectindent_preferred_indent = 4
 
  Requirements:  Untested on Vim versions below 6.2

 fun! SIDIsCommentStart(line)
     comments isn't reliable
    if ft == c || ft == cpp
        return -1 != match(a:line, '/\*')
    else
        return 0
    endif
 endfun

 fun! SIDIsCommentEnd(line)
    if ft == c || ft == cpp
        return -1 != match(a:line, '\*/')
    else
        return 0
    endif
 endfun

 fun! SIDDetectIndent()
    let l:has_leading_tabs            = 0
    let l:has_leading_spaces          = 0
    let l:shortest_leading_spaces_run = 0
    let l:longest_leading_spaces_run  = 0

    let l:idx_end = line($)
    let l:idx = 1
    while l:idx = l:idx_end
        let l:line = getline(l:idx)

         try to skip over comment blocks, they can give really screwy indent
         settings in c/c++ files especially
        if SIDIsCommentStart(l:line)
            while l:idx = l:idx_end  ! SIDIsCommentEnd(l:line)
                let l:line = getline(l:idx)
                let l:idx = l:idx + 1
            endwhile
            let l:idx = l:idx + 1
            continue
        endif

        let l:leading_char = strpart(l:line, 0, 1)

        if l:leading_char == \t
            let l:has_leading_tabs = 1

        elseif l:leading_char ==  
             only interested if we don't have a run of spaces followed by a
             tab.
            if -1 == match(l:line, '^ \+\t')
                let l:has_leading_spaces = 1
                let l:spaces = strlen(matchstr(l:line, '^ \+'))
                if l:shortest_leading_spaces_run == 0 ||
                            \ l:spaces  l:shortest_leading_spaces_run
                    let l:shortest_leading_spaces_run = l:spaces
                endif
                if l:spaces  l:longest_leading_spaces_run
                    let l:longest_leading_spaces_run = l:spaces
                endif
            endif

        endif

        let l:idx = l:idx + 1
    endwhile

    if l:has_leading_tabs  ! l:has_leading_spaces
         tabs only, no spaces
        set noexpandtab
        if exists(g:detectindent_preferred_tabsize)
            let shiftwidth  = g:detectindent_preferred_indent
            let tabstop     = g:detectindent_preferred_indent
        endif

    elseif l:has_leading_spaces  ! l:has_leading_tabs
         spaces only, no tabs
        set expandtab
        let shiftwidth  = l:shortest_leading_spaces_run

    elseif l:has_leading_spaces  l:has_leading_tabs
         spaces and tabs
        set noexpandtab
        let shiftwidth = l:shortest_leading_spaces_run

         , time to guess how big tabs are
        if l:longest_leading_spaces_run  2
            let tabstop = 2
        elseif l:longest_leading_spaces_run  4
            let tabstop = 4
        else
            let tabstop = 8
        endif

    else
         no spaces, no tabs
        if exists(g:detectindent_preferred_tabsize)
            let shiftwidth  = g:detectindent_preferred_indent
            let tabstop     = g:detectindent_preferred_indent
        endif
        if exists(g:detectindent_preferred_expandtab)
            set expandtab
        endif

    endif
 endfun

 command! -nargs=0 DetectIndent call SIDDetectIndent()

 ___
 Python-Dev mailing list
 Python-Dev@python.org
 

Re: [Python-Dev] PEP 7 updated

2010-05-12 Thread Trent Nelson



Does anyone know of a way to teach vim that C sources in a python checkout 
should have 4-space indents without changing the defaults for other C files?


I use this in my vimrc:


 indentation: use detectindent plugin if possible

set autoindent
set smartindent
try
let g:detectindent_preferred_expandtab = 1
let g:detectindent_preferred_tabsize = 8
let g:detectindent_preferred_indent = 4

source $VIMRUNTIME/plugin/detectindent.vim
au BufNewFile,BufRead * .* DetectIndent
catch
set smarttab
set expandtab
set tabstop=8
set shiftwidth=4
set softtabstop=4
set textwidth=80
endtry

*** And this is plugin/detectindent.vim:

 Name:  detectindent (global plugin)
 Version:   1.0
 Author:Ciaran McCreesh ciaranm at gentoo.org
 Updates:   http://dev.gentoo.org/~ciaranm/vim/
 Purpose:   Detect file indent settings

 License:   You may redistribute this plugin under the same terms 
as Vim

itself.

 Usage: :DetectIndent

 to prefer expandtab to noexpandtab when detection is
 impossible:
:let g:detectindent_preferred_expandtab = 1

 to set a preferred indent level when detection is
 impossible:
:let g:detectindent_preferred_indent = 4

 Requirements:  Untested on Vim versions below 6.2

fun! SIDIsCommentStart(line)
 comments isn't reliable
if ft == c || ft == cpp
return -1 != match(a:line, '/\*')
else
return 0
endif
endfun

fun! SIDIsCommentEnd(line)
if ft == c || ft == cpp
return -1 != match(a:line, '\*/')
else
return 0
endif
endfun

fun! SIDDetectIndent()
let l:has_leading_tabs= 0
let l:has_leading_spaces  = 0
let l:shortest_leading_spaces_run = 0
let l:longest_leading_spaces_run  = 0

let l:idx_end = line($)
let l:idx = 1
while l:idx = l:idx_end
let l:line = getline(l:idx)

 try to skip over comment blocks, they can give really screwy 
indent

 settings in c/c++ files especially
if SIDIsCommentStart(l:line)
while l:idx = l:idx_end  ! SIDIsCommentEnd(l:line)
let l:line = getline(l:idx)
let l:idx = l:idx + 1
endwhile
let l:idx = l:idx + 1
continue
endif

let l:leading_char = strpart(l:line, 0, 1)

if l:leading_char == \t
let l:has_leading_tabs = 1

elseif l:leading_char ==  
 only interested if we don't have a run of spaces followed 
by a

 tab.
if -1 == match(l:line, '^ \+\t')
let l:has_leading_spaces = 1
let l:spaces = strlen(matchstr(l:line, '^ \+'))
if l:shortest_leading_spaces_run == 0 ||
\ l:spaces  l:shortest_leading_spaces_run
let l:shortest_leading_spaces_run = l:spaces
endif
if l:spaces  l:longest_leading_spaces_run
let l:longest_leading_spaces_run = l:spaces
endif
endif

endif

let l:idx = l:idx + 1
endwhile

if l:has_leading_tabs  ! l:has_leading_spaces
 tabs only, no spaces
set noexpandtab
if exists(g:detectindent_preferred_tabsize)
let shiftwidth  = g:detectindent_preferred_indent
let tabstop = g:detectindent_preferred_indent
endif

elseif l:has_leading_spaces  ! l:has_leading_tabs
 spaces only, no tabs
set expandtab
let shiftwidth  = l:shortest_leading_spaces_run

elseif l:has_leading_spaces  l:has_leading_tabs
 spaces and tabs
set noexpandtab
let shiftwidth = l:shortest_leading_spaces_run

 , time to guess how big tabs are
if l:longest_leading_spaces_run  2
let tabstop = 2
elseif l:longest_leading_spaces_run  4
let tabstop = 4
else
let tabstop = 8
endif

else
 no spaces, no tabs
if exists(g:detectindent_preferred_tabsize)
let shiftwidth  = g:detectindent_preferred_indent
let tabstop = g:detectindent_preferred_indent
endif
if exists(g:detectindent_preferred_expandtab)
set expandtab
endif

endif
endfun

command! -nargs=0 DetectIndent call SIDDetectIndent()

___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] PEP 7 updated

2010-05-11 Thread Sridhar Ratnakumar
Nor did it break any of our ActivePython 2.7 (Python trunk) builds ... though I 
had to hand-edit the patches to use 4 spaces now. Will this untabification 
change be made to the `release2.6-maint` branch too?

-srid

On 2010-05-09, at 11:33 AM, Antoine Pitrou wrote:

 
 Hello,
 
 The untabification of C files didn't produce any noticeable problem on
 the buildbots.  I've updated PEP 7 with the mention that all C files
 should be 4-space indented, and removed the obsolete wording about
 some files being indented with tabs.
 
 Regards
 
 Antoine.
 
 
 ___
 Python-Dev mailing list
 Python-Dev@python.org
 http://mail.python.org/mailman/listinfo/python-dev
 Unsubscribe: 
 http://mail.python.org/mailman/options/python-dev/sridharr%40activestate.com

___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] PEP 7 updated

2010-05-11 Thread Antoine Pitrou
Le mardi 11 mai 2010 à 16:44 -0700, Sridhar Ratnakumar a écrit :
 Nor did it break any of our ActivePython 2.7 (Python trunk) builds ...
 though I had to hand-edit the patches to use 4 spaces now. Will this
 untabification change be made to the `release2.6-maint` branch too?

It has already been made to the 2.6 branch.
By the way, you don't have to untabify patches by hand, you can just use
untabify.py -p.

Regards

Antoine.


___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] PEP 7 updated

2010-05-10 Thread Ronald Oussoren

On 9 May, 2010, at 20:33, Antoine Pitrou wrote:

 
 Hello,
 
 The untabification of C files didn't produce any noticeable problem on
 the buildbots.  I've updated PEP 7 with the mention that all C files
 should be 4-space indented, and removed the obsolete wording about
 some files being indented with tabs.

Does anyone know of a way to teach vim that C sources in a python checkout 
should have 4-space indents without changing the defaults for other C files? 

Ronald



smime.p7s
Description: S/MIME cryptographic signature
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] PEP 7 updated

2010-05-10 Thread David Borowitz
On Mon, May 10, 2010 at 07:09, Ronald Oussoren ronaldousso...@mac.comwrote:


 On 9 May, 2010, at 20:33, Antoine Pitrou wrote:

 
  Hello,
 
  The untabification of C files didn't produce any noticeable problem on
  the buildbots.  I've updated PEP 7 with the mention that all C files
  should be 4-space indented, and removed the obsolete wording about
  some files being indented with tabs.

 Does anyone know of a way to teach vim that C sources in a python checkout
 should have 4-space indents without changing the defaults for other C files?


:help autocmd-patterns has this example, which should be easy to adapt:

:autocmd BufRead /vim/src/*.c set cindent
Set the 'cindent' option for C files in the /vim/src directory.




  Ronald


 ___
 Python-Dev mailing list
 Python-Dev@python.org
 http://mail.python.org/mailman/listinfo/python-dev
 Unsubscribe:
 http://mail.python.org/mailman/options/python-dev/ddborowitz%40gmail.com




-- 
It is better to be quotable than to be honest.
   -Tom Stoppard

Borowitz
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] PEP 7 updated

2010-05-09 Thread Antoine Pitrou

Hello,

The untabification of C files didn't produce any noticeable problem on
the buildbots.  I've updated PEP 7 with the mention that all C files
should be 4-space indented, and removed the obsolete wording about
some files being indented with tabs.

Regards

Antoine.


___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com