Ace: рдирдИ рд╕реБрд╡рд┐рдзрд╛: рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдЕрдЧре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ajaxorg/ace

рдХрднреА-рдХрднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдПрдХ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд▓рдВрдмрд╛рдИ рд╡рд╣ рд╣реИ рдЬреЛ рд╕реАрдорд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЕрдВрдд рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдХреЗ рдмрдбрд╝реЗ рдкреЗрд╕реНрдЯ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рдВрдкрд╛рджрди рдХреЛ рдЖрдЬрдорд╛рдПрдВ:

var doc = editor.session.doc
doc.applyAnyDelta = doc.applyAnyDelta || doc.applyDelta
doc.applyDelta = function(delta) {
    let joinedLines = delta.lines.join("\n")

    if (delta.action == "insert" && this.$maxLength
        && this.getValue().length + joinedLines.length > this.$maxLength) {

        let newPasteLength = this.$maxLength - this.getValue().length
        if(newPasteLength > 0) {
            delta.lines = joinedLines.substr(0, newPasteLength).split("\n")
            if(delta.lines.length == 1 && delta.start.row == delta.end.row) {
                delta.end = {
                    row: delta.start.row,
                    column: delta.start.column+newPasteLength
                }
            } else {
                delta.end = {
                    row: delta.start.row+delta.lines.length,
                    column: delta.lines[delta.lines.length-1].length
                }
            }
        } else return false;
    }
    return this.applyAnyDelta(delta);
}
doc.$maxLength = 20

рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдорджрдж рдорд┐рд▓реЗрдЧреА!

рд╕рд╛рде рд╣реА, рдореИрдВ рдЙрд╕реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ @christianbs рдХреЗ рд░реВрдк рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ :)

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрджрд┐ рд╕рдВрдкрд╛рджрдХ рдорд╛рди рдХреБрдЫ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реИ, рддреЛ рдЖрдк рдбрд╛рд▓рдиреЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

var doc = editor.session.doc
doc.applyAnyDelta = doc.applyAnyDelta || doc.applyDelta
doc.applyDelta = function(delta) {
   if (delta.action == "insert" && this.$maxLength 
       && this.getValue().length > this.$maxLength) {
       return false;
   }
   return this.applyAnyDelta(delta);
}
doc.$maxLength = 20

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмреЗрд╢рдХ!! рддреЛ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдмрдиреА рд░рд╣рддреА рд╣реИ рдФрд░ рдЗрд╕ рдХреЙрд▓рдо рдХреА рдПрдХ рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрд╛рджрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдкрд┐ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП... рдзрдиреНрдпрд╡рд╛рдж

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд▓рдВрдмрд╛рдИ рд╡рд╣ рд╣реИ рдЬреЛ рд╕реАрдорд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЕрдВрдд рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдХреЗ рдмрдбрд╝реЗ рдкреЗрд╕реНрдЯ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рдВрдкрд╛рджрди рдХреЛ рдЖрдЬрдорд╛рдПрдВ:

var doc = editor.session.doc
doc.applyAnyDelta = doc.applyAnyDelta || doc.applyDelta
doc.applyDelta = function(delta) {
    let joinedLines = delta.lines.join("\n")

    if (delta.action == "insert" && this.$maxLength
        && this.getValue().length + joinedLines.length > this.$maxLength) {

        let newPasteLength = this.$maxLength - this.getValue().length
        if(newPasteLength > 0) {
            delta.lines = joinedLines.substr(0, newPasteLength).split("\n")
            if(delta.lines.length == 1 && delta.start.row == delta.end.row) {
                delta.end = {
                    row: delta.start.row,
                    column: delta.start.column+newPasteLength
                }
            } else {
                delta.end = {
                    row: delta.start.row+delta.lines.length,
                    column: delta.lines[delta.lines.length-1].length
                }
            }
        } else return false;
    }
    return this.applyAnyDelta(delta);
}
doc.$maxLength = 20

рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдорджрдж рдорд┐рд▓реЗрдЧреА!

рд╕рд╛рде рд╣реА, рдореИрдВ рдЙрд╕реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ @christianbs рдХреЗ рд░реВрдк рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ :)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jakub-zawislak picture jakub-zawislak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mkosieradzki picture mkosieradzki  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

SuperSajuuk picture SuperSajuuk  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aslushnikov picture aslushnikov  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

akosyakov picture akosyakov  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ