diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 0772fd6719b1315fa42f0259c8559490fc8711f3..74403530b54ef8bf104fc6eb82a69747890fbd1b 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -38,3 +38,4 @@ Non-Google patch contributors:
   Kevin Ko <kevin.s.ko@gmail.com>
   Johan Euphrosine <proppy@aminche.com>
   Ulrich Kunitz <kune@deine-taler.de>
+  Leandro Lucarella <llucax@gmail.com>
diff --git a/editors/proto.vim b/editors/proto.vim
index ea010480e1075a88bbfb5ad0b8d87e755429a505..19c0d4c52ff97f529678c3c90aa8f722a2691766 100644
--- a/editors/proto.vim
+++ b/editors/proto.vim
@@ -23,6 +23,9 @@
 " augroup filetype
 "   au! BufRead,BufNewFile *.proto setfiletype proto
 " augroup end
+"
+" Or just create a new file called ~/.vim/ftdetect/proto.vim with the
+" previous lines on it.
 
 if version < 600
   syntax clear
@@ -32,6 +35,9 @@ endif
 
 syn case match
 
+syn keyword pbTodo       contained TODO FIXME XXX
+syn cluster pbCommentGrp contains=pbTodo
+
 syn keyword pbSyntax     syntax import option
 syn keyword pbStructure  package message group
 syn keyword pbRepeat     optional required repeated
@@ -50,7 +56,7 @@ syn match   pbInt     /\<0[xX]\x+\>/
 syn match   pbFloat   /\<-\?\d*\(\.\d*\)\?/
 " TODO: .proto also supports C-style block comments;
 " see /usr/share/vim/vim70/syntax/c.vim for how it's done.
-syn match   pbComment /\/\/.*$/
+syn region  pbComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp
 syn region  pbString  start=/"/ skip=/\\"/ end=/"/
 syn region  pbString  start=/'/ skip=/\\'/ end=/'/
 
@@ -62,6 +68,8 @@ if version >= 508 || !exists("did_proto_syn_inits")
     command -nargs=+ HiLink hi def link <args>
   endif
 
+  HiLink pbTodo         Todo
+
   HiLink pbSyntax       Include
   HiLink pbStructure    Structure
   HiLink pbRepeat       Repeat
diff --git a/src/google/protobuf/compiler/command_line_interface.cc b/src/google/protobuf/compiler/command_line_interface.cc
index 6c2c9e8f6871953c4bad1d3b3c7755a8f03cd3a3..8f559f55f1c9ae7d69e14dc91b75af36535fa892 100644
--- a/src/google/protobuf/compiler/command_line_interface.cc
+++ b/src/google/protobuf/compiler/command_line_interface.cc
@@ -203,7 +203,7 @@ io::ZeroCopyOutputStream* CommandLineInterface::DiskOutputDirectory::Open(
   do {
     file_descriptor =
       open((root_ + filename).c_str(),
-           O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0777);
+           O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0666);
   } while (file_descriptor < 0 && errno == EINTR);
 
   if (file_descriptor < 0) {