protected void CompileFile(IFile file, String fullpath) {
		try {
			String compiler = SQDevPlugin.doGetPreferenceStore().getString(
					SQDevPlugin.EDITOR_COMPILER);
			if (compiler.length() == 0)
				return;
			file.deleteMarkers(SQDevPlugin.SQUIRREL_PROBLEM_MARKER, false,
					IResource.DEPTH_ZERO);
			// RUN COMPILER

			SQDevPlugin.logInfo("Compiling: " + fullpath);

			Process process = Runtime.getRuntime().exec(
					new String[]{compiler,"-c",fullpath});

			InputStream is = process.getInputStream();
			BufferedReader in = new BufferedReader(new InputStreamReader(is));
			String lineStr = null;

			while ((lineStr = in.readLine()) != null) {
				Matcher matcher = errorPattern.matcher(lineStr);
				boolean found = matcher.find();
				if (found && matcher.groupCount() == 3) {
					String sline = matcher.group(1);
					String scol = matcher.group(2);
					int line = Integer.parseInt(sline);
					int col = Integer.parseInt(scol);
					String err = matcher.group(3);
					//
					HashMap<String,Object> map = new HashMap<String,Object>();
					map.put(IMarker.MESSAGE, err);
					map.put(IMarker.LINE_NUMBER, new Integer(line));
					try {
						IDocument document = getDocumentProvider().getDocument(
								getEditorInput());
						IRegion region = document.getLineInformation(line - 1);

						int start = region.getOffset()
								+ Math.min(col - 2, region.getLength());
						map.put(IMarker.CHAR_START, new Integer(start));
						map.put(IMarker.CHAR_END, new Integer(start + 1));
					} catch (BadLocationException e) {
					}

					map.put(IMarker.SEVERITY, new Integer(1));
					MarkerUtilities.createMarker(file, map,
							SQDevPlugin.SQUIRREL_PROBLEM_MARKER);
				}
			}

			try {
				process.waitFor();
			} catch (InterruptedException e) {
			}
		} catch (CoreException e) {
		} catch (IOException e) {
			SQDevPlugin.logError("Error compiling: " + e, e);
		}
	}