Monday, November 29, 2010

Re: Emacs' Org-mode clone for Vim

Reply to message «Re: Emacs' Org-mode clone for Vim»,
sent 04:27:32 30 November 2010, Tuesday
by hsitz:

> So thanks to everyone for your suggestions, espcially Marko and ZyX.
> I've posted new version with variable scopes, setting scopes, and
> function scopes cleaned up, and better explanation of how to integrate
> settings in sample vimrc and colorscheme into your own vimrc and
> colorschemes.
some additional notes:
1.
if !exists('g:org_agenda_dirs')
execute "let g:org_agenda_dirs =['".expand("%:p:h")."']"
endif
execute is not required here:
let g:org_agenda_dirs=[expand("%:p:h")]
works just fine and does not break if filename contains newlines.

Same for OrgTagsEdit: if you want to pass unknown number of arguments, use call:
let files=[]
let line_file_args=[]
<...>
call add(files, file)
let line_file_args+=[lineno, file]
<...>
let heading_tags=get(call('s:GetProperties', [lineno, 0]+files), 'tags', '')
<...>
call call('s:SetProp', ['tags', new_heading_tags]+line_file_args)


Same (except note for newlines) for
execute "let b:v.tagdict['" . item . "'] = 1"


silent exe 'normal! dd' -> silent d

execute "normal A ". newd " Forgot «!»

execute 'let @/ ="' . a:term .'"' -> let @/=a:term
execute 'g/' . a:term . '/normal zv' -> g//normal! zv
silent exe '%s/^*x//'
silent exe 'undojoin | %s/^*o//'
purge exe here:
silent %s/^*x//
undojoin
silent %s/^*o//
works just fine.

Review all executes, they are unneeded in most cases and may even cause security
issues.

2. You still have lots of global variables that are not options (though with
org_ prefix). Why don't you like script variables?

No comments: