[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/scala-mode e277378 143/217: WIP on end-of-defun and beggin
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/scala-mode e277378 143/217: WIP on end-of-defun and beggining of defun which should make writing imenu functionality much easier. |
Date: |
Sun, 29 Aug 2021 11:31:00 -0400 (EDT) |
branch: elpa/scala-mode
commit e277378dcf405bdac78dfd7414be3aeda792041b
Author: Ivan Malison <IvanMalison@gmail.com>
Commit: Ivan Malison <IvanMalison@gmail.com>
WIP on end-of-defun and beggining of defun which should make writing imenu
functionality much easier.
---
scala-mode2-syntax.el | 312 +++++++++++++++++++++++++++++++-------------------
1 file changed, 195 insertions(+), 117 deletions(-)
diff --git a/scala-mode2-syntax.el b/scala-mode2-syntax.el
index 1eeb109..fcf0ee1 100644
--- a/scala-mode2-syntax.el
+++ b/scala-mode2-syntax.el
@@ -18,6 +18,10 @@
;;; regular expressions, but can be used in declaring one.
;; single letter matching groups (Chapter 1)
+
+(defun scala-syntax:regexp-or (regexps)
+ (concat "\\(?:" (mapconcat 'identity regexps "\\|") "\\)"))
+
(defconst scala-syntax:hexDigit-group "0-9A-Fa-f")
(defconst scala-syntax:UnicodeEscape-re (concat "\\\\u["
scala-syntax:hexDigit-group "]\\{4\\}"))
@@ -27,13 +31,13 @@
(defconst scala-syntax:letter-group (concat scala-syntax:lower-group
scala-syntax:upper-group)) ;; TODO: add Lt, Lo, Nl
(defconst scala-syntax:digit-group "0-9")
(defconst scala-syntax:letterOrDigit-group (concat
-
scala-syntax:upperAndUnderscore-group
- scala-syntax:lower-group
- scala-syntax:digit-group))
+
scala-syntax:upperAndUnderscore-group
+ scala-syntax:lower-group
+ scala-syntax:digit-group))
(defconst scala-syntax:opchar-safe-group "!%&*+/?\\\\^|~-") ;; TODO: Sm, So
(defconst scala-syntax:opchar-unsafe-group "#:<=>@")
(defconst scala-syntax:opchar-group (concat scala-syntax:opchar-unsafe-group
- scala-syntax:opchar-safe-group))
+ scala-syntax:opchar-safe-group))
;; Scala delimiters (Chapter 1), but no quotes
(defconst scala-syntax:delimiter-group ".,;")
@@ -43,14 +47,14 @@
(defconst scala-syntax:octalDigit-group "0-7")
(defconst scala-syntax:decimalNumeral-re
(concat "0"
- "\\|[" scala-syntax:nonZeroDigit-group "][" scala-syntax:digit-group
"]*"))
+ "\\|[" scala-syntax:nonZeroDigit-group "][" scala-syntax:digit-group
"]*"))
(defconst scala-syntax:hexNumeral-re (concat "0x[" scala-syntax:hexDigit-group
"]+"))
(defconst scala-syntax:octalNumeral-re (concat "0["
scala-syntax:octalDigit-group "]+"))
(defconst scala-syntax:integerLiteral-re (concat "-?" ;; added from definition
of literal
- "\\("
scala-syntax:hexNumeral-re
- "\\|"
scala-syntax:octalNumeral-re
- "\\|"
scala-syntax:decimalNumeral-re
- "\\)[Ll]?"))
+ "\\("
scala-syntax:hexNumeral-re
+ "\\|"
scala-syntax:octalNumeral-re
+ "\\|"
scala-syntax:decimalNumeral-re
+ "\\)[Ll]?"))
;; Floating Point Literal (Chapter 1.3.2)
@@ -58,12 +62,12 @@
(defconst scala-syntax:floatType-re "[fFdD]")
(defconst scala-syntax:floatingPointLiteral-re
(concat "-?" ;; added from definition of literal
- "\\([" scala-syntax:digit-group "]+\\.[" scala-syntax:digit-group
"]*"
- scala-syntax:exponentPart-re "?" scala-syntax:floatType-re "?"
- "\\|" "\\.[" scala-syntax:digit-group "]+"
- scala-syntax:exponentPart-re "?" scala-syntax:floatType-re "?"
- "\\|" "[" scala-syntax:digit-group "]+" scala-syntax:exponentPart-re
- "\\|" "[" scala-syntax:digit-group "]+" scala-syntax:floatType-re
"\\)"))
+ "\\([" scala-syntax:digit-group "]+\\.[" scala-syntax:digit-group "]*"
+ scala-syntax:exponentPart-re "?" scala-syntax:floatType-re "?"
+ "\\|" "\\.[" scala-syntax:digit-group "]+"
+ scala-syntax:exponentPart-re "?" scala-syntax:floatType-re "?"
+ "\\|" "[" scala-syntax:digit-group "]+" scala-syntax:exponentPart-re
+ "\\|" "[" scala-syntax:digit-group "]+" scala-syntax:floatType-re
"\\)"))
(defconst scala-syntax:number-safe-start-re
(concat "[^_" scala-syntax:letter-group "]"))
@@ -80,19 +84,19 @@
;; Character Literals (Chapter 1.3.4)
(defconst scala-syntax:characterLiteral-re
(concat "\\('\\)\\(" "[^\\\\]" ;; should be just printable char, but this is
faster
- "\\|" scala-syntax:escapeSequence-re
- "\\|" scala-syntax:octalEscape-re
- "\\|" scala-syntax:UnicodeEscape-re "\\)\\('\\)"))
+ "\\|" scala-syntax:escapeSequence-re
+ "\\|" scala-syntax:octalEscape-re
+ "\\|" scala-syntax:UnicodeEscape-re "\\)\\('\\)"))
(defconst scala-syntax:string-escape-re
(concat scala-syntax:escapeSequence-re
- "\\|" scala-syntax:octalEscape-re
- "\\|" scala-syntax:UnicodeEscape-re))
+ "\\|" scala-syntax:octalEscape-re
+ "\\|" scala-syntax:UnicodeEscape-re))
;; String Literals (Chapter 1.3.5)
(defconst scala-syntax:stringElement-re
(concat "\\(" "[^\n\"\\\\]"
- "\\|" scala-syntax:string-escape-re "\\)"))
+ "\\|" scala-syntax:string-escape-re "\\)"))
(defconst scala-syntax:oneLineStringLiteral-re (concat "\\(\"\\)"
scala-syntax:stringElement-re "*\\(\"\\)"))
(defconst scala-syntax:multiLineStringLiteral-start-re
"\\(\"\\)\"\"\\(\"?\"?[^\"]\\)*")
@@ -100,10 +104,10 @@
"\"\"+\\(\"\\)")
(defconst scala-syntax:multiLineStringLiteral-re
(concat scala-syntax:multiLineStringLiteral-start-re
- scala-syntax:multiLineStringLiteral-end-re))
+ scala-syntax:multiLineStringLiteral-end-re))
(defconst scala-syntax:stringLiteral-re
(concat "\\(" scala-syntax:multiLineStringLiteral-re
- "\\|" scala-syntax:oneLineStringLiteral-re "\\)" ))
+ "\\|" scala-syntax:oneLineStringLiteral-re "\\)" ))
;; If you change this or any of the used regex, be sure to
;; maintain this or update propertize function acordingly:
@@ -112,9 +116,9 @@
;; group 7 = string start, 9 = end
(defconst scala-syntax:relaxed-char-and-string-literal-re
(concat scala-syntax:characterLiteral-re
- "\\|" scala-syntax:multiLineStringLiteral-start-re
- "\\(?:" scala-syntax:multiLineStringLiteral-end-re "\\)?"
- "\\|\\(\"\\)" "\\(\\\\.\\|[^\"\n\\]\\)*" "\\(\"\\)"))
+ "\\|" scala-syntax:multiLineStringLiteral-start-re
+ "\\(?:" scala-syntax:multiLineStringLiteral-end-re "\\)?"
+ "\\|\\(\"\\)" "\\(\\\\.\\|[^\"\n\\]\\)*" "\\(\"\\)"))
;; Identifiers (Chapter 1.1)
(defconst scala-syntax:op-re
@@ -122,23 +126,23 @@
(defconst scala-syntax:idrest-re
;; Eagerness of regexp causes problems with _. The following is a workaround,
;; but the resulting regexp matches only what SLS demands.
- (concat "\\(" "[_]??" "[" scala-syntax:letter-group scala-syntax:digit-group
"]+" "\\)*"
- "\\(" "_+" scala-syntax:op-re "\\|" "_" "\\)?"))
+ (concat "\\(?:" "[_]??" "[" scala-syntax:letter-group
scala-syntax:digit-group "]+" "\\)*"
+ "\\(?:" "_+" scala-syntax:op-re "\\|" "_" "\\)?"))
(defconst scala-syntax:varid-re (concat "[" scala-syntax:lower-group "]"
scala-syntax:idrest-re))
(defconst scala-syntax:capitalid-re (concat "["
scala-syntax:upperAndUnderscore-group "]" scala-syntax:idrest-re))
;; alphaid introduce by SIP11
-(defconst scala-syntax:alphaid-re (concat "\\(" "[" scala-syntax:lower-group
scala-syntax:upperAndUnderscore-group "]" scala-syntax:idrest-re "\\)"))
-(defconst scala-syntax:plainid-re (concat "\\(" scala-syntax:alphaid-re "\\|"
scala-syntax:op-re "\\)"))
+(defconst scala-syntax:alphaid-re (concat "\\(?:" "[" scala-syntax:lower-group
scala-syntax:upperAndUnderscore-group "]" scala-syntax:idrest-re "\\)"))
+(defconst scala-syntax:plainid-re (concat "\\(?:" scala-syntax:alphaid-re
"\\|" scala-syntax:op-re "\\)"))
;; stringlit is referred to, but not defined Scala Language Specification 2.9
;; we define it as consisting of anything but '`' and newline
(defconst scala-syntax:stringlit-re "[^`\n\r]")
(defconst scala-syntax:quotedid-re (concat "`" scala-syntax:stringlit-re "`"))
-(defconst scala-syntax:id-re (concat "\\(" scala-syntax:plainid-re
- "\\|" scala-syntax:quotedid-re "\\)"))
+(defconst scala-syntax:id-re (concat "\\(?:" scala-syntax:plainid-re
+ "\\|" scala-syntax:quotedid-re "\\)"))
(defconst scala-syntax:id-first-char-group
(concat scala-syntax:lower-group
- scala-syntax:upperAndUnderscore-group
- scala-syntax:opchar-group))
+ scala-syntax:upperAndUnderscore-group
+ scala-syntax:opchar-group))
;; Symbol literals (Chapter 1.3.7)
(defconst scala-syntax:symbolLiteral-re
@@ -148,12 +152,12 @@
;; Literals (Chapter 1.3)
(defconst scala-syntax:literal-re
(concat "\\(" scala-syntax:integerLiteral-re
- "\\|" scala-syntax:floatingPointLiteral-re
- "\\|" scala-syntax:booleanLiteral-re
- "\\|" scala-syntax:characterLiteral-re
- "\\|" scala-syntax:stringLiteral-re
- "\\|" scala-syntax:symbolLiteral-re
- "\\|" "null" "\\)"))
+ "\\|" scala-syntax:floatingPointLiteral-re
+ "\\|" scala-syntax:booleanLiteral-re
+ "\\|" scala-syntax:characterLiteral-re
+ "\\|" scala-syntax:stringLiteral-re
+ "\\|" scala-syntax:symbolLiteral-re
+ "\\|" "null" "\\)"))
;; Paths (Chapter 3.1)
;; emacs has a problem with these regex, don't use them
@@ -172,46 +176,46 @@
(save-excursion
(when (looking-at "\\<super\\>")
(let ((beg (match-beginning 0)))
- (when (and (goto-char (match-end 0))
- (or (when (= (char-after) ?.)
- (forward-char)
- t)
- (and (when (and (not (eobp)) (= (char-after) ?\[))
- (forward-char)
- t)
- (progn (scala-syntax:skip-forward-ignorable)
- (looking-at scala-syntax:id-re))
- (progn (goto-char (match-end 0))
- (scala-syntax:skip-forward-ignorable)
- (when (and (not (eobp)) (= (char-after)
?\]))
- (forward-char)
- t))
- (when (and (not (eobp)) (= (char-after) ?.))
- (forward-char)
- t)))
- (looking-at scala-syntax:id-re))
- (set-match-data `(,beg ,(match-end 0)))
- t)))))
+ (when (and (goto-char (match-end 0))
+ (or (when (= (char-after) ?.)
+ (forward-char)
+ t)
+ (and (when (and (not (eobp)) (= (char-after) ?\[))
+ (forward-char)
+ t)
+ (progn (scala-syntax:skip-forward-ignorable)
+ (looking-at scala-syntax:id-re))
+ (progn (goto-char (match-end 0))
+ (scala-syntax:skip-forward-ignorable)
+ (when (and (not (eobp)) (= (char-after) ?\]))
+ (forward-char)
+ t))
+ (when (and (not (eobp)) (= (char-after) ?.))
+ (forward-char)
+ t)))
+ (looking-at scala-syntax:id-re))
+ (set-match-data `(,beg ,(match-end 0)))
+ t)))))
(defun scala-syntax:looking-at-stableIdOrPath (&optional path-p beg)
(unless beg (setq beg (point)))
(save-excursion
(cond ((looking-at "\\<this\\>")
- (goto-char (match-end 0))
- (if (and (not (eobp)) (= (char-after) ?.))
- (progn (forward-char)
- (scala-syntax:looking-at-stableIdOrPath path-p beg))
- path-p))
- ((or (scala-syntax:looking-at-super)
- (and (not (or (looking-at scala-syntax:keywords-unsafe-re)
- (scala-syntax:looking-at-reserved-symbol nil)))
- (looking-at scala-syntax:id-re)))
- (goto-char (match-end 0))
- (if (and (not (eobp)) (= (char-after) ?.))
- (progn (forward-char)
- (scala-syntax:looking-at-stableIdOrPath path-p beg))
- (set-match-data `(,beg ,(match-end 0)))
- (point))))))
+ (goto-char (match-end 0))
+ (if (and (not (eobp)) (= (char-after) ?.))
+ (progn (forward-char)
+ (scala-syntax:looking-at-stableIdOrPath path-p beg))
+ path-p))
+ ((or (scala-syntax:looking-at-super)
+ (and (not (or (looking-at scala-syntax:keywords-unsafe-re)
+ (scala-syntax:looking-at-reserved-symbol nil)))
+ (looking-at scala-syntax:id-re)))
+ (goto-char (match-end 0))
+ (if (and (not (eobp)) (= (char-after) ?.))
+ (progn (forward-char)
+ (scala-syntax:looking-at-stableIdOrPath path-p beg))
+ (set-match-data `(,beg ,(match-end 0)))
+ (point))))))
(defun scala-syntax:looking-at-simplePattern-beginning ()
(or (looking-at "[_(]")
@@ -221,11 +225,11 @@
(defun scala-syntax:regexp-for-id (id)
(let ((prefix-regex
- (if (string-match scala-syntax:alphaid-re id)
- "\\b" (concat "\\(^\\|[^" scala-syntax:opchar-group "]\\)")))
- (suffix-regex
- (if (string-match scala-syntax:op-re (substring id -1 nil))
- (concat "\\([^" scala-syntax:opchar-group "]\\|$\\)") "\\b")))
+ (if (string-match scala-syntax:alphaid-re id)
+ "\\b" (concat "\\(^\\|[^" scala-syntax:opchar-group "]\\)")))
+ (suffix-regex
+ (if (string-match scala-syntax:op-re (substring id -1 nil))
+ (concat "\\([^" scala-syntax:opchar-group "]\\|$\\)") "\\b")))
(concat prefix-regex id suffix-regex)))
;;;
@@ -261,8 +265,8 @@
(defconst scala-syntax:other-keywords-unsafe-re
(regexp-opt '("abstract" "case" "catch" "class" "def" "do" "else" "extends"
- "final" "finally" "for" "forSome" "if" "implicit" "import"
- "lazy" "match" "new" "object" "override" "package" "private"
+ "final" "finally" "for" "forSome" "if" "implicit" "import"
+ "lazy" "match" "new" "object" "override" "package" "private"
"protected" "return" "sealed" "throw" "trait" "try" "type"
"val" "var" "while" "with" "yield") 'words))
@@ -315,7 +319,6 @@
"\\(:\\)"
"\\(" scala-syntax:after-reserved-symbol-re "\\)"))
-
(defconst scala-syntax:override-unsafe-re
(regexp-opt '("override") 'words))
@@ -371,6 +374,9 @@
(defconst scala-syntax:modifiers-re
(concat "\\(^\\|[^`'_]\\)\\(" scala-syntax:modifiers-unsafe-re "\\)"))
+(defconst scala-syntax:whitespace-delimeted-modifiers-re
+ (concat " *\\(?:" scala-syntax:modifiers-unsafe-re "\\(?: *\\)" "\\)*"))
+
(defconst scala-syntax:body-start-re
(concat "=" scala-syntax:end-of-code-line-re)
"A regexp for detecting if a line ends with '='")
@@ -391,6 +397,31 @@
(defconst scala-syntax:class-or-object-re
(regexp-opt '("class" "object") 'words))
+(defconst scala-syntax:top-level-definition-words-re
+ (regexp-opt '("class" "object" "trait") 'words))
+
+(defconst scala-syntax:member-definition-words-re
+ (regexp-opt '("val" "var" "def" "type") 'words))
+
+(defconst scala-syntax:definition-words-re
+ (regexp-opt '("class" "object" "trait" "val" "var" "def" "type") 'words))
+
+(defun scala-syntax:build-definition-re (words-re)
+ (concat scala-syntax:whitespace-delimeted-modifiers-re
+ words-re
+ "\\(?: *\\)"
+ "\\(?2:"
+ scala-syntax:id-re
+ "\\)"))
+
+(defconst scala-syntax:top-level-definition-re
+ (scala-syntax:build-definition-re
scala-syntax:top-level-definition-words-re))
+
+(defconst scala-syntax:member-definition-re
+ (scala-syntax:build-definition-re scala-syntax:member-definition-words-re))
+
+(defconst scala-syntax:all-definition-re
+ (scala-syntax:build-definition-re scala-syntax:definition-words-re))
;;;;
;;;; Character syntax table and related syntax-propertize functions
@@ -799,6 +830,53 @@ end of the skipped expression."
(when (= (skip-syntax-forward ".") 0)
(goto-char (or (scan-sexps (point) 1) (buffer-end 1)))))
+(defun backward-sexp-forcing ()
+ (condition-case ex (backward-sexp) ('error (backward-char))))
+
+(defun scala-syntax:beginning-of-definition ()
+ "This function is not totally correct. Scala syntax is hard."
+ (interactive)
+ (let ((found-position
+ (save-excursion
+ (funcall 'backward-sexp-forcing)
+ (scala-syntax:search-re-movement-function
scala-syntax:all-definition-re
+ 'backward-sexp-forcing))))
+ (when found-position (goto-char found-position))))
+
+(defun scala-syntax:end-of-definition ()
+ "This function is not totally correct. Scala syntax is hard."
+ (interactive)
+ (re-search-forward scala-syntax:all-definition-re)
+ (let ((found-position
+ (scala-syntax:search-re-movement-function
scala-syntax:top-level-definition-re
+ #'backward-sexp)))
+ (when found-position (goto-char found-position))))
+
+(defun find-brace-equals-or-next ()
+ (interactive)
+ (let ((found-position
+ (scala-syntax:search-re-movement-function
+ (scala-syntax:regexp-or
+ `(,scala-syntax:all-definition-re "=" "{"))
+ #'forward-sexp)))
+ (when found-position (goto-char found-position))))
+
+
+(setq beginning-of-defun-function 'scala-syntax:beginning-of-defun)
+(setq end-of-defun-function 'scala-syntax:end-of-defun)
+
+(defun scala-syntax:search-re-movement-function (re movement-function)
+ "Applies movement-function until something matching re is matched by
+looking-at-p or the end/beginning of the buffer is reached.
+
+The position is returned if something is found, nil is returned if not.
+"
+ (save-excursion
+ (progn
+ (while (not (or (bobp) (eobp) (looking-at re)))
+ (funcall movement-function))
+ (if (looking-at re) (point) nil))))
+
(defun scala-syntax:forward-token ()
"Move forward one scala token, comment word or string word. It
can be: start or end of list (value or type), id, reserved
@@ -833,46 +911,46 @@ is placed at the end of the skipped token."
;; otherwise forward-sexp
(t (forward-sexp)))))
-(defun scala-syntax:backward-sexp ()
- "Move backward one scala expression. It can be: parameter
+ (defun scala-syntax:backward-sexp ()
+ "Move backward one scala expression. It can be: parameter
list (value or type), id, reserved symbol, keyword, block, or
literal. Delimiters (.,;) and comments are skipped
silently. Position is placed at the beginning of the skipped
expression."
- (interactive)
- (syntax-propertize (point))
- ;; for implementation comments, see scala-syntax:forward-sexp
- (forward-comment (- (buffer-size)))
- (while (> 0 (+ (skip-syntax-backward " ")
- (skip-chars-backward scala-syntax:delimiter-group))))
-
- (when (= (skip-syntax-backward ".") 0)
- (goto-char (or (scan-sexps (point) -1) (buffer-end -1)))
- (backward-prefix-chars)))
-
-(defun scala-syntax:has-char-before (char end)
- (save-excursion
- (while (and (< (point) end)
- (or (bobp)
- (/= (char-before) char)))
- (scala-syntax:forward-sexp))
- (when (= (char-before) char)
- (scala-syntax:skip-forward-ignorable)
- (> end (point)))))
-
-(defun scala-syntax:search-backward-sexp (re)
- "Searches backward sexps until it reaches re, empty line or ;.
+ (interactive)
+ (syntax-propertize (point))
+ ;; for implementation comments, see scala-syntax:forward-sexp
+ (forward-comment (- (buffer-size)))
+ (while (> 0 (+ (skip-syntax-backward " ")
+ (skip-chars-backward scala-syntax:delimiter-group))))
+
+ (when (= (skip-syntax-backward ".") 0)
+ (goto-char (or (scan-sexps (point) -1) (buffer-end -1)))
+ (backward-prefix-chars)))
+
+ (defun scala-syntax:has-char-before (char end)
+ (save-excursion
+ (while (and (< (point) end)
+ (or (bobp)
+ (/= (char-before) char)))
+ (scala-syntax:forward-sexp))
+ (when (= (char-before) char)
+ (scala-syntax:skip-forward-ignorable)
+ (> end (point)))))
+
+ (defun scala-syntax:search-backward-sexp (re)
+ "Searches backward sexps until it reaches re, empty line or ;.
If re is found, point is set to beginning of re and the position
is returned, otherwise nil is returned"
- (let ((found (save-excursion
- (while (not (or (bobp)
- (scala-syntax:looking-back-empty-line-p)
- (scala-syntax:looking-back-token "[;,]")
- (looking-at re)))
- (scala-syntax:backward-sexp))
- (if (looking-at re)
- (point)
- nil))))
+ (let ((found (save-excursion
+ (while (not (or (bobp)
+ (scala-syntax:looking-back-empty-line-p)
+ (scala-syntax:looking-back-token "[;,]")
+ (looking-at re)))
+ (scala-syntax:backward-sexp))
+ (if (looking-at re)
+ (point)
+ nil))))
(when found (goto-char found))))
(defun scala-syntax:list-p (&optional point)
- [nongnu] elpa/scala-mode 98d22a5 099/217: Added programming languages to README.md code, (continued)
- [nongnu] elpa/scala-mode 98d22a5 099/217: Added programming languages to README.md code, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 453c012 106/217: fixed bug in string escapes marking, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 6116127 042/217: Updated README.md, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 11a710d 044/217: Correct annotation highlighting., ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 49bd528 045/217: working on README, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode d357a77 038/217: New 'scala-indent:align-parameters' customization variable, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode af0e387 053/217: Fixes #18: highlight escapes in strings after chars, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode bc446e7 120/217: sbt support is now in sbt-mode, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 597d421 145/217: Seems the imenu var needs to be set in a very local way., ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode c154f16 139/217: better join-line and fixup-whitespace, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode e277378 143/217: WIP on end-of-defun and beggining of defun which should make writing imenu functionality much easier.,
ELPA Syncer <=
- [nongnu] elpa/scala-mode 811494f 155/217: Support nesting of classes in imenu index creation function., ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode d4885ac 159/217: Use [[:space:]] instead of literal space in syntax end/beggining of, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode c5ab657 160/217: Merge pull request #82 from IvanMalison/support_imenu, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode b8e835f 161/217: scala-mode:goto-start-of-code close #90, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode e8c8a51 169/217: Couple imenu-related issues (#95), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 3989897 174/217: bump version (#111), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 360b5ba 162/217: Merge pull request #92 from fommil/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 387e93c 178/217: revert 618f0fbef4d3d94156f834a66e36c79f07a54e02, fixes #118 (#119), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode c71efcc 188/217: quoteids are now propertized as symbols (#137), ELPA Syncer, 2021/08/29
- [nongnu] elpa/scala-mode 1d08e88 201/217: Merge pull request #154 from pgronkievitz/patch-1, ELPA Syncer, 2021/08/29