Code Monkey home page Code Monkey logo

omnisharp-emacs's Introduction

OmniSharp

OmniSharp Organization repo for project coordination, global communication and other organizational topics.

Please do not use this repo to open bugs/support issues - use the project repository relevant to the product you are using (e.g. C# Extension for VS Code, VIM plugin, Emacs plugin, OmniSharp server and so on) instead.

License

Copyright © .NET Foundation, and contributors.

OmniSharp is provided as-is under the MIT license. For more information see LICENSE.

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.

Contribution License Agreement

By signing the CLA, the community is free to use your contribution to .NET Foundation projects.

.NET Foundation

This project is supported by the .NET Foundation.

omnisharp-emacs's People

Contributors

alistair avatar andyleejordan avatar arialdomartini avatar bbbscarter avatar bsuh avatar corngood avatar cpitclaudel avatar damiencassou avatar dgalizzi avatar dgutov avatar grendello avatar jcs090218 avatar jesse-black avatar jimhansson avatar jordonbiondo avatar josteink avatar jtbm37 avatar juergenhoetzel avatar lafleurh avatar m-frankied avatar mikavilpas avatar nosami avatar pcrama avatar razzmatazz avatar retran avatar simongr avatar supermomonga avatar syohex avatar yaruopooner avatar ylluminarious avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

omnisharp-emacs's Issues

Make API calls asynchronous

There are a few API calls that can be asynchronous. Examples of these
are

  • omnisharp-go-to-definition
  • omnisharp-find-implementations
  • ???

I hazily recall there is an indirect dependency to the library
deferred.el. That is required by one of the dependencies of
omnisharp-emacs. Maybe that library offers something that will tackle
this problem easily.

Unable to add new files to a project

Running (omnisharp-add-to-solution-current-file) doesn't seem to do work on the Emacs side. On the server side we get the following debug spew:

System.InvalidOperationException: Operation is not valid due to the current state of the object
at System.Linq.Enumerable.First[IProject](IEnumerable1 source, System.Func2 predicate, Fallback fallback) [0x00000] in :0
at System.Linq.Enumerable.First[IProject](IEnumerable1 source, System.Func2 predicate) [0x00000] in :0
at OmniSharp.Solution.CSharpSolution.ProjectContainingFile (System.String filename) [0x00000] in :0
at OmniSharp.ProjectManipulation.AddToProject.AddToProjectHandler.AddToProject (OmniSharp.ProjectManipulation.AddToProject.AddToProjectRequest request) [0x00000] in :0
at OmniSharp.ProjectManipulation.AddToProject.AddToProjectModule+c__AnonStorey11.<>m__1D (System.Object x) [0x00000] in :0
at Nancy.Routing.Route.Invoke (Nancy.DynamicDictionary parameters) [0x00000] in :0
at Nancy.Routing.DefaultRouteInvoker.Invoke (Nancy.Routing.Route route, Nancy.DynamicDictionary parameters, Nancy.NancyContext context) [0x00000] in :0
at Nancy.Routing.DefaultRequestDispatcher.Dispatch (Nancy.NancyContext context) [0x00000] in :0

Add interactive renaming

This would let the user see how the changes are applied.
Emacs ships with a very nice interface for this, but it's bundled
with the dired package - dired-do-query-replace-regexp.

It only works for the currently marked files in dired, but it uses
tags-query-replace internally. This should be very easy to integrate
to solutions since we already have a way of getting all the files in
the current solution.

Add feature: manual syntax check

I think it may be possible to do this by refactoring the existing
flycheck checker error parser out to its own function and calling
that.

JSON readtable error

I get this error when I connect to Omnisharp server. I had built the server using VS 2010.

Interestingly, this problem didn't happen when I built the solution using VS 2012. Not sure if this is really relevant. Here's the error ouput in the *Messages* buffer.

  #creditsContainer a
  {
    color: #777777
  }

  #errorToggle
  {
    float:right;
  }

  #errorToggle a
  {
    color: #777777;
  }

  #errorDetails
  {
    width: 100%;
    margin: 24px;
    text-align: left;
    display: none;
  }

  .clear {
    clear: both;
    height: 0px;
    margin: 0;
    padding: 0;
    visibility: hidden;
  }
  </style>

  <!--[if lt IE 8]>
  <style type="text/css">
    #embeddedImage {
      visibility: hidden;
    }
  </style>
  <![endif]-->

  <script type="text/javascript">
    function ShowHideDetails() {
      var details =  document.getElementById('errorDetails');

      if (details.style.display == 'block') {
        details.style.display = 'none';
      } else {
        details.style.display = 'block';
      }
    }
  </script>
</head>
<body>
  <div id="mainContainer">
    <div id="errorContainer">
      <div id="errorImage">
        <img id="embeddedImage" src="data:image/png;base64,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" width="115" height="150">
      </div>
      <div id="errorText">
        <h1>500 - InternalServerError</h1>
        <p>Something went horribly, horribly wrong while servicing your request.</p>
        <p>We're sorry :-(</p>
      </div>
      <div class="clear"></div>
    </div>
    <div id="creditsContainer">
      <p>Graphics courtesy of the awesome <a href="http://theoatmeal.com/" target="_blank">Matthew Inman</a> </p>
    </div>
    <div id="errorToggle"><a href="javascript:ShowHideDetails();">Details</a></div>
    <div class="clear"></div>
  </div>
  <div id="errorDetails">
    <h2>Error Details</h2>
    <pre id="errorContents">Nancy.RequestExecutionException: Oh noes! ---> System.ArgumentNullException: Value cannot be null.
Parameter name: text
   at ICSharpCode.NRefactory.Editor.StringTextSource..ctor(String text)
   at ICSharpCode.NRefactory.CSharp.CSharpParser.Parse(String program, String fileName)
   at OmniSharp.SyntaxErrors.SyntaxErrorsHandler.FindSyntaxErrors(Request request) in C:\Users\awali\OmniSharpServer\OmniSharp\SyntaxErrors\SyntaxErrorsHandler.cs:line 11
   at OmniSharp.SyntaxErrors.SyntaxErrorsModule.<>c__DisplayClass2.<.ctor>b__0(Object x) in C:\Users\awali\OmniSharpServer\OmniSharp\SyntaxErrors\SyntaxErrorsModule.cs:line 14
   at Nancy.Routing.DefaultRouteInvoker.Invoke(Route route, DynamicDictionary parameters, NancyContext context)
   at Nancy.Routing.DefaultRequestDispatcher.Dispatch(NancyContext context)
   at Nancy.NancyEngine.InvokeRequestLifeCycle(NancyContext context, IPipelines pipelines)
   --- End of inner exception stack trace ---
   at Nancy.NancyEngine.InvokeOnErrorHook(NancyContext context, ErrorPipeline pipeline, Exception ex)</pre>
  </div>
  <script type="text/javascript">
      var toggle = document.getElementById('errorToggle');
      var errorContents = document.getElementById('errorContents');

      if (errorContents.innerText == '') {
          toggle.style.display = 'none';
      }
  </script>
</body>
</html>

Error: JSON readtable error

The error originates from the server. Here's the stacktrace from the server program's console output.

System.ArgumentNullException: Value cannot be null.                         
Parameter name: text                                                           
at ICSharpCode.NRefactory.Editor.StringTextSource..ctor(String text)        
at ICSharpCode.NRefactory.CSharp.CSharpParser.Parse(String program, StrinleName)                                                                        
at OmniSharp.SyntaxErrors.SyntaxErrorsHandler.FindSyntaxErrors(Request ret) in C:\Users\awali\OmniSharpServer\OmniSharp\SyntaxErrors\SyntaxErrorsHandcs:line 11                                                                     
at OmniSharp.SyntaxErrors.SyntaxErrorsModule.<>c__DisplayClass2.<.ctor>b_bject x) in C:\Users\awali\OmniSharpServer\OmniSharp\SyntaxErrors\SyntaxErrodule.cs:line 14                                                                
at Nancy.Routing.DefaultRouteInvoker.Invoke(Route route, DynamicDictionarrameters, NancyContext context)                                                
at Nancy.Routing.DefaultRequestDispatcher.Dispatch(NancyContext context)    
at Nancy.NancyEngine.InvokeRequestLifeCycle(NancyContext context, IPipelipipelines)

Any clue about this? Thanks in advance.

Add flycheck checker for compilation errors

This could be chained after the syntax errors checker.
That way quick and obvious errors will not trigger a compilation,
which is likely a much more heavy operation.

We already have the means for getting a build command both on
UNIX and Windows systems. This could be fed to the checker.

Upgrade screenshots to GIFs

Most screenshots show something that happens in relation to
something that has happened earlier. These would be much better
to show as animated images.

Add option for installing dependencies automatically from MELPA

MELPA is an elisp package repository that
has a lot of ready-to-install elisp packages. These can be installed
in emacs with an integrated GUI, are easy to store in personal version
control systems and just work.

To simplify installation, omnisharp-emacs should be submitted as a new
recipe. This, as I currently understand it, will enable
omnisharp-emacs to be downloaded from MELPA via M-x package-install.

The qualifications for submitting a new package are located at the
source repository README:

https://github.com/milkypostman/melpa

ELDoc support

It would be great to have ELDoc support, so Emacs shows the type of the symbol at point at all times.

Implemented, creating a pull request.

Add feature: rename current file

Example interface to user:

"Rename current file to: (defaults to old name)"
"Renamed (old-file-name) to (new-file-name). Delete old file? (y or n)"

Rough plan:

Should save the current file, then

  • remove old-file-name from project
  • save current file with new-file-name
  • add new-file-name to project
  • ask if user wants to delete old-file-name (that is now not included
    in the project), and delete it if they want to.

Keep showing auto-complete documentation after popup is closed

Currently the auto-complete documentation is only shown when the popup
window is active. But when the user chooses a completion, the
documentation is closed. This is annoying when writing method calls,
since I'd like to be able to look at the documentation to see what
arguments to pass.

Tasks:

  • Find a way to persistently show documentation. popup-menu-keymap has
    a setting for this, but last time I tried I couldn't get it to
    work. For now the UI can be the current UI, which is a help buffer.
  • Add a function for showing documentation. A worker pattern could be
    used when documentation is shown to support separate key bindings
    for showing documentation persistently and non-persistently.
  • Add a setting: does the user want to show documentation
    persistently? The wrapper for the previous function should use the
    value of this setting to specify the state of persistence.

Add an omnisharp-mode specific menu-bar enty

The menu should provide easy access to all of the plugin's functions
so that the user doesn't need to remember them all by heart.

So basically every function that is marked as (interactive) should be
found in that menu.

TODO specify exact menu layout

Create a minor mode for omnisharp-emacs

Currently omnisharp-emacs defines some stuff that may conflict with
settings or bindings in other modes. We should create a new minor mode
for omnisharp-emacs that has a mode-specific map. I propose the mode
be called omnisharp-mode for brevity.

There is also a suggestion for altering the loading of the
auto-complete company-mode integration here:

First pass of company-mode integration by bbbscarter
#17 (comment)

That should be treated as well.

One more thing: the example-config-for-evil-mode.el file should define
the mappings to be active only in omnisharp-mode

Organize source code into separate code files

Currently the source code is published in a single file. This is
cumbersome to navigate and in illogical order.

The file should be divided into separate files. Here is a suggestion:

A single file for common functions / utilities. Examples:

  • omnisharp--choose-quickfix-ido (navigate to a quickfix chosen
    via ido)
  • omnisharp--vector-to-list
  • omnisharp--get-common-params
  • omnisharp--get-max-item-length

A single code file per feature or logical group. Examples:

  • auto-complete
  • goto-definition
  • rename
  • solution-management
    • omnisharp-add-to-solution-current-file
    • omnisharp-add-to-solution-dired-selected-files
    • omnisharp-remove-from-project-current-file

Add error formats for detecting compilation errors

Currently, building a solution on both Unix and Windows systems will
produce the correct errors but it is not possible to navigate to
them (by clicking / by pressing enter).

This can easily be fixed with correct error-line-formats for both
systems. Here is an example I use for Linux in my personal config:

(add-to-list 'compilation-error-regexp-alist
             '(" in \\(.+\\):\\([0-9]+\\)" 1 2))

Error in parsing dummy file

I get the following error in console when running company-mode together with the omnisharp plugin. The error is from the omnisharpserver.exe:

****** Request ******
Loading dummy_file
Error parsing dummy_file:
[DomRegion FileName=, Begin=(15, 2), End=(-1, -1)] Identifier expected, `if' i
s a keyword
Getting Completion Data
Got Completion Data
****** Response ******
[]
/autocomplete 6ms

It seems that it connects fine, but cant parse what it gets. I run emacs and omnisharp on windows 7.

Add possibility to get raw command being sent to server for debugging

If we could get the raw (curl) command (or at least the data) that is being sent to the server when errors happen, we can more easily debug them.

We might be able to attach them as bug reports to the backend project as well.
Running the curl commands should provide an easy-to-test case for fixing server code.

end-of-file error when running omnisharp-navigate-to-current-type-member

Repro steps are as follows:

  • Find a file where the closing brace is on the last line in the file.
  • Go to that line.
  • Run omnisharp-navigate-to-current-type-member
  • Observe the error in the OmnisharpServer window
  • Workaround is to put a blank line after the closing brace

This is also happening when I'm using the new imenu stuff. I haven't managed to drill into what's going on yet, but at one point I was also getting an error that the line being request was one line beyond the length of the file, so it might be a (weird) out-by-one error somewhere.

Show all completions (overloads etc.) for symbol at point

Description: (point is at $)

User puts point on string.Fo$rmat(..) and invokes this feature's
command. A buffer pops up, showing all completions for
string.Format. In other cases completions for other members will
be shown, e.g. if the user had a FormatAndAddNewLine() extension
method, that would be shown as well.

Acceptance criteria:

  • option to select between showing frontends, with at least one default
  • a menu entry
  • default key binding for evil mode
  • optionally could be non-blocking (deferred.el ?)

Track OmniSharp versions for compatibility

This ticket mainly concerns OmniSharp development.

Newly developed features sometimes consist of changes to two projects:

  • OmniSharp, which omnisharp-emacs depends on
  • omnisharp-emacs itself

For a version of omnisharp-emacs to be valid it needs a specific
version of the OmniSharp backend - otherwise something might be broken.
For this reason it's beneficial to track OmniSharp versions along with
omnisharp-emacs versions.

This can be done by adding a git submodule in the repository root,
much like in the Vim binding here: https://github.com/nosami/Omnisharp .
Users / developers will not be forced to use the reference, but they
can use it to confirm they have the necessary version.

It will also help with installation. The typical user will want to
install the whole deal - since omnisharp-emacs is useless as a
frontend without the OmniSharp backend.

Building solution on Windows breaks on backslashes

This is the output from a single compilation:

-*- mode: compilation; default-directory: "c:/Projects/foo/" -*-
Compilation started at Tue Aug 13 11:22:35

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe /m /nologo /v:q /property:GenerateFullPaths=true "c:/Projects/foo/foo.sln"
/bin/bash: C:WindowsMicrosoft.NETFramework64v4.0.30319Msbuild.exe: command not found

Add imenu support

It would be fabulous to have a way of listing, and jumping to, methods in the current file. imenu is the standard way of doing this, but even just ido-style completion and jumping would do.

Use customize-group interface in plugin customization

Emacs has a nice built-in customization interface called
customize-group. This draws nice widgets to the screen and lets the
user hide / show documentation when editing the package's
customization (and save settings, etc.).

This would be a good option for a customization interface.

Unable to handle some files on Windows

I have a long file at work that cannot be auto-completed.

Emacs responds with this error message:
apply: Spawning child process: exec format errorError during redisplay: (jit-lock-function 38625) signaled (wrong-type-argument stringp nil)

Truncating some lines from the end of the file enables this to work.

Will need to investigate further.

omnisharp-find-usages returns no results

I think I've fixed it on mine by changing find-usages to extract data from the 'QuickFixes json result, rather than the 'Usages ('Usages didn't exist in the data being returned on mine).

Let me know if I should check in my fix.

Add auto-complete source for /autocomplete API

Description:
The auto-complete source will offer semantic completions automatically
based on the output from OmniSharp's /autocomplete API. If none are
found, a new auto-complete source is picked and the completions for
that are returned.

Currently the auto-complete feature is called manually, and is
blocking.

Remarks:

  • check if the source is non-blocking. If it is, add an option
    (opt-out) about turning this on. If not, make the option opt-in.

Could also add a note like this in the documentation: when this is on,
no other sources will be used when this offers any results. This may
be confusing.

Add promo screenshots of features to landing page

Here is a list of things that probably look cool:

  • completion with popup
  • completion with ido
  • documentation with popup-tip. Add note that you don't
    have to use the tip but can use an ugly buffer instead.
  • find usages
  • go to type in current file
  • go to member in current type
  • rename. Show that it suggests the existing symbol name.
  • add/remove files to/from the solution in dired
  • overriding. Show suggestion list and result separately.
  • refactoring suggestions
  • solution building result in the compilation buffer
  • syntax errors found by flycheck

Add feature: run syntax check on save

When saving the current file, it would be nice to run a syntax check
on that file. The check could be ran either before saving or after
saving.

Add a setting omnisharp-run-syntax-check-on-save (default nil). Then
add a call to (omnisharp-syntax-check) to a hook that gets called when
the current is saved.

Latest version of Flycheck incompatible with Omnisharp checker

On loading Omnisharp with the latest version of Flychecker, I get the following backtrace:
error("Invalid command executable %S" (eval (let ((command-plist (omnisharp--get-curl-command (concat (omnisharp-get-host) "syntaxerrors") (omnisharp--get-common-params)))) (cons (plist-get command-plist :command) (plist-get command-plist :arguments))))) (flycheck-define-checker csharp-omnisharp-curl "A csharp source syntax checker using curl to call an OmniSharp\nserver process running in the background. Only checks the syntax - not\ntype errors." :command ((eval (let ((command-plist (omnisharp--get-curl-command (concat ... "syntaxerrors") (omnisharp--get-common-params)))) (cons (plist-get command-plist :command) (plist-get command-plist :arguments))))) :error-patterns ((error line-start (file-name) ":" line ":" column " " (message (one-or-more not-newline)))) :error-parser (lambda (output checker buffer) (omnisharp--flycheck-error-parser-raw-json output checker buffer)) :predicate (lambda nil t))
Digging into it a little, on the 21st November Flycheck changed the requirements of the executable argument to require plaintext as input:

flycheck/flycheck@8b61b9b

Add mock tests for all functionality

Currently we are missing tests. This is bad practice.
There are mock testing frameworks for emacs available
at MELPA. One should be picked and simple tests
devised for all functionality.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.