hvesalai / emacs-scala-mode

The definitive scala-mode for emacs
http://ensime.org
GNU General Public License v3.0
362 stars 68 forks source link

Inserting a space char causes error #184

Closed andreas-roehler closed 8 months ago

andreas-roehler commented 8 months ago

With the word "type" at beginning of buffer. Inserting a space sends an error. AFAIU this is caused by hard-coded "7" in

(looking-back scala-indent:indent-on-words-re 7) in function scala-indent:indent-on-special-words

Backtrace below.

Debugger entered--Lisp error: (error "Invalid search bound (wrong side of point)")
  re-search-backward("\\(?:^\\s *\\<\\(ca\\(?:se\\|tch\\)\\|else\\|finally\\|yield\\)\\>\\)\\=" 7 t)
  looking-back("^\\s *\\<\\(ca\\(?:se\\|tch\\)\\|else\\|finally\\|yield\\)\\>" 7)
  (save-excursion (forward-char (- (or nil 1))) (looking-back scala-indent:indent-on-words-re 7))
  (and (> (current-column) 4) (= (char-after (1- (or nil (point)))) 32) (= (char-syntax (char-after (1- (or (- (point) 1) (point))))) 119) (save-excursion (forward-char (- (or nil 1))) (looking-back scala-indent:indent-on-words-re 7)) (not (nth 8 (syntax-ppss))))
  (if (and (> (current-column) 4) (= (char-after (1- (or nil (point)))) 32) (= (char-syntax (char-after (1- (or (- ... 1) (point))))) 119) (save-excursion (forward-char (- (or nil 1))) (looking-back scala-indent:indent-on-words-re 7)) (not (nth 8 (syntax-ppss)))) (progn (scala-indent:indent-line-to (scala-indent:calculate-indent-for-line))))
  scala-indent:indent-on-special-words()
  self-insert-command(1 32)
  funcall-interactively(self-insert-command 1 32)
  call-interactively(self-insert-command nil nil)
  (prog1 (call-interactively cmd record-flag keys) (let* ((info (and t (and (symbolp cmd) (not (get cmd ...)) (get cmd 'byte-obsolete-info))))) (if info (progn (put cmd 'command-execute-obsolete-warned t) (message "%s" (macroexp--obsolete-warning cmd info "command" (help--key-description-fontified (where-is-internal ... nil t))))) nil)))
  (cond ((arrayp final) (if record-flag (progn (add-to-history 'command-history (list 'execute-kbd-macro final prefixarg) nil t))) (execute-kbd-macro final prefixarg)) (t (prog1 (call-interactively cmd record-flag keys) (let* ((info (and t (and ... ... ...)))) (if info (progn (put cmd 'command-execute-obsolete-warned t) (message "%s" (macroexp--obsolete-warning cmd info "command" ...))) nil)))))
  (let ((final cmd)) (while (progn (setq final (indirect-function final)) (if (autoloadp final) (setq final (autoload-do-load final cmd))))) (cond ((arrayp final) (if record-flag (progn (add-to-history 'command-history (list 'execute-kbd-macro final prefixarg) nil t))) (execute-kbd-macro final prefixarg)) (t (prog1 (call-interactively cmd record-flag keys) (let* ((info (and t ...))) (if info (progn (put cmd ... t) (message "%s" ...)) nil))))))
  (if (and (symbolp cmd) (get cmd 'disabled) (or (and (setq query (and (consp (get cmd ...)) (eq (car ...) 'query))) (not (command-execute--query cmd))) (and (not query) disabled-command-function))) (if (not query) (progn (run-hooks 'disabled-command-function))) (let ((final cmd)) (while (progn (setq final (indirect-function final)) (if (autoloadp final) (setq final (autoload-do-load final cmd))))) (cond ((arrayp final) (if record-flag (progn (add-to-history 'command-history (list ... final prefixarg) nil t))) (execute-kbd-macro final prefixarg)) (t (prog1 (call-interactively cmd record-flag keys) (let* ((info ...)) (if info (progn ... ...) nil)))))))
  (let ((prefixarg (if special nil (prog1 prefix-arg (setq current-prefix-arg prefix-arg) (setq prefix-arg nil) (if current-prefix-arg (progn (prefix-command-update)))))) query) (if (and (symbolp cmd) (get cmd 'disabled) (or (and (setq query (and (consp ...) (eq ... ...))) (not (command-execute--query cmd))) (and (not query) disabled-command-function))) (if (not query) (progn (run-hooks 'disabled-command-function))) (let ((final cmd)) (while (progn (setq final (indirect-function final)) (if (autoloadp final) (setq final (autoload-do-load final cmd))))) (cond ((arrayp final) (if record-flag (progn (add-to-history ... ... nil t))) (execute-kbd-macro final prefixarg)) (t (prog1 (call-interactively cmd record-flag keys) (let* (...) (if info ... nil))))))))
  command-execute(self-insert-command)
hvesalai commented 8 months ago

Interesting. Can you give an example where it fails.