| 
					
				 | 
			
			
				@@ -1,72 +1,93 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+" Script downloaded from https://github.com/Jonty/phplint.vim 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 " Check we actually have PHP installed, otherwise you'll never be able to save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if exists("loadedPHPLint") || !executable('php') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if !exists("loadedPHPLint") && executable('php') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let loadedPHPLint = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     finish 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let loadedPHPLint = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-autocmd BufWriteCmd * execute('call LintPHPFile()') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+" To disable auto-lint, add "let noAutoLint = 1" to your .vimrc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if !exists("noAutoLint") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    autocmd BufWriteCmd *.php execute('call AutoLintPHPFile()') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function AutoLintPHPFile() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if LintPHPFile() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " We have to handle the write op ourselves, as we overrode it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        noautocmd w 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+" Allow manual linting with :Phplint 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+command! PHPLint call LintPHPFile() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function LintPHPFile() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if &filetype == 'php' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let thisFile = expand("%") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        " If the file isn't writable don't do anything, as it'll freak vim out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if filewritable(thisFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let testFile = tempname() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            " This resets the view to the top, so we need to restore it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let view = winsaveview() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let bufferContents = getbufline(bufnr("%"), 1, "$") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            exe writefile(bufferContents, testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            call winrestview(view) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            " Check the test file got written, this might fail if the disk is  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            " full and prevent you from saving. Which would be bad. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if filereadable(testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let phpLint = system('php -l ' . testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let phpLint = substitute(phpLint, testFile, thisFile, "g") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                call delete(testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let errLine = matchstr(phpLint, 'No syntax errors') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if strlen(errLine) > 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cclose 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    redraw " Avoids the annoying 'Press ENTER to BLAH' message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let lintLines = split(phpLint, "\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let errorLines = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    for line in lintLines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        let pos = matchstr(line, 'on line') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if strlen(pos) > 0 && stridx(line, 'PHP') != 0 " Some versions dupe the error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            call add(errorLines, line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    endfor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let cFile = tempname() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    exe writefile(errorLines, cFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let oldCpoptions = &cpoptions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let oldErrorformat = &errorformat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    set cpoptions-=F 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    set errorformat=%m\ in\ %f\ on\ line\ %l 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    exe "cfile " . cFile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "copen 5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    botright cwindow 5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    call delete(cFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let &cpoptions = oldCpoptions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let &errorformat = oldErrorformat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if &filetype != 'php' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let thisFile = expand("%") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    " If the file isn't writable don't do anything, as it'll freak vim out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if filewritable(thisFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let testFile = tempname() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " This resets the view to the top, so we need to restore it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let view = winsaveview() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let bufferContents = getbufline(bufnr("%"), 1, "$") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exe writefile(bufferContents, testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        call winrestview(view) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " Check the test file got written, this might fail if the disk is  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " full and prevent you from saving. Which would be bad. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if filereadable(testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let phpLint = system('php -l ' . testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let phpLint = substitute(phpLint, testFile, thisFile, "g") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            call delete(testFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let errLine = matchstr(phpLint, 'No syntax errors') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if strlen(errLine) > 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cclose 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                redraw " Avoids the annoying 'Press ENTER to BLAH' message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let lintLines = split(phpLint, "\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let errorLines = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for line in lintLines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let pos = matchstr(line, 'on line') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if strlen(pos) > 0 && stridx(line, 'PHP') != 0 " Some versions dupe the error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        call add(errorLines, line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                endfor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let cFile = tempname() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                exe writefile(errorLines, cFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let oldCpoptions = &cpoptions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let oldErrorformat = &errorformat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                set cpoptions-=F 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                set errorformat=%m\ in\ %f\ on\ line\ %l 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                exe "cfile " . cFile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                copen 5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                call delete(cFile) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let &cpoptions = oldCpoptions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let &errorformat = oldErrorformat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    " We have to handle the write op ourselves, as we overrode it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    noautocmd w 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 endf 
			 |