c - - C89 ` - C99 xml -- ant | -- html 2 | -- php? | -- pom | -- hibernate_cfg | -- .... ` - ....
Would it make sense to introduce some kind of ft subtype? Then the filetype would be c and the subtype would be 89, 99, borland, gcc I've been thinking of this a while now There are many filetypes where you would need a mix or a base + additions My solution now is having the ftplugin/ant.vim file source the ftplugin/xml.vim file ... Think of jsp, its a mix of of Java and html Which ft? I want to have my Java mappings and xml/html mappings Eclipse has a similar problem: Every project can have different additions (eg maven, aspectJ, ..) They call it nature and a project can have more than one. It's not that easy because what should be the setting of 'comments' for filetype c? Should it exclude // than because c89 doesn' support them? Would it be a solution to do it the same way than buffer/global? If a nature-filetype setting exists use this else use the one of ft? When allowing multiple natures, should the user be able to provide a custom function to combine the values of comments of nature c89 and c99? Don't get me wrong: I'm not sure wether its worth implementing something like this. I'd like to get your opinion about this again: I could imagine something new beeing independent of buffer, window and global mappings (for mappings and variables in this order take the first match vim-window manager (eg here ZZ and ZQ and <c-w>hjkl should be mapped ...) buffer (eg command :SaveToFTPHostWhenNewer set by user for this specific file) nature dependend ( eg: :ListAllWrongC99Comments, set 'comments' for c89 to override filetype settings in nature c89) filetype dependend ( eg autocommand to load my c-tags files) global mappings ( eg automatically save original files and 3 diffs somewhere, create directory before saving autocommand, ..) But what to do if you associate a buffer with 2 natures having defined the same mapping? (assign numbers to natures and take the smallest one?) Having something like natures would allow you to add/remove mappings without effort.. Might be used for browsing/ or debugging modes. Eg while adding a debug nature you might remap c n s h r to continue, next, step, halt, rerun, ... To stop the debugging mode you would have to remove debug from the natures list instead of calling unmap for each mappnig. Marc