* bug#16077: 24.3; cleanup flymake
@ 2013-12-06 17:04 Leo Liu
2019-08-15 2:21 ` Lars Ingebrigtsen
0 siblings, 1 reply; 2+ messages in thread
From: Leo Liu @ 2013-12-06 17:04 UTC (permalink / raw
To: 16077
[-- Attachment #1: Type: text/plain, Size: 114 bytes --]
First patch to clean up flymake and more to come. This basically removes
xemacs support. Any reasons not to?
Leo
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: flymake.diff --]
[-- Type: text/x-patch, Size: 14787 bytes --]
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index ab86b83f..0f1f4fff 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -1,4 +1,4 @@
-;;; flymake.el --- a universal on-the-fly syntax checker
+;;; flymake.el --- a universal on-the-fly syntax checker -*- lexical-binding: t; -*-
;; Copyright (C) 2003-2013 Free Software Foundation, Inc.
@@ -36,77 +36,27 @@
;;; Code:
(eval-when-compile (require 'cl-lib))
-(if (featurep 'xemacs) (require 'overlay))
-(defvar flymake-is-running nil
+(defvar-local flymake-is-running nil
"If t, flymake syntax check process is running for the current buffer.")
-(make-variable-buffer-local 'flymake-is-running)
-(defvar flymake-timer nil
+(defvar-local flymake-timer nil
"Timer for starting syntax check.")
-(make-variable-buffer-local 'flymake-timer)
-(defvar flymake-last-change-time nil
+(defvar-local flymake-last-change-time nil
"Time of last buffer change.")
-(make-variable-buffer-local 'flymake-last-change-time)
-(defvar flymake-check-start-time nil
+(defvar-local flymake-check-start-time nil
"Time at which syntax check was started.")
-(make-variable-buffer-local 'flymake-check-start-time)
-(defvar flymake-check-was-interrupted nil
+(defvar-local flymake-check-was-interrupted nil
"Non-nil if syntax check was killed by `flymake-compile'.")
-(make-variable-buffer-local 'flymake-check-was-interrupted)
-(defvar flymake-err-info nil
+(defvar-local flymake-err-info nil
"Sorted list of line numbers and lists of err info in the form (file, err-text).")
-(make-variable-buffer-local 'flymake-err-info)
-(defvar flymake-new-err-info nil
+(defvar-local flymake-new-err-info nil
"Same as `flymake-err-info', effective when a syntax check is in progress.")
-(make-variable-buffer-local 'flymake-new-err-info)
-
-;;;; [[ cross-emacs compatibility routines
-(defsubst flymake-makehash (&optional test)
- "Create and return a new hash table using TEST to compare keys.
-It uses the function `make-hash-table' to make a hash-table if
-you use GNU Emacs, otherwise it uses `makehash'."
- (if (fboundp 'make-hash-table)
- (if test (make-hash-table :test test) (make-hash-table))
- (with-no-warnings
- (makehash test))))
-
-(defalias 'flymake-float-time
- (if (fboundp 'float-time)
- 'float-time
- (if (featurep 'xemacs)
- (lambda ()
- (multiple-value-bind (s0 s1 s2) (values-list (current-time))
- (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2)))))))
-
-(defalias 'flymake-replace-regexp-in-string
- (if (eval-when-compile (fboundp 'replace-regexp-in-string))
- 'replace-regexp-in-string
- (lambda (regexp rep str)
- (replace-in-string str regexp rep))))
-
-(defalias 'flymake-split-string
- (if (condition-case nil (equal (split-string " bc " " " t) '("bc"))
- (error nil))
- (lambda (str pattern) (split-string str pattern t))
- (lambda (str pattern)
- "Split STR into a list of substrings bounded by PATTERN.
-Zero-length substrings at the beginning and end of the list are omitted."
- (let ((split (split-string str pattern)))
- (while (equal (car split) "") (setq split (cdr split)))
- (setq split (nreverse split))
- (while (equal (car split) "") (setq split (cdr split)))
- (nreverse split)))))
-
-(defalias 'flymake-get-temp-dir
- (if (fboundp 'temp-directory)
- 'temp-directory
- (lambda () temporary-file-directory)))
(defun flymake-posn-at-point-as-event (&optional position window dx dy)
"Return pixel position of top left corner of glyph at POSITION.
@@ -120,12 +70,11 @@ (defun flymake-posn-at-point-as-event (&optional position window dx dy)
selected window.
DX and DY specify optional offsets from the top left of the glyph."
- (unless window (setq window (selected-window)))
- (unless position (setq position (window-point window)))
- (unless dx (setq dx 0))
- (unless dy (setq dy 0))
-
- (let* ((pos (posn-at-point position window))
+ (let* ((window (or window (selected-window)))
+ (position (or position (window-point window)))
+ (dx (or dx 0))
+ (dy (or dy 0))
+ (pos (posn-at-point position window))
(x-y (posn-x-y pos))
(edges (window-inside-pixel-edges window))
(win-x-y (window-pixel-edges window)))
@@ -135,25 +84,16 @@ (defun flymake-posn-at-point-as-event (&optional position window dx dy)
(+ (cdr x-y) (cadr edges) (- (cadr win-x-y)) dy)))
(list 'mouse-1 pos)))
+;;; XXX: get rid of the following two functions
+
(defun flymake-popup-menu (menu-data)
"Pop up the flymake menu at point, using the data MENU-DATA.
POS is a list of the form ((X Y) WINDOW), where X and Y are
pixels positions from the top left corner of WINDOW's frame.
MENU-DATA is a list of error and warning messages returned by
`flymake-make-err-menu-data'."
- (if (featurep 'xemacs)
- (let* ((pos (flymake-get-point-pixel-pos))
- (x-pos (nth 0 pos))
- (y-pos (nth 1 pos))
- (fake-event-props '(button 1 x 1 y 1)))
- (setq fake-event-props (plist-put fake-event-props 'x x-pos))
- (setq fake-event-props (plist-put fake-event-props 'y y-pos))
- (popup-menu (flymake-make-xemacs-menu menu-data)
- (make-event 'button-press fake-event-props)))
- (x-popup-menu (if (eval-when-compile (fboundp 'posn-at-point))
- (flymake-posn-at-point-as-event)
- (list (flymake-get-point-pixel-pos) (selected-window)))
- (flymake-make-emacs-menu menu-data))))
+ (x-popup-menu (flymake-posn-at-point-as-event)
+ (flymake-make-emacs-menu menu-data)))
(defun flymake-make-emacs-menu (menu-data)
"Return a menu specifier using MENU-DATA.
@@ -167,72 +107,12 @@ (defun flymake-make-emacs-menu (menu-data)
menu-items)))
(list menu-title (cons "" menu-commands))))
-(if (featurep 'xemacs) (progn
-
-(defun flymake-nop ()
- "Do nothing."
- nil)
-
-(defun flymake-make-xemacs-menu (menu-data)
- "Return a menu specifier using MENU-DATA."
- (let* ((menu-title (nth 0 menu-data))
- (menu-items (nth 1 menu-data))
- (menu-commands nil))
- (setq menu-commands (mapcar (lambda (foo)
- (vector (nth 0 foo) (or (nth 1 foo) '(flymake-nop)) t))
- menu-items))
- (cons menu-title menu-commands)))
-
-)) ;; xemacs
-
-(unless (eval-when-compile (fboundp 'posn-at-point))
-
-(defun flymake-current-row ()
- "Return current row number in current frame."
- (if (fboundp 'window-edges)
- (+ (car (cdr (window-edges))) (count-lines (window-start) (point)))
- (count-lines (window-start) (point))))
-
-(defun flymake-selected-frame ()
- "Return the frame that is now selected."
- (if (fboundp 'window-edges)
- (selected-frame)
- (selected-window)))
-
-(defun flymake-get-point-pixel-pos ()
- "Return point position in pixels: (x, y)."
- (let ((mouse-pos (mouse-position))
- (pixel-pos nil)
- (ret nil))
- (if (car (cdr mouse-pos))
- (progn
- (set-mouse-position (flymake-selected-frame) (current-column) (flymake-current-row))
- (setq pixel-pos (mouse-pixel-position))
- (set-mouse-position (car mouse-pos) (car (cdr mouse-pos)) (cdr (cdr mouse-pos)))
- (setq ret (list (car (cdr pixel-pos)) (cdr (cdr pixel-pos)))))
- (progn
- (setq ret '(0 0))))
- (flymake-log 3 "mouse pos is %s" ret)
- ret))
-
-) ;; End of (unless (fboundp 'posn-at-point)
-
-;;;; ]]
-
(defcustom flymake-log-level -1
"Logging level, only messages with level lower or equal will be logged.
-1 = NONE, 0 = ERROR, 1 = WARNING, 2 = INFO, 3 = DEBUG"
:group 'flymake
:type 'integer)
-
-;; (defcustom flymake-log-file-name "~/flymake.log"
-;; "Where to put the flymake log if logging is enabled.
-;;
-;; See `flymake-log-level' if you want to control what is logged."
-;; :group 'flymake
-;; :type 'string)
-
(defun flymake-log (level text &rest args)
"Log a message at level LEVEL.
If LEVEL is higher than `flymake-log-level', the message is
@@ -241,13 +121,7 @@ (defun flymake-log (level text &rest args)
are the string substitutions (see the function `format')."
(if (<= level flymake-log-level)
(let* ((msg (apply 'format text args)))
- (message "%s" msg)
- ;;(with-temp-buffer
- ;; (insert msg)
- ;; (insert "\n")
- ;; (flymake-save-buffer-in-file "~/flymake.log") ; make log file name customizable
- ;;)
- )))
+ (message "%s" msg))))
(defun flymake-ins-after (list pos val)
"Insert VAL into LIST after position POS.
@@ -266,8 +140,7 @@ (defun flymake-set-at (list pos val)
(defvar flymake-processes nil
"List of currently active flymake processes.")
-(defvar flymake-output-residual nil)
-(make-variable-buffer-local 'flymake-output-residual)
+(defvar-local flymake-output-residual nil)
(defgroup flymake nil
"Universal on-the-fly syntax checker."
@@ -356,7 +229,7 @@ (defun flymake-get-real-file-name-function (file-name)
(or (nth 2 (flymake-get-file-name-mode-and-masks file-name))
'flymake-get-real-file-name))
-(defvar flymake-find-buildfile-cache (flymake-makehash 'equal))
+(defvar flymake-find-buildfile-cache (make-hash-table :test #'equal))
(defun flymake-get-buildfile-from-cache (dir-name)
"Look up DIR-NAME in cache and return its associated value.
@@ -537,6 +410,7 @@ (defun flymake-check-patch-master-file-buffer
(flymake-log 2 "found master file %s" master-file-name))
found))
+;;; XXX: remove
(defun flymake-replace-region (beg end rep)
"Replace text in BUFFER in region (BEG END) with REP."
(save-excursion
@@ -689,7 +563,7 @@ (defun flymake-post-syntax-check (exit-status command)
(setq warn-count (flymake-get-err-count flymake-err-info "w"))
(flymake-log 2 "%s: %d error(s), %d warning(s) in %.2f second(s)"
(buffer-name) err-count warn-count
- (- (flymake-float-time) flymake-check-start-time))
+ (- (float-time) flymake-check-start-time))
(setq flymake-check-start-time nil)
(if (and (equal 0 err-count) (equal 0 warn-count))
@@ -978,7 +852,7 @@ (defun flymake-split-output (output)
Return last one as residual if it does not end with newline char.
Returns ((LINES) RESIDUAL)."
(when (and output (> (length output) 0))
- (let* ((lines (flymake-split-string output "[\n\r]+"))
+ (let* ((lines (split-string output "[\n\r]+" t))
(complete (equal "\n" (char-to-string (aref output (1- (length output))))))
(residual nil))
(when (not complete)
@@ -1163,18 +1037,18 @@ (defun flymake-get-project-include-dirs-imp (basedir)
(shell-quote-argument basedir)
" DUMPVARS=INCLUDE_DIRS dumpvars"))
(output (shell-command-to-string command-line))
- (lines (flymake-split-string output "\n"))
+ (lines (split-string output "\n" t))
(count (length lines))
(idx 0)
(inc-dirs nil))
(while (and (< idx count) (not (string-match "^INCLUDE_DIRS=.*" (nth idx lines))))
(setq idx (1+ idx)))
(when (< idx count)
- (let* ((inc-lines (flymake-split-string (nth idx lines) " *-I"))
+ (let* ((inc-lines (split-string (nth idx lines) " *-I" t))
(inc-count (length inc-lines)))
(while (> inc-count 0)
(when (not (string-match "^INCLUDE_DIRS=.*" (nth (1- inc-count) inc-lines)))
- (push (flymake-replace-regexp-in-string "\"" "" (nth (1- inc-count) inc-lines)) inc-dirs))
+ (push (replace-regexp-in-string "\"" "" (nth (1- inc-count) inc-lines)) inc-dirs))
(setq inc-count (1- inc-count)))))
(flymake-add-project-include-dirs-to-cache basedir inc-dirs)
inc-dirs)))
@@ -1190,9 +1064,9 @@ (defun flymake-get-project-include-dirs (basedir)
(defun flymake-get-system-include-dirs ()
"System include dirs - from the 'INCLUDE' env setting."
(let* ((includes (getenv "INCLUDE")))
- (if includes (flymake-split-string includes path-separator) nil)))
+ (if includes (split-string includes path-separator t) nil)))
-(defvar flymake-project-include-dirs-cache (flymake-makehash 'equal))
+(defvar flymake-project-include-dirs-cache (make-hash-table :test #'equal))
(defun flymake-get-project-include-dirs-from-cache (base-dir)
(gethash base-dir flymake-project-include-dirs-cache))
@@ -1280,7 +1154,7 @@ (defun flymake-start-syntax-check-process (cmd args dir)
(setq flymake-is-running t)
(setq flymake-last-change-time nil)
- (setq flymake-check-start-time (flymake-float-time))
+ (setq flymake-check-start-time (float-time))
(flymake-report-status nil "*")
(flymake-log 2 "started process %d, command=%s, dir=%s"
@@ -1332,7 +1206,7 @@ (defun flymake-on-timer-event (buffer)
(with-current-buffer buffer
(when (and (not flymake-is-running)
flymake-last-change-time
- (> (- (flymake-float-time) flymake-last-change-time)
+ (> (- (float-time) flymake-last-change-time)
flymake-no-changes-timeout))
(setq flymake-last-change-time nil)
@@ -1512,12 +1386,12 @@ (defcustom flymake-start-syntax-check-on-newline t
(defun flymake-after-change-function (start stop _len)
"Start syntax check for current buffer if it isn't already running."
- ;;+(flymake-log 0 "setting change time to %s" (flymake-float-time))
+ ;;+(flymake-log 0 "setting change time to %s" (float-time))
(let((new-text (buffer-substring start stop)))
(when (and flymake-start-syntax-check-on-newline (equal new-text "\n"))
(flymake-log 3 "starting syntax check as new-line has been seen")
(flymake-start-syntax-check))
- (setq flymake-last-change-time (flymake-float-time))))
+ (setq flymake-last-change-time (float-time))))
(defun flymake-after-save-hook ()
(if (local-variable-p 'flymake-mode (current-buffer)) ; (???) other way to determine whether flymake is active in buffer being saved?
@@ -1631,14 +1505,14 @@ (defun flymake-create-temp-with-folder-structure (file-name _prefix)
;; trying to remove the leading / of absolute file names.
(slash-pos (string-match "/" dir))
(temp-dir (expand-file-name (substring dir (1+ slash-pos))
- (flymake-get-temp-dir))))
+ temporary-file-directory)))
(file-truename (expand-file-name (file-name-nondirectory file-name)
temp-dir))))
(defun flymake-delete-temp-directory (dir-name)
"Attempt to delete temp dir created by `flymake-create-temp-with-folder-structure', do not fail on error."
- (let* ((temp-dir (flymake-get-temp-dir))
+ (let* ((temp-dir temporary-file-directory)
(suffix (substring dir-name (1+ (length temp-dir)))))
(while (> (length suffix) 0)
^ permalink raw reply related [flat|nested] 2+ messages in thread
* bug#16077: 24.3; cleanup flymake
2013-12-06 17:04 bug#16077: 24.3; cleanup flymake Leo Liu
@ 2019-08-15 2:21 ` Lars Ingebrigtsen
0 siblings, 0 replies; 2+ messages in thread
From: Lars Ingebrigtsen @ 2019-08-15 2:21 UTC (permalink / raw
To: Leo Liu; +Cc: Stefan Monnier, 16077
Leo Liu <sdl.web@gmail.com> writes:
> First patch to clean up flymake and more to come. This basically removes
> xemacs support. Any reasons not to?
(I'm going through old bug reports that have unfortunately gotten no
responses yet.)
It looks like your patch wasn't applied at the time, but in 2017, commit
ce540f8a687 did something very similar to your patch, so all the XEmacs
support is now gone from flymake.el.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-08-15 2:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-06 17:04 bug#16077: 24.3; cleanup flymake Leo Liu
2019-08-15 2:21 ` Lars Ingebrigtsen
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.