overleaf/services/web/app/views/project/editor/editor.pug
Alasdair Smith fafbbfef87 Fix bug where cursor position wouldn't be saved when switching documents
This was caused by an underlying bug/poor optimisation where the aceEditor
directive would be reconstructed every time when switching between documents.
This wiped instances like CursorPositionManager which relies on keeping state
between doc changes.

Now the directive is only removed when switching between Ace and CM. This
prevents other potential bugs and improves performance.
2018-02-19 11:45:00 +00:00

108 lines
3.7 KiB
Text

div.full-size(
ng-show="ui.view == 'editor'"
layout="pdf"
layout-disabled="ui.pdfLayout != 'sideBySide'"
mask-iframes-on-resize="true"
resize-on="layout:main:resize"
resize-proportionally="true"
initial-size-east="'50%'"
minimum-restore-size-east="300"
allow-overflow-on="'center'"
)
.ui-layout-center(
ng-controller="ReviewPanelController",
ng-class="{\
'rp-state-current-file': (reviewPanel.subView === SubViews.CUR_FILE),\
'rp-state-current-file-expanded': (reviewPanel.subView === SubViews.CUR_FILE && ui.reviewPanelOpen),\
'rp-state-current-file-mini': (reviewPanel.subView === SubViews.CUR_FILE && !ui.reviewPanelOpen),\
'rp-state-overview': (reviewPanel.subView === SubViews.OVERVIEW),\
'rp-size-mini': ui.miniReviewPanelVisible,\
'rp-size-expanded': ui.reviewPanelOpen,\
'rp-layout-left': reviewPanel.layoutToLeft,\
'rp-loading-threads': reviewPanel.loadingThreads,\
}"
)
.loading-panel(ng-show="!editor.sharejs_doc || editor.opening")
span(ng-show="editor.open_doc_id")
i.fa.fa-spin.fa-refresh
|   #{translate("loading")}...
span(ng-show="!editor.open_doc_id")
i.fa.fa-arrow-left
|   #{translate("open_a_file_on_the_left")}
if hasFeature('rich-text')
.toolbar.toolbar-editor(ng-controller="EditorToolbarController")
button(ng-click="toggleRichText()") Rich Text
#editor(
ace-editor="editor",
ng-if="!editor.richText",
ng-show="!!editor.sharejs_doc && !editor.opening",
theme="settings.theme",
keybindings="settings.mode",
font-size="settings.fontSize",
auto-complete="settings.autoComplete",
auto-pair-delimiters="settings.autoPairDelimiters",
spell-check="!anonymous",
spell-check-language="project.spellCheckLanguage"
highlights="onlineUserCursorHighlights[editor.open_doc_id]"
show-print-margin="false",
sharejs-doc="editor.sharejs_doc",
last-updated="editor.last_updated",
cursor-position="editor.cursorPosition",
goto-line="editor.gotoLine",
resize-on="layout:main:resize,layout:pdf:resize,layout:review:resize,review-panel:toggle",
annotations="pdf.logEntryAnnotations[editor.open_doc_id]",
read-only="!permissions.write",
file-name="editor.open_doc_name",
on-ctrl-enter="recompileViaKey",
on-ctrl-j="toggleReviewPanel",
on-ctrl-shift-c="addNewCommentFromKbdShortcut",
on-ctrl-shift-a="toggleTrackChangesFromKbdShortcut",
syntax-validation="settings.syntaxValidation",
review-panel="reviewPanel",
events-bridge="reviewPanelEventsBridge"
track-changes-enabled="project.features.trackChangesVisible",
track-changes= "editor.trackChanges",
doc-id="editor.open_doc_id"
renderer-data="reviewPanel.rendererData"
)
if hasFeature('rich-text')
#editor-rich-text(
cm-editor,
ng-if="editor.richText"
ng-show="!!editor.sharejs_doc && !editor.opening"
sharejs-doc="editor.sharejs_doc"
)
include ./review-panel
.ui-layout-east
div(ng-if="ui.pdfLayout == 'sideBySide'")
include ./pdf
.ui-layout-resizer-controls.synctex-controls(
ng-show="!!pdf.url && settings.pdfViewer == 'pdfjs'"
ng-controller="PdfSynctexController"
)
a.btn.btn-default.btn-xs.synctex-control.synctex-control-goto-pdf(
tooltip=translate('go_to_code_location_in_pdf')
tooltip-placement="right"
tooltip-append-to-body="true"
ng-click="syncToPdf()"
)
i.synctex-control-icon
a.btn.btn-default.btn-xs.synctex-control.synctex-control-goto-code(
tooltip-html="'"+translate('go_to_pdf_location_in_code', {}, true)+"'"
tooltip-placement="right"
tooltip-append-to-body="true"
ng-click="syncToCode()"
)
i.synctex-control-icon
div.full-size(
ng-if="ui.pdfLayout == 'flat'"
ng-show="ui.view == 'pdf'"
)
include ./pdf