jv_smallsense.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 25 Jul 2013 11:34:26 +0100
changeset 39 748389119d0a
parent 34 5be71b1d52ec
child 42 48307f46ff8e
permissions -rw-r--r--
Initial support for per-language edit support. Some work on Smalltalk edit support, namely on electric blocks. Works fine, but need more work to make it usable but not too intrusive.

"{ Package: 'jv:smallsense' }"

LibraryDefinition subclass:#jv_smallsense
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'* Projects & Packages *'
!


!jv_smallsense class methodsFor:'description'!

excludedFromPreRequisites
    "list all packages which should be ignored in the automatic
     preRequisites scan. See #preRequisites for more."

    ^ #(
    )
!

mandatoryPreRequisites
    "list all required mandatory packages.
     Packages are mandatory, if they contain superclasses of the package's classes
     or classes which are extended by this package.
     This list can be maintained manually or (better) generated and
     updated by scanning the superclass hierarchies
     (the browser has a menu function for that)"

    ^ #(
        #'stx:goodies/refactoryBrowser/helpers'    "BrowserEnvironment - superclass of SmallSenseUnacceptedMethodEnvironment "
        #'stx:goodies/refactoryBrowser/lint'    "RBLintRule - extended "
        #'stx:goodies/roeltyper'    "TypeCollector - superclass of SmallSenseTypeCollector "
        #'stx:goodies/sunit'    "TestAsserter - superclass of SmallSenseParserTests "
        #'stx:libbasic'    "Autoload - superclass of SmallSenseBaseTestClass "
        #'stx:libbasic2'    "CacheDictionary - superclass of SmallSenseTypeCollectorCache "
        #'stx:libcomp'    "AbstractSyntaxHighlighter - superclass of SmallSenseAbstractInstvarInterfaceExtractor "
        #'stx:libhtml'    "HTMLDocumentFrame - extended "
        #'stx:libtool'    "AbstractSettingsApplication - superclass of SmallSenseSettingsAppl "
        #'stx:libview'    "DeviceGraphicsContext - extended "
        #'stx:libview2'    "ApplicationModel - superclass of SmallSenseCompletionWindow "
        #'stx:libwidg2'    "HierarchicalItem - superclass of SmallSenseClassPO "
    )
!

preRequisites
    "list all required packages.
     This list can be maintained manually or (better) generated and
     updated by scanning the superclass hierarchies and looking for
     global variable accesses. (the browser has a menu function for that)
     Howevery, often too much is found, and you may want to explicitely
     exclude individual packages in the #excludedFromPrerequisites method."

    ^ #(
        #'stx:goodies/refactoryBrowser/helpers'    "BrowserEnvironment - superclass of SmallSenseUnacceptedMethodEnvironment "
        #'stx:goodies/refactoryBrowser/lint'    "RBLintRule - superclass of extended RBTransformationRule "
        #'stx:goodies/roeltyper'    "TypeCollector - superclass of SmallSenseTypeCollector "
        #'stx:goodies/sunit'
        #'stx:libbasic'    "Collection - superclass of SmallSenseTypeCollectorCache "
        #'stx:libbasic2'    "CacheDictionary - superclass of SmallSenseTypeCollectorCache "
        #'stx:libbasic3'    "ChangeSet - referenced by RBTransformationRule>>fixes: "
        #'stx:libcomp'    "Parser - superclass of SmallSenseAbstractInstvarInterfaceExtractor "
        #'stx:libhtml'    "HTMLDocumentFrame - superclass of extended HTMLDocumentView "
        #'stx:libtool'    "Tools::BackgroundSourceProcessingService - superclass of SmallSenseService "
        #'stx:libview'    "DeviceGraphicsContext - superclass of extended HTMLDocumentFrame "
        #'stx:libview2'    "SimpleDialog - superclass of SmallSenseCompletionWindow "
        #'stx:libwidg'
        #'stx:libwidg2'    "HierarchicalItem - superclass of SmallSenseParseNodeInspector::ParseNodeItem "
    )
!

referencedPreRequisites
    "list all packages containing classes referenced by the packages's members.
     This list can be maintained manually or (better) generated and
     updated by looking for global variable accesses
     (the browser has a menu function for that)
     However, often too much is found, and you may want to explicitely
     exclude individual packages in the #excludedFromPreRequisites method."

    ^ #(
        #'stx:goodies/refactoryBrowser/parser'    "RBFormatter - referenced by SmallSenseSmalltalkEditSupport>>keyPressReturnToken "
        #'stx:libbasic3'    "ChangeSet - referenced by RBTransformationRule>>fixes: "
    )
!

subProjects
    "list packages which are known as subprojects.
     The generated makefile will enter those and make there as well.
     However: they are not forced to be loaded when a package is loaded;
     for those, redefine requiredPrerequisites"

    ^ #(
    )
! !

!jv_smallsense class methodsFor:'description - contents'!

classNamesAndAttributes
    "lists the classes which are to be included in the project.
     Each entry in the list may be: a single class-name (symbol),
     or an array-literal consisting of class name and attributes.
     Attributes are: #autoload or #<os> where os is one of win32, unix,..."

    ^ #(
        "<className> or (<className> attributes...) in load order"
        (SmallSenseBaseTestClass autoload)
        SmallSenseChecker
        SmallSenseCompletionWindow
        SmallSenseCriticsWindow
        SmallSenseEditSupport
        (SmallSenseFinderTests autoload)
        SmallSenseInfo
        SmallSenseManager
        SmallSensePO
        SmallSenseParseNodeInspector
        SmallSenseParseNodeVisitor
        SmallSenseParser
        SmallSensePosition
        SmallSenseQuickFixer
        SmallSenseRecognizer
        SmallSenseResultSet
        SmallSenseSelectorNode
        SmallSenseService
        SmallSenseSettingsAppl
        (SmallSenseTestCase autoload)
        SmallSenseType
        SmallSenseTypeCollector
        SmallSenseTypeCollectorCache
        SmallSenseTypeHolder
        SmallSenseUnacceptedMethodEnvironment
        #'jv_smallsense'
        SmallSenseAbstractInstvarInterfaceExtractor
        SmallSenseClassInfo
        SmallSenseClassPO
        SmallSenseClassType
        SmallSenseConstantPO
        SmallSenseFinder
        SmallSenseGenericEditSupport
        SmallSenseInferencer
        SmallSenseMethodInfo
        SmallSenseMethodPO
        (SmallSenseParserTests autoload)
        (SmallSenseRecognizerTests autoload)
        SmallSenseSmalltalkEditSupport
        SmallSenseSnippetPO
        SmallSenseUnionType
        SmallSenseUnknownType
        SmallSenseVariablePO
        SmallSenseInstvarInterfaceExtractor
    )
!

extensionMethodNames
    "lists the extension methods which are to be included in the project.
     Entries are 2-element array literals, consisting of class-name and selector."

    ^ #(
        ParseNode isSelector
        AssignmentNode childNamesAndValuesDo:
        AssignmentNode inferedType
        AssignmentNode inferedType:
        MessageNode childNamesAndValuesDo:
        ParseErrorNode childNamesAndValuesDo:
        ParseNode childNamesAndValuesDo:
        ParseNode inferedType
        ParseNode inferedType:
        PrimaryNode childNamesAndValuesDo:
        StatementNode childNamesAndValuesDo:
        StatementNode inferedType
        StatementNode inferedType:
        UserPreferences smallSenseEnabled
        UserPreferences smallSenseEnabled:
        VariableNode isGlobalOrPrivateClass
        'ConfigurableFeatures class' hasSmallSenseEnabled
        UserPreferences smallSenseBackgroundLintEnabled
        UserPreferences smallSenseBackgroundLintEnabled:
        RBLintRule fixes:
        RBTransformationRule fixes:
        UserPreferences smallSenseBackgroundTypingEnabled
        UserPreferences smallSenseBackgroundTypingEnabled:
        HTMLDocumentView doQuickFix:
    )
! !

!jv_smallsense class methodsFor:'description - project information'!

applicationIconFileName
    "Return the name (without suffix) of an icon-file (the app's icon); will be included in the rc-resource file"

    ^ nil
    "/ ^ self applicationName
!

companyName
    "Return a companyname which will appear in <lib>.rc"

    ^ 'eXept Software AG'
!

description
    "Return a description string which will appear in vc.def / bc.def"

    ^ 'Smalltalk/X Class library'
!

legalCopyright
    "Return a copyright string which will appear in <lib>.rc"

    ^ 'Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011'
!

productName
    "Return a product name which will appear in <lib>.rc"

    ^ 'Smalltalk/X'
! !

!jv_smallsense class methodsFor:'description - svn'!

svnRepositoryUrlString
    "Return a SVN repository URL of myself.
     (Generated since 2011-04-08)
    "        

    ^ '$URL: https://vranyj1@swing.fit.cvut.cz/svn/stx/libtool/branches/jv/smallsense/jv_smallsense.st $'
!

svnRevisionNr
    "Return a SVN revision number of myself.
     This number is updated after a commit"

    ^ "$SVN-Revision:"'7962            '"$"
! !

!jv_smallsense class methodsFor:'documentation'!

version_HG
    ^ '$Changeset: <not expanded> $'
!

version_SVN
    ^ '$Id: jv_smallsense.st 7967 2012-04-04 11:12:00Z vranyj1 $'
! !