angular - Typescript kullanarak Ace editörde bir satırı nasıl değiştirebilirim?
Benim problemim, bir WEB uygulamamın olması ve AngularJS 4 ile TypeScript kullanıyor olmam.
Herhangi bir yere küçük yorumları ('//') yazdığımda, bunların büyük yorumlarla ('/* XXX */') değiştirilmesi ve imlecin bunların arasına (orada XXX karakterleri ile işaretlenmiş) yerleştirilmesi gereken bir keyEvent veya benzeri bir şey yapmam gerekiyor.
O kadar ilerledim ki editörden satırı okuyabilir ve yorumları düzenleyebilirim, ama satırın değiştirilmesinde bir sorun var ve nedenini bilmiyorum, çünkü konsolda herhangi bir hata yok.
İşte kod:
@HostListener( 'window:keydown', ['$event'] ) keyboardInput( e: any ) {
if ( e.key === '/' && this.globalService.mode === 'EDIT' ) {
this.backslashCounter++;
const column = this.globalService.editor.getEditor().session.selection.selectionAnchor.column;
const row = this.globalService.editor.getEditor().session.selection.selectionAnchor.row;
this.currentLine = '' + this.globalService.editor.getEditor().session.selection.doc.getLines( row, row );
if ( this.backslashCounter === 2 ) {
if ( this.currentLine.substr( column - 1, 1 ) === '/' ) {
// e.preventDefault();
// e.stopPropagation();
this.backslashCounter = 0;
currentLine = this.removeSmallCommentsWithBigOnes(currentLine);
const editor = this.globalService.editor.getEditor();
const range = this.globalService.editor.getEditor().session.selection.getRange();
range.start.column = 0;
range.end.column = currentLine.length + 5;
editor.replace( range, currentLine ); // THIS LINE HERE DOES NOT WORK!!!!!!!!!!!!!!!!
this.globalService.editor.getEditor().session.selection.moveTo( row, column + 2 ); // this line sets the selection back to the right position in the middle of the big comments (or it should, did not have a chance to see :))
} else {
this.backslashCounter--;
}
}
}
}
Yani, kod şunu yapıyor: İlk IF, basılan tuşun '/' tuşu olup olmadığını kontrol ediyor
İkinci IF, onların ikisi olup olmadığını kontrol eder,
Üçüncü IF, ikisinin yan yana olup olmadığını kontrol eder, değilse, sayaç 1 azalır
Şimdi JAVASCRIPT'te çalışan fakat TYPESCRIPT'te çalışmayan satırı işaretledim, lütfen yardım edin.
Ve belki de mevcut satır ve sütunu almanın daha iyi bir yolu vardır, çünkü bu sadece fareyi kullanıp yorum yazmak istediğim yere doğrudan tıkladığımda çalışıyor, ancak imleci ok tuşlarıyla hareket ettirirsem çalışmıyor.
Teşekkür ederim.
Cevap #1
editor.replace yerine editor.session.replace kullanmanız gerekiyor, editor.replace