diff options
author | Tor Norbye <tnorbye@google.com> | 2014-06-10 18:12:50 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-06-10 18:12:57 -0700 |
commit | 9ea67227e8fdcf8ed37e65bb96e32767291d0f4f (patch) | |
tree | b9d56f49fde137a6098f7cec1aebeda51af705ef /plugins/hg4idea/src/org/zmlx/hg4idea | |
parent | c667c1f74abd96a2098520effdd5afdff7f0d34b (diff) | |
download | idea-9ea67227e8fdcf8ed37e65bb96e32767291d0f4f.tar.gz |
Snapshot idea/138.538 from git://git.jetbrains.org/idea/community.git
a18cb3f: fix CCE
d7d596e: Groovy: Remove extra spaces after deleted statements. So no extra line feed in Introduce Variable appears
25032fc: Groovy traits : abstract trait methods are not clashing
acf850e: IDEA-126013 fix SOE : maps and lists declared recursively should not fail type inference into recursion
75e06bf: clashing trait methods inspection
7ae9c94: TypesUtil.getQualifiedName(type) should return qname even if type is not resolved
beaa518: GrClassReferenceType.rawType() should return raw type even if type is not resolved
2e95615: Groovy: don't use type.getCanonicalText() to infer type qualified name since it can lead to inferring of type parameters and wasting time
08c6e63: Skipping Ant "After Compilation" task if compilation completed with errors (IDEA-125901)
1856d07: SoftWrapModelImpl refactoring. Mocking SoftWrapPainter to make tests platform-independent.
6246ee2: unlock under finally
9ab9a99: corrected 'contains' for library scopes for files from library sources
2e7fcc7: Merge remote-tracking branch 'origin/master'
5928bf7: Merge remote-tracking branch 'origin/master'
718a6a5: removed explicit virtual file inequality
08cab53: Fixed shebang formatting (PY-12775).
24be689: http://ea.jetbrains.com/browser/ea_problems/57321
bf4c84d: http://ea.jetbrains.com/browser/ea_problems/57321
65944db: Merge remote-tracking branch 'origin/master'
5106fdd: better name: reuseActivation -> reuseToolWindowActivation
e1c9f77: Merge pull request 191 from suman-ganta for IDEA-123890
b66574a: Karma auto-rerun tests shouldn't activate Run toolwindow
56409a9: Karma auto-rerun tests shouldn't activate Run toolwindow every time
880a4db: added test for SurroundWithQuotesAnnotationParameterValueFix that checks that char '\n' replaces by "\n" correctly
f6a393d: lambda: fix parameter types comparing order (IDEA-126056)
ccdc69a: method references: avoid double substitution (IDEA-126062)
e05cddc: JavaFx SceneBuilder b-14 fix
c4e8b2c: Merge remote-tracking branch 'origin/master'
879c23d: PY-13210 Unused star import in Django settings.py
a4351eb: platform: profiling actions overhauled
5ec97cf: IDEA-81568 (ignore FS events from /private unless asked explicitly)
236752e: unused library: use existing graph instead of custom dependency analysis
2a1a7c8: IDEA-126047 - Git Clouds: show commit dialog on deploy
d05243d: prefer junit/testng pattern configuration: detect multiple selection directly by context component (IDEA-126045)
27f10a6: check to prevent contradicted intersection type (IDEA-67600)
046b90c: IDEA-114252 WebStorm clipboard history conflicts with external clipboard manager (ClipMenu) Fix native hangup (steps: periodical "Paste action" update() for toolbar button during Drag&Drop in AppCode UI Designer)
885a24d: don't even schedule excluded files for update upon before contents changed events
122cd32: check for invaild file
de3bf99: optimisation: reduce instances of DirectoryScope created
e2efe2e: cleanup
000bd7a: cleanup
68a5b6e: performance
732238f: performance
2f08301: check for type param numbers in java 1.6 should not rise error if super methods have type params (IDEA-57338)
598f921: testdata for IDEA-61415
6deb5bb: testdata for IDEA-65473
9853fb6: suspicious removeAll: compare type arguments, not qualifiers
1dc83a9: Added ability to pass command-line args to Gradle on project sync/refresh.
e61c327: fix binary compatibility
ef92f2f: fix binary compatibility
40875a7: fix binary compatibility
79d53fd: IDEA-118400 Update Project dialog redesigned, IDEA-106435 ability to perform only update, IDEA-75768 checks saved for Update dialog
d218629: Remove 'zen coding' from emmet support configurable
150b674: HTML: ignore unknown filters
2fac634: @NotNull
99d5348: Emmet CSS completion
2989429: EA-57291 (severity reduced as the real reason is logged earlier)
491dc5f: contract inference initial
bc12a14: extract contract checking to a separatate inspection
75c4257: MethodContract.createConstraintArray
109906e: WEB-12316 PhpStorm performing awful when typing in HTML zones in PHP files
91b7c69: check file on updateExecutionPoint
1591844: WEB-11678 JavaScript debug: step into and step over do not change the line
ec43ad0: Merge remote-tracking branch 'origin/master'
e58ce76: try unnecessary module dependencies to support exported dependencies
a9c8a08: IDEA-125568 (possible NPE in some test setup paths fixed)
2fdb004: Merge remote-tracking branch 'origin/master'
39cc27d: suggest to restart IDEA if user accepted to enable/disable plugins from startup notification (IDEA-121369)
693bbf6: encapsulate fields: preserve comments inside (IDEA-124747)
fcaa3e2: add java specific debugger settings into common settings node
1a3c6c6: code cleanup optimization: run inspections over exactly one element
4c3bda0: Get rid of direct "dispose" call
539f90a: WI-23626 Breakpoint muting does not disable after run. Regression from 7.1.3 to EAP 8.
ffcf607: junit: accept custom matcher descriptions (IDEA-125942)
de7387f: provide remove assignment fix for silly assignment inspection (IDEA-125993)
54e38ee: IDEA-121664 Search Everywhere: results from different categories appear mixed
99adcfd: EA-55292 (NPE fixed)
a87bf9b: Unneeded exception dropped
128b05b: Merge remote-tracking branch 'origin/master'
abc4ba7: GWT builder: test added
f76fea5: test added
30fe2c4: invoke 'save' after 'mark root' action to update iml files immediately
9f6fa54: registering output-to-buildTarget mapping instead of output-to-source mapping to address cases when multiple sources compile into the same output (e.g. Kotlin)
f06f5a6: Handle '@' symbol in ssh username
c142a3c: OC-9609 [Refactoring: common approach for Non-DumbAware mode in folding] +review CR-OC-1561
e4dbc27: fix problem with extending sorted set by one and attempting to increase random access capacity in case of value removal
aa0e217: use more detailed path to file only when opened file name is not unique (IDEA-125958)
fe72975: Marking DuplicateIndex as PsiDependentIndex to attempt to avoid problems with unsaved document indexing being asynchronously committed (EA-36001)
22db3a8: get rid of RowSorters to fix a few exceptions. New Plugin UI has its own table header without swing's row sorters
e5541c8: deprecation inspection uses default serialization
24077b1: push 'change method return type' fix down when variable is checked
65ec59f: icon decoration for external annotations (IDEA-39633)
8f10d71: option to warn about members in deprecated classes (IDEA-112084)
27ec65a: optimize imports under progress (IDEA-125761)
14d3780: Cleanup (formatting)
e5fcad3: revert (java: minor optimization)
f8e2be2: do not recreate breakpoint highlighter if not requested implicitly, this fixes jumping breakpoints on several quick line insertions
44fc624: sql: better varchar and varchar2 completion
b5d09fe: getEqualityObject() fixed for JS debugger
dc3bd73: call applyInformation for all EditorBoundPass for each editor
47336a6: cleanup
67c4e4b: calculate default inspection name by trimming Inspection or InspectionBase
4a0d396: notnull
a3f3988: cleanup
c8337a2: cleanup
8ad9eb1: moved long-running tests into performance suite
395ae29: expand javadoc on PSI validity
48c2fc4: special PIEAE handling for NULL_PSI_ELEMENT (its getUserData throws exceptions)
f3fe82e: IDEA-114252 WebStorm clipboard history conflicts with external clipboard manager (ClipMenu)
3d7f7d2: IDEA-125820 DOM Generator: problem with XML element names matching default/generated imports CR-IC-5549
eadc889: build initial foldings in background (improvements as per CR-IC-5531)
350760c: rename: detect "field would hide local" conflict (IDEA-125934)
0de6aa9: move: do not convert classes to files before move
35005bc: IDEA-125947 not initialized final field should not be raised on any refs from inner classes
62f7acd: plugins: take into account already installed plugins during dependencies check (IDEA-123767)
a673a47: softReference to cache known plugin extensions
3995088: update info: link to the product home page (IDEA-124023)
aa9a7b1: move: filter out nested dirs/files on actionPerformed, update should be fast (IDEA-111413)
e887cc3: Merge remote-tracking branch 'origin/master'
24c1fab: fix thread crash in debug console after syntax error (PY-12600)
49b602b: java: minor optimization
f5f8124: java: helper method for Kotlin
e674dd1: fixed PY-13177 PyCharm hangs on adding incorrect interpreter (python3-pyinotify)
5c41c76: Maven: manifest generation fixes - use ApplicationNamesInfo#getFullProductName for "Created-By" attribute value, redundant code removed
d2752f1: invalidNames is a bit confusing, let's use existingNames; also small cleanup
7b282c4: lots of EA-57109 - PIEAE: LeafPsiElement.invalid. attempt 2.
cf78c48: External System + Gradle: support for running a task before launch of another configuration added. Related issue for Gradle: IDEA-113437 'Before Launch' should support running a Gradle task
6396cd8: IDEA-125900 (resolve of synthetic enum methods in class files fixed)
bb35b26: Cleanup (cached value manager instead of boilerplate)
6f417af: reuse LocalQuickFix because several instances can be handled badly
c44d318: IDEA-104484 Console ExceptionFilters are added twice for debugging java app
e67157d: IDEA-125470 While in editor, wild re-displaying occurs when soft wraps are enabled
2de7658: folding model implementation cleanup
c7a1fbb: fixed NPE in debuggers that do not use value markers
159a46b: JavaRearranger: fixed field caching in case of multiple classes in java file (IDEA-123733)
b3f67525: Added scope and file mask filter to reformat directory/project/module dialogs (IDEA-59850) [CR-IC-5534]
c3a1eb8: Merge remote-tracking branch 'origin/master'
9d5429e: remove variable: do not leave tailing loops/ifs (IDEA-124489)
d6c14fb: Delete LightLexerTestCase
83abbd0: fixing OOME in tests
fd0acc2: temp disable 6520348e0292c4bb47389cb12926dc83826796e7
22c687d: Merge remote-tracking branch 'origin/master'
9102909: use goto.nonProjectScopeDisabler EP to show/hide 'include non-project files' checkbox
0dca1c3: use goto.nonProjectScopeDisabler EP to show/hide non-project items checkbox
def9b6f: EP to disable using Non-project scope for IDEs where this doesn't make sence
6520348: lots of EA-57109 - PIEAE: LeafPsiElement.invalid
1ecc94f: don't set Darcula UI in search text field if it's already set
2357251: rollback NPE fix (found the real problem)
f52fccd: Cleanup (optimization; formatting)
5d85b2b: spped search by value in debugger trees
7e5f8a2: fixed VM leak in debugger tree listener
8771d61: fixed VM leak in object marks
b9abbfb: template ConstructorInsertHandler test (IDEA-101429)
6713978: start type template if at least object was inferred
8540bac: RefCountHolder: allow referenced files' ast to be gc-ed during highlighting
716aa5a: generate name for save scheme dialog
c86e3af: external annotation change should drop all psi cachedValues
ae0bd0f: cleanup
26af3f5: implement equals and hashCode to make two LocalQuickFix instances equal if they refer to one and the same IntentionAction
0ade045: IDEA-125645 On breakpoint hit, opens file in new tab in "active" split -- even if file is already open in tab in "inactive" split
1881ceb: test — auto expressions: filter out expression contained unresolved local variable
3677585: IDEA-103523 MethodMayBeStaticInspection replace qualified usages by class name (reused MakeMethodStaticProcessor)
89905f6: don't hold reference to PsiFile
83bc4af: move AddSpaceInsertHandler.java to lang-impl
769a599: WEB-12348 Quick fixes not always working in Inspection window
18b220c: IDEA-90008 (editor files are refreshed elsewhere, no need to watch)
894818e: Cleanup (deprecated code dropped)
aba3f2f: CreateSwitchIntention removed all operations with Document to exclude possible problems
4c6818a: removed from IdeaPlugin SurroundWithQoutesIntention
044671d: Merge remote-tracking branch 'origin/master'
a109c22: IDEA-121370 Failed Gradle task doesn't block the dependent run configurations
fbf4eb5: Merge remote-tracking branch 'origin/master'
89f5018: imports optimized
baa6389: SurroundWithQuotesAnnotationParameter: intention replaced by quick fix to the corresponding error
5f7a426: no later runnable for anonymous class creation template
05d13a3: Get rid of needless filtering
a8660f4: use "OS user" term
cb71334: fix NPE on linux
930235e: notnull and remove unused field
c7cd901: notnull
83d5484: Color & Fonts panel: generate new name when copy
6cc553f: cleanup
fa4e0deb: remove unused class
e291480: correct checking read-only status for CreateSwitchIntention
cdd07a4: CreateSwitchIntention checks language level and that file is witable
11adc57: Cleanup (warning; unneeded reflection)
b6b5bbd: start template when anonymous class is completed with Object params (need better heuristic)
f9a561c: enable change type signature for anonymous classes
d645cf9: optimize icon
b393a47: IDEA-125825 Surround with quotes annotation parameter value intention
f5f2f31: IDEA-99541 New run configuration type to run Ant Return back ProcessHandler.waitFor() for standard task execution (not Run Configuration)
4112da6: IDEA-125872 (avoid resetting mod. stamp)
4b93641: fix html parsing (big thanks to cdr)
0b6b37c: notnull
4ffddd7: IDEA-125829 ClassInheritorSearch should find traits
2fe5331: fix compilation
9ddfbc8: IDEA-125730 Declare explicit type: broken template should revert all its changes and move the caret back to the original position.
8f5e205: IDEA-125759 correct assert check
59aef31: IDEA-125781 ReadAction in GroovyTraitFieldSearcher
d946471: IDEA-125730 correct item order in ChooseTypeExpression
9c99488: JS debugger in Chrome: support breakpoint conditions, better support for 'log evaluated expression', non-strict column number comparison
6b9f4a4: goto related localizations for properties files
3c06c05: fixed truncated object id
ee5bba7: ResourceBundleEditor: subeditors without virtual spaces (part of IDEA-85572)
9e358f4: CR-IC-5505 (cleanup)
69b649e: Offer to launch vagrant on skeletons generation in popup balloon.
82b7f75: Merge remote-tracking branch 'origin/master'
86ada28: Don't show modal dialog about vagrant start from packages list (PY-12838).
af40fe8: DataPointHolderConversionIntention not supports fields without initializer for conflicts escapings
0455ae8: NPE
02ca2bd: PsiBundle: fix typo in bundle name, cleanup
cc8d259: don't cache language level in JavaDirectoryService
60cbfb0: allow to create java classes named pkg.Class (IDEA-125442, CR-IC-5537)
b673277: ensure canonical module order in CE modules.xml
1388cfb: BaseElementAtCaretIntentionAction extends BaseElementAtCaretIntentionAction
a777074: IDEA-125558 new debugger: double result in evaluate expression - updated fix
add5377: reverted fix for IDEA-125558
5ad334b: AddJavadocIntention moved to "Declaration" category
b4f899b: notnull
dd53334: allow com.intellij.openapi.roots.impl.ModuleRootManagerImpl#getFileIndex to work in upsource
a28c2f4: register ExternalResourceManagerExImpl
9aa5346: EA-53941 - assert: FileManagerImpl.getCachedPsiFile
3b946e3: Merge remote-tracking branch 'origin/master'
62eeced: show notification if power save mode is on on startup (IDEA-125847)
d13982b: most specific: do not start java 8 algorithm for provided type args (IDEA-125855)
12a99d8: virtual array by selection rule (IDEA-125862)
610b0ba: IDEA-125820 DOM Generator: problem with XML element names matching default/generated imports
80199b4: DBE-19 0xDBE: edit description at Settings / Passwords
85c5cf1: Merge remote-tracking branch 'origin/master'
3efe19e: added help id for evaluate dialog
8456e04: IDEA-123787 "No live templates selected" label in multiple selection
9ce90b8: IDEA-124362 No scrollbar in Settings | Code Style | General
c04939b: auto expressions: don't compute for nested values
56917b3: make it by default and look at the performance
f30498b: Merge remote-tracking branch 'origin/master'
adae926: Don't ask to start Vagrant in a modal dialog on skeleton generation (PY-12838).
1315295: watches in tasks
57f4bbf: IDEA-125462 Unable to execute simple platform test with IDEA Ultimate Plugin SDK
9a56986: do not evaluate values twice
b7b995b: IDEA-54137 All alarms in RBE deleted. Save to file on focus change
c3b697a: IDEA-39879 Background color and gutter stripe color for bookmarks should be configurable
b893466: close editors only
08d3b73: NPE fixed
37cb86b6: fixed Color object icon renderer
a1ecb55: fixed switching multiple suspended threads in java
0c7e893: correctly load old enabled state of debugger expressions
6847fc3: IDEA-119364 (not introduces case statements for enum)
673d730: wrong shortcut suggested in goto test popup (IDEA-125857)
6a73a71: IDEA-108141 reused code of FixDocCommentAction
d03289c: IDEA-85274 Tasks: the detached editors are not affected by context change
a375d1e: java: correct stub for enums compiled by Groovy
c4edd41: aware of debugger communication error on break event
fd6ccfc: IDEA-125678 ConvertInterfaceToClassIntention.moveExtendsToImplements improved
0b0873d: IDEA-58422 implemented in IPP
ef6b09a: more possible reasons for non-physical file invalidation
745c9b0: IDEA-68916 "Zoom" for Mac OS
5372371: cleanup
c1810c1: cleanup
24cc395: Merge remote-tracking branch 'origin/master'
fd72f3e: javac 6 workaround (from IDEA-16723)
19af1ec: refactoring (following CR-IC-5531)
784512b: enum constants access inside enum constant initializers fixed (IDEA-125816)
b1b3b1d: accept intersection types in foreach stmts (IDEA-125800)
f1d927b: Mac: add app-title if project-title is empty
08f4caf: fix sorting
4559c7f: IDEA-123189 Project wizard: tree entries text cutoff
90bd11d: javadoc
6a6fa53: cleanup
b8be4e2: IDEA-125805 (language level increase quickfix for switch on enum/string)
75a492a: Cleanup (less repeated checks; less parameter pinballing)
b159632: testdata for IDEA-57388
656ce72: testdata for IDEA-67578
88a9ace: old inference: take only EQUALS bounds from sibling param (IDEA-119757)
dc3b3a9: try 'generate missed tests' without names check (IDEA-125818)
1dfcabe: javadoc fix
9b09325: moved to psi, register more services
f3cc359: register find usage providers
a0f8840: moved to psi
25fe38e: javadoc fix
6f7574c: dfa: invalid type diagnostics (IDEA-125179)
c9dff24: don't advertise Quick Definition when completion doesn't contain psi items (IDEA-87208)
43c06cfc: always use forward slashes in copy reference (IDEA-125292)
3dd0451: IDEA-125442 Strip .java from classname when creating new class
571196f: IDEA-125749 Create New Class Dialog - Pressing 'e' in Kind selects 'Interface' instead of 'Enum'
7a71a4d: External system: code cleanup
a635296: fix popup width jumping
9ea2438: IDEA-125609 - Built-in Git SSH executable ignores IDEA http proxy settings
f894389: IDEA-122962 - Clouds: perform connection test in background - auto-reload in CloudFoundry run configuration
494fbfe: renamed and more factories
309e1b1: provide empty quick fix factories for upsource
b78b8d0: initialize and register stub serializers
da59ab8: IDEA-125498 Search Everywhere: sometimes after navigation the list of search results reappears in the left corner of the screen
6549903: External System: IDEA-123031 Import sources and docs for module level libraries
b8d02c9: isValid
c59fbba: Reimplement parameter info test
50e11e6: fixed PY-13150 Pyramid run configuration fails when specifing '--reload' in additional option
320ecac: IDEA-39879 Background color and gutter stripe color for bookmarks should be configurable
ab780e0: WEB-12346 Watches pane: Adding/removing variable not possible when dragged out
4cdca43: Merge remote-tracking branch 'origin/master'
347094c: Merge remote-tracking branch 'origin/master'
b75e6ed: fixed tests
ae2b6c6: testdata fixed
37b352f: changelist preselection for file fixed and refactored
982e039: fix rendering issues
4dbfccf: registry ui improvements
16ce85a: notnull
4568663: IDEA-114011 Github: work with HTTP, not only with HTTPS
8cb550e: ExternalResourceManagerImpl inlined, moved to psi
ecff152: moved to core
2ff189c: removed "new in" which are not that new anymore
8787917: toString
6afd4f4: build initial foldings in background
9a121b2: EA-57104 - assert: PsiFileImpl.navigate
1080da4: IDEA-77640 Warn if the current subscription license will not work with the new version in the Update Info dialog
478fc87: test fixes and code unification
fda1430: update inspection and quickfix
287c944: OC-9609 [Java doc only] +review CR-OC-1561
71594cc: OC-9609 broken based on AST-tree folding at project opening +review CR-OC-1561
80ea2b9: better name for static method newOne -> of
b97e528: suppress contract validation for wrong Logger.assertTrue
5d8ee45: IDEA-112222 Validate @Contract annotation is related to the code
b09762d: cache properties files by bundle name and module
f25f58e: fix invalid PsiTreeUtil contract
97e0bde: remove unused VfsUtil.virtualToIFile
1f4d0df: notify BuildManager only if file events affect opened and watched projects (second part of IDEA-122685)
c503439: quickfix for IDEA-125710 (Wrong selection behavior in file history window)
5318e0e: fix assertion / comments / better transformation policy of array of changes / sorted ints into bit set
edeb5d2: testdata for IDEA-57290
b1b3964: testdata for IDEA-58692
af3e413: testdata for IDEA-24496
ae57176: provide 'place' language level for convertible check to allow types from old libraries to be casted to primitives (IDEA-117684)
2f6d5c9: testdata for IDEA-118362
f55b7ff: equality asymmetry fixed (IDEA-118533)
fdcb20b: type distinct prover asymmetry fixed (IDEA-118533)
6b5c924: suspicious collections call: process removeAll (IDEA-108755)
e9e9523: IDEA-125414 DB keys/indices to columns navigation
756b77b: accumulate index changes into array and convert it into bitset as needed
29f2788: track index info when encountering duplicated inputId
5803a5f: to Peter: addAll for emptySet doesn't work
61dbfe9: Merge remote-tracking branch 'origin/master'
95bc1fb: some more @MagicConstant
c3c31bd: EA-57052 - assert: MasterKeyPasswordSafe.decryptPassword
e761dd8: @NotNull'ed for EA-56831 - NPE: RemoteProcessSupport.release
9463bb3: Merge remote-tracking branch 'origin/master'
ff49bd1: use VirtualFile.nameSequence for isProjectOrWorkspaceFile check
248d752: restore classes merge with fix of foreach processing
fedbba7: Merge remote-tracking branch 'origin/master'
a494959: WeakReference objects used for vfile->document mapping should not stay in memory forever
8110e0b: less allocations in FileBasedIndexImpl.getUnsavedDocuments
180df2c: completion: don't suggest true/false literals where boolean is not expected
76939c8: restore query mismatch inspection
fffde12: new inference: mark erased for type params/raw types compatibility (IDEA-122932)
a2615d0: new inference: accept raw equality
67daae0: leave capture during bound composition of unbounded wildcards (IDEA-125423)
01c9bba: old inference: ignore java 1.6 bug in new versions (IDEA-125744)
b7ab465: old inference: choose child type between types in subtypes constraint (IDEA-118536)
d311a4e: perform target.findUsages() if no psi found
98302cc: IDEA-125186 Shorten reference with an import even if there is a conflicting class from Groovy default packages
d47756d: show initial value only for strings and primitive types
13986db: IDEA-125693 Creating a project in dir '~/Desktop/test' creates the project in the dir '/Applications/IntelliJ IDEA 13 CE.app/bin/test'
ae7d190: NPE when using from UML
530189b: a little bit smarter methods matching
8150b8b: IDEA-125566 Start From Scratch: can't close Customize IDEA dialog
ab7b2a0: IDEA-122962 - Clouds: perform connection test in background - auto-reload in frameworks
1a7ab39: restore (wrong) Logger.assertTrue contracts
c12b68d: dumb-aware error dropping actions
ac9d1e8: get java language level from the root model when pushers haven't finished yet
bd93483: IDEA-125565 Start from Scratch: Customize IDEA dialog: UI Themes page looks bad on Linux
6ea44e9: Gradle: use module library level for local dependencies, update library name to contain groupId
7d4dae9: IDEA-125565 Start from Scratch: Customize IDEA dialog: UI Themes page looks bad on Linux
fb173cc: IDEA-124461 New Module (Maven, Gradle) created in Empty project don't get the specified jdk
be064c3: cleanup
89dc105: show mark for a stack frame executing a method from marked object
f48b9fa: Merge remote-tracking branch 'origin/master'
c4dc543: IDEA-125745 Controls on breakpoints dialog resize differently
a105b5b: IDEA-125736 new debugger: disabled all exceptions breakpoint stops at every exception even in mute mode
5fd6a23: IDEA-124082 default changelist for Commit dialog fixed when 'commit directory' called
3a9e539: IDEA-124347 Master Password prompt strategy changed for mercurial authentication
74d52dd: introduce CvsFilePath to prevent public api changes
a489967: fix typo
f2c14b5: Start plugins wizard #30 for Mac OS X should be "native" keymap by default
a16bfe6: External-system: IDEA-124927 Don't refresh projects on opening when auto-import is disabled
78ee0a2: IDEA-125551 Start From Scratch: Customize IDEA dialog: JBoss plugin should not appear in JavaFrameworks group
e276bfa: unregistering obsolete service components
fbb0f39: jasper validation tests: fixes and cleanup
0d5f295: clean up: - replaced 2 usages isAssociated method from ValueContainer with getValueAssociationPredicate() delegation - rewrote serialization of input ids to be independent from concrete input id set implementation via usage of int iterator - inlined saveInvalidateCommand in ValueContainermpl and added comments
7321069: ad text in 'go to' actions
b57a8ca: get python language level from the root model when pushers haven't finished yet
a30a74e8: fix dfa contract believing that nullable is always null
9c29b95: fix dfa contract IOOBE with varargs
31be027: relax time in MessageBusTest.testPostingPerformanceWithLowListenerDensityInHierarchy
4955009: remove mostly non-useful Integer.valueOf completion suggestions
41b974e: anonym -> lambda: disable if target SAM type is raw and methods are called on params with Object erasure (IDEA-125613)
032faad: EIAE
2f4d4fb: register container provider
ba6e884: initialize file types
2f3db6a: UOE
73bfc96: NPE
3a8647f: reverted changes blocking inner classes in libraries to work
b66623a: do not fail position manager if assert happened in one of the providers
6dc93a1: skip binary files earlier, no need to get psi for that
91f7c25: do not scan all files when trigram index is available
7d81587: register extension points
4489140: -contributor
5fe5352: rw detector
707e584: IDEA-125649
6a28780: notnull
a7d14fe: IDEA-107588 (Mismatched query and update of collection - include Collections.addAll())
39d4dfb: fix 'as Trait' result type
b1e9f66: EA-57003 - NPE: WatchInplaceEditor.doOKAction
2d0aa2a: BlockMarkerCommentsInspection changes after review
98954e2: EA-57004 - NPE: XBreakpointManagerImpl.createBreakpointDefaults
3b09eea: fix compilation
40f7150: low priority 'create getters/setters' quickfixes
a34a01d: duplicated code
c6d539f: disable assert for Groovy clients
7459b0b: cleanup
f008f98: IDEA-125584 Groovy: NPE at org.jetbrains.plugins.groovy.annotator.intentions.CreateMethodFromUsageFix.invokeImpl
93d7ac9: IDEA-125576 Groovy: 'Create trait' could be added to 'Create From Usage'
6975411: get rid of 'public' keyword in templates
53fbe15: IDEA-125556 New Groovy class dialog contains trait option IDEA-125577 new icons for Groovy traits
90ec82d: more diagnostics for gdsl scripts
60c7d6f: EA-57072 - IOOBE: EditorImpl.offsetToLogicalLine
5801886: External-system: IDEA-124927 Don't refresh projects on opening when auto-import is disabled
2b0a1b9: One more condition for go to actions history
3ab65e6: (EA-55107) case with empty parents in history fixed
d67e9b4: IDEA-118279 create constructor params: apply cleanup
11d1e29: one test rewritten in Kotlin
9b3b90d: EA-56987 - NPE: DebuggerTreeNodeImpl.updateCaches
91005a8: added a separator above annotate action
32874b1: renamed to PropertiesPlugin.xml to avoid conflict inside upsource jar
05191a3: renamed to GroovyPlugin.xml to avoid conflict inside upsource jar
08caf4f: add to watches action should work from evaluate and inspect
d85d443: more moves to groovy-psi
fadd451: moved properties to properties-psi
b9fa2ab: register folding builder in env
ab8b582: moved to psi
c1da4f3: moved away from openapi
4bf725a: moved away from java-impl
41f2d2c: moved to core
5366e96: moved to psi
cf298fc: ensure editor is released in EDT
5b09e28: EA-57008 (pair was good enough)
1144d7b: extend java-class instead of groovy-class (to migrate to Kotlin)
3b85f7c: removing obsolete extension point
7ac28ba: remove outdated action id
53ddc21: Simplify condition in go to actions history
2807e38: rerun failed: include concrete class if containing is abstract (IDEA-125425)
9758f97: return inside finally: stop at lambda (IDEA-125605)
b90111f: more reliable keeping of reference on stack (following CR-IC-5487)
203d7fb: remove unused code
75c7630: cleanup
dc11403: cleanup
9d2b9ae: maven compiler tests to use external compiler only
ff05505: standalone jps updated: load path variables specified in gant scripts
05c2f31: history for go to actions, initial
0918150: combine two classes into one to reduce duplication
806c8d2: more accurate collection query detection for method references
19bf6b9: add "stream" and "parallelStream" query names
c0a470f: EA-57015 - SOE: AbstractTreeUi.access$
48a01b0: add common actions to all variable views
0529ff5: NPE if a previous focus owner is null.
d27fd1e: plugin updater: accept older plugin versions for broken plugins (IDEA-125646)
eeca5a8: search for package everywhere again (IDEA-125688)
04a7434: EA-56966 - IAE: XRegularValuePresentation.<init>
f1b4acc: Enabling dialog based implementation because of always on top regression.
5ef4a59: fixing java compilers configuration UI
7322427: EA-56894 - AIOOBE: AppCodeDesignerEditor.findModule - for AppCode designer module don't needed
05e2292: IDEA-125684 appearance of JTextField component in disabled state
4660916: IDEA-125500 Terminal is not locale aware
e3c14f5: following review CR-IC-5487
80a7f69: IDEA-25183
80eba2a: IDEA-42954 Watches are not saved on restart of debug sessions
d174c22: refactoring - following review #525
535844a: IDEA-104441 Wrong auto-completion of closed XML tags: handling unbalanced xml psi
220964b: BlockMarkerCommentInspection moved to java-analysis-impl
6c6a682: Shortcut Promoter initial
dff9280: IDEA-93040
622c1df: NPE
8f1d011: reverted
31d0a47: moved to analysis
a518606: moved to psi
e0d0ffd: moved to core
282862d: moved to core
1ccdeb0: more moved to psi
5d21da5: added equals to LocalsControlFlowPolicy, notnull
15ecfbd: deleting old make implementation
fa243c5: IdePlugin fixed
0427d8e: change default action
487d93d: remove useless source roots
b5fb0b6: IDEA-100200 - Clouds: deployment to clouds ignores the http proxy settings - CloudBees
cef9a6c: IDEA-71997
05b1763: deleting old make implementation
29b98db: deleting old make implementation
f723b07: Tips added (PY-12484).
de95451: Merge remote-tracking branch 'origin/master'
2d108ef: Tips updated (PY-12982).
cc4b248: java: parsing of complex bounds in stub signatures fixed
66d70ab: Cleanup (unneeded concatenation)
259d59a: added dependency from devkit module to its jps-plugin
cff9f70: JPS: added method to process modules and libraries in order
36e275f: Gradle: handling of project build classpath resolving errors related issues: http://youtrack.jetbrains.com/issue/IDEA-125592 http://youtrack.jetbrains.com/issue/IDEA-124839
6e512d0: [ review #701 ] introduce field where required to avoid multiple objects creation
98edcf4: Ruby highlighting lexer refactored for upsource core environment
bbb4d67: removed jsf-iml
c8b081a: DevKit: Goto EP declaration in plugin.xml (IDEA-86100) CR-IC-5473
c96948d: show initial value in "set value" editor
758adbb: make sure document reference is cached reliably
19cd6d5: show progress for editors opening
311406c: select only required editor in window
68aadaf: init foldings for all opened editors (otherwise saved folding state will not be restored for them)
c0511af: remove dead code
e5708cd: open editors in EDT
ffcd49d: IDEA-41226 Reference debugger-marked objects in expressions
0034f61: Merge remote-tracking branch 'origin/master'
a7e0137: externalization: suppress unused to .xml compatibility
0f8912f: enforce string copying (trim substring() result for java 6)
152503a: new exception creation without args: completely ignore exceptions with only no param constructor (IDEA-125660)
d64d714: customizations: check group is included in correct root group; allow to invoke moved action group, e.g. Create Run Configurations group (IDEA-125484)
aaa01e4: fix module leaks via CompilerTester
1551266: Added output folders to ModuleExtendedModel.
9874668: IDEA-104441 Wrong auto-completion of closed XML tags
b71fe91: simplification & cleanup postfix templates
9835800: Maven: plexus-archiver lib added to licenses
a7aa0df: lambda: extract parameters incompatibility check
0fac1ec: Merge remote-tracking branch 'origin/master'
5eeea43: PY-13084 Variables passed to url kwargs are not suggested to template
8a3ad93: hide lang-api refactoring actions if no handlers present
86d0ff8: Merge branch 'fix4' of https://github.com/krasa/intellij-community into fix4
6b46fcf: dfa: contracts validation should not exclude notnull validation
0212832: Better comments
463a90c: force check for update on exception from non-bundled plugin
4e95814: nullify: to run on pooled thread without progress
90b27a4: IDEA-122929 Hg: remove unrelated urls paths from pull/push dialog.
e2e243b: CompositeFilter#forceUseAllFilters=false by default to restore previous behaviour Deprecated public fields in Filter#Result and getters to give warning about possible danger
aa83182: Merge branch 'python-fixes'
a9aaf0c: Maven: fix artifact layouts tests for added generated manifest.mf
a1d93e0: Use union of types of members as iteration type for tuples
06a130f: Interpret tuple default parameter value as a weak type (PY-10967)
24b18f8: IDEA-119804 second click on item in watches panel should toggle edit mode
a479d46: IDEA-81789 Expression Evaluation goes crazy when multiline expression is inserted
3f1d913: Merge remote-tracking branch 'origin/master'
1b010d0: PY-12981 django apps don't resolve when INSTALLED_APPS is set with '+='
846b42a: Nullity annotations and explicit TypeEvalContext for PyUnionType.excludeNull()
5352177: IDEA-97915 Mercurial incoming/outgoing widgets updated
e618345: EA-51820 check that root from mappings is a valid vcs root
2f5f8f9: IDEA-122562 - Warning from SettingsEditor#applyEditorTo prevents runconfig editor from closing
12272ec: cosmetic: "Remember on disk" -> "Save on disk" in all places
ef5ae1c: ensure rename is performed inside project only, do not search for a package inside libraries!
0dd4ead: generate missed tests intention (IDEA-90247; IDEA-122790)
8ee7f6d: ignore setup/teardown generation when methods already exist and additional methods are not expected
dc043ce: IDEA-121972 - Map help button of the Clouds page
71f507b: Cleanup
2322568: Don't suggest Python live templates inside parameter list (PY-12395)
9b96bc0: common style for expressions
f9685fd: Don't suggest Python live templates in string literals (PY-12349)
a554bba: Don't suggest Python live templates in comments (PY-13076)
511b7db: IDEA-125624 Run tool window does not have deployments list in debug mode
73dce39: Use 'Python' context for 'super' live template (PY-13080)
8e0bbd5: cover with tests
ce036b5: IDEA-125129 I would like to reopen IDEA-117698: regression fixed
2475299: IDEA-61480 DocBook5: complains about xlink:href in <link>
2fd7151: IDEA-125557 Start From Scratch: on Darcula selecting as UI Theme in the Customize IDEA wisard it is applied incorrectly
fa9f7fe: Fixed messy usage of colons in the Breakpoints window
6b7841e: format
f3c2fa2: IDEA-117949 Xml editor doesn't treat xml namespace correctly
08c14cb: Cleanup (optimization)
298bf22: Cleanup (formatting)
c026ff3: java: missing deprecated attribute on inner classes fixed
301b5e7: java: injected methods excluded from enum stub
06f261c: Maven: artifact's manifest generation support related issues: http://youtrack.jetbrains.com/issue/IDEA-82725 http://youtrack.jetbrains.com/issue/IDEA-91497 http://youtrack.jetbrains.com/issue/IDEA-47990
1913bdc: IDEA-119640 Problem with goto declaration of XML attribute defined in XSD: re-fixed, completion fixed
ee89d4f: cleanup
560924a: Merge remote-tracking branch 'origin/master'
80dbfb5: byte code viewer in same colors as editor
7fea4ff: fix failing tests: OverrideImplementTest.testEnumConstant ImplementMethodsTest.runSingle(EnumConstantWithoutClassInitializer.java)
590e025: add example to postfix templates tree
9457946: cleanup
9307a77: better colors for ctrl + shift + a
Change-Id: I63f543234051b4bfd5588e9307dad56cdff7aa1b
Diffstat (limited to 'plugins/hg4idea/src/org/zmlx/hg4idea')
16 files changed, 226 insertions, 124 deletions
diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgPusher.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgPusher.java index 2e9321253b7e..2b6108dddbbc 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgPusher.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgPusher.java @@ -64,7 +64,6 @@ public class HgPusher { final HgPushDialog dialog = new HgPushDialog(myProject, repositories, selectedRepo); dialog.show(); if (dialog.isOK()) { - dialog.rememberSettings(); pushCommand.set(preparePushCommand(myProject, dialog)); new Task.Backgroundable(myProject, "Pushing...", false) { @Override diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java index c6650a12dd34..d5a934e1d86d 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java @@ -34,7 +34,6 @@ public class HgPullAction extends HgAbstractGlobalAction { final HgPullDialog dialog = new HgPullDialog(project, repos, selectedRepo); dialog.show(); if (dialog.isOK()) { - dialog.rememberSettings(); final String source = dialog.getSource(); final HgRepository hgRepository = dialog.getRepository(); new Task.Backgroundable(project, "Pulling changes from " + source, false) { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgWorkingCopyRevisionsCommand.java b/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgWorkingCopyRevisionsCommand.java index 263263879b79..6e5e811fb43f 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgWorkingCopyRevisionsCommand.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/command/HgWorkingCopyRevisionsCommand.java @@ -100,9 +100,9 @@ public class HgWorkingCopyRevisionsCommand { public Couple<HgRevisionNumber> parents(@NotNull VirtualFile repo, @Nullable FilePath file, @Nullable HgRevisionNumber revision) { final List<HgRevisionNumber> revisions = getRevisions(repo, "parents", file, revision, true); switch (revisions.size()) { - case 1: return Couple.newOne(revisions.get(0), null); - case 2: return Couple.newOne(revisions.get(0), revisions.get(1)); - default: return Couple.newOne(null, null); + case 1: return Couple.of(revisions.get(0), null); + case 2: return Couple.of(revisions.get(0), revisions.get(1)); + default: return Couple.of(null, null); } } @@ -140,7 +140,7 @@ public class HgWorkingCopyRevisionsCommand { commandExecutor.setSilent(true); HgCommandResult result = commandExecutor.executeInCurrentThread(repo, "identify", Arrays.asList("--num", "--id")); if (result == null) { - return Couple.newOne(HgRevisionNumber.NULL_REVISION_NUMBER, null); + return Couple.of(HgRevisionNumber.NULL_REVISION_NUMBER, null); } final List<String> lines = result.getOutputLines(); @@ -154,14 +154,14 @@ public class HgWorkingCopyRevisionsCommand { // 9f2e6c02913c+b311eb4eb004+ 186+183+ List<String> chsets = StringUtil.split(changesets, "+"); List<String> revs = StringUtil.split(revisions, "+"); - return Couple.newOne(HgRevisionNumber.getInstance(revs.get(0) + "+", chsets.get(0) + "+"), - HgRevisionNumber.getInstance(revs.get(1) + "+", chsets.get(1) + "+")); + return Couple.of(HgRevisionNumber.getInstance(revs.get(0) + "+", chsets.get(0) + "+"), + HgRevisionNumber.getInstance(revs.get(1) + "+", chsets.get(1) + "+")); } else { - return Couple.newOne(HgRevisionNumber.getInstance(revisions, changesets), null); + return Couple.of(HgRevisionNumber.getInstance(revisions, changesets), null); } } } - return Couple.newOne(HgRevisionNumber.NULL_REVISION_NUMBER, null); + return Couple.of(HgRevisionNumber.NULL_REVISION_NUMBER, null); } /** diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java b/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java index 548cdf6000ad..9a94824e2dcf 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java @@ -15,8 +15,6 @@ package org.zmlx.hg4idea.execution; import com.intellij.ide.passwordSafe.PasswordSafe; import com.intellij.ide.passwordSafe.PasswordSafeException; import com.intellij.ide.passwordSafe.impl.PasswordSafeImpl; -import com.intellij.ide.passwordSafe.impl.PasswordSafeProvider; -import com.intellij.ide.passwordSafe.impl.providers.masterKey.MasterKeyPasswordSafe; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; @@ -49,16 +47,19 @@ class HgCommandAuthenticator { public void saveCredentials() { if (myRunnable == null) return; - // if checkbox is selected, remember on disk. Otherwise in memory. Don't read password safe settings. + // if checkbox is selected, save on disk. Otherwise in memory. Don't read password safe settings. final PasswordSafeImpl passwordSafe = (PasswordSafeImpl)PasswordSafe.getInstance(); final String url = VirtualFileManager.extractPath(myRunnable.getURL()); final String key = keyForUrlAndLogin(url, myRunnable.getUserName()); - final PasswordSafeProvider provider = - myRunnable.isRememberPassword() ? passwordSafe.getMasterKeyProvider() : passwordSafe.getMemoryProvider(); try { - provider.storePassword(myProject, HgCommandAuthenticator.class, key, myRunnable.getPassword()); + if (myRunnable.isRememberPassword()) { + //save password to memory, despite of settings-> passwords + //todo should be reworked + passwordSafe.getMemoryProvider().storePassword(myProject, HgCommandAuthenticator.class, key, myRunnable.getPassword()); + } + passwordSafe.storePassword(myProject, HgCommandAuthenticator.class, key, myRunnable.getPassword()); final HgVcs vcs = HgVcs.getInstance(myProject); if (vcs != null) { vcs.getGlobalSettings().addRememberedUrl(url, myRunnable.getUserName()); @@ -129,13 +130,7 @@ class HgCommandAuthenticator { final PasswordSafeImpl passwordSafe = (PasswordSafeImpl)PasswordSafe.getInstance(); password = passwordSafe.getMemoryProvider().getPassword(myProject, HgCommandAuthenticator.class, key); if (password == null) { - final MasterKeyPasswordSafe masterKeyProvider = passwordSafe.getMasterKeyProvider(); - if (!masterKeyProvider.isEmpty()) { - // workaround for: don't ask for master password, if the requested password is not there. - // this should be fixed in PasswordSafe: don't ask master password to look for keys - // until then we assume that is PasswordSafe was used (there is anything there), then it makes sense to look there. - password = masterKeyProvider.getPassword(myProject, HgCommandAuthenticator.class, key); - } + password = passwordSafe.getPassword(myProject, HgCommandAuthenticator.class, key); } } catch (PasswordSafeException e) { LOG.info("Couldn't get password for key [" + key + "]", e); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCachingCommittedChangesProvider.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCachingCommittedChangesProvider.java index eb54341d8879..37987e1a02d3 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCachingCommittedChangesProvider.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCachingCommittedChangesProvider.java @@ -354,7 +354,8 @@ public class HgCachingCommittedChangesProvider implements CachingCommittedChange } HgFileRevision localRevision = revisions.get(0); HgRevisionNumber vcsRevisionNumber = localRevision.getRevisionNumber(); - HgRevisionNumber firstParent = vcsRevisionNumber.getParents().get(0); + List<HgRevisionNumber> parents = vcsRevisionNumber.getParents(); + HgRevisionNumber firstParent = parents.isEmpty() ? null : parents.get(0); // can have no parents if it is a root List<Change> changes = new ArrayList<Change>(); for (String file : localRevision.getModifiedFiles()) { changes.add(createChange(root, file, firstParent, file, vcsRevisionNumber, FileStatus.MODIFIED)); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgChangeProvider.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgChangeProvider.java index 9c686055db6b..daaf6ec33fc5 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgChangeProvider.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgChangeProvider.java @@ -152,9 +152,9 @@ public class HgChangeProvider implements ChangeProvider { final VirtualFile vf = filePath.getVirtualFile(); if (vf != null && fileDocumentManager.isFileModified(vf)) { final VirtualFile root = vcsManager.getVcsRootFor(vf); - if (root != null) { + if (root != null && HgUtil.isHgRoot(root)) { final HgRevisionNumber beforeRevisionNumber = new HgWorkingCopyRevisionsCommand(myProject).tip(root); - final ContentRevision beforeRevision = (beforeRevisionNumber == null ? null : + final ContentRevision beforeRevision = (beforeRevisionNumber == null ? null : new HgContentRevision(myProject, new HgFile(myProject, vf), beforeRevisionNumber)); builder.processChange(new Change(beforeRevision, CurrentContentRevision.create(filePath), FileStatus.MODIFIED), myVcsKey); } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgRegularUpdater.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgRegularUpdater.java index e88b1947f4a8..c9630038df94 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgRegularUpdater.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgRegularUpdater.java @@ -35,27 +35,21 @@ import java.util.List; import java.util.Set; import static org.zmlx.hg4idea.HgErrorHandler.ensureSuccess; +import static org.zmlx.hg4idea.provider.update.HgUpdateType.MERGE; +import static org.zmlx.hg4idea.provider.update.HgUpdateType.ONLY_UPDATE; public class HgRegularUpdater implements HgUpdater { @NotNull private final Project project; @NotNull private final VirtualFile repoRoot; - @NotNull private final UpdateConfiguration updateConfiguration; + @NotNull private final HgUpdateConfigurationSettings updateConfiguration; - public HgRegularUpdater(@NotNull Project project, @NotNull VirtualFile repository, @NotNull UpdateConfiguration configuration) { + public HgRegularUpdater(@NotNull Project project, @NotNull VirtualFile repository, @NotNull HgUpdateConfigurationSettings configuration) { this.project = project; this.repoRoot = repository; this.updateConfiguration = configuration; } - private boolean shouldMerge() { - return updateConfiguration.shouldMerge(); - } - - private boolean shouldCommitAfterMerge() { - return updateConfiguration.shouldCommitAfterMerge(); - } - public boolean update(final UpdatedFiles updatedFiles, ProgressIndicator indicator, List<VcsException> warnings) throws VcsException { indicator.setText(HgVcsMessages.message("hg4idea.progress.updating", repoRoot.getPath())); @@ -81,9 +75,11 @@ public class HgRegularUpdater implements HgUpdater { // throw new VcsException("working dir not at branch tip (use \"Update to...\" to check out branch tip)"); // } - HgCommandExitCode pullResult = pull(repoRoot, indicator); - if (pullResult == HgCommandExitCode.ERROR) { - return false; + if (updateConfiguration.shouldPull()) { + HgCommandExitCode pullResult = pull(repoRoot, indicator); + if (pullResult == HgCommandExitCode.ERROR) { + return false; + } } List<HgRevisionNumber> parentsBeforeUpdate = new HgWorkingCopyRevisionsCommand(project).parents(repoRoot); @@ -97,17 +93,18 @@ public class HgRegularUpdater implements HgUpdater { List<HgRevisionNumber> pulledBranchHeads = determinePulledBranchHeads(branchHeadsBeforePull, branchHeadsAfterPull); List<HgRevisionNumber> remainingOriginalBranchHeads = determingRemainingOriginalBranchHeads(branchHeadsBeforePull, branchHeadsAfterPull); + HgUpdateType updateType = updateConfiguration.getUpdateType(); - if (branchHeadsAfterPull.size() > 1) { + if (branchHeadsAfterPull.size() > 1 && updateType != ONLY_UPDATE) { // merge strategy - if (shouldMerge()) { + if (updateType == MERGE) { abortOnLocalChanges(); abortOnMultiplePulledHeads(pulledBranchHeads); abortOnMultipleLocalHeads(remainingOriginalBranchHeads); HgCommandResult mergeResult = doMerge(indicator); - if (shouldCommitAfterMerge()) { + if (updateConfiguration.shouldCommitAfterMerge()) { commitOrWarnAboutConflicts(warnings, mergeResult); } } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateConfigurationSettings.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateConfigurationSettings.java new file mode 100644 index 000000000000..e0b6d4ed429c --- /dev/null +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateConfigurationSettings.java @@ -0,0 +1,74 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.zmlx.hg4idea.provider.update; + +import com.intellij.openapi.components.PersistentStateComponent; +import com.intellij.openapi.components.State; +import com.intellij.openapi.components.Storage; +import com.intellij.openapi.components.StoragePathMacros; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +@State( + name = "HgUpdateConfigurationSettings", + storages = @Storage(file = StoragePathMacros.WORKSPACE_FILE) +) +public class HgUpdateConfigurationSettings implements PersistentStateComponent<HgUpdateConfigurationSettings.State> { + + + private State myState = new State(); + + public static class State { + public boolean shouldPull = true; + @NotNull public HgUpdateType updateType = HgUpdateType.ONLY_UPDATE; + public boolean shouldCommitAfterMerge = false; + } + + public void setShouldPull(boolean shouldPull) { + myState.shouldPull = shouldPull; + } + + public void setUpdateType(@NotNull HgUpdateType updateType) { + myState.updateType = updateType; + } + + public void setShouldCommitAfterMerge(boolean shouldCommitAfterMerge) { + myState.shouldCommitAfterMerge = shouldCommitAfterMerge; + } + + public boolean shouldPull() { + return myState.shouldPull; + } + + public HgUpdateType getUpdateType() { + return myState.updateType; + } + + public boolean shouldCommitAfterMerge() { + return myState.updateType == HgUpdateType.MERGE && myState.shouldCommitAfterMerge; + } + + @Nullable + @Override + public HgUpdateConfigurationSettings.State getState() { + return myState; + } + + @Override + public void loadState(HgUpdateConfigurationSettings.State state) { + myState = state; + } +}
\ No newline at end of file diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateEnvironment.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateEnvironment.java index cbb35eae761f..75387b221b02 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateEnvironment.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateEnvironment.java @@ -12,6 +12,7 @@ // limitations under the License. package org.zmlx.hg4idea.provider.update; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.progress.ProgressIndicator; @@ -34,10 +35,11 @@ import java.util.List; public class HgUpdateEnvironment implements UpdateEnvironment { private final Project project; - private final HgUpdater.UpdateConfiguration updateConfiguration = new HgUpdater.UpdateConfiguration(); + private final HgUpdateConfigurationSettings updateConfiguration; public HgUpdateEnvironment(Project project) { this.project = project; + updateConfiguration = ServiceManager.getService(project, HgUpdateConfigurationSettings.class); } public void fillGroups(UpdatedFiles updatedFiles) { @@ -84,10 +86,10 @@ public class HgUpdateEnvironment implements UpdateEnvironment { } public static class UpdateConfigurable implements Configurable { - private final HgUpdater.UpdateConfiguration updateConfiguration; + private final HgUpdateConfigurationSettings updateConfiguration; protected HgUpdateDialog updateDialog; - public UpdateConfigurable(HgUpdater.UpdateConfiguration updateConfiguration) { + public UpdateConfigurable(HgUpdateConfigurationSettings updateConfiguration) { this.updateConfiguration = updateConfiguration; } @@ -101,8 +103,8 @@ public class HgUpdateEnvironment implements UpdateEnvironment { } public JComponent createComponent() { - updateDialog = new HgUpdateDialog(); - return updateDialog.createCenterPanel(); + updateDialog = new HgUpdateDialog(updateConfiguration); + return updateDialog.getContentPanel(); } public boolean isModified() { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateType.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateType.java new file mode 100644 index 000000000000..3ffccb6ddb8c --- /dev/null +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdateType.java @@ -0,0 +1,36 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.zmlx.hg4idea.provider.update; + +/** + * The type of update to perform + */ +public enum HgUpdateType { + + + /** + * Try to update without merge, fails if conflicts + */ + ONLY_UPDATE, + /** + * Merge commits with pulled + */ + MERGE, + /** + * Rebase local commits + */ + REBASE +}
\ No newline at end of file diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdater.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdater.java index e8f3d59d7871..ce304dfaa4c7 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdater.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgUpdater.java @@ -22,35 +22,4 @@ public interface HgUpdater { boolean update(UpdatedFiles updatedFiles, ProgressIndicator indicator, List<VcsException> exceptions) throws VcsException; - - class UpdateConfiguration{ - private boolean shouldMerge = true; - private boolean shouldCommitAfterMerge = true; - private boolean shouldRebase = false; - - - public void setShouldMerge(boolean shouldMerge) { - this.shouldMerge = shouldMerge; - } - - public void setShouldCommitAfterMerge(boolean shouldCommitAfterMerge) { - this.shouldCommitAfterMerge = shouldCommitAfterMerge; - } - - public void setShouldRebase(boolean shouldRebase) { - this.shouldRebase = shouldRebase; - } - - public boolean shouldRebase() { - return shouldRebase; - } - - public boolean shouldMerge() { - return shouldMerge; - } - - public boolean shouldCommitAfterMerge() { - return shouldMerge() && shouldCommitAfterMerge; - } - } } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgIncomingOutgoingWidget.java b/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgIncomingOutgoingWidget.java index 31df1c4162b8..5702d298bff6 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgIncomingOutgoingWidget.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgIncomingOutgoingWidget.java @@ -55,6 +55,7 @@ public class HgIncomingOutgoingWidget extends EditorBasedWidget private MessageBusConnection myBusConnection; private volatile String myTooltip = ""; + private Icon myCurrentIcon = AllIcons.Ide.IncomingChangesOff; public HgIncomingOutgoingWidget(@NotNull HgVcs vcs, @NotNull Project project, @@ -136,7 +137,9 @@ public class HgIncomingOutgoingWidget extends EditorBasedWidget } emptyTooltip(); + myCurrentIcon = AllIcons.Ide.IncomingChangesOff; if (myChangesStatus.getNumChanges() > 0) { + myCurrentIcon = myIsIncoming ? AllIcons.Ide.IncomingChangesOn : AllIcons.Ide.OutgoingChangesOn; myTooltip = "\n" + myChangesStatus.getToolTip(); } myStatusBar.updateWidget(ID()); @@ -193,7 +196,7 @@ public class HgIncomingOutgoingWidget extends EditorBasedWidget @NotNull @Override public Icon getIcon() { - return myIsIncoming ? AllIcons.Ide.IncomingChangesOn : AllIcons.Ide.IncomingChangesOff; + return myCurrentIcon; } public HgChangesetStatus getChangesetStatus() { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPullDialog.java b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPullDialog.java index e140af36108b..15d2f7122baa 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPullDialog.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPullDialog.java @@ -12,7 +12,6 @@ // limitations under the License. package org.zmlx.hg4idea.ui; -import com.intellij.dvcs.DvcsRememberedInputs; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.editor.event.DocumentEvent; @@ -21,11 +20,9 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.EditorComboBox; -import com.intellij.util.ArrayUtil; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.zmlx.hg4idea.HgRememberedInputs; import org.zmlx.hg4idea.repo.HgRepository; import org.zmlx.hg4idea.util.HgUtil; @@ -60,8 +57,6 @@ public class HgPullDialog extends DialogWrapper { public void createUIComponents() { myRepositoryURL = new EditorComboBox(""); - final DvcsRememberedInputs rememberedInputs = HgRememberedInputs.getInstance(); - myRepositoryURL.setHistory(ArrayUtil.toObjectArray(rememberedInputs.getVisitedUrls(), String.class)); myRepositoryURL.addDocumentListener(new DocumentAdapter() { @Override public void documentChanged(DocumentEvent e) { @@ -77,11 +72,6 @@ public class HgPullDialog extends DialogWrapper { } } - public void rememberSettings() { - final DvcsRememberedInputs rememberedInputs = HgRememberedInputs.getInstance(); - rememberedInputs.addUrl(HgUtil.removePasswordIfNeeded(getSource())); - } - @NotNull public HgRepository getRepository() { return hgRepositorySelector.getRepository(); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPushDialog.java b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPushDialog.java index b346c1534f6c..33e4709286cf 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPushDialog.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPushDialog.java @@ -12,7 +12,6 @@ // limitations under the License. package org.zmlx.hg4idea.ui; -import com.intellij.dvcs.DvcsRememberedInputs; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -20,10 +19,8 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ComboboxSpeedSearch; import com.intellij.ui.EditorComboBox; -import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.zmlx.hg4idea.HgRememberedInputs; import org.zmlx.hg4idea.HgVcsMessages; import org.zmlx.hg4idea.repo.HgRepository; import org.zmlx.hg4idea.util.HgUtil; @@ -88,8 +85,6 @@ public class HgPushDialog extends DialogWrapper { public void createUIComponents() { myRepositoryURL = new EditorComboBox(""); - final DvcsRememberedInputs rememberedInputs = HgRememberedInputs.getInstance(); - myRepositoryURL.setHistory(ArrayUtil.toObjectArray(rememberedInputs.getVisitedUrls(), String.class)); myRepositoryURL.addDocumentListener(new DocumentAdapter() { @Override public void documentChanged(com.intellij.openapi.editor.event.DocumentEvent e) { @@ -192,11 +187,6 @@ public class HgPushDialog extends DialogWrapper { return HgPushDialog.class.getName(); } - public void rememberSettings() { - final DvcsRememberedInputs rememberedInputs = HgRememberedInputs.getInstance(); - rememberedInputs.addUrl(HgUtil.removePasswordIfNeeded(myRepositoryURL.getText())); - } - /** * Updates the form on every change. */ diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgUpdateDialog.java b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgUpdateDialog.java index de4b865e5ca7..16fb9b4ddeec 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgUpdateDialog.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgUpdateDialog.java @@ -13,8 +13,11 @@ package org.zmlx.hg4idea.ui; import com.intellij.ui.IdeBorderFactory; +import com.intellij.ui.components.JBCheckBox; import net.miginfocom.swing.MigLayout; -import org.zmlx.hg4idea.provider.update.HgUpdater; +import org.jetbrains.annotations.NotNull; +import org.zmlx.hg4idea.provider.update.HgUpdateConfigurationSettings; +import org.zmlx.hg4idea.provider.update.HgUpdateType; import javax.swing.*; import java.awt.event.ItemEvent; @@ -24,62 +27,106 @@ import java.awt.event.ItemListener; * Configuration dialog for the update process. */ public class HgUpdateDialog { + + private JComponent myContentPanel; + private JCheckBox myPullCheckBox; private JCheckBox myCommitAfterMergeCheckBox; + private JRadioButton myOnlyUpdateButton; private JRadioButton myMergeRadioButton; private JRadioButton myRebaseRadioButton; - public HgUpdateDialog() { - createCenterPanel(); + public HgUpdateDialog(@NotNull HgUpdateConfigurationSettings updateSettings) { + myContentPanel = createCenterPanel(updateSettings); + } + + public JComponent getContentPanel() { + return myContentPanel; } private void updateEnabledStates() { myCommitAfterMergeCheckBox.setEnabled(myMergeRadioButton.isSelected()); } - public void applyTo(HgUpdater.UpdateConfiguration updateConfiguration) { - updateConfiguration.setShouldMerge(myMergeRadioButton.isSelected()); + public void applyTo(HgUpdateConfigurationSettings updateConfiguration) { + updateConfiguration.setShouldPull(myPullCheckBox.isSelected()); + if (myOnlyUpdateButton.isSelected()) { + updateConfiguration.setUpdateType(HgUpdateType.ONLY_UPDATE); + } + if (myMergeRadioButton.isSelected()) { + updateConfiguration.setUpdateType(HgUpdateType.MERGE); + } + if (myRebaseRadioButton.isSelected()) { + updateConfiguration.setUpdateType(HgUpdateType.REBASE); + } updateConfiguration.setShouldCommitAfterMerge(myCommitAfterMergeCheckBox.isSelected()); - updateConfiguration.setShouldRebase(myRebaseRadioButton.isSelected()); } - public JComponent createCenterPanel() { + public JComponent createCenterPanel(HgUpdateConfigurationSettings updateSettings) { MigLayout migLayout = new MigLayout("flowy,ins 0, fill"); JPanel contentPane = new JPanel(migLayout); + myPullCheckBox = new JBCheckBox("Pull", true); + myPullCheckBox.setMnemonic('p'); + myPullCheckBox.setToolTipText("Pull from the default remote repository"); + myPullCheckBox.setSelected(updateSettings.shouldPull()); + myOnlyUpdateButton = new JRadioButton("Only Update", true); + myOnlyUpdateButton.setMnemonic('u'); + myOnlyUpdateButton.setToolTipText("Update to the head of the current branch"); - contentPane.setBorder(IdeBorderFactory.createTitledBorder("Update Type")); - - myMergeRadioButton = new JRadioButton("Merge", true); + myMergeRadioButton = new JRadioButton("Merge", false); myMergeRadioButton.setMnemonic('m'); myMergeRadioButton.setToolTipText("Merge if pulling resulted in extra heads"); + myMergeRadioButton.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + updateEnabledStates(); + } + }); + myCommitAfterMergeCheckBox = new JCheckBox("Commit after merge without conflicts", false); myCommitAfterMergeCheckBox.setMnemonic('c'); myCommitAfterMergeCheckBox.setToolTipText("Commit automatically after the merge"); + myCommitAfterMergeCheckBox.setSelected(updateSettings.shouldCommitAfterMerge()); + myRebaseRadioButton = new JRadioButton("Rebase", false); myRebaseRadioButton.setToolTipText("Rebase changesets to a branch tip as destination"); myRebaseRadioButton.setMnemonic('r'); - final ButtonGroup radioButtonGroup = new ButtonGroup(); - radioButtonGroup.add(myMergeRadioButton); - radioButtonGroup.add(myRebaseRadioButton); - contentPane.add(myMergeRadioButton, "left"); - contentPane.add(myCommitAfterMergeCheckBox, "gapx 5%"); - contentPane.add(myRebaseRadioButton, "left"); - myMergeRadioButton.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - updateEnabledStates(); - } - }); + contentPane.add(myPullCheckBox, "left"); + JPanel strategyPanel = new JPanel(migLayout); + strategyPanel.setBorder(IdeBorderFactory.createTitledBorder("Update Strategy")); + strategyPanel.add(myOnlyUpdateButton, "left"); + strategyPanel.add(myMergeRadioButton, "left"); + strategyPanel.add(myCommitAfterMergeCheckBox, "gapx 5%"); + strategyPanel.add(myRebaseRadioButton, "left"); + contentPane.add(strategyPanel); + ButtonGroup group = new ButtonGroup(); + group.add(myOnlyUpdateButton); + group.add(myRebaseRadioButton); + group.add(myMergeRadioButton); updateEnabledStates(); return contentPane; } - public void updateFrom(HgUpdater.UpdateConfiguration updateConfiguration) { - myMergeRadioButton.setSelected(updateConfiguration.shouldMerge()); + public void updateFrom(@NotNull HgUpdateConfigurationSettings updateConfiguration) { + myPullCheckBox.setSelected(updateConfiguration.shouldPull()); + HgUpdateType updateType = updateConfiguration.getUpdateType(); + switch (updateType) { + case ONLY_UPDATE: + myOnlyUpdateButton.setSelected(true); + break; + case MERGE: + myMergeRadioButton.setSelected(true); + break; + case REBASE: + myRebaseRadioButton.setSelected(true); + break; + default: + assert false : "Unknown value of update type: " + updateType; + } myCommitAfterMergeCheckBox.setSelected(updateConfiguration.shouldCommitAfterMerge()); - myRebaseRadioButton.setSelected(updateConfiguration.shouldRebase()); } } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java b/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java index 649225d286a9..b24b59de88f1 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java @@ -707,6 +707,6 @@ public abstract class HgUtil { userName = authorString.trim(); email = ""; } - return Couple.newOne(userName, email); + return Couple.of(userName, email); } } |