Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Any way to get an IWorkingCopy from IStorage?

I had performed an experiment with IStorageEditorInput and it didn't work so I deleted the code. I will recreate the experiment and either open a bug or ask further questions.

Thanks,

-- Jeff J.

On 01/02/10 10:12 AM, Leherbauer, Anton (Toni) wrote:

Unfortunately, the C WorkingCopyManager passed back from
CUIPlugin uses
a CDocumentProvider and this expects an IFileEditorInput.

The CDocumentProvider can also deal with IStorageEditorInput.
If there are problems, please feel free to file a bug.

HTH,
Toni


-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Jeff Johnston
Sent: Thursday, January 28, 2010 8:53 PM
To: CDT General developers list.
Subject: [cdt-dev] Any way to get an IWorkingCopy from IStorage?

For the Eclipse ChangeLog plug-in, we compare a local file to
one in the
repository (such as CVS or SVN) and create an entry on behalf of the
user.  For C and C++ files, we want to specify functions or
methods that
have changed within the file so the user can fill in appropriate
comments regarding the changes.  For example,

2010-01-28  Jeff Johnston<jjohnstn@xxxxxxxxxx>

	* a.c (funca):
	(funcb):

Using Team interfaces, we end-up with a 3-way diff whereby
changes are
noted as ranges within the local file and ranges within the
repository file.

The current logic of the C/C++ ChangeLog parser uses an
IFileEditorInput
created for the local modified file to get the IWorkingCopy
from which
it gets the ICElement for changed lines in the modified local file.

	public String parseCurrentFunction(IEditorInput input,
                          int offset)
			throws CoreException {

		String currentElementName;

		// Get the working copy and connect to input.		
		IWorkingCopyManager manager = CUIPlugin.getDefault()
				.getWorkingCopyManager();
		manager.connect(input);

		// Retrieve the C/C++ Element in question.
		IWorkingCopy workingCopy =
                     manager.getWorkingCopy(input);
		ICElement method =
                     workingCopy.getElementAtOffset(offset);

		manager.disconnect(input);

This works fine for additions and changes to existing
functions, but it
does not work for method or function removal because the
functions are
no longer in the local file.  We need to look at changes with
respect to
the ancestor file.

When we do the diff, we are given an IStorage representation of the
ancestor file.

I would like to use the CDT to calculate the ICElement for
change lines
within the ancestor storage (thereby I can add entries for
functions/methods that don't show up in the modified
file...hence handle
removal).

Unfortunately, the C WorkingCopyManager passed back from
CUIPlugin uses
a CDocumentProvider and this expects an IFileEditorInput.

Is there a way to wrapper the IStorage so I can connect to it via the
WorkingCopyManager or do I have to create a local file from
the storage
contents somehow?  Perhaps there is another alternative?

Thanks,

-- Jeff J.
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev

_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev




Back to the top