296 Public slot to start the syntax check for the project sources browser. |
296 Public slot to start the syntax check for the project sources browser. |
297 |
297 |
298 @param fn file or list of files or directory to be checked |
298 @param fn file or list of files or directory to be checked |
299 @type str or list of str |
299 @type str or list of str |
300 """ |
300 """ |
|
301 isdir = isinstance(fn, str) and ( |
|
302 self.__remotefsInterface.isdir(fn) |
|
303 if FileSystemUtilities.isRemoteFileName(fn) |
|
304 else os.path.isdir(fn) |
|
305 ) |
|
306 |
301 if isinstance(fn, list): |
307 if isinstance(fn, list): |
302 files = fn |
308 files = fn |
303 elif os.path.isdir(fn): |
309 elif isdir: |
304 files = FileSystemUtilities.direntries( |
310 if FileSystemUtilities.isRemoteFileName(fn): |
305 fn, |
311 files = self.__remotefsInterface.direntries( |
306 filesonly=True, |
312 fn, |
307 pattern=[ |
313 filesonly=True, |
308 "*{0}".format(ext) |
314 pattern=[ |
309 for ext in self.syntaxCheckService.getExtensions() |
315 "*{0}".format(ext) |
310 ], |
316 for ext in self.syntaxCheckService.getExtensions() |
311 followsymlinks=False, |
317 ], |
312 ) |
318 followsymlinks=False, |
|
319 ) |
|
320 else: |
|
321 files = FileSystemUtilities.direntries( |
|
322 fn, |
|
323 filesonly=True, |
|
324 pattern=[ |
|
325 "*{0}".format(ext) |
|
326 for ext in self.syntaxCheckService.getExtensions() |
|
327 ], |
|
328 followsymlinks=False, |
|
329 ) |
313 else: |
330 else: |
314 files = [fn] |
331 files = [fn] |
315 |
332 |
316 if files: |
333 if files: |
317 if self.__project is None: |
334 if self.__project is None: |
362 ) |
379 ) |
363 self.showButton.setEnabled(False) |
380 self.showButton.setEnabled(False) |
364 self.checkProgress.setVisible(True) |
381 self.checkProgress.setVisible(True) |
365 QApplication.processEvents() |
382 QApplication.processEvents() |
366 |
383 |
|
384 isdir = isinstance(fn, str) and ( |
|
385 self.__remotefsInterface.isdir(fn) |
|
386 if FileSystemUtilities.isRemoteFileName(fn) |
|
387 else os.path.isdir(fn) |
|
388 ) |
|
389 |
367 if isinstance(fn, list): |
390 if isinstance(fn, list): |
368 self.files = fn |
391 self.files = fn |
369 elif os.path.isdir(fn): |
392 elif isdir: |
370 self.files = [] |
393 self.files = [] |
371 for ext in self.syntaxCheckService.getExtensions(): |
394 for ext in self.syntaxCheckService.getExtensions(): |
372 self.files.extend( |
395 self.files.extend( |
373 FileSystemUtilities.direntries(fn, True, "*{0}".format(ext), 0) |
396 self.__remotefsInterface.direntries( |
|
397 fn, True, "*{0}".format(ext), False |
|
398 ) |
|
399 if FileSystemUtilities.isRemoteFileName(fn) |
|
400 else FileSystemUtilities.direntries( |
|
401 fn, True, "*{0}".format(ext), False |
|
402 ) |
374 ) |
403 ) |
375 else: |
404 else: |
376 self.files = [fn] |
405 self.files = [fn] |
377 |
406 |
378 self.__errorItem = None |
407 self.__errorItem = None |
466 QApplication.processEvents() |
495 QApplication.processEvents() |
467 self.__timenow = time.monotonic() |
496 self.__timenow = time.monotonic() |
468 |
497 |
469 try: |
498 try: |
470 source = ( |
499 source = ( |
471 self.__remotefsInterface.readEncodedFile(self.filename)[0] |
500 self.__remotefsInterface.readEncodedFile(filename)[0] |
472 if FileSystemUtilities.isRemoteFileName(self.filename) |
501 if FileSystemUtilities.isRemoteFileName(filename) |
473 else Utilities.readEncodedFile(filename)[0] |
502 else Utilities.readEncodedFile(filename)[0] |
474 ) |
503 ) |
475 source = Utilities.normalizeCode(source) |
504 source = Utilities.normalizeCode(source) |
476 except (OSError, UnicodeError) as msg: |
505 except (OSError, UnicodeError) as msg: |
477 self.noResults = False |
506 self.noResults = False |
697 return |
726 return |
698 |
727 |
699 vm = ericApp().getObject("ViewManager") |
728 vm = ericApp().getObject("ViewManager") |
700 |
729 |
701 if itm.parent(): |
730 if itm.parent(): |
702 fn = os.path.abspath(itm.data(0, self.filenameRole)) |
731 fn = itm.data(0, self.filenameRole) |
703 lineno = itm.data(0, self.lineRole) |
732 lineno = itm.data(0, self.lineRole) |
704 index = itm.data(0, self.indexRole) |
733 index = itm.data(0, self.indexRole) |
705 error = itm.data(0, self.errorRole) |
734 error = itm.data(0, self.errorRole) |
706 |
735 |
707 vm.openSourceFile(fn, lineno) |
736 vm.openSourceFile(fn, lineno) |
710 if itm.data(0, self.warningRole): |
739 if itm.data(0, self.warningRole): |
711 editor.toggleWarning(lineno, 0, True, error) |
740 editor.toggleWarning(lineno, 0, True, error) |
712 else: |
741 else: |
713 editor.toggleSyntaxError(lineno, index, True, error, show=True) |
742 editor.toggleSyntaxError(lineno, index, True, error, show=True) |
714 else: |
743 else: |
715 fn = os.path.abspath(itm.data(0, self.filenameRole)) |
744 fn = itm.data(0, self.filenameRole) |
716 vm.openSourceFile(fn) |
745 vm.openSourceFile(fn) |
717 editor = vm.getOpenEditor(fn) |
746 editor = vm.getOpenEditor(fn) |
718 for index in range(itm.childCount()): |
747 for index in range(itm.childCount()): |
719 citm = itm.child(index) |
748 citm = itm.child(index) |
720 lineno = citm.data(0, self.lineRole) |
749 lineno = citm.data(0, self.lineRole) |
742 if len(selectedIndexes) == 0: |
771 if len(selectedIndexes) == 0: |
743 selectedIndexes = list(range(self.resultList.topLevelItemCount())) |
772 selectedIndexes = list(range(self.resultList.topLevelItemCount())) |
744 for index in selectedIndexes: |
773 for index in selectedIndexes: |
745 itm = self.resultList.topLevelItem(index) |
774 itm = self.resultList.topLevelItem(index) |
746 if itm.data(0, self.filenameRole) is not None: |
775 if itm.data(0, self.filenameRole) is not None: |
747 fn = os.path.abspath(itm.data(0, self.filenameRole)) |
776 fn = itm.data(0, self.filenameRole) |
748 vm.openSourceFile(fn, 1) |
777 vm.openSourceFile(fn, 1) |
749 editor = vm.getOpenEditor(fn) |
778 editor = vm.getOpenEditor(fn) |
750 editor.clearSyntaxError() |
779 editor.clearSyntaxError() |
751 editor.clearFlakesWarnings() |
780 editor.clearFlakesWarnings() |
752 for cindex in range(itm.childCount()): |
781 for cindex in range(itm.childCount()): |
762 # go through the list again to clear syntax error and |
791 # go through the list again to clear syntax error and |
763 # flakes warning markers for files, that are ok |
792 # flakes warning markers for files, that are ok |
764 errorFiles = [] |
793 errorFiles = [] |
765 for index in range(self.resultList.topLevelItemCount()): |
794 for index in range(self.resultList.topLevelItemCount()): |
766 itm = self.resultList.topLevelItem(index) |
795 itm = self.resultList.topLevelItem(index) |
767 errorFiles.append(os.path.abspath(itm.data(0, self.filenameRole))) |
796 errorFiles.append(itm.data(0, self.filenameRole)) |
768 for fn in vm.getOpenFilenames(): |
797 for fn in vm.getOpenFilenames(): |
769 if fn not in errorFiles: |
798 if fn not in errorFiles: |
770 editor = vm.getOpenEditor(fn) |
799 editor = vm.getOpenEditor(fn) |
771 editor.clearSyntaxError() |
800 editor.clearSyntaxError() |
772 editor.clearFlakesWarnings() |
801 editor.clearFlakesWarnings() |