| 
					
				 | 
			
			
				@@ -494,27 +494,33 @@ as `org-src-fontify-natively' is non-nil." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (when (fboundp lang-mode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (let ((string (buffer-substring-no-properties start end)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    (modified (buffer-modified-p)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    (org-buffer (current-buffer)) pos next) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (org-buffer (current-buffer))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(remove-text-properties start end '(face nil)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(with-current-buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    (get-buffer-create 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (concat " org-src-fontification:" (symbol-name lang-mode))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (delete-region (point-min) (point-max)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (insert string " ") ;; so there's a final property change 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (format " *org-src-fontification:%s*" lang-mode)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (erase-buffer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  ;; Add string and a final space to ensure property change. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (insert string " ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (unless (eq major-mode lang-mode) (funcall lang-mode)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (org-font-lock-ensure) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (setq pos (point-min)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (while (setq next (next-single-property-change pos 'face)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    (put-text-property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (+ start (1- pos)) (1- (+ start next)) 'face 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (get-text-property pos 'face) org-buffer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    (setq pos next))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (let ((pos (point-min)) next) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (while (setq next (next-single-property-change pos 'face)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (let ((new-face (get-text-property pos 'face))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(put-text-property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (+ start (1- pos)) (1- (+ start next)) 'face 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (list :inherit (append (and new-face (list new-face)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					(list 'org-block))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 org-buffer)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (setq pos next)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    ;; Add the face to the remaining part of the text. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (put-text-property (1- (+ start pos)) end 'face 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       '(:inherit org-block) org-buffer))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(add-text-properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 start end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 '(font-lock-fontified t fontified t font-lock-multiline t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(set-buffer-modified-p modified))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;; Escape contents 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |