par
Hywan » 02 nov. 2007, 15:59
Bien, comme mon poste a connu un nombre de réponses incalculables, je n'ose mettre la réponse

.
Enfin bref, j'ai fais un truc un peu bancale, qui ne marche pas à fond, mais c'est déjà une bonne piste.
Voici mon code :
Code : Tout sélectionner
if !exists("*s:WriteFunc")
function s:WriteFunc( )
" Select previous string.
let index = 0
while col(".")-index > 0 && strpart(getline("."), col(".")-index-1, 1) !~ '^\s$'
let index = index + 1
endwhile
let str = strpart(getline("."), col(".")-index, index)
" Built new string.
let index = stridx(str, '_')
let i = 0
let display = ""
let current = ""
let comment = "\<Tab>/**\n\n\n"
while index != -1 && strlen(str) > 0
let current = strpart(str, 0, index)
let str = strpart(str, index+1, strlen(str))
let index = stridx(str, '_')
" Access.
if i == 0
if current == 'pub'
let display = 'public '
elseif current == 'pro'
let display = 'protected '
elseif current == 'pri'
let display = 'private '
else
let display = 'public '
endif
let comment = comment . "@access " . display
" Fonction's name
elseif i == 1
let display = display . current . ' ( '
" Arguments
else
let display = display . '$' . current . ', '
let comment = comment . "\n@param " . current
endif
let i = i + 1
endwhile
if i > 1
let display = strpart(display, 0, strlen(display)-2)
endif
let display = display . ' ) {'
let comment = comment . "\n@return \n@throw \n"
execute "normal dd"
execute "normal i" . comment . "/\n\<ESC>$"
execute "normal i" . display . "\n\<ESC>$"
execute "normal \<RIGHT>\<RIGHT>\n"
startinsert!
endfunction
endif
inoremap <buffer> func <Esc>:call <SID>WriteFunc()<CR>
Son utilisation :
Code : Tout sélectionner
en mode insertion :
pub_maFonction_a_b_c_
puis func (ne sera pas affiché car abbr)
affichera :
/**
*
*
* @access public
* @param a
* @param b
* @param c
* @return
* @throw
*/
public maFonction ( $a, $b, $c ) {
|
}
où | représente l'emplacement du pointeur/curseur.
Voilà, c'est déjà un début, mais je ne suis pas encore satisfait à 100%, j'ai un petit soucis d'affichage dans certains cas.
Je ne sais pas si d'autres personnes utilisent vim sur ce forum, oui ? Ou sinon, dites moi quels sont les outils pratiques et rapides pour développer X langages sur Mac (on écarte Smultron, XCode et Eclipse merci). J'ai réussi à adapter SciTE sur Mac, mais il est vraiment trop moche :s.
Merci pour vos infos

.
Bien, comme mon poste a connu un nombre de réponses incalculables, je n'ose mettre la réponse ;-).
Enfin bref, j'ai fais un truc un peu bancale, qui ne marche pas à fond, mais c'est déjà une bonne piste.
Voici mon code :
[code]if !exists("*s:WriteFunc")
function s:WriteFunc( )
" Select previous string.
let index = 0
while col(".")-index > 0 && strpart(getline("."), col(".")-index-1, 1) !~ '^\s$'
let index = index + 1
endwhile
let str = strpart(getline("."), col(".")-index, index)
" Built new string.
let index = stridx(str, '_')
let i = 0
let display = ""
let current = ""
let comment = "\<Tab>/**\n\n\n"
while index != -1 && strlen(str) > 0
let current = strpart(str, 0, index)
let str = strpart(str, index+1, strlen(str))
let index = stridx(str, '_')
" Access.
if i == 0
if current == 'pub'
let display = 'public '
elseif current == 'pro'
let display = 'protected '
elseif current == 'pri'
let display = 'private '
else
let display = 'public '
endif
let comment = comment . "@access " . display
" Fonction's name
elseif i == 1
let display = display . current . ' ( '
" Arguments
else
let display = display . '$' . current . ', '
let comment = comment . "\n@param " . current
endif
let i = i + 1
endwhile
if i > 1
let display = strpart(display, 0, strlen(display)-2)
endif
let display = display . ' ) {'
let comment = comment . "\n@return \n@throw \n"
execute "normal dd"
execute "normal i" . comment . "/\n\<ESC>$"
execute "normal i" . display . "\n\<ESC>$"
execute "normal \<RIGHT>\<RIGHT>\n"
startinsert!
endfunction
endif
inoremap <buffer> func <Esc>:call <SID>WriteFunc()<CR>[/code]
Son utilisation :
[code]en mode insertion :
pub_maFonction_a_b_c_
puis func (ne sera pas affiché car abbr)
affichera :
/**
*
*
* @access public
* @param a
* @param b
* @param c
* @return
* @throw
*/
public maFonction ( $a, $b, $c ) {
|
}
où | représente l'emplacement du pointeur/curseur.[/code]
Voilà, c'est déjà un début, mais je ne suis pas encore satisfait à 100%, j'ai un petit soucis d'affichage dans certains cas.
Je ne sais pas si d'autres personnes utilisent vim sur ce forum, oui ? Ou sinon, dites moi quels sont les outils pratiques et rapides pour développer X langages sur Mac (on écarte Smultron, XCode et Eclipse merci). J'ai réussi à adapter SciTE sur Mac, mais il est vraiment trop moche :s.
Merci pour vos infos :).