message: fresh presence, but not too fresh
diff: @@ -641,7 +641,6 @@ function showPresence(presenceX: number, lineContext: ILineContext, presenceInfo
  }
  function showPositionEndOfLine(lineContext: ILineContext, presenceInfo?: ILocalPresenceInfo) {
  - if ((!presenceInfo) || presenceInfo.fresh) {
  if (lineContext.deferredAttach) {
  addToRerenderList(lineContext);
  } else {
  @@ -672,7 +671,6 @@ function showPositionEndOfLine(lineContext: ILineContext, presenceInfo?: ILocalP
  }
  }
  }
  -}
  function addToRerenderList(lineContext: ILineContext) {
  if (!lineContext.reRenderList) {
  @@ -689,7 +687,6 @@ function showPositionInLine(
  cursorPos: number,
  presenceInfo?: ILocalPresenceInfo) {
  - if ((!presenceInfo) || presenceInfo.fresh) {
  if (lineContext.deferredAttach) {
  addToRerenderList(lineContext);
  } else {
  @@ -715,7 +712,6 @@ function showPositionInLine(
  }
  }
  }
  -}
  function endRenderSegments(marker: SharedString.Marker) {
  return (marker.hasTileLabel("pg") ||
  @@ -2376,14 +2372,18 @@ export class Cursor {
  if (this.presenceDiv.parentElement) {
  this.presenceDiv.parentElement.removeChild(this.presenceDiv);
  }
  - this.presenceDiv.style.opacity = "1.0";
  lineDiv.appendChild(this.presenceDiv);
  }
  + if ((!this.presenceInfo) || (this.presenceInfo.fresh)) {
  + if (this.presenceInfo) {
  + this.presenceDiv.style.opacity = "1.0";
  + }
  if (this.blinkTimer) {
  clearTimeout(this.blinkTimer);
  }
  this.blinkCursor();
  }
  + }
  private blinker = () => {
  if (this.off) {
  @@ -3405,9 +3405,13 @@ export class FlowView extends ui.Component {
  }
  }
  + public findWordUnderCursor() {
  + // let pos = this.cursor.pos;
  + }
  +
  public keyCmd(charCode: number) {
  switch (charCode) {
  - case CharacterCodes.U:
  + case CharacterCodes.K:
  this.historyBack();
  break;
  case CharacterCodes.J:
  @@ -3421,13 +3425,22 @@ export class FlowView extends ui.Component {
  createTable(this.cursor.pos, this);
  this.localQueueRender(this.cursor.pos);
  break;
  - case CharacterCodes.K:
  - this.toggleBlockquote();
  - break;
  case CharacterCodes.L:
  this.setList();
  break;
  - case CharacterCodes.B:
  + case CharacterCodes.B: {
  + // this.toggleBold();
  + break;
  + }
  + case CharacterCodes.I: {
  + // this.toggleItalic("italic");
  + break;
  + }
  + case CharacterCodes.U: {
  + // this.toggleUnderline("underline");
  + break;
  + }
  + case CharacterCodes.D:
  this.setList(1);
  break;
  case CharacterCodes.G:
  