Merge commit '5184d2b000bf5f9be1f0b359216bfe72ee83c8dc' into merge_common_python
Squashed 'plugin/floo/common/' changes from bbeaa11..44762f9

44762f9 Normalize urls in persistent.json.
212eb25 Remove trailing slash from workspace url.
49d1104 Move some delete logic into the handler.
1ba120b Wrong key name. Should be unlink, not delete.
f3eee37 Better logging in the ssl proxy. Coerce port and ssl to int and bool so we actually connect.
9c3c64d Obey and send unlink option with delete events.
a585c61 Oops. Wrong method.
1bc068a Cleanup. Call join_workspace on hitting the right path in persistent.json.
28b31e1 If workspace exists but permissions differ, update the workspace.
cfb2ae3 Update log level based on floorc.
d15dd7e Better error messages. Don't die if name field is missing from event.
feaa848 Only print newlines to file.
47a05d8 Better logging. Fix bug with empty buffers in Sublime Text 2
1f1d349 Don't explode if Node.js sends invalid utf8.
4900c0f Fix casing issue on Windows. This has been a bug for a long time. Oops.
e6b709b Oops. Fix crash on Sublime Text 3. Python 3's read() returns bytes, not a string.
0676708 Windows has no fcntl
b7d1694 Log if we're proxying. Apparently, python 2 can throw OSError when there's actually been an IOError.
f3e8193 Shorter lines.
bab3239 Merge branch 'master' of github.com:Floobits/floobits-sublime
fe4995b Apparently our API isn't authing against API keys right now? wtf?
8c9a2f8 log the full command run
df3d8cf Forgot to uncomment the try/except after I was done debuging.
65bef77 More python 3 fixes. Log what we're printing out.
638c1a5 Various bits of cleanup. Now the SSL proxy works in python 2 and 3.
8acf466 Move SSL proxy code into reactor.
e70f807 Clean up api error handling. Send POST data to https proxy.
1d1841d Start of working http api proxy.
d4963a8 Fix for Python 3
97242a4 Pyflakes
78c12e4 More cleanup. We valiantly tried to print the output of the proxy process, but failed. :(
edb2d7e Pep8
e020322 Remove spawn stuff now that all the popen()ing happens in floo protocol.
b3fce54 Yay, it works.
9953771 Pep8
ed95302 More progress
30b3475 Pyflakes and pep8
20b6bf7 progress
2748003 some refactoring on the spawning stuff
REVERT: bbeaa11 Minor cleanup and pyflakes/pep8

git-subtree-dir: plugin/floo/common
git-subtree-split: 44762f9d79b3e9dd1818d19d5fc339c1920d91aa
Cleanup. Pyflakes. Pep8. Quotes.
Some progress.
Squashed 'plugin/floo/common/' changes from 44762f9..2cf6293

2cf6293 Apparently Sublime Text 2 on Linux explodes if you import io. Work around yet another Sublime Text bug.
caf8dcf Use new link editor URL.
7d866f6 Except exception.
a6b9354 Fix more URLs.
8c2dc6e Fix lame errors with md5 sums on sublime 2 and 3
551869d Fix issue with windows newlines making Floobits think files are different when they are not.
155bbeb We don't use trailing slashes anymore.
852ba02 Work around Python SSL bug http://bugs.python.org/issue8240 and use send instead of sendall since sendall doesn't actually work. :p
45dd60c Hopefully better code that adds backpressure to our item queue.
dc5813b Merge branch 'master' into multi_workspace
66e1e5a Mirrored saves is always true. Re-arrange some stuff in shared.py

git-subtree-dir: plugin/floo/common
git-subtree-split: 2cf62939887ebebd6a146abd50d0e6660380dee1
Merge commit 'cec966f1b47806c0d528066c44e90b153be7a0d0' into merge_common_python
Squashed 'plugin/floo/common/' changes from 2cf6293..ac12ed2

ac12ed2 Fix permissions when sharing publicly. Give feedback when leaving a workspace.
ef5d559 Respond to pings with pongs.
c2e9990 Do a better job of matching paths. Bump protocol version and plugin version. Normalize persistent.json on startup.
d54857d Re-work create workspace to use new api.py
726989c Start of refactored and cleaned-up create_workspace/share_dir.
c94b464 get_workspace_by_path() now takes a filter function
7944e29 Python 3 ism
f9cc488 Don't show prompt if user doesn't have request_perms permission. Fixes #164.
5ad3354 If someone puts http:// in the address bar, connect over https unless we're debugging.
0a5fea3 Call reload settings on handler init. This prevents an exception if we update status msg too quickly.

git-subtree-dir: plugin/floo/common
git-subtree-split: ac12ed29ea6184c1424f642bffc30fcef8a87eb2
Merge commit '35548eabe9d942f2912bd8d825875d80405d02e2' into merge_common_python
Squashed 'plugin/floo/common/' changes from ac12ed2..fd2874b

fd2874b Backwards python.
bfb7500 Do a better job of saving with the correct line endings.
028cdd5 Set view if we haven't saved it since applying patches.
fbbaa55 Don't save buffer if it's not open. We should only save on save events.
7cb496d Better disconnection logic. Now we don't keep showing the status message after you're kicked.
33a6a58 Handle invalid entries in persistent.json.

git-subtree-dir: plugin/floo/common
git-subtree-split: fd2874bcf4d67ba08e605bf5b7fe770018c60d3d
Merge commit '18cf99fbcacbf82144b70f0468cec58da4f9bfc6' into merge_common_python
Add line endings detector for vim
We don't use save_buf anywhere. Bump protocol version now that we support ping/pong. Catch exceptions since api throws IOErrors now.
on_load is a defaultdict now.
Update docs. Link to help on the web.
Don't default to sharing publicly. This should reduce accidental public sharing.
Progress on working with updated api.py.
Fix share dir public.
Check that workspace exists before joining it.
G.JOINED_WORKSPACE no longer exists. Fix log level stuff. Don't json parse the already-parsed response body.
Bump plugin version.