// Check if it is an exception
KmodException l=deadkey_info_.exception_list; while(l!=NULL) { if (l->c==c) {
res=l->data; break;
}
l=l->next;
} if (l==NULL) { // Not an exception. Check if it allowed if (current_view->currentBuffer()->params.allowAccents==true ||
deadkey_info_.allowed.countChar(c)>0) {
res=DoAccent(c,deadkey_info_.accent);
} else { // Not allowed if (deadkey_!=0)
res=deadkey_;
res+=TOKEN_SEP;
res+=trans;
}
}
currentState=init_state_; return res;
}
// Check if the same deadkey was typed twice if (deadkey_==c) {
res=deadkey_;
deadkey_=0;
deadkey_info_.accent=TEX_NOACCENT;
currentState=init_state_; return res;
}
// Check if it is a combination or an exception
KmodException l;
l=deadkey_info_.exception_list;
// Check if the key is allowed on the combination if (comb_info_->data.countChar(c)>0) {
LString temp;
temp=DoAccent(c,deadkey2_info_.accent);
res=DoAccent(temp,deadkey_info_.accent);
currentState=init_state_;
} else { // Not allowed. Output deadkey1 and check deadkey2 + c if (deadkey_!=0)
res+=deadkey_;
res+=TOKEN_SEP;
deadkey_=deadkey2_;
deadkey_info_=deadkey2_info_; // Call deadkey state and leave it to setup the FSM
res+=deadkey_state_->normalkey(c,trans);
} return res;
}
// bool TransCombinedState::backspace() // { // // cancel the second deadkey // deadkey2_=0; // deadkey2_info_.accent=TEX_NOACCENT; // currentState=deadkey_state_;
// return false; // }
LString TransCombinedState::deadkey(char c,KmodInfo d)
{ // Third key in a row. Output the first one and // reenter with shifted deadkeys
LString res; if (deadkey_!=0)
res=deadkey_;
res+=TOKEN_SEP;
deadkey_=deadkey2_;
deadkey_info_=deadkey2_info_;
res+=deadkey_state_->deadkey(c,d); return res;
}
// Go through the character encoding only if the current // encoding (chset_->name()) matches the current font_norm // (lyrxc->font_norm
if (chset_->getName()!=lyxrc->font_norm ||
chset_->encodeString(str)==false) { // Could not find an encoding
InsetLatexAccent ins(str); if (ins.CanDisplay()) {
text->InsertInset(new InsetLatexAccent(ins)); return;
}
}
if (c==0 && active_!=default_) { // A deadkey was pressed that cannot be printed // or a accent command was typed in the minibuffer
if (active_->isAccentDefined(accent,i)==true) {
res=trans_fsm_.currentState->deadkey(c,i);
insert(res,t); return;
}
}// else { // Fall through to the next case //}
if (active_==default_ || c==0) {
i.accent=accent;
i.allowed=lyx_accent_table[accent].native;
i.data.clean();
i.exception_list=NULL;
LString res=trans_fsm_.currentState->deadkey(c,i);
insert(res,t);
} else { // Go through the translation
TranslateAndInsert(c,t);
}
}
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.