6

I'm developing on top of OpenLayers.js. My project folder is structured as follows:

project /
    |-- OpenLayers.js
    |-- map.html
    |-- map.js
    \-- etc

As you can argue, when I start a new map project, I espect suggestions from Vim on how to complete the code, reading JS classes from all the libraries in the project folder (in this case, just OpenLayers.js).

E.g.:

map = new OpenLayers. --> <C-x><C-o>
map = new OpenLayers.Bounds
                    .Control
                    .Map

Selecting one of the suggested classes I should get a kind of autocompletion, like in Aptana. I've installed AutoComplPop and I get a nice automatic menu to select suggestions, but all of them are taken from the current JS file.

Anyway, I've correctly set up Tagbar + node.js + jsctags and I've generated tags file for my project, and added set tags=./tags,./../tags,./*/tags to my .vimrc.

In this case, also, Tagbar maps the current file JS structure but doesn't offer any mapping of the classes coming from other files.

Another probably relevant line in my .vimrc:

autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS

I'm struggling to get class and subclass suggestions and now I'm getting a bit confused with all the plugins/piece of software available.

Any hint? Thank you guys :)

Matthew Strawbridge
  • 19,940
  • 10
  • 72
  • 93
fradeve
  • 284
  • 4
  • 15

2 Answers2

5

Check out YouCompleteMe and tern_for_vim.

Here's an article about using them together.

user456584
  • 86,427
  • 15
  • 75
  • 107
-3

Your expectations are a bit too high. Vim is not an IDE like Aptana and the mechanisms used to provide completion are crude.

Did you check that your tags file has OpenLayers.Bounds, OpenLayers.Control or OpenLayer.Map? I can't find OpenLayer.Map and, going through the OpenLayer.debug.js I can't find this function either.

TagBar only works with the current buffer. If you want to show tags for other windows/buffers you'll need another older plugin: TagList.

AutoComplPop doesn't support JS out of the box. How did you set it up? Here is how I did but it still uses <C-x><C-o> while completion from tags is done with <C-x><C-]>.

Community
  • 1
  • 1
romainl
  • 186,200
  • 21
  • 280
  • 313
  • Yeah, I've set up AutoComplPop as you suggested in the other post and now it works loading classes from `tags` file. The only embarrassing issue I'm getting now is related to Openlayers.js: `jsctags OpenLayers.js` gives me an embarassing `Error: fixStm: 44, line 261`, so I'm unable to create a `tags` file from it. But that's another story. – fradeve Aug 02 '12 at 13:55
  • this answer might suggest giving up on setting the advanced autocomplete and definitions for Vim. There are plugins like youcompleteme and tern which seem to accomplish what the OP is asking for. – Maciej Jankowski Aug 06 '15 at 09:37
  • @MaciejJankowski, there was no YCM or Tern in 2012. – romainl Aug 06 '15 at 09:45
  • @romainl - could you please edit the answer so I can take the downvote off? – Maciej Jankowski Aug 26 '15 at 19:06
  • Hahaha… are you kidding? – romainl Aug 26 '15 at 19:21