docs: def save_current_as(self):
          """
          Save current widget as.
          """
          if not self.current_widget():
              return
          mem = self.current_widget().file.path
          self.current_widget().file._path = None
          self.current_widget().file._old_path = mem
          CodeEditTabWidget.default_directory = os.path.dirname(mem)
          widget = self.current_widget()
          try:
              success = self.main_tab_widget.save_widget(widget)
          except Exception as e:
              QtWidgets.QMessageBox.warning(
                  self, _('Failed to save file as'),
                  _('Failed to save file as %s\nError=%s') % (
                      widget.file.path, str(e)))
              widget.file._path = mem
          else:
              if not success:
                  widget.file._path = mem
              else:
                  CodeEditTabWidget.default_directory = os.path.expanduser('~')
                  self.document_saved.emit(widget.file.path, '')
  
                  # rename tab
                  tw = widget.parent_tab_widget
                  tw.setTabText(tw.indexOf(widget),
                                os.path.split(widget.file.path)[1])
  
          return self.current_widget().file.path