Golevka / emacs-clang-complete-async

An emacs plugin to complete C and C++ code using libclang
360 stars 71 forks source link

Merge with latest auto-complete-clang, and cleanup. #8

Closed TaylanUB closed 11 years ago

TaylanUB commented 12 years ago

Your e-mail address shown on GitHub doesn't seem to work, so I'm sending this from here:

Hi, you might've noted that I forked your project. I merged it (manually) with hara's latest version of auto-complete-clang (which is the latest code from brianjcj plus Objective-C support), and also did a lot of clean-up to meet elisp-coding standards. I might have broken things while doing all this, and can't reliably test it myself because I don't know how exactly your original code is supposed to behave (I probably have a different clang version and all). So it would be very friendly if you could test my version and see if it behaves well. If it does, I would ask you to merge it and continue working from there.

In case you wonder what "elisp-coding standards" I'm talking about, the biggest issue with your code was that it defines functions and variables with generic names like completion-proc, filter-output, parse-completion-results, send-source-code, etc., which all end up in the global function/variable namespaces of the emacs user. Imagine how many different elisp packages/libraries might be using a generic function like "filter-output"... So to avoid clashes, everyone should adhere to the convention that all functions and variables in a package/library are prefixed with a unique identifier of the package. E.g. in this case we use ac-clang-async-filter-output.

Regards, and thanks for the code Taylan

monsanto commented 12 years ago

Objective-C support will be very useful!

It'd be nice if we could consolidate the 3-4 clang sources I know of for the "official" version in the auto-complete organization. Keeping all of these repos in sync will be a pain.

TaylanUB commented 12 years ago

That's a good idea.

It should definitely use a persistent clang process, since otherwise it's way too slow. I don't know of any other than Golevka's code to do this, and hopefully with a bit of work we can get the elisp to a state where it's worthy for the official AC project. My changes make it follow some of the most fundamental elisp conventions, but it's still very quirky from what I see. (Can we even use it on two files at once? Also, it doesn't start the completion process automatically.)