]> gitweb.factorcode.org Git - factor.git/commitdiff
FUEL: alist-get instead of (cdr (assoc key alist))
authorBjörn Lindqvist <bjourne@gmail.com>
Tue, 6 Feb 2018 04:19:35 +0000 (05:19 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Tue, 6 Feb 2018 05:16:29 +0000 (06:16 +0100)
alist-get is a new function in emacs 25. It makes working with assocs
a bit simpler.

misc/fuel/fuel-base.el
misc/fuel/fuel-connection.el
misc/fuel/fuel-eval.el
misc/fuel/fuel-markup.el

index 8044b11102282df713949053e74a3b872ed84f7a..48d80265583b4293d71da2f1b8195e263b24cdf0 100644 (file)
@@ -20,7 +20,6 @@
   (interactive)
   (message "FUEL %s" fuel-version))
 
-\f
 ;;; Customization:
 
 ;;;###autoload
@@ -28,9 +27,7 @@
   "Factor's Ultimate Emacs Library."
   :group 'languages)
 
-\f
-;;; Utilities:
-
+;;; Compatibility with Emacs 24.3
 (unless (fboundp 'setq-local)
   (defmacro setq-local (var val)
     (list 'set (list 'make-local-variable (list 'quote var)) val)))
     (list 'progn (list 'defvar var val docstring)
           (list 'make-variable-buffer-local (list 'quote var)))))
 
+(unless (fboundp 'alist-get)
+  (defun alist-get (key alist)
+    (cdr (assoc key alist))))
+
+;;; Utilities:
 (defun fuel-shorten-str (str len)
   (let ((sl (length str)))
     (if (<= sl len) str
index cd5754cdec709318dc6c69a0a4b7879b767e8016..87a6f63c51ba6fd09496e414d983a0d894dd88b4 100644 (file)
@@ -1,5 +1,6 @@
 ;;; fuel-connection.el -- asynchronous comms with the fuel listener
 
+;; Copyright (C) 2018 Björn Lindqvist
 ;; Copyright (C) 2008, 2009 Jose Antonio Ortega Ruiz
 ;; See http://factorcode.org/license.txt for BSD license.
 
 (defsubst fuel-con--request-p (req)
   (and (listp req) (eq (car req) :fuel-connection-request)))
 
-(defsubst fuel-con--request-id (req)
-  (cdr (assoc :id req)))
-
 (defsubst fuel-con--request-string (req)
-  (cdr (assoc :string req)))
-
-(defsubst fuel-con--request-continuation (req)
-  (cdr (assoc :continuation req)))
+  (alist-get :string req))
 
 (defsubst fuel-con--request-buffer (req)
-  (cdr (assoc :buffer req)))
+  (alist-get :buffer req))
 
 (defsubst fuel-con--request-deactivate (req)
   (setcdr (assoc :continuation req) nil))
 
 (defsubst fuel-con--request-deactivated-p (req)
-  (null (cdr (assoc :continuation req))))
+  (null (alist-get :continuation req)))
 
 ;;; TODO Replace with a defstruct
 (defsubst fuel-con--make-connection (buffer)
   (and (listp c) (eq (car c) :fuel-connection)))
 
 (defsubst fuel-con--connection-requests (c)
-  (cdr (assoc :requests c)))
+  (alist-get :requests c))
 
 (defsubst fuel-con--connection-current-request (c)
-  (cdr (assoc :current c)))
+  (alist-get :current c))
 
 (defun fuel-con--connection-clean-current-request (c)
   (let* ((cell (assoc :current c))
          (req (cdr cell)))
     (when req
-      (puthash (fuel-con--request-id req) req (cdr (assoc :completed c)))
+      (puthash (alist-get :id req) req (alist-get :completed c))
       (setcdr cell nil))))
 
 (defsubst fuel-con--connection-completed-p (c id)
-  (gethash id (cdr (assoc :completed c))))
+  (gethash id (alist-get :completed c)))
 
 (defsubst fuel-con--connection-buffer (c)
-  (cdr (assoc :buffer c)))
+  (alist-get :buffer c))
 
 (defun fuel-con--connection-pop-request (c)
   (let ((reqs (assoc :requests c))
@@ -210,16 +205,16 @@ sexp. fuel-con-error is thrown if the sexp is malformed."
           (fuel-con--connection-cancel-timer con)
         (when (and buffer req str)
           (set-buffer buffer)
-          (fuel-log--info "<%s>: %s" (fuel-con--request-id req) str)
+          (fuel-log--info "<%s>: %s" (alist-get :id req) str)
           (comint-redirect-send-command (format "%s" str) cbuf nil t))))))
 
 (defun fuel-con--process-completed-request (req)
-  (let ((cont (fuel-con--request-continuation req))
-        (id (fuel-con--request-id req))
+  (let ((cont (alist-get :continuation req))
+        (id (alist-get :id req))
         (rstr (fuel-con--request-string req))
         (buffer (fuel-con--request-buffer req)))
     (if (not cont)
-        (fuel-log--warn "<%s> Droping result for request %S (%s)"
+        (fuel-log--warn "<%s> Dropping result for request %S (%s)"
                             id rstr req)
       (condition-case cerr
           (with-current-buffer (or buffer (current-buffer))
@@ -258,7 +253,7 @@ sexp. fuel-con-error is thrown if the sexp is malformed."
     (let ((con (fuel-con--get-connection buffer/proc)))
       (unless con (error fuel-con--error-message))
       (let* ((req (fuel-con--send-string buffer/proc str cont sbuf))
-             (id (and req (fuel-con--request-id req)))
+             (id (and req (alist-get :id req)))
              (time (or timeout fuel-connection-timeout))
              (step 100)
              (waitsecs (/ step 1000.0)))
index 10be5fd793206203e6994d6fd84f9802c22d4db4..0e84e60ec813c07332cc7088e44d0e432788add7 100644 (file)
         (assoc name err))))
 
 (defsubst fuel-eval--error-restarts (err)
-  (cdr (assoc :restarts (or (fuel-eval--error-name-p err 'condition)
-                            (fuel-eval--error-name-p err 'lexer-error)))))
+  (alist-get :restarts (or (fuel-eval--error-name-p err 'condition)
+                           (fuel-eval--error-name-p err 'lexer-error))))
 
 (defsubst fuel-eval--error-file (err)
   (nth 1 (fuel-eval--error-name-p err 'source-file-error)))
index 02fc73b04105671a8f15f8b7b64b18d4bce21a37..7d10cd512fbb3ada2e59147b6f843ec8e78c085a 100644 (file)
         ((stringp e) (fuel-markup--insert-string e))
         ((and (listp e) (symbolp (car e))
               (assoc (car e) fuel-markup--printers))
-         (funcall (cdr (assoc (car e) fuel-markup--printers)) e))
+         (funcall (alist-get (car e) fuel-markup--printers) e))
         ((and (symbolp e)
               (assoc e fuel-markup--printers))
-         (funcall (cdr (assoc e fuel-markup--printers)) e))
+         (funcall (alist-get e fuel-markup--printers) e))
         ((listp e) (mapc 'fuel-markup--print e))
         ((symbolp e) (fuel-markup--print (list '$link e)))
         (t (insert (format "\n%S\n" e)))))