@@ -34,10 +34,8 @@ import com.intellij.psi.PsiComment
3434import com.intellij.psi.PsiDocumentManager
3535import com.intellij.psi.PsiFile
3636
37- /* */
38-
3937/* *
40- *
38+ * Inserts a * in each new line of a multi-line comment
4139 * @author patrick (04.12.17).
4240 */
4341class CommentStarInsertEnterHandler : MathematicaEnterHandler () {
@@ -47,14 +45,18 @@ class CommentStarInsertEnterHandler : MathematicaEnterHandler() {
4745 val offset = caretModel.offset
4846 val project = dataContext.getData(CommonDataKeys .PROJECT ) ? : return EnterHandlerDelegate .Result .Continue
4947 val psiDocManager = PsiDocumentManager .getInstance(project)
50- val element = file.findElementAt(offset) ? : return EnterHandlerDelegate .Result .Continue
51- if (element is PsiComment ) {
48+
49+ val comment = file.findElementAt(offset) ? : return EnterHandlerDelegate .Result .Continue
50+ val commentRange = comment.textRange ? : return EnterHandlerDelegate .Result .Continue
51+
52+ if (comment is PsiComment && offset >= commentRange.startOffset + 2 && offset <= commentRange.endOffset - 2 ) {
53+
5254 val document = editor.document
5355 val textLength = document.textLength
5456
5557 // The case that we opened a comment with (*|) and therefore the complete file is commented
5658 // We insert the missing *
57- if (element .textRange.endOffset == textLength && offset < textLength && document.getText(TextRange .create(offset, offset + 1 )) == " )" ) {
59+ if (comment .textRange.endOffset == textLength && offset < textLength && document.getText(TextRange .create(offset, offset + 1 )) == " )" ) {
5860 document.insertString(offset, " * \n *" )
5961 caretModel.moveToOffset(offset + 3 )
6062 psiDocManager.commitDocument(document)
@@ -63,8 +65,8 @@ class CommentStarInsertEnterHandler : MathematicaEnterHandler() {
6365
6466
6567 val lineNumber = document.getLineNumber(offset)
66- val elementStartLine = document.getLineNumber(element .textOffset)
67- val elementEndLine = document.getLineNumber(element .textOffset + element .textLength)
68+ val elementStartLine = document.getLineNumber(comment .textOffset)
69+ val elementEndLine = document.getLineNumber(comment .textOffset + comment .textLength)
6870
6971 val insertString: String
7072 val move: Int
@@ -79,7 +81,7 @@ class CommentStarInsertEnterHandler : MathematicaEnterHandler() {
7981 caretModel.moveToOffset(offset + move)
8082
8183 if (lineNumber == elementEndLine) {
82- document.insertString(offset + move, " \n " )
84+ document.insertString(commentRange.endOffset + move - 2 , " \n " )
8385 }
8486 psiDocManager.commitDocument(document)
8587 return EnterHandlerDelegate .Result .DefaultSkipIndent
0 commit comments