diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2016-06-12 18:32:48 +0200 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2016-06-12 18:32:48 +0200 |
commit | 0a3d6ca624332470f406e579f3ed5912169273ea (patch) | |
tree | e612dc8fc59203d045b613bf6776b4e5e9f50d56 /elisp | |
parent | 94210cde9788f9ae677767a531f96a873f5feaf0 (diff) | |
download | geiser-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.el | 10 | ||||
-rw-r--r-- | elisp/geiser-mode.el | 4 | ||||
-rw-r--r-- | elisp/geiser-syntax.el | 13 |
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))) |