Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cider-eldoc-beginning-of-sexp is slow in large buffers #1820

Closed
leppert opened this issue Aug 9, 2016 · 11 comments
Closed

cider-eldoc-beginning-of-sexp is slow in large buffers #1820

leppert opened this issue Aug 9, 2016 · 11 comments

Comments

@leppert
Copy link

leppert commented Aug 9, 2016

cider-eldoc-beginning-of-sexp can cause Emacs to hang / freeze when visiting large buffers.

Test file (adjust the range end to taste):

(->>
  (map #(hash-map :foo % :bar %) (range 1 300000))
  clojure.pprint/pprint
  with-out-str
  (spit "test.edn"))

Visit the resulting test.edn file with cider-mode and eldoc-mode enabled and a repl session running, then jump from the beginning of the buffer to the end of the buffer. On my system, this causes Emacs to freeze. Disabling cider-mode is not enough as the cider-eldoc functions are still called even after cider-mode has been disabled for the buffer (is this expected?). Eldoc must be disabled or the repl session must be terminated before performance will return to normal.

This appears similar to what was addressed in #1502

Profile report:

- redisplay_internal (C function)                               10809 100%
 - debug                                                        10809 100%
  - recursive-edit                                              10797  99%
   - timer-event-handler                                        10625  98%
    - apply                                                     10625  98%
     - #<compiled 0x400e5859>                                   10623  98%
      - eldoc-print-current-symbol-info                         10623  98%
       - cider-eldoc                                            10623  98%
        - cider-eldoc-info-in-current-sexp                      10623  98%
         - cider-eldoc-info-at-point                             5424  50%
          - cider-eldoc-beginning-of-sexp                        5424  50%
             forward-sexp                                        5423  50%
         - cider-eldoc-info-at-sexp-beginning                    5199  48%
          - cider-eldoc-beginning-of-sexp                        5199  48%
             forward-sexp                                        5199  48%
     + show-paren-function                                          2   0%
   + command-execute                                              160   1%
+ ...                                                               0   0%

Environment & Version information

CIDER version information

;; CIDER 0.14.0snapshot (package: 20160806.2354), nREPL 0.2.12
;; Clojure 1.8.0, Java 1.8.0_40

Lein/Boot version

Leiningen 2.6.1 on Java 1.8.0_40 Java HotSpot(TM) 64-Bit Server VM

Emacs version

GNU Emacs 25.1.1 (x86_64-apple-darwin15.6.0, NS appkit-1404.47 Version 10.11.6 (Build 15G31)) of 2016-07-29

Operating system

Mac OS X 10.11.6

@bbatsov
Copy link
Member

bbatsov commented Oct 7, 2016

I wonder what's the best approach here. I see two options:

  • disable eldoc completely in edn buffer (which seems reasonable to me)
  • set some limit about the size of the sexp when looking for its beginning (in actual code it's unlikely there would be more than a few levels of sexp nesting)

What do you think?

@bbatsov
Copy link
Member

bbatsov commented Oct 7, 2016

Actually a while back we introduced cider-eldoc-max-num-sexps-to-skip which addresses the second option. It's set to 30 by default. I wonder if your performance issues would go away if it was 10.

But the bigger question is whether eldoc is really needed in EDN buffers.

@leppert
Copy link
Author

leppert commented Oct 7, 2016

@bbatsov I certainly don't need eldoc in EDN buffers, so that sounds reasonable to me as well. My anecdotal test on setting cider-eldoc-max-num-sexps-to-skip to 10 didn't seem to have much of an improvement, but I'll try to run benchmarks later to confirm.

@bbatsov
Copy link
Member

bbatsov commented Oct 7, 2016

@rfkm, you're welcome to join the conversation here.

@bbatsov
Copy link
Member

bbatsov commented Oct 7, 2016

I've committed a change that disables eldoc for EDN buffers. Guess you can try it out.

@leppert
Copy link
Author

leppert commented Oct 7, 2016

The EDN changes worked perfectly, thanks. I did an extremely rough benchmark of the cider-eldoc-max-num-sexps-to-skip settings and saw essentially no difference, though I'll admit they're rough enough to remain anecdotal.

(setq cider-eldoc-max-num-sexps-to-skip 30)
- timer-event-handler                                           17801  68%
 - apply                                                        17801  68%
  - #<compiled 0x400e608f>                                      17653  67%
   - eldoc-print-current-symbol-info                            17653  67%
    - cider-eldoc                                               17653  67%
     - cider-eldoc-info-in-current-sexp                         17653  67%
      - cider-eldoc-info-at-point                               10055  38%
       - cider-eldoc-beginning-of-sexp                           7174  27%
          forward-sexp                                           7173  27%
       - cider-in-comment-p                                      2881  11%
        - beginning-of-defun                                     2870  10%
           beginning-of-defun-raw                                2870  10%
      - cider-eldoc-info-at-sexp-beginning                       7598  29%
       - cider-eldoc-beginning-of-sexp                           7598  29%
          forward-sexp                                           7597  29%
  + wordcount-update-word-count                                   148   0%
+ command-execute                                                8290  31%
+ redisplay_internal (C function)                                   2   0%
+ ...                                                               0   0%
(setq cider-eldoc-max-num-sexps-to-skip 10)
- timer-event-handler                                           21980  69%
 - apply                                                        21980  69%
  - #<compiled 0x400e608f>                                      21762  69%
   - eldoc-print-current-symbol-info                            21762  69%
    - cider-eldoc                                               21762  69%
     - cider-eldoc-info-in-current-sexp                         21762  69%
      - cider-eldoc-info-at-point                               13431  42%
       - cider-eldoc-beginning-of-sexp                           9571  30%
          forward-sexp                                           9571  30%
       - cider-in-comment-p                                      3860  12%
        - beginning-of-defun                                     3832  12%
           beginning-of-defun-raw                                3832  12%
      - cider-eldoc-info-at-sexp-beginning                       8331  26%
       - cider-eldoc-beginning-of-sexp                           8331  26%
          forward-sexp                                           8330  26%
  + wordcount-update-word-count                                   218   0%
+ command-execute                                                9534  30%
+ redisplay_internal (C function)                                   3   0%
+ ...                                                               0   0%

@bbatsov
Copy link
Member

bbatsov commented Oct 8, 2016

Well, looking at the generated EDN file, there's just level of nesting there. Frankly, off the top of my head I can't even figure out what was causing the excessive forward-sexp invocations.

@leppert
Copy link
Author

leppert commented Oct 8, 2016

@bbatsov Oh no! So sorry about this—I've been benchmarking against a different EDN file without considering that the shape is very different. I'll try to abstract it and post an updated recreate.

@leppert
Copy link
Author

leppert commented Oct 8, 2016

It's essentially a long list of maps with this shape:

({:a {:a "",
      :b {:id 0,
          :ns 0,
          :title "",
          :extract "",
          :thumbnail {:source "",
                      :width 0,
                      :height 0},
          :pageimage "",
          :terms {:label [""],
                  :description [""],
                  :alias [""]}}},
  :b ({:a :key,
       :b {:detail-page-url "",
           :sales-rank 0,
           :small-image {:url "",
                         :height 0,
                         :width 0},
           :item-links [{:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}],
           :large-image {:url "",
                         :height 0,
                         :width 0},
           :asin "",
           :editorial-reviews [{:source "",
                                :content ""}
                               {:source "",
                                :content ""}],
           :image-sets [{:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}],
           :item-attributes {:author "",
                             :ean "",
                             :isbn "",
                             :manufacturer "",
                             :product-group "",
                             :title ""},
           :medium-image {:url "",
                          :height 0,
                          :width 0},
           :offer-summary {:lowest-new-price {:amount 0,
                                              :currency-code "",
                                              :formatted-price ""}}},
       :asin "",
       :title "",
       :authors [{:a "",
                  :b {:pageid 0,
                      :ns 0,
                      :title "",
                      :extract "",
                      :thumbnail {:source "",
                                  :width 0,
                                  :height 0},
                      :pageimage "",
                      :terms {:description [""],
                              :label [""],
                              :alias [""]}}}]}
      {:a :key,
       :b {:detail-page-url "",
           :sales-rank 0,
           :small-image {:url "",
                         :height 0,
                         :width 0},
           :item-links [{:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}],
           :large-image {:url "",
                         :height 0,
                         :width 0},
           :asin "",
           :editorial-reviews [{:source "",
                                :content ""}
                               {:source "",
                                :content ""}],
           :image-sets [{:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}],
           :item-attributes {:author "",
                             :ean "",
                             :isbn "",
                             :manufacturer "",
                             :product-group "",
                             :title ""},
           :medium-image {:url "",
                          :height 0,
                          :width 0},
           :offer-summary {:lowest-new-price {:amount 0,
                                              :currency-code "",
                                              :formatted-price ""}}},
       :asin "",
       :title "",
       :authors [{:a "",
                  :b {:pageid 0,
                      :ns 0,
                      :title "",
                      :extract "",
                      :thumbnail {:source "",
                                  :width 0,
                                  :height 0},
                      :pageimage "",
                      :terms {:description [""],
                              :label [""],
                              :alias [""]}}}]}
      {:a :key,
       :b {:detail-page-url "",
           :sales-rank 0,
           :small-image {:url "",
                         :height 0,
                         :width 0},
           :item-links [{:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}],
           :large-image {:url "",
                         :height 0,
                         :width 0},
           :asin "",
           :editorial-reviews [{:source "",
                                :content ""}
                               {:source "",
                                :content ""}],
           :image-sets [{:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}],
           :item-attributes {:author "",
                             :ean "",
                             :isbn "",
                             :manufacturer "",
                             :product-group "",
                             :title ""},
           :medium-image {:url "",
                          :height 0,
                          :width 0},
           :offer-summary {:lowest-new-price {:amount 0,
                                              :currency-code "",
                                              :formatted-price ""}}},
       :asin "",
       :title "",
       :authors [{:a "",
                  :b {:pageid 0,
                      :ns 0,
                      :title "",
                      :extract "",
                      :thumbnail {:source "",
                                  :width 0,
                                  :height 0},
                      :pageimage "",
                      :terms {:description [""
                                            ""],
                              :label [""
                                      ""],
                              :alias [""
                                      ""
                                      ""
                                      ""]}}}]}
      {:a :key,
       :b {:detail-page-url "",
           :sales-rank 0,
           :small-image {:url "",
                         :height 0,
                         :width 0},
           :item-links [{:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}],
           :large-image {:url "",
                         :height 0,
                         :width 0},
           :asin "",
           :editorial-reviews [{:source "",
                                :content ""}
                               {:source "",
                                :content ""}],
           :image-sets [{:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}],
           :item-attributes {:author "",
                             :ean "",
                             :isbn "",
                             :manufacturer "",
                             :product-group "",
                             :title ""},
           :medium-image {:url "",
                          :height 0,
                          :width 0},
           :offer-summary {:lowest-new-price {:amount 0,
                                              :currency-code "",
                                              :formatted-price ""}}},
       :asin "",
       :title "",
       :authors [{:a "",
                  :b {:pageid 0,
                      :ns 0,
                      :title "",
                      :extract "",
                      :thumbnail {:source "",
                                  :width 0,
                                  :height 0},
                      :pageimage "",
                      :terms {:description [""],
                              :alias [""
                                      ""
                                      ""],
                              :label [""
                                      ""]}}}]}
      {:a :key,
       :b {:detail-page-url "",
           :sales-rank 0,
           :small-image {:url "",
                         :height 0,
                         :width 0},
           :item-links [{:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}],
           :large-image {:url "",
                         :height 0,
                         :width 0},
           :asin "",
           :editorial-reviews [{:source "",
                                :content ""}
                               {:source "",
                                :content ""}],
           :image-sets [{:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}],
           :item-attributes {:author "",
                             :ean "",
                             :isbn "",
                             :manufacturer "",
                             :product-group "",
                             :title ""},
           :medium-image {:url "",
                          :height 0,
                          :width 0},
           :offer-summary {:lowest-new-price {:amount 0,
                                              :currency-code "",
                                              :formatted-price ""}}},
       :asin "",
       :title "",
       :authors [{:a "",
                  :b {:pageid 0,
                      :ns 0,
                      :title "",
                      :extract "",
                      :thumbnail {:source "",
                                  :width 0,
                                  :height 0},
                      :pageimage "",
                      :terms {:description [""],
                              :alias [""
                                      ""],
                              :label [""]}}}]}
      {:a :key,
       :b {:detail-page-url "",
           :sales-rank 0,
           :small-image {:url "",
                         :height 0,
                         :width 0},
           :item-links [{:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}
                        {:description "",
                         :url ""}],
           :large-image {:url "",
                         :height 0,
                         :width 0},
           :asin "",
           :editorial-reviews [{:source "",
                                :content ""}
                               {:source "",
                                :content ""}
                               {:source "",
                                :content ""}],
           :image-sets [{:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}
                        {:swatch-image {:url "",
                                        :height 0,
                                        :width 0},
                         :small-image {:url "",
                                       :height 0,
                                       :width 0},
                         :thumbnail-image {:url "",
                                           :height 0,
                                           :width 0},
                         :tiny-image {:url "",
                                      :height 0,
                                      :width 0},
                         :medium-image {:url "",
                                        :height 0,
                                        :width 0},
                         :large-image {:url "",
                                       :height 0,
                                       :width 0},
                         :category ""}],
           :item-attributes {:author "",
                             :ean "",
                             :isbn "",
                             :manufacturer "",
                             :product-group "",
                             :title ""},
           :medium-image {:url "",
                          :height 0,
                          :width 0},
           :offer-summary {:lowest-new-price {:amount 0,
                                              :currency-code "",
                                              :formatted-price ""}}},
       :asin "",
       :title "",
       :authors [{:a "",
                  :b {:pageid 0,
                      :ns 0,
                      :title "",
                      :extract "",
                      :thumbnail {:source "",
                                  :width 0,
                                  :height 0},
                      :pageimage "",
                      :terms {:description [""],
                              :label [""]}}}]})})

@stale
Copy link

stale bot commented May 8, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contribution and understanding!

@stale stale bot added the stale label May 8, 2019
@stale
Copy link

stale bot commented Jun 7, 2019

This issues been automatically closed due to lack of activity. Feel free to re-open it if you ever come back to it.

@stale stale bot closed this as completed Jun 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants