mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
fix: snippet \ characters (#513)
This commit is contained in:
@@ -6,7 +6,9 @@ import app.termora.Icons
|
|||||||
import app.termora.actions.AnAction
|
import app.termora.actions.AnAction
|
||||||
import app.termora.actions.AnActionEvent
|
import app.termora.actions.AnActionEvent
|
||||||
import app.termora.terminal.ControlCharacters
|
import app.termora.terminal.ControlCharacters
|
||||||
|
import app.termora.terminal.Null
|
||||||
import app.termora.terminal.panel.TerminalWriter
|
import app.termora.terminal.panel.TerminalWriter
|
||||||
|
import org.apache.commons.lang3.StringUtils
|
||||||
import org.apache.commons.text.StringEscapeUtils
|
import org.apache.commons.text.StringEscapeUtils
|
||||||
|
|
||||||
class SnippetAction private constructor() : AnAction(I18n.getString("termora.snippet.title"), Icons.codeSpan) {
|
class SnippetAction private constructor() : AnAction(I18n.getString("termora.snippet.title"), Icons.codeSpan) {
|
||||||
@@ -33,11 +35,23 @@ class SnippetAction private constructor() : AnAction(I18n.getString("termora.sni
|
|||||||
"\\a" to ControlCharacters.BEL,
|
"\\a" to ControlCharacters.BEL,
|
||||||
"\\e" to ControlCharacters.ESC,
|
"\\e" to ControlCharacters.ESC,
|
||||||
)
|
)
|
||||||
|
val chars = snippet.snippet.toCharArray()
|
||||||
|
for (i in chars.indices) {
|
||||||
|
val c = chars[i]
|
||||||
|
if (i == 0) continue
|
||||||
|
if (c != '\n') continue
|
||||||
|
if (chars[i - 1] != '\\') continue
|
||||||
|
// 每一行的最后一个 \ 比较特殊,先转成 null 然后再去 unescapeJava
|
||||||
|
chars[i - 1] = Char.Null
|
||||||
|
}
|
||||||
|
|
||||||
var text = StringEscapeUtils.unescapeJava(snippet.snippet)
|
var text = chars.joinToString(StringUtils.EMPTY)
|
||||||
|
text = StringEscapeUtils.unescapeJava(text)
|
||||||
for (e in map.entries) {
|
for (e in map.entries) {
|
||||||
text = text.replace(e.key, e.value.toString())
|
text = text.replace(e.key, e.value.toString())
|
||||||
}
|
}
|
||||||
|
text = snippet.snippet.replace(Char.Null, '\\')
|
||||||
|
|
||||||
writer.write(TerminalWriter.WriteRequest.fromBytes(text.toByteArray(writer.getCharset())))
|
writer.write(TerminalWriter.WriteRequest.fromBytes(text.toByteArray(writer.getCharset())))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user