* Reporting issues

Before reporting a bug, please take a look at:
- the [[https://github.com/abo-abo/swiper/blob/master/README.md][FAQ]]
- the [[https://elpa.gnu.org/packages/doc/ivy.html][manual]]
- the [[https://github.com/abo-abo/swiper/wiki][wiki]]
- the [[https://github.com/abo-abo/swiper/issues][open issues]]

To understand what's going on, we need a reproducible bug scenario.
It is important that we can rule out interference with other Emacs
packages or customizations, therefore use =emacs -Q= to bypass your
init file.

This shortcut will start =emacs -Q= for you with =ivy-mode= already
loaded:
#+begin_src sh
  git clone 'https://github.com/abo-abo/swiper.git'
  cd swiper
  make deps plain
#+end_src

* Contributing code
Here are the important settings for code style:
#+begin_src elisp
(setq indent-tabs-mode nil)
(require 'cl-indent)
(setq lisp-indent-function #'common-lisp-indent-function)
(put 'if 'common-lisp-indent-function 2)
(put 'defface 'common-lisp-indent-function 1)
(put 'defalias 'common-lisp-indent-function 1)
(put 'define-minor-mode 'common-lisp-indent-function 1)
(put 'define-derived-mode 'common-lisp-indent-function 3)
(put 'cl-flet 'common-lisp-indent-function
     (get 'flet 'common-lisp-indent-function))
(put 'cl-labels 'common-lisp-indent-function
     (get 'labels 'common-lisp-indent-function))
#+end_src

The setting for =indent-tabs-mode= is automatically applied by
=.dir-locals.el=.  Emacs produces a warning when setting
=lisp-indent-function= in =.dir-locals.el=, so that line is commented
out.  Please uncomment it and add the following code to disable the
warning:

#+begin_src elisp
(add-to-list 'safe-local-variable-values
             '(lisp-indent-function . common-lisp-indent-function))
#+end_src

Before submitting a change, run:
- =make compile= - check for new compilation warnings
- =make deps= - install dependencies for testing
- =make test= - check for failing tests
- =make check-declare= - check accuracy of function declarations
- =make checkdoc= - check documentation guidelines

Use your own judgment for the commit messages.  I recommend a verbose
style using =magit-commit-add-log=.

* Copyright Assignment
These packages are subject to the same [[https://www.gnu.org/prep/maintain/html_node/Copyright-Papers.html][Copyright Assignment]] policy as
Emacs itself, Org Mode, CEDET and other packages in [[https://elpa.gnu.org/packages/][GNU ELPA]].

Any [[https://www.gnu.org/prep/maintain/html_node/Legally-Significant.html#Legally-Significant][legally significant]] contributions can only be accepted after the
author has completed their paperwork.  Please see [[https://git.savannah.gnu.org/cgit/gnulib.git/tree/doc/Copyright/request-assign.future][the request form]] if
you want to proceed with the assignment.

The copyright assignment isn't a big deal, it just says that the
copyright for your submitted changes to Emacs belongs to the FSF.
This assignment works for all projects related to Emacs.  To obtain it
you need to:
- send one email
- then send one letter (in certain countries, it's digital)
- wait for some time (in my case, I had to wait for one month; but
  recently it's less than a week)
