Skip to content

Commit 19d909b

Browse files
committed
Migrate to Eldev
Fix warnings from linters.
1 parent 5597eaf commit 19d909b

23 files changed

+282
-196
lines changed

.dir-locals.el

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
((emacs-lisp-mode
2-
(eval . (checkdoc-minor-mode))
3-
(indent-tabs-mode . nil)
4-
(fill-column . 80)
5-
(sentence-end-double-space . t)
6-
(emacs-lisp-docstring-fill-column . 75)))
1+
((emacs-lisp-mode . ((package-lint-main-file . "swift-mode.el")
2+
(eval . (checkdoc-minor-mode))
3+
(indent-tabs-mode . nil)
4+
(fill-column . 80)
5+
(tab-width . 8)
6+
(sentence-end-double-space . t)
7+
(emacs-lisp-docstring-fill-column . 75))))

.github/workflows/run-test.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Run Tests
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
continue-on-error: ${{matrix.emacs_version == 'snapshot'}}
13+
14+
strategy:
15+
matrix:
16+
version: ['24.4', '24.5', '25.1', '25.2', '25.3', '26.1', '26.2', '26.3', '27.1', 'snapshot']
17+
18+
env:
19+
ELDEV_DIR: .eldev
20+
ELDEV: .eldev/bin/eldev
21+
22+
steps:
23+
- uses: actions/checkout@v2
24+
- uses: purcell/setup-emacs@master
25+
with:
26+
version: ${{ matrix.version }}
27+
- name: Install Eldev
28+
run: |
29+
mkdir -p $ELDEV_DIR/bin
30+
curl -fsSL https://raw.github.com/doublep/eldev/master/bin/eldev > $ELDEV_DIR/bin/eldev
31+
chmod a+x $ELDEV_DIR/bin/eldev
32+
- name: Run linters
33+
run: find ./*.el test/*.el '!' -name '*autoloads.el' -exec ${ELDEV} lint '{}' '+'
34+
- name: Run tests
35+
run: ./scripts/run_test.sh

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
*~
2-
/.cask/
2+
/.eldev/
33
*.elc
44
/dist/
55
swift-mode-autoloads.el

.travis.yml

Lines changed: 0 additions & 31 deletions
This file was deleted.

Cask

Lines changed: 0 additions & 4 deletions
This file was deleted.

Eldev

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
;;; -*- mode: emacs-lisp; lexical-binding: t; no-byte-compile: t -*-
2+
3+
(eldev-use-package-archive 'gnu)
4+
(eldev-use-package-archive 'melpa)
5+
(setq elisp-lint-indent-specs
6+
'((swift-mode:with-temp-comment-buffer . 0)))
7+
8+
(setq-default package-lint-main-file "swift-mode.el")
9+
(setq-default indent-tabs-mode nil)
10+
(setq-default fill-column 80)
11+
(setq-default tab-width 8)
12+
13+
(with-eval-after-load 'package-lint
14+
(advice-add #'package-lint--check-symbol-separators :override
15+
(lambda (&rest args)
16+
t))
17+
(advice-add #'package-lint--valid-definition-name-p :around
18+
(lambda (oldfun name prefix &rest args)
19+
(or (equal name "run-swift")
20+
(apply oldfun name prefix args)))))
21+
22+
(defvar elisp-lint--url-in-document-regexp
23+
(concat "^"
24+
"[[:blank:]]*"
25+
"\\(?:;+\\|\"\\)?"
26+
"[[:blank:]]*"
27+
"https?://"
28+
"[][;,/?:@&=+$_.!~*'()#%[:alnum:]-]+"
29+
"[[:blank:]]*\"?[[:blank:]]*"
30+
"[[:blank:]]*)*[[:blank:]]*"
31+
"$")
32+
"This regexp must match a URL in comments or strings.")
33+
34+
(with-eval-after-load 'elisp-lint
35+
(advice-add
36+
#'elisp-lint--fill-column :override
37+
;; Copied from elisp-lint.el and modified.
38+
;; Copyright (C) 2013-2015 Nikolaj Schumacher
39+
;; Copyright (C) 2018-2020 Neil Okamoto
40+
;; GPL2+.
41+
;; https://github.com/gonewest818/elisp-lint/
42+
(lambda (&rest args)
43+
(save-excursion
44+
(let ((line-number 1)
45+
(too-long-lines nil))
46+
(goto-char (point-min))
47+
(while (not (eobp))
48+
(let ((text (buffer-substring-no-properties
49+
(line-beginning-position)
50+
(line-end-position))))
51+
(when
52+
(and (not
53+
(string-match elisp-lint--package-summary-regexp text))
54+
(not
55+
(string-match elisp-lint--package-requires-regexp text))
56+
(not
57+
(string-match elisp-lint--url-in-document-regexp text))
58+
(> (length text) fill-column))
59+
(push (list line-number 0 'fill-column
60+
(format "line length %s exceeded" fill-column))
61+
too-long-lines)))
62+
(setq line-number (1+ line-number))
63+
(forward-line 1))
64+
too-long-lines)))))

Makefile

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
CASK ?= cask
2-
EMACS ?= emacs
3-
VERSION := $(shell EMACS=$(EMACS) $(CASK) version)
1+
ELDEV_DIR ?= .eldev
2+
ELDEV ?= eldev
43

5-
SRC = $(wildcard *.el)
6-
PACKAGE = dist/swift-mode-$(VERSION).tar
4+
INVOKE_ELDEV = ELDEV_DIR="${ELDEV_DIR}" ELDEV="${ELDEV}" ./scripts/invoke_eldev.sh
75

8-
.PHONY: help all deps package install test clean
6+
.PHONY: help all deps package install clean test test_in_docker lint
97

108
help:
119
## Shows this message.
@@ -18,43 +16,39 @@ help:
1816
# - Replace /^## / to " ".
1917
# - Remove other comment lines.
2018
# - Insert newline before rules.
21-
@sed -e '/^\s*$$/d; /^[ .A-Z]/d; /## no-doc/d; s/^\([^#][^:]*\):.*/\1/; s/^## / /; /^#/d; s/^[^ ]/\n&/' Makefile
19+
@sed -e '/^\s*$$/d; /^[ _.A-Z]/d; /## no-doc/d; s/^\([^#][^:]*\):.*/\1/; s/^## / /; /^#/d; s/^[^ ]/\n&/' Makefile
2220

2321
all: package
2422
## Builds the package.
2523

2624
deps:
2725
## Installs the dependencies.
28-
$(CASK) install
26+
${INVOKE_ELDEV} prepare
2927

30-
$(PACKAGE): $(SRC) deps ## no-doc
31-
rm -rf dist
32-
$(CASK) package
33-
34-
package: $(PACKAGE)
28+
package:
3529
## Builds the package.
30+
${INVOKE_ELDEV} package
3631

3732
install: package
3833
## Installs the package.
39-
$(CASK) exec $(EMACS) --batch \
34+
${INVOKE_ELDEV} emacs --batch \
4035
-l package \
4136
-f package-initialize \
4237
-f package-refresh-contents \
43-
--eval '(package-install-file "$(PACKAGE)")'
38+
--eval '(package-install-file "'"$$( ls dist/*.tar | sort | tail -n 1 )"'")'
4439

4540
clean:
46-
## Cleans the dist directory and *.elc.
47-
rm -rf dist *.elc
41+
## Cleans the dist directory, *.elc, and .eldev.
42+
${INVOKE_ELDEV} clean all
4843

4944
test:
5045
## Tests the package.
51-
$(CASK) exec $(EMACS) --batch -q \
52-
--eval "(add-to-list 'load-path \""$(shell readlink -f .)"\")" \
53-
--eval "(add-to-list 'load-path \""$(shell readlink -f .)"/test\")" \
54-
-f batch-byte-compile \
55-
*.el
56-
$(CASK) exec $(EMACS) --batch -q \
57-
--eval "(add-to-list 'load-path \""$(shell readlink -f .)"\")" \
58-
--eval "(add-to-list 'load-path \""$(shell readlink -f .)"/test\")" \
59-
-l test/swift-mode-test.el \
60-
-f swift-mode:run-test
46+
ELDEV_DIR="${ELDEV_DIR}" ELDEV="${ELDEV}" ./scripts/run_test.sh
47+
48+
test_in_docker:
49+
## Run tests in Docker.
50+
./scripts/test_in_docker.sh
51+
52+
lint:
53+
## Run linters.
54+
find ./*.el test/*.el '!' -name '*autoloads.el' -exec env ${INVOKE_ELDEV} lint '{}' '+'

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[![License GPL 3][badge-license]][copying]
2-
[![Build Status][badge-travis]][travis]
2+
[![Run Tests][badge-run-test]][action-run-test]
33
[![MELPA](https://melpa.org/packages/swift-mode-badge.svg)](https://melpa.org/#/swift-mode)
44
[![MELPA](https://stable.melpa.org/packages/swift-mode-badge.svg)](https://melpa.org/#/swift-mode)
55

@@ -222,6 +222,6 @@ Thanks to [@purcell](https://github.com/purcell) (Steve Purcell) for advices on
222222
GPLv3. See [COPYING][] for details. Copyright (C) 2014-2016 taku0, Chris Barrett, Bozhidar Batsov, Arthur Evstifeev.
223223

224224
[badge-license]: https://img.shields.io/badge/license-GPL_3-green.svg
225-
[badge-travis]: https://travis-ci.org/swift-emacs/swift-mode.png?branch=master
226-
[travis]: https://travis-ci.org/swift-emacs/swift-mode
225+
[badge-run-test]: https://github.com/swift-emacs/swift-mode/workflows/Run%20Tests/badge.svg
226+
[action-run-test]: https://github.com/swift-emacs/swift-mode/actions?query=workflow%3A%22Run+Tests%22
227227
[COPYING]: ./COPYING

scripts/invoke_eldev.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/sh
2+
3+
# A little wrapper for eldev. Used in Makefile.
4+
# If ${ELDEV} is executable, use it.
5+
# Otherwise, download the eldev to .eldev/bin/eldev if not exists, then
6+
# execute it.
7+
8+
if command -v "${ELDEV}" > /dev/null
9+
then
10+
"${ELDEV}" "$@"
11+
elif command -v .eldev/bin/eldev > /dev/null
12+
then
13+
.eldev/bin/eldev "$@"
14+
else
15+
mkdir -p ./.eldev/bin || exit 1
16+
curl -fsSL https://raw.github.com/doublep/eldev/master/bin/eldev -o .eldev/bin/eldev || exit 1
17+
chmod a+x .eldev/bin/eldev || exit 1
18+
.eldev/bin/eldev "$@"
19+
fi

scripts/run_test.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/sh
2+
3+
# Run tests. Used in Makefile.
4+
5+
./scripts/invoke_eldev.sh emacs --version || exit 1
6+
./scripts/invoke_eldev.sh emacs --batch -q \
7+
--eval "(add-to-list 'load-path \"$(readlink -f .)\")" \
8+
--eval "(add-to-list 'load-path \"$(readlink -f .)/test\")" \
9+
-f batch-byte-compile \
10+
./*.el || exit 1
11+
./scripts/invoke_eldev.sh emacs --batch -q \
12+
--eval "(add-to-list 'load-path \"$(readlink -f .)\")" \
13+
--eval "(add-to-list 'load-path \"$(readlink -f .)/test\")" \
14+
-l test/swift-mode-test.el \
15+
-f swift-mode:run-test

0 commit comments

Comments
 (0)