Skip to content

Commit 0ff09e8

Browse files
committed
Development commit
1 parent 7a89537 commit 0ff09e8

File tree

11 files changed

+55
-285
lines changed

11 files changed

+55
-285
lines changed

ChangeLog

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
2017 xxx xx Sergey Satskiy <sergey.satskiy@gmail.com>
2+
3+
* Version 4.0.5
4+
* Proportional change of spacings when a mono font changed for the flow UI
5+
* New feature: show/hide comments/docstrings/except blocks on the flowUI
6+
* More flexible pyflakes suppression line
7+
18
2017 Dec 3 Sergey Satskiy <sergey.satskiy@gmail.com>
29

310
* Verion 4.0.4

codimension/analysis/ierrors.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
"""Interactive errors report using pyflakes"""
2121

22+
import re
2223
from _ast import PyCF_ONLY_AST
2324
from pyflakes.checker import Checker
2425

@@ -28,6 +29,9 @@
2829
# lineno2: [msg3, ...]}
2930

3031

32+
IGNORE_REGEXP = re.compile(r'analysis:\s*(off|disable|ignore)', re.IGNORECASE)
33+
34+
3135
def getBufferErrors(sourceCode):
3236
"""Provides a list of warnings/errors for the given source code"""
3337
sourceCode += '\n'
@@ -60,7 +64,7 @@ def getBufferErrors(sourceCode):
6064
else:
6165
# By some reasons I see ast NAME node here (pyflakes 0.7.3)
6266
lineno = warning.lineno.lineno
63-
if 'analysis:ignore' not in lines[lineno - 1]:
67+
if not IGNORE_REGEXP.search(lines[lineno - 1]):
6468
if lineno in results:
6569
results[lineno].append(warning.message % warning.message_args)
6670
else:

codimension/autocomplete/completelists.py

-52
Original file line numberDiff line numberDiff line change
@@ -26,61 +26,9 @@
2626
import jedi
2727
from utils.globals import GlobalData
2828
from utils.fileutils import getFileContent
29-
from .listmodules import getSysModules, getModules
3029
from .bufferutils import getEditorTags
3130

3231

33-
__systemwideModules = {}
34-
__systemwideInitialized = False
35-
36-
37-
def buildSystemWideModulesList():
38-
"""Builds a map for the system wide modules"""
39-
global __systemwideModules
40-
global __systemwideInitialized
41-
42-
if not __systemwideInitialized:
43-
__systemwideModules = getSysModules()
44-
__systemwideInitialized = True
45-
46-
47-
def getSystemWideModules():
48-
"""Provides a list of system wide modules"""
49-
buildSystemWideModulesList()
50-
return __systemwideModules
51-
52-
53-
def getProjectSpecificModules(path='', onlySpecified=False):
54-
"""Provides a dictionary of the project specific modules"""
55-
specificModules = {}
56-
importDirs = []
57-
58-
if not onlySpecified:
59-
importDirs = GlobalData().getProjectImportDirs()
60-
for importPath in importDirs:
61-
specificModules.update(getModules(importPath))
62-
63-
projectFile = GlobalData().project.fileName
64-
if projectFile != "":
65-
basedir = os.path.dirname(projectFile)
66-
if basedir not in importDirs:
67-
importDirs.append(basedir)
68-
specificModules.update(getModules(basedir))
69-
70-
if path and os.path.isabs(path):
71-
path = os.path.normpath(path)
72-
basedir = ""
73-
if os.path.isfile(path):
74-
basedir = os.path.dirname(path)
75-
elif os.path.isdir(path):
76-
basedir = path
77-
78-
if basedir and basedir not in importDirs:
79-
specificModules.update(getModules(basedir))
80-
81-
return specificModules
82-
83-
8432
def getCallSignatures(editor, fileName):
8533
"""Provides a list of call signatures"""
8634
line, pos = editor.cursorPosition

codimension/autocomplete/listmodules.py

-175
This file was deleted.

codimension/codimension.py

-4
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
from ui.qt import QTimer, QDir, QMessageBox
4444
from ui.application import CodimensionApplication
4545
from ui.splashscreen import SplashScreen
46-
from autocomplete.completelists import buildSystemWideModulesList
4746
from utils.project import CodimensionProject
4847
from utils.skin import Skin
4948
from utils.config import CONFIG_DIR
@@ -141,9 +140,6 @@ def codimensionMain():
141140
splash.showMessage("Importing packages...")
142141
from ui.mainwindow import CodimensionMainWindow
143142

144-
splash.showMessage("Building system wide modules list...")
145-
buildSystemWideModulesList()
146-
147143
splash.showMessage("Generating main window...")
148144
mainWindow = CodimensionMainWindow(splash, settings)
149145
codimensionApp.setMainWindow(mainWindow)

codimension/editor/flowuiwidget.py

+20-1
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ def __createToolbar(self):
407407
self.__toolbar.setMovable(False)
408408
self.__toolbar.setAllowedAreas(Qt.RightToolBarArea)
409409
self.__toolbar.setIconSize(QSize(16, 16))
410-
self.__toolbar.setFixedWidth(28)
410+
self.__toolbar.setFixedWidth(30)
411411
self.__toolbar.setContentsMargins(0, 0, 0, 0)
412412

413413
# Buttons
@@ -434,6 +434,21 @@ def __createToolbar(self):
434434
self.__saveAsButton.setMenu(saveAsMenu)
435435
self.__saveAsButton.setFocusPolicy(Qt.NoFocus)
436436

437+
self.__levelUpButton = QToolButton(self)
438+
self.__levelUpButton.setFocusPolicy(Qt.NoFocus)
439+
self.__levelUpButton.setIcon(getIcon('levelup.png'))
440+
self.__levelUpButton.setToolTip('Smart zoom level up (Alt+wheel)')
441+
self.__levelIndicator = QLabel('<b>0</b>', self)
442+
self.__levelIndicator.setToolTip('Current smart zoom level')
443+
self.__levelIndicator.setAlignment(Qt.AlignCenter)
444+
self.__levelDownButton = QToolButton(self)
445+
self.__levelDownButton.setFocusPolicy(Qt.NoFocus)
446+
self.__levelDownButton.setIcon(getIcon('leveldown.png'))
447+
self.__levelDownButton.setToolTip('Smart zoom level down (Alt+wheel)')
448+
449+
fixedSpacer = QWidget()
450+
fixedSpacer.setFixedHeight(10)
451+
437452
self.__hideDocstrings = QToolButton(self)
438453
self.__hideDocstrings.setCheckable(True)
439454
self.__hideDocstrings.setIcon(getIcon('hidedocstrings.png'))
@@ -461,6 +476,10 @@ def __createToolbar(self):
461476

462477
self.__toolbar.addWidget(self.__saveAsButton)
463478
self.__toolbar.addWidget(spacer)
479+
self.__toolbar.addWidget(self.__levelUpButton)
480+
self.__toolbar.addWidget(self.__levelIndicator)
481+
self.__toolbar.addWidget(self.__levelDownButton)
482+
self.__toolbar.addWidget(fixedSpacer)
464483
self.__toolbar.addWidget(self.__hideDocstrings)
465484
self.__toolbar.addWidget(self.__hideComments)
466485
self.__toolbar.addWidget(self.__hideExcepts)

codimension/pixmaps/leveldown.png

621 Bytes
Loading

codimension/pixmaps/levelup.png

621 Bytes
Loading

codimension/ui/findinfiles.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
from html import escape
2929
from utils.globals import GlobalData
3030
from utils.settings import Settings
31-
from utils.fileutils import isFileSearchable, isPythonFile, getFileContent
31+
from utils.fileutils import (isFileSearchable, isPythonFile, getFileContent,
32+
resolveLink)
3233
from utils.diskvaluesrelay import getFindInFilesHistory, setFindInFilesHistory
3334
from cdmpyparser import getBriefModuleInfoFromMemory
34-
from autocomplete.listmodules import resolveLink
3535
from .qt import (QCursor, Qt, QDialog, QDialogButtonBox, QVBoxLayout,
3636
QSizePolicy, QLabel, QProgressBar, QApplication, QComboBox,
3737
QGridLayout, QHBoxLayout, QCheckBox, QRadioButton,

codimension/utils/fileutils.py

+20-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"""file related utils"""
2222

2323
import os
24-
from os.path import islink, exists, split, join, sep, basename, realpath
24+
from os.path import (islink, exists, split, join, sep, basename, realpath,
25+
normpath, isabs, dirname)
2526
import logging
2627
import json
2728
import magic
@@ -730,3 +731,21 @@ def makeTempFile(prefix='cdm_', suffix=None):
730731
fileHandle, fileName = tempfile.mkstemp(suffix, prefix)
731732
os.close(fileHandle)
732733
return fileName
734+
735+
736+
def resolveLink(path):
737+
"""Resolves links and detects loops"""
738+
paths_seen = []
739+
while islink(path):
740+
if path in paths_seen:
741+
# Already seen this path, so we must have a symlink loop
742+
return path, True
743+
paths_seen.append(path)
744+
# Resolve where the link points to
745+
resolved = os.readlink(path)
746+
if not isabs(resolved):
747+
dir_name = dirname(path)
748+
path = normpath(dir_name + sep + resolved)
749+
else:
750+
path = normpath(resolved)
751+
return path, False

0 commit comments

Comments
 (0)