;;; subr-x.el --- extra Lisp functions -*- lexical-binding:t -*-
-;; Copyright (C) 2013-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience
(_ (car forms))))
(defmacro thread-first (&rest forms)
- "Thread FORMS elements as the first argument of their succesor.
+ "Thread FORMS elements as the first argument of their successor.
Example:
(thread-first
5
`(internal--thread-argument t ,@forms))
(defmacro thread-last (&rest forms)
- "Thread FORMS elements as the last argument of their succesor.
+ "Thread FORMS elements as the last argument of their successor.
Example:
(thread-last
5
"Process BINDINGS and if all values are non-nil eval THEN, else ELSE.
Argument BINDINGS is a list of tuples whose car is a symbol to be
bound and (optionally) used in THEN, and its cadr is a sexp to be
-evaled to set symbol's value. In the special case you only want
+evalled to set symbol's value. In the special case you only want
to bind a single value, BINDINGS can just be a plain tuple."
- (declare (indent 2) (debug ((&rest (symbolp form)) form body)))
+ (declare (indent 2)
+ (debug ([&or (&rest (symbolp form)) (symbolp form)] form body)))
(when (and (<= (length bindings) 2)
(not (listp (car bindings))))
;; Adjust the single binding case
"Process BINDINGS and if all values are non-nil eval BODY.
Argument BINDINGS is a list of tuples whose car is a symbol to be
bound and (optionally) used in BODY, and its cadr is a sexp to be
-evaled to set symbol's value. In the special case you only want
+evalled to set symbol's value. In the special case you only want
to bind a single value, BINDINGS can just be a plain tuple."
(declare (indent 1) (debug if-let))
(list 'if-let bindings (macroexp-progn body)))
+(defsubst hash-table-empty-p (hash-table)
+ "Check whether HASH-TABLE is empty (has 0 elements)."
+ (zerop (hash-table-count hash-table)))
+
(defsubst hash-table-keys (hash-table)
"Return a list of keys in HASH-TABLE."
(let ((keys '()))
"Join all STRINGS using SEPARATOR."
(mapconcat 'identity strings separator))
-(defsubst string-reverse (str)
- "Reverse the string STR."
- (apply 'string (nreverse (string-to-list str))))
+(define-obsolete-function-alias 'string-reverse 'reverse "25.1")
(defsubst string-trim-left (string)
"Remove leading whitespace from STRING."