[elpa] master cb2d5b2 2/2: Merge commit '3659f0267f1a70a7141b7d53d8a0696d40247c08'

2016-05-04 Thread Artur Malabarba
branch: master
commit cb2d5b29dbdf0aab7f4804438e53bfa1a4dcd82d
Merge: f94daca 3659f02
Author: Artur Malabarba 
Commit: Artur Malabarba 

Merge commit '3659f0267f1a70a7141b7d53d8a0696d40247c08'
---
 packages/validate/validate.el |7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/packages/validate/validate.el b/packages/validate/validate.el
index 8408b63..7dfe45b 100644
--- a/packages/validate/validate.el
+++ b/packages/validate/validate.el
@@ -5,7 +5,7 @@
 ;; Author: Artur Malabarba 
 ;; Keywords: lisp
 ;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
-;; Version: 0.2
+;; Version: 0.3
 
 ;;; Commentary:
 ;;
@@ -182,5 +182,10 @@ with `validate-value'. NOERROR is passed to 
`validate-value'."
(lambda (val)
  (validate-value val (custom-variable-type symbol) 'noerror
 
+(defmacro validate-setq (symbol value)
+  "Like `setq', but throw an error if validation fails.
+VALUE is validated against SYMBOL's custom type."
+  `(setq ,symbol (validate-value ,value (custom-variable-type ',symbol
+
 (provide 'validate)
 ;;; validate.el ends here



[elpa] master 3659f02 1/2: Add validate-setq

2016-05-04 Thread Artur Malabarba
branch: master
commit 3659f0267f1a70a7141b7d53d8a0696d40247c08
Author: Artur Malabarba 
Commit: Artur Malabarba 

Add validate-setq
---
 validate.el |7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/validate.el b/validate.el
index 8408b63..7dfe45b 100644
--- a/validate.el
+++ b/validate.el
@@ -5,7 +5,7 @@
 ;; Author: Artur Malabarba 
 ;; Keywords: lisp
 ;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
-;; Version: 0.2
+;; Version: 0.3
 
 ;;; Commentary:
 ;;
@@ -182,5 +182,10 @@ with `validate-value'. NOERROR is passed to 
`validate-value'."
(lambda (val)
  (validate-value val (custom-variable-type symbol) 'noerror
 
+(defmacro validate-setq (symbol value)
+  "Like `setq', but throw an error if validation fails.
+VALUE is validated against SYMBOL's custom type."
+  `(setq ,symbol (validate-value ,value (custom-variable-type ',symbol
+
 (provide 'validate)
 ;;; validate.el ends here



[elpa] master de55883 4/7: Fix license

2016-05-04 Thread Artur Malabarba
branch: master
commit de55883970f631196ae8c8f7b0531bd92151b74e
Author: Artur Malabarba 
Commit: Artur Malabarba 

Fix license
---
 validate.el |   33 ++---
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/validate.el b/validate.el
index 0482be3..1ded67b 100644
--- a/validate.el
+++ b/validate.el
@@ -7,19 +7,6 @@
 ;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
 ;; Version: 0.1
 
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see .
-
 ;;; Commentary:
 ;;
 ;; This library offers two functions that perform schema validation.
@@ -45,10 +32,26 @@
 ;; matches.  The function `validate-variable' verifies whether the value of a
 ;; custom variable matches its custom-type, while `validate-value' checks an
 ;; arbitrary value against an arbitrary schema.
+;;
+;; Missing features: `:inline', `plist', `coding-system', `color',
+;; `hook', `restricted-sexp'.
 
-;;; Todo:
+;;; License:
 ;;
-;; :inline, `plist',`coding-system',`color',`hook',`restricted-sexp'.
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see .
 
 ;;; Code:
 (require 'cl-lib)



[elpa] master f94daca 7/7: Add 'packages/validate/' from commit '95865f28b0f0b6386b8dcdf2b084f1cd79ffab0d'

2016-05-04 Thread Artur Malabarba
branch: master
commit f94daca2487f73330315b06debd2cefe9fce7cae
Merge: 76b6d32 95865f2
Author: Artur Malabarba 
Commit: Artur Malabarba 

Add 'packages/validate/' from commit 
'95865f28b0f0b6386b8dcdf2b084f1cd79ffab0d'

git-subtree-dir: packages/validate
git-subtree-mainline: 76b6d32e155b55a79d23c15f37cc5d6a647e8f83
git-subtree-split: 95865f28b0f0b6386b8dcdf2b084f1cd79ffab0d
---
 packages/validate/validate.el |  186 +
 1 file changed, 186 insertions(+)

diff --git a/packages/validate/validate.el b/packages/validate/validate.el
new file mode 100644
index 000..8408b63
--- /dev/null
+++ b/packages/validate/validate.el
@@ -0,0 +1,186 @@
+;;; validate.el --- Schema validation for Emacs-lisp  -*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2016  Free Software Foundation, Inc.
+
+;; Author: Artur Malabarba 
+;; Keywords: lisp
+;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
+;; Version: 0.2
+
+;;; Commentary:
+;;
+;; This library offers two functions that perform schema validation.
+;; Use this is your Elisp packages to provide very informative error
+;; messages when your users accidentally misconfigure a variable.
+;; For instance, if everything is fine, these do the same thing:
+;;
+;;   1.  (validate-variable 'cider-known-endpoints)
+;;   2.  cider-known-endpoints
+;;
+;; However, if the user has misconfigured this variable, option
+;; 1. will immediately give them an informative error message, while
+;; option 2. won't say anything and will lead to confusing errors down
+;; the line.
+;;
+;; The format and language of the schemas is the same one used in the
+;; `:type' property of a `defcustom'.
+;;
+;; See: (info "(elisp) Customization Types")
+;;
+;; Both functions throw a `user-error' if the value in question
+;; doesn't match the schema, and return the value itself if it
+;; matches.  The function `validate-variable' verifies whether the value of a
+;; custom variable matches its custom-type, while `validate-value' checks an
+;; arbitrary value against an arbitrary schema.
+;;
+;; Missing features: `:inline', `plist', `coding-system', `color',
+;; `hook', `restricted-sexp'.
+
+;;; License:
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see .
+
+;;; Code:
+(require 'cl-lib)
+(require 'seq)
+(require 'cus-edit)
+
+(defun validate--check-list-contents (values schemas)
+  "Check that all VALUES match all SCHEMAS."
+  (if (not (= (length values) (length schemas)))
+  "wrong number of elements"
+(seq-find #'identity (seq-mapn #'validate--check values schemas
+
+(defun validate--check (value schema)
+  "Return nil if VALUE matches SCHEMA.
+If they don't match, return an explanation."
+  (let ((args (cdr-safe schema))
+(expected-type (or (car-safe schema) schema))
+(props nil))
+(while (and (keywordp (car args)) (cdr args))
+  (setq props `(,(pop args) ,(pop args) ,@props)))
+(setq args (or (plist-get props :args)
+   args))
+(let ((r
+   (cl-labels ((wtype   ;wrong-type
+(tt) (unless (funcall (intern (format "%sp" tt)) value)
+   (format "not a %s" tt
+ ;; TODO: hook (top-level only).
+ (cl-case expected-type
+   ((sexp other) nil)
+   (variable (cond ((wtype 'symbol))
+   ((not (boundp value)) "this symbol has no 
variable binding")))
+   ((integer number float string character symbol function boolean 
face)
+(wtype expected-type))
+   (regexp (cond ((ignore-errors (string-match value "") t) nil)
+ ((wtype 'string))
+ (t "not a valid regexp")))
+   (repeat (cond
+((or (not args) (cdr args)) (error "`repeat' needs 
exactly one argument"))
+((wtype 'list))
+(t (let ((subschema (car args)))
+ (seq-some (lambda (v) (validate--check v 
subschema)) value)
+   ((const function-item variable-item) (unless (eq value (car 
args))
+  "not the expected 
value"))
+  

[elpa] master dfae733 3/7: Add TODO

2016-05-04 Thread Artur Malabarba
branch: master
commit dfae733bf0cea4988a23ab18f5b0c2a8d16682ca
Author: Artur Malabarba 
Commit: Artur Malabarba 

Add TODO
---
 validate.el |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/validate.el b/validate.el
index ef628e9..0482be3 100644
--- a/validate.el
+++ b/validate.el
@@ -21,7 +21,7 @@
 ;; along with this program.  If not, see .
 
 ;;; Commentary:
-
+;;
 ;; This library offers two functions that perform schema validation.
 ;; Use this is your Elisp packages to provide very informative error
 ;; messages when your users accidentally misconfigure a variable.
@@ -46,6 +46,10 @@
 ;; custom variable matches its custom-type, while `validate-value' checks an
 ;; arbitrary value against an arbitrary schema.
 
+;;; Todo:
+;;
+;; :inline, `plist',`coding-system',`color',`hook',`restricted-sexp'.
+
 ;;; Code:
 (require 'cl-lib)
 (require 'seq)
@@ -68,7 +72,7 @@ If they don't match, return an explanation."
 (setq args (or (plist-get props :args)
args))
 (let ((r
-   (cl-labels ((wtype ;wrong-type
+   (cl-labels ((wtype   ;wrong-type
 (tt) (unless (funcall (intern (format "%sp" tt)) value)
(format "not a %s" tt
  ;; TODO: hook (top-level only).



[elpa] master updated (76b6d32 -> f94daca)

2016-05-04 Thread Artur Malabarba
malabarba pushed a change to branch master.

  from  76b6d32   packages/arbitools.el: Removed unused variables
   new  ae969be   First commit
   new  2407815   First release
   new  dfae733   Add TODO
   new  de55883   Fix license
   new  dbafdb9   Add validate-mark-safe-local
   new  95865f2   Fix copyright
   new  f94daca   Add 'packages/validate/' from commit 
'95865f28b0f0b6386b8dcdf2b084f1cd79ffab0d'


Summary of changes:
 packages/validate/validate.el |  186 +
 1 file changed, 186 insertions(+)
 create mode 100644 packages/validate/validate.el



[elpa] master 95865f2 6/7: Fix copyright

2016-05-04 Thread Artur Malabarba
branch: master
commit 95865f28b0f0b6386b8dcdf2b084f1cd79ffab0d
Author: Artur Malabarba 
Commit: Artur Malabarba 

Fix copyright
---
 validate.el |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/validate.el b/validate.el
index 9eebe9a..8408b63 100644
--- a/validate.el
+++ b/validate.el
@@ -1,11 +1,11 @@
 ;;; validate.el --- Schema validation for Emacs-lisp  -*- lexical-binding: t; 
-*-
 
-;; Copyright (C) 2016  Artur Malabarba
+;; Copyright (C) 2016  Free Software Foundation, Inc.
 
 ;; Author: Artur Malabarba 
 ;; Keywords: lisp
 ;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
-;; Version: 0.1
+;; Version: 0.2
 
 ;;; Commentary:
 ;;



[elpa] master 2407815 2/7: First release

2016-05-04 Thread Artur Malabarba
branch: master
commit 24078157b6a5b0b7dbb830e4242dd715dcf89e32
Author: Artur Malabarba 
Commit: Artur Malabarba 

First release
---
 validate.el |   38 --
 1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/validate.el b/validate.el
index 3afe7b7..ef628e9 100644
--- a/validate.el
+++ b/validate.el
@@ -4,6 +4,8 @@
 
 ;; Author: Artur Malabarba 
 ;; Keywords: lisp
+;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
+;; Version: 0.1
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -20,9 +22,34 @@
 
 ;;; Commentary:
 
+;; This library offers two functions that perform schema validation.
+;; Use this is your Elisp packages to provide very informative error
+;; messages when your users accidentally misconfigure a variable.
+;; For instance, if everything is fine, these do the same thing:
 ;;
+;;   1.  (validate-variable 'cider-known-endpoints)
+;;   2.  cider-known-endpoints
+;;
+;; However, if the user has misconfigured this variable, option
+;; 1. will immediately give them an informative error message, while
+;; option 2. won't say anything and will lead to confusing errors down
+;; the line.
+;;
+;; The format and language of the schemas is the same one used in the
+;; `:type' property of a `defcustom'.
+;;
+;; See: (info "(elisp) Customization Types")
+;;
+;; Both functions throw a `user-error' if the value in question
+;; doesn't match the schema, and return the value itself if it
+;; matches.  The function `validate-variable' verifies whether the value of a
+;; custom variable matches its custom-type, while `validate-value' checks an
+;; arbitrary value against an arbitrary schema.
 
 ;;; Code:
+(require 'cl-lib)
+(require 'seq)
+(require 'cus-edit)
 
 (defun validate--check-list-contents (values schemas)
   "Check that all VALUES match all SCHEMAS."
@@ -33,8 +60,7 @@
 (defun validate--check (value schema)
   "Return nil if VALUE matches SCHEMA.
 If they don't match, return an explanation."
-  (let ((fail (list schema value))
-(args (cdr-safe schema))
+  (let ((args (cdr-safe schema))
 (expected-type (or (car-safe schema) schema))
 (props nil))
 (while (and (keywordp (car args)) (cdr args))
@@ -43,8 +69,8 @@ If they don't match, return an explanation."
args))
 (let ((r
(cl-labels ((wtype ;wrong-type
-(t) (unless (funcall (intern (format "%sp" t)) value)
-  (format "not a %s" t
+(tt) (unless (funcall (intern (format "%sp" tt)) value)
+   (format "not a %s" tt
  ;; TODO: hook (top-level only).
  (cl-case expected-type
((sexp other) nil)
@@ -52,7 +78,7 @@ If they don't match, return an explanation."
((not (boundp value)) "this symbol has no 
variable binding")))
((integer number float string character symbol function boolean 
face)
 (wtype expected-type))
-   (regexp (cond ((ignore-errors (string-match re "") t) nil)
+   (regexp (cond ((ignore-errors (string-match value "") t) nil)
  ((wtype 'string))
  (t "not a valid regexp")))
(repeat (cond
@@ -90,7 +116,7 @@ If they don't match, return an explanation."
   (t (validate--check value
   `(repeat (cons ,key-type 
,value-type)))
;; TODO: `plist'
-   ((choice radio) (if (not (cdr choice))
+   ((choice radio) (if (not (cdr args))
(error "`choice' needs at least one 
argument")
  (let ((gather (mapcar (lambda (x) 
(validate--check value x)) args)))
(when (seq-every-p #'identity gather)



[elpa] master dbafdb9 5/7: Add validate-mark-safe-local

2016-05-04 Thread Artur Malabarba
branch: master
commit dbafdb904b48e72620f066a5c7cb0a123fc64baa
Author: Artur Malabarba 
Commit: Artur Malabarba 

Add validate-mark-safe-local
---
 validate.el |7 +++
 1 file changed, 7 insertions(+)

diff --git a/validate.el b/validate.el
index 1ded67b..9eebe9a 100644
--- a/validate.el
+++ b/validate.el
@@ -175,5 +175,12 @@ with `validate-value'. NOERROR is passed to 
`validate-value'."
   (if noerror val
 (error "Variable `%s' has no custom-type." symbol)
 
+;;;###autoload
+(defun validate-mark-safe-local (symbol)
+  "Mark SYMBOL as a safe local if its custom type is obeyed."
+  (put symbol 'safe-local-variable
+   (lambda (val)
+ (validate-value val (custom-variable-type symbol) 'noerror
+
 (provide 'validate)
 ;;; validate.el ends here



[elpa] master ae969be 1/7: First commit

2016-05-04 Thread Artur Malabarba
branch: master
commit ae969bee7965e5c4d05ef05394d1d663c274c631
Author: Artur Malabarba 
Commit: Artur Malabarba 

First commit
---
 validate.el |  146 +++
 1 file changed, 146 insertions(+)

diff --git a/validate.el b/validate.el
new file mode 100644
index 000..3afe7b7
--- /dev/null
+++ b/validate.el
@@ -0,0 +1,146 @@
+;;; validate.el --- Schema validation for Emacs-lisp  -*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2016  Artur Malabarba
+
+;; Author: Artur Malabarba 
+;; Keywords: lisp
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see .
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defun validate--check-list-contents (values schemas)
+  "Check that all VALUES match all SCHEMAS."
+  (if (not (= (length values) (length schemas)))
+  "wrong number of elements"
+(seq-find #'identity (seq-mapn #'validate--check values schemas
+
+(defun validate--check (value schema)
+  "Return nil if VALUE matches SCHEMA.
+If they don't match, return an explanation."
+  (let ((fail (list schema value))
+(args (cdr-safe schema))
+(expected-type (or (car-safe schema) schema))
+(props nil))
+(while (and (keywordp (car args)) (cdr args))
+  (setq props `(,(pop args) ,(pop args) ,@props)))
+(setq args (or (plist-get props :args)
+   args))
+(let ((r
+   (cl-labels ((wtype ;wrong-type
+(t) (unless (funcall (intern (format "%sp" t)) value)
+  (format "not a %s" t
+ ;; TODO: hook (top-level only).
+ (cl-case expected-type
+   ((sexp other) nil)
+   (variable (cond ((wtype 'symbol))
+   ((not (boundp value)) "this symbol has no 
variable binding")))
+   ((integer number float string character symbol function boolean 
face)
+(wtype expected-type))
+   (regexp (cond ((ignore-errors (string-match re "") t) nil)
+ ((wtype 'string))
+ (t "not a valid regexp")))
+   (repeat (cond
+((or (not args) (cdr args)) (error "`repeat' needs 
exactly one argument"))
+((wtype 'list))
+(t (let ((subschema (car args)))
+ (seq-some (lambda (v) (validate--check v 
subschema)) value)
+   ((const function-item variable-item) (unless (eq value (car 
args))
+  "not the expected 
value"))
+   (file (cond ((wtype 'string))
+   ((file-exists-p value) nil)
+   ((plist-get props :must-match) "file does not 
exist")
+   ((not (file-writable-p value)) "file is not 
accessible")))
+   (directory (cond ((wtype 'string))
+((file-directory-p value) nil)
+((file-exists-p value) "path is not a 
directory")
+((not (file-writable-p value)) "directory is 
not accessible")))
+   (key-sequence (and (wtype 'string)
+  (wtype 'vector)))
+   ;; TODO: `coding-system', `color'
+   (coding-system (wtype 'symbol))
+   (color (wtype 'string))
+   (cons (or (wtype 'cons)
+ (validate--check (car value) (car args))
+ (validate--check (cdr value) (cadr args
+   ((list group) (or (wtype 'list)
+ (validate--check-list-contents value args)))
+   (vector (or (wtype 'vector)
+   (validate--check-list-contents value args)))
+   (alist (let ((value-type (plist-get props :value-type))
+(key-type (plist-get props :key-type)))
+(cond ((not value-type) (error "`alist' needs a 
:value-type"))
+  ((not key-type) (error "`alist' needs a 
:key-type"))
+  ((wtype 'list))
+  (t (validate--check value
+ 

[elpa] master 76b6d32: packages/arbitools.el: Removed unused variables

2016-05-04 Thread David Gonzalez Gandara
branch: master
commit 76b6d32e155b55a79d23c15f37cc5d6a647e8f83
Author: David Gonzalez Gandara 
Commit: David Gonzalez Gandara 

packages/arbitools.el: Removed unused variables
---
 packages/arbitools/arbitools.el |9 +++--
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/packages/arbitools/arbitools.el b/packages/arbitools/arbitools.el
index 76fe0bc..f749bfb 100644
--- a/packages/arbitools/arbitools.el
+++ b/packages/arbitools/arbitools.el
@@ -3,7 +3,7 @@
 ;; Copyright 2016 Free Software Foundation, Inc.
 
 ;; Author: David Gonzalez Gandara 
-;; Version: 0.70
+;; Version: 0.71
 ;; Package-Requires: ((cl-lib "0.5"))
 
 ;; This program is free software: you can redistribute it and/or modify
@@ -273,7 +273,6 @@
   (interactive)
   (save-excursion
 (let ( (numberofrounds (arbitools-number-of-rounds))
-   (pointsstring   "")
(points 0.0)
(pointstosum0.0)
(roundcount 1))
@@ -284,7 +283,6 @@
 (while (<= roundcount numberofrounds)
   (beginning-of-line)
  (forward-char (+ 98 (* (- roundcount 1) 10))) ;; go to where the 
result is for each round
-  (setq pointsstring (thing-at-point 'symbol))
   (cond ((string= (thing-at-point 'symbol) "1") (setq pointstosum 1.0))
 ((string= (thing-at-point 'symbol) "+") (setq pointstosum 1.0))
 ((string= (thing-at-point 'symbol) "=") (setq pointstosum 0.5))
@@ -310,7 +308,7 @@
 (let ((datachunk ""))
   (goto-char (point-min))
   (while (re-search-forward "^001" nil t)
-(let* ((linestring (thing-at-point 'line)))
+(let* ()
   (beginning-of-line)
   (forward-char 89) ;; get the POS field
   (setq datachunk (thing-at-point 'word))
@@ -411,7 +409,6 @@
  (save-excursion 
(while (re-search-forward "^013" nil t)
 (let* ((linestringteam (thing-at-point 'line))
-  (actualintegrant (string-to-number (substring 
linestringteam 40 44)))
   (integrantcount 0)
   (members 0))
 
@@ -457,7 +454,7 @@
   (insert (concat (number-to-string numberofratedplayers) "\n")))
 
 (defun arbitools-delete-round (round)
-   "Delete a round." ;; FIXME: it breaks when round is the last
+   "Delete a round."
(interactive "sround: ")
(save-excursion
 (goto-char (point-min))