From eba12ee3a50868ed919da8dae5f0fef2c0b282b3 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 5 Oct 2012 21:00:39 +0400 Subject: [PATCH 1/3] small cleanup of editor.insert --- lib/ace/editor.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 65d31201..f040de5f 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -666,7 +666,6 @@ var Editor = function(renderer, session) { this.insert = function(text) { var session = this.session; var mode = session.getMode(); - var cursor = this.getCursorPosition(); if (this.getBehavioursEnabled()) { @@ -693,9 +692,8 @@ var Editor = function(renderer, session) { var start = cursor.column; var lineState = session.getState(cursor.row); - var shouldOutdent = mode.checkOutdent(lineState, session.getLine(cursor.row), text); var line = session.getLine(cursor.row); - var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); + var shouldOutdent = mode.checkOutdent(lineState, line, text); var end = session.insert(cursor, text); if (transform && transform.selection) { @@ -712,12 +710,12 @@ var Editor = function(renderer, session) { } } - var lineState = session.getState(cursor.row); - // TODO disabled multiline auto indent // possibly doing the indent before inserting the text // if (cursor.row !== end.row) { if (session.getDocument().isNewLine(text)) { + var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); + this.moveCursorTo(cursor.row+1, 0); var size = session.getTabSize(); From 65b8b8a7e81e3bfd917137eb429272713b0ca218 Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 5 Oct 2012 21:02:21 +0400 Subject: [PATCH 2/3] fix autoindent of numbered markdown lists --- lib/ace/mode/markdown.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/ace/mode/markdown.js b/lib/ace/mode/markdown.js index 7b74fbcb..918fd528 100644 --- a/lib/ace/mode/markdown.js +++ b/lib/ace/mode/markdown.js @@ -55,12 +55,13 @@ oop.inherits(Mode, TextMode); (function() { this.getNextLineIndent = function(state, line, tab) { if (state == "listblock") { - var match = /^((?:.+)?)(([-+*]|\d+\.)\s+)/.exec(line); - if (match) { - return new Array(match[1].length + 1).join(" ") + match[2]; - } else { + var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); + if (!match) return ""; - } + var marker = match[2]; + if (!marker) + marker = parseInt(match[3], 10) + 1 + "."; + return match[1] + marker + match[4]; } else { return this.$getIndent(line); } From 825469a059bec00607ea52537e0d8b1931568b0b Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 5 Oct 2012 21:38:51 +0400 Subject: [PATCH 3/3] fix php autoindent --- lib/ace/mode/php.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/ace/mode/php.js b/lib/ace/mode/php.js index aeea09c6..a73f3e84 100644 --- a/lib/ace/mode/php.js +++ b/lib/ace/mode/php.js @@ -98,16 +98,29 @@ oop.inherits(Mode, TextMode); var tokenizedLine = this.$tokenizer.getLineTokens(line, state); var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length-1].type == "comment") { return indent; } - if (state == "start") { + if (state == "php-start") { var match = line.match(/^.*[\{\(\[\:]\s*$/); if (match) { indent += tab; } + } else if (state == "php-doc-start") { + if (endState != "php-doc-start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } } return indent;