summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2016-06-12 18:32:48 +0200
committerJose Antonio Ortega Ruiz <jao@gnu.org>2016-06-12 18:32:48 +0200
commit0a3d6ca624332470f406e579f3ed5912169273ea (patch)
treee612dc8fc59203d045b613bf6776b4e5e9f50d56 /elisp
parent94210cde9788f9ae677767a531f96a873f5feaf0 (diff)
downloadgeiser-guile-0a3d6ca624332470f406e579f3ed5912169273ea.tar.gz
geiser-guile-0a3d6ca624332470f406e579f3ed5912169273ea.tar.bz2
Real fix fontification on scheme switch
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-base.el10
-rw-r--r--elisp/geiser-mode.el4
-rw-r--r--elisp/geiser-syntax.el13
3 files changed, 20 insertions, 7 deletions
diff --git a/elisp/geiser-base.el b/elisp/geiser-base.el
index 4d303db..ee30770 100644
--- a/elisp/geiser-base.el
+++ b/elisp/geiser-base.el
@@ -1,6 +1,6 @@
;;; geiser-base.el --- shared bits
-;; Copyright (C) 2009, 2010, 2012, 2013, 2015 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2012, 2013, 2015, 2016 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -27,6 +27,14 @@
(let ((inhibit-changing-match-data t))
(looking-at regexp))))
+(when (not (fboundp 'font-lock-ensure))
+ (defun font-lock-ensure (&optional beg end)
+ (with-no-warnings (font-lock-fontify-region (or beg (point-min))
+ (or end (point-max))))))
+
+(when (not (fboundp 'font-lock-flush))
+ (defun font-lock-flush (&optional beg end)))
+
;;; Utilities:
(defsubst geiser--chomp (str)
diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el
index 5747f40..4ca8af2 100644
--- a/elisp/geiser-mode.el
+++ b/elisp/geiser-mode.el
@@ -198,7 +198,9 @@ With prefix, recursively macro-expand the resulting expression."
(geiser-syntax--remove-kws)
(let ((impl (geiser-impl--read-impl)))
(geiser-impl--set-buffer-implementation impl)
- (geiser-repl--set-up-repl impl)))
+ (geiser-repl--set-up-repl impl)
+ (geiser-syntax--add-kws)
+ (geiser-syntax--fontify)))
(defun geiser-mode-switch-to-repl (arg)
"Switches to Geiser REPL.
diff --git a/elisp/geiser-syntax.el b/elisp/geiser-syntax.el
index 0abd03c..fb579e7 100644
--- a/elisp/geiser-syntax.el
+++ b/elisp/geiser-syntax.el
@@ -487,16 +487,19 @@ implementation-specific entries for font-lock-keywords.")
(scheme-mode)))
buffer))
+(defun geiser-syntax--fontify (&optional beg end)
+ (let ((font-lock-verbose nil)
+ (beg (or beg (point-min)))
+ (end (or end (point-max))))
+ (font-lock-flush beg end)
+ (font-lock-ensure beg end)))
+
(defun geiser-syntax--scheme-str (str)
(save-current-buffer
(set-buffer (geiser-syntax--font-lock-buffer))
(erase-buffer)
(insert str)
- (let ((font-lock-verbose nil))
- (if (fboundp 'font-lock-ensure)
- (font-lock-ensure)
- (with-no-warnings
- (font-lock-fontify-buffer))))
+ (geiser-syntax--fontify)
(buffer-string)))