Skip to content

Commit a55bc47

Browse files
authored
Merge pull request #347 from mtgto/register-empty
単語登録確定で入力モードが変わったときに現在の未確定文字列を更新
2 parents 4987db2 + 023ae58 commit a55bc47

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

macSKK/StateMachine.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,16 @@ final class StateMachine {
104104
case .hiragana:
105105
state.inputMode = .katakana
106106
inputMethodEventSubject.send(.modeChanged(.katakana))
107+
if specialState != nil {
108+
inputMethodEventSubject.send(.markedText(state.displayText()))
109+
}
107110
return true
108111
case .katakana, .hankaku:
109112
state.inputMode = .hiragana
110113
inputMethodEventSubject.send(.modeChanged(.hiragana))
114+
if specialState != nil {
115+
inputMethodEventSubject.send(.markedText(state.displayText()))
116+
}
111117
return true
112118
case .eisu, .direct:
113119
break

macSKKTests/StateMachineTests.swift

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -663,25 +663,26 @@ final class StateMachineTests: XCTestCase {
663663
@MainActor func testHandleNormalAbbrevRegisteringPrevMode() {
664664
let stateMachine = StateMachine(initialState: IMEState(inputMode: .hiragana))
665665
let expectation = XCTestExpectation()
666-
stateMachine.inputMethodEvent.collect(18).sink { events in
666+
stateMachine.inputMethodEvent.collect(19).sink { events in
667667
XCTAssertEqual(events[0], .modeChanged(.direct))
668668
XCTAssertEqual(events[1], .markedText(MarkedText([.markerCompose])))
669669
XCTAssertEqual(events[2], .markedText(MarkedText([.markerCompose, .plain("a")])))
670670
XCTAssertEqual(events[3], .modeChanged(.hiragana))
671671
XCTAssertEqual(events[4], .markedText(MarkedText([.plain("[登録:a]")])))
672672
XCTAssertEqual(events[5], .modeChanged(.katakana))
673-
XCTAssertEqual(events[6], .markedText(MarkedText([.plain("[登録:a]"), .plain("")])))
674-
XCTAssertEqual(events[7], .modeChanged(.direct))
675-
XCTAssertEqual(events[8], .markedText(MarkedText([.plain("[登録:a]"), .plain(""), .markerCompose])))
676-
XCTAssertEqual(events[9], .markedText(MarkedText([.plain("[登録:a]"), .plain(""), .markerCompose, .plain("b")])))
677-
XCTAssertEqual(events[10], .modeChanged(.hiragana))
678-
XCTAssertEqual(events[11], .markedText(MarkedText([.plain("[[登録:b]]")])))
679-
XCTAssertEqual(events[12], .markedText(MarkedText([.plain("[[登録:b]]"), .plain("b")])))
680-
XCTAssertEqual(events[13], .markedText(MarkedText([.plain("[[登録:b]]"), .plain("")])))
681-
XCTAssertEqual(events[14], .modeChanged(.katakana))
682-
XCTAssertEqual(events[15], .markedText(MarkedText([.plain("[登録:a]"), .plain("エび")])))
683-
XCTAssertEqual(events[16], .modeChanged(.hiragana))
684-
XCTAssertEqual(events[17], .fixedText("エび"))
673+
XCTAssertEqual(events[6], .markedText(MarkedText([.plain("[登録:a]")])))
674+
XCTAssertEqual(events[7], .markedText(MarkedText([.plain("[登録:a]"), .plain("")])))
675+
XCTAssertEqual(events[8], .modeChanged(.direct))
676+
XCTAssertEqual(events[9], .markedText(MarkedText([.plain("[登録:a]"), .plain(""), .markerCompose])))
677+
XCTAssertEqual(events[10], .markedText(MarkedText([.plain("[登録:a]"), .plain(""), .markerCompose, .plain("b")])))
678+
XCTAssertEqual(events[11], .modeChanged(.hiragana))
679+
XCTAssertEqual(events[12], .markedText(MarkedText([.plain("[[登録:b]]")])))
680+
XCTAssertEqual(events[13], .markedText(MarkedText([.plain("[[登録:b]]"), .plain("b")])))
681+
XCTAssertEqual(events[14], .markedText(MarkedText([.plain("[[登録:b]]"), .plain("")])))
682+
XCTAssertEqual(events[15], .modeChanged(.katakana))
683+
XCTAssertEqual(events[16], .markedText(MarkedText([.plain("[登録:a]"), .plain("エび")])))
684+
XCTAssertEqual(events[17], .modeChanged(.hiragana))
685+
XCTAssertEqual(events[18], .fixedText("エび"))
685686
expectation.fulfill()
686687
}.store(in: &cancellables)
687688
XCTAssertTrue(stateMachine.handle(printableKeyEventAction(character: "/")))

0 commit comments

Comments
 (0)