Emacs client for ycmd, the code completion system.

Overview

This package is currently unmaintained! If you want to take over maintenance, let me know in an issue.

emacs-ycmd

MELPA MELPA Stable Build Status

emacs-ycmd is a client for ycmd, the code completion system. It takes care of managing a ycmd server and fetching completions from that server.

emacs-ycmd comprises a core set of functionality for communicating with ycmd as well as integration with the Emacs completion framework company-mode.

A lot of the concepts behind emacs-ycmd are actually concepts from ycmd itself, so if you feel lost you might read the ycmd documentation and/or the the original YouCompleteMe documentation.

Important: The ycmd package itself doesn't provide a real UI for selecting and inserting completions into your files. For that you need to use company-ycmd or another "completion framework".

Quickstart

First make sure that ycmd is installed on your system. See the ycmd instructions for more details.

To use ycmd-mode in all supported modes, add the following to your emacs config:

(require 'ycmd)
(add-hook 'after-init-hook #'global-ycmd-mode)

Or add ycmd-mode to a specific supported mode:

(require 'ycmd)
(add-hook 'c++-mode-hook 'ycmd-mode)

Use the variable ycmd-server-command to specify how to run the server. It will typically be something like:

(set-variable 'ycmd-server-command '("python" "/path/to/ycmd/package/"))

NB: We do not do filename expansion on the elements of ycmd-server-command. As a result, paths using "~" to represent the home directory will not work properly; you need to expand them yourself. For example:

(set-variable 'ycmd-server-command `("python" ,(file-truename "~/.emacs.d/ycmd/ycmd/")))

If you've got a global ycmd configuration, specify that in your emacs configuration by setting ycmd-global-config:

(set-variable 'ycmd-global-config "/path/to/global_config.py")

Spacemacs users: Note that if you don't set ycmd-global-config, spacemacs will set it for you. This is not always what you want! See the spacemacs ycmd documentation for more info.

If you've got project-specific ycmd configurations (almost certainly called .ycm_extra_conf.py), and if you want them automatically loaded by ycmd as needed (which you probably do), then you can whitelist them by adding entries to ycmd-extra-conf-whitelist. For example, this will allow automatic loading of all .ycm_extra_conf.py files anywhere under ~/my_projects

(set-variable 'ycmd-extra-conf-whitelist '("~/my_projects/*"))

Alternatively, you can set ycmd-extra-conf-handler to control how ycmd.el deals with non-whitelisted extra configs. By default this is set to 'ask, meaning it will ask the user each time one is encountered. The other options are 'ignore, in which case the extra config will be ignored, and 'load, in which case the extra config will be loaded.

Now a ycmd server will be automatically launched whenever it's needed. Generally, this means whenever you visit a file with a supported major mode. You should not normally need to manually start or stop a ycmd server.

With a server running, you can now get completions for a point in a file using ycmd-get-completions. This doesn't actually insert the completions; it just fetches them from the server. It's not even an interactive function, so you can't really call it while editing. If you just want to see the possible completions at a point, you can try ycmd-display-completions which will dump a raw completion struct into a buffer. This is more of a debugging tool than anything.

completion

It is recommended to use company-mode for completion, however there is basic support for Emacs' built-in completion mechanism.

(defun ycmd-setup-completion-at-point-function ()
  "Setup `completion-at-point-functions' for `ycmd-mode'."
  (add-hook 'completion-at-point-functions
            #'ycmd-complete-at-point nil :local))

(add-hook 'ycmd-mode-hook #'ycmd-setup-completion-at-point-function)

company-ycmd

MELPA MELPA Stable

More likely, you'll want to use a completion framework like company-mode to manage the completions for you. Here's how to do that:

(require 'company-ycmd)
(company-ycmd-setup)

After this you can use your standard company-mode keybindings to do completion.

IMPORTANT: Unbuffered output

There have been some reports that ycmd.el doesn't work when Python's output is buffered. See, for example, issue #104. This is because we rely on the ycmd server printing out its host and port information in a timely (i.e. unbuffered) manner. We will almost certainly update the defaults for ycmd.el to force unbuffered output.

In any event, if you are facing problems with ycmd not starting and/or hanging Emacs, try adding -u to your ycmd-server-command. For example:

(set-variable 'ycmd-server-command '("c:/path/to/python.exe" "-u" "c:/path/to/ycmd"))

flycheck integration

MELPA MELPA Stable

flycheck-ycmd.el allows you to use ycmd as a backend for flycheck. With this enabled, whenever ycmd parses a file the results will be passed to flycheck for display. This is a really nice way to get quick feedback on problems in your code.

The simple way to enable flycheck integration is to use flycheck-ycmd-setup:

(require 'flycheck-ycmd)
(flycheck-ycmd-setup)

This will make sure that flycheck sees the parse results, and that the flycheck-ycmd backend is enabled.

If for some reason you want to do this manually, the instructions are like this:

(require 'flycheck-ycmd)

;; Make sure the flycheck cache sees the parse results
(add-hook 'ycmd-file-parse-result-hook 'flycheck-ycmd--cache-parse-results)

;; Add the ycmd checker to the list of available checkers
(add-to-list 'flycheck-checkers 'ycmd)

Disabling ycmd-based flycheck for specific modes

If you use flycheck-ycmd-setup or otherwise put ycmd at the front of flycheck-checkers, flycheck will use the ycmd checker for every buffer in ycmd-mode. This may not be what you want. For example, even though ycmd supports completion (and, thus, flycheck) for Python, you may wish to use pyflakes for flychecking Python code.

To disable ycmd-based flychecking for specific modes, you can modify the flycheck-disabled-checkers list in your mode hook. For example:

(add-hook 'python-mode-hook (lambda () (add-to-list 'flycheck-disabled-checkers 'ycmd)))

With this, the ycmd checker will be ignored in python-mode. Since flycheck-disabled-checkers is buffer-local, the ycmd-based checker will still be available for other modes.

Making flycheck and company work together

In some cases you may see that company and flycheck interfere with one another. You can end up with strange completion artifacts in your buffers. This mostly seems to happen when you run emacs in "terminal mode", i.e. with emacs -nw.

The short answer for how to deal with this is:

(setq flycheck-indication-mode nil)

The slightly longer and probably better answer is:

(when (not (display-graphic-p))
  (setq flycheck-indication-mode nil))

For a full explanation see the emacs-ycmd defect related to this as well as the root flycheck issue.

eldoc integration

ycmd-eldoc adds eldoc support for ycmd-mode buffers.

(require 'ycmd-eldoc)
(add-hook 'ycmd-mode-hook 'ycmd-eldoc-setup)

Note: eldoc messages will only be shown for functions which are retrieved via semantic completion.

next-error integration

emacs-ycmd reports found errors through emacs buttons; to integrate those with next-error prepend something like (require 'ycmd-next-error) before require'ing ycmd (after adding the contrib directory to your load-path).

Making emacs-ycmd quieter

In some common configurations emacs-ycmd can produce lots of messages, and some people find these noisy and distracting. If you're seeing a lot of messages like Contacting host: 127.0.0.1:NNNNN and you'd like to quiet them, set url-show-status to nil. This can effect non-ycmd-related buffers, so consider using buffer-local settings if this worries you.

You might also see a flurry of messages like this:

REQUEST [error] Error (error) while connecting to http://127.0.0.1:38987/completions.
REQUEST [error] Error (error) while connecting to http://127.0.0.1:38987/event_notification. [26 times]

These almost never indicate something you need to be concerned about. To quiet them, you can set request-message-level to -1.

See issue #173 for the initial discussion of this topic.

Running tests

emacs-ycmd comes with a number of tests that you can run. This is mostly useful for developers. They are built with ert, so you can run them using any technique that ert provides. For example:

(require 'ycmd-test)
(ert-run-tests-interactively "ycmd-test")

It is also possible to run the tests on the command-line with the Makefile provided in this repository. Before running test, you need to install the Cask in order to be able to install the package dependencies.

You can do this by running

make deps

The other thing that is required is to have the ycmd folder right next to emacs-ycmd (../ycmd).

To run the tests:

make test

It is also possible to have the ycmd server at a different location. In that case the path needs to be passed to the make command explicitly:

make YCMDPATH='/path/to/ycmd/ycmd' test

Make sure that you provide the path to the ycmd module and not the ycmd root directory.

Comments
  • strange behavior of company ycmd

    strange behavior of company ycmd

    I use company-ycmd as the backend of C and C++. While when I type character such as :: and -> ,the completion begins automatically but I can't input any character because it always reminder me of "Matching input is required". So I have to call company-ycmd manually.

    opened by zhuzhongshu 44
  • Username and password required

    Username and password required

    I have ycmd configured to work in C++ buffers and everytime I open a buffer I get asked for a username and password.

    (use-package ycmd
      :defer t
      :init
      (add-hook 'c++-mode-hook 'ycmd-mode)
      :config
      (use-package company-ycmd
        :config
        (company-ycmd-setup)
        (add-to-list 'company-backends (company-mode/backend-with-yas 'company-ycmd)))
    
      (set-variable 'ycmd-server-command '("python" "/Users/patrick/bin/ycmd/ycmd"))
      (set-variable 'ycmd-global-config "/Users/patrick/.ycm_extra_conf.py"))
    

    My ycmd-config file can be found at https://gist.github.com/halbtuerke/66004fbd5730d0dbcb9a

    I have ycmd (20150626.109) and company-ycmd (20150514.534) from Melpa installed and I'm using GNU Emacs 25.0.50.1 built 2015-06-19 on OS X 10.10.3.

    I installed ycmd the following way:

    • Cloned ycmd (796519f7a01ca9b5151d77058ab3985f9f9c2809) to ~/bin/ycmd
    • git submodule update --init --recursive
    • ./build.py --clang-completer

    After pressing C-g to cancel the username prompt this can be found in the Messages buffer:

    Contacting host: 127.0.0.1:61158
    error in process filter: Quit [2 times]
    Contacting host: 127.0.0.1:61158
    REQUEST [error] Error (error) while connecting to http://127.0.0.1:61158/healthy.
    

    And this is the ouput of the ycmd-server buffer:

    2015-06-29 13:24:29,339 - DEBUG - Global extra conf not loaded or no function YcmCorePreload
    serving on http://127.0.0.1:61077
    2015-06-29 13:24:30,272 - INFO - Dropping request with bad HMAC.
    

    I found https://github.com/Valloric/ycmd/issues/115 but as described above, I used the latest versions available of everything and unfortunately it does not work.

    If you need any additional information please let me know.

    opened by halbtuerke 37
  • When compilation takes a long time, commands seem to interfere with each other.

    When compilation takes a long time, commands seem to interfere with each other.

    We have a lot of C++ files that take a long time (multiple seconds) to incrementally compile. In that case, I get non-optimal behavior from emacs-ycmd: I start writing something, for example: variable I start getting error markers (expected). I continue: variable. Now the problem is that the re-parsing of the file is still running, so I don't get completions. I have to do backspace, '.' multiple times until I happen to get completions. Then, when I finish: variable.something(); The error markers will not go away (it seems like it started the call before I typed ';', and then didn't issues another one when I finally finished writing).

    bug 
    opened by r4nt 33
  • REQUEST [error] Error (error) while connecting to http://127.0.0.1:54426/event_notification.

    REQUEST [error] Error (error) while connecting to http://127.0.0.1:54426/event_notification.

    When ycmd takes a while to get the compile commands (for our internal build system this can take a minute or so) or compile command are not available for some other reason (this can be easily tested with a .ycm-extra-config that does not produce compile commands) I get the error: REQUEST [error] Error (error) while connecting to http://127.0.0.1:35282/event_notification instead of a useful error message.

    I'm not sure whether that's related to #23 at all (once I wait a while everything works), or whether it's possible to get better responses from emacs-request.

    bug 
    opened by r4nt 29
  • Cannot connect to ycmd server

    Cannot connect to ycmd server

    When I open ycmd-mode, there is an error REQUEST [error] Error (error) while connecting to http://127.0.0.1:41211/event_notification.. When trying to type something, ycmd said that Ycmd completion unavailable while parsing is in progress.. I don't know how long does it take to process the completion, but I waited for a long time and still couldn't work.

    I try to debug the problem. I found that the ycmd server process was already started. How do I know if my ycmd client can successfully communicate with server?

    opened by mssun 25
  • flycheck doesn't work for non-ycm languages after flycheck-ycmd-setup

    flycheck doesn't work for non-ycm languages after flycheck-ycmd-setup

    When I use (company-ycmd-setup) (add-hook 'after-init-hook 'global-company-mode) (add-hook 'prog-mode-hook 'ycmd-mode) (flycheck-ycmd-setup) (add-hook 'prog-mode-hook 'flycheck-mode)

    I run into problems with flycheck on emacs lisp files: When I open them, flycheck shows FlyC* in the command line (instead of FlyC:1/4), which apparently means "currently running" forever, and does not display any errors. The flycheck error list is empty. I can get it to work by disabling ycmd (M-x ycmd-mode, then M-x flycheck-buffer, and it works fine).

    bug 
    opened by r4nt 23
  • Let's support Windows

    Let's support Windows

    I finally had time to test everything on Windows. First of all, in Vim YCM works just fine here, so the following problems are most likely related only to your package and not YCM on Windows in general.

    I use company-ycmd and I keep getting:

    Ycmd completion unavailable while parsing is in progress.

    Do you have any ideas why?

    ycmd-extra-conf-handler documentation says that it will by default ask whether to load .ycm_extra_conf.py, but it never does like if it cannot find it. In Vim it searches for it bottom-up starting from the directory of the currently edited source file. Is the same true in your case? If yes, then why is it not locating .ycm_extra_conf.py?

    opened by Alexander-Shukaev 23
  • REQUEST [error] Error (error) while connecting to http://127.0.0.1:<port>/event_notification

    REQUEST [error] Error (error) while connecting to http://127.0.0.1:/event_notification

    Hi,

    I'm using: Commit cdeabc17a22661541d5d5d20545a405f14a13a10 of emacs-ycmd (latest master as of this writing) Commit 97c19ffe442683cfff8d68a3d343a8b497ea4fd5 of ycmd (latest master as of this writing) Python 2.7.6 (Ubuntu 14.04) Emacs 24.3.1 (Ubuntu 14.04)

    I ran the ycmd testsuite and it didn't reveal any errors, so I suppose the issue is with emacs-ycmd or my configuration of it (~/.emacs.d/init.el): (require 'ycmd) (set-variable 'ycmd-server-command '("python" "/home/mband/ycmd/ycmd")) Where /home/mband/ycmd is the "git root".

    When I open a .cpp file I get the following error shown: REQUEST [error] Error (error) while connecting to http://127.0.0.1:57953/event_notification. And the ycmd-server buffer contains: 2014-10-28 13:56:32,896 - DEBUG - No global extra conf, not calling method YcmCorePreload serving on http://127.0.0.1:57953 2014-10-28 13:56:32,988 - INFO - Received event notification Traceback (most recent call last): File "/home/mband/ycmd/third_party/bottle/bottle.py", line 861, in _handle return route.call(*_args) File "/home/mband/ycmd/third_party/bottle/bottle.py", line 1734, in wrapper rv = callback(_a, *_ka) File "/home/mband/ycmd/ycmd/../ycmd/watchdog_plugin.py", line 100, in wrapper return callback( *args, *_kwargs ) File "/home/mband/ycmd/ycmd/../ycmd/hmac_plugin.py", line 54, in wrapper body = callback( _args, *_kwargs ) File "/home/mband/ycmd/ycmd/../ycmd/handlers.py", line 59, in EventNotification request_data = RequestWrap( request.json ) File "/home/mband/ycmd/ycmd/../ycmd/request_wrap.py", line 27, in init EnsureRequestValid( request ) File "/home/mband/ycmd/ycmd/../ycmd/request_validation.py", line 28, in EnsureRequestValid missing = set( x for x in required_fields if x not in request_json ) File "/home/mband/ycmd/ycmd/../ycmd/request_validation.py", line 28, in missing = set( x for x in required_fields if x not in request_json ) TypeError: argument of type 'NoneType' is not iterable And one more INFO - Received event notification traceback that I omitted since it contains the same information just with another timestamp.

    If you got anything I should test, please let me know as I really want to get this issue solved. To me it sounds like some sort of protocol issue, but given that the last commit on ycmd was 8 days ago, it doesn't appear to be any newly introduced changes...

    bug 
    opened by mband 22
  • Directory completion issue

    Directory completion issue

    I'm not sure whether this is a emacs-ycmd or company problem, so reporting this here first: When completion paths in ycm, there are relevant completions, but when one of them is selected (by pressing enter), the whole path is replaced, leaving only the basename.

    For example:

    1. typing ./some/path/dir/
    2. suggestions file1 file2
    3. selecting one of them by pressing enter
    4. now the whole path (including the leading ./some/path/dir/) is replaced by file1

    (@Valloric fyi)

    bug 
    opened by r4nt 20
  • Company mode popup gets pushed right.

    Company mode popup gets pushed right.

    In some cases when using company-ycmd, the first character will work great but on typing additional characters the popup will get pushed down and to the right.

    For me this only occurs with ycmd, company works fine everywhere else. This happens in both Python and C++ mode and occurs with error buttons disabled and enabled. Not sure about other factors in my config that could cause this, I'll keep looking into it.

    Screencast: http://cl.ly/2s1F1A2r3l08

    Screenshot: screen shot 2014-11-05 at 9 03 34 pm

    opened by trishume 20
  • On ycmd error font-locking of current buffer is gone

    On ycmd error font-locking of current buffer is gone

    Sometimes I noticed that when ycmd return with an error suddenly the font-locking of the current buffer is gone. It's not only C++ buffers but also other buffers like ibuffer or magit-status. It seems it happens when ycmd return an event_notification error. The current selected buffer looses syntax highlighting. I don't have a 100% repro, thats why I cannot say what exactly happens.

    Maybe you have some idea?

    Thanks, Peter

    opened by ptrv 20
  • "Attempt to change byte length of a string" error in Emacs 28.0.50

    Not sure why, but in emacs 28.0.50 this expression is evaluated to t: (multibyte-string-p (encode-coding-string (json-encode "t") 'utf-8 t)) In the previous version of Emacs the result was nil. So this is the same issue as #165 .

    To fix this change line: from

    (defun ycmd--encode-string (s) (encode-coding-string s 'utf-8 t))))
    

    to

    (defun ycmd--encode-string (s) (encode-coding-string s 'utf-8))))
    
    opened by dvzubarev 1
  • Properly handle sym links to ycmd-global-config

    Properly handle sym links to ycmd-global-config

    Previously if ycmd-global-config was set to a symbolic link YCMD would not use the global config. By running the name of the file through (file-truename) we get the actual file location and use that for the global config.

    opened by nilsdeppe 0
  • Add support for clangd customization

    Add support for clangd customization

    Thanks so much for creating and maintaining emacs-ycmd! I really appreciate it!

    YCMD now has experimental support for using clangd as the completer. This PR adds support for customizing the JSON file sent to YCMD with the clangd-specific options.

    I'm not sure if or how this should be tested so I would really appreciate feedback on that.

    Thanks!

    opened by nilsdeppe 4
  • ycmd-restart-semantic-server makes ycm say unsupported command

    ycmd-restart-semantic-server makes ycm say unsupported command

    Here's the output for ycmd-show-debug-info

    
    ((python
      (executable . "c:\\SP_CI_PROGRAMS\\Shells\\cmder\\vendor\\git-for-windows\\usr\\bin\\python3.exe")
      (version . "3.7.1"))
     (clang
      (has_support . t)
      (version . "clang version 8.0.0 (tags/RELEASE_800/final)"))
     (extra_conf
      (path . "c:/Users/MoHKale/.ycmd-config")
      (is_loaded . t))
     (completer
      (name . "C-family")
      (servers)
      (items
       ((key . "compilation database path")
        (value . "None"))
       ((key . "flags")
        (value . "['-Wall', '-Wextra', '-Werror', '-Werror=format-security', '-Werror=implicit-function-declaration', '-Wc++98-compat', '-Wno-long-long', '-Wno-variadic-macros', '-fexceptions', '-std=c++11', '-x', 'c++', '-I.', '-Ic:/Users/MoHKale\\\\includes', '-IC:/SP_CI_PROGRAMS/IDE/emacs/include', '-IC:/SP_CI_PROGRAMS/MinGW/include', '-resource-dir=c:\\\\Users\\\\MoHKale\\\\.vim\\\\plugged\\\\YouCompleteMe\\\\third_party\\\\ycmd\\\\third_party\\\\clang\\\\lib\\\\clang\\\\8.0.0', '-fno-delayed-template-parsing', '-fspell-checking']"))
       ((key . "translation unit")
        (value . "f:/Blarg/hello-world.c")))))
    
    
    Server is running at: 127.0.0.1:62685
    
    Ycmd Mode is enabled
    
    --------------------
    
    Ycmd version:   1.3snapshot (package: 20190416.807)
    Emacs version:  26.1
    System:         x86_64-w64-mingw32
    Window system:  w32
    

    Here's the relevent section of the server logs.

    Traceback (most recent call last):
      File "c:\Users\MoHKale\.vim\plugged\YouCompleteMe\third_party\ycmd\ycmd\completers\completer.py", line 346, in OnUserCommand
        command = command_map[ arguments[ 0 ] ]
    KeyError: 'RestartServer'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "c:\Users\MoHKale\.vim\plugged\YouCompleteMe\third_party\ycmd\third_party\bottle\bottle.py", line 862, in _handle
        return route.call(**args)
      File "c:\Users\MoHKale\.vim\plugged\YouCompleteMe\third_party\ycmd\third_party\bottle\bottle.py", line 1740, in wrapper
        rv = callback(*a, **ka)
      File "c:\Users\MoHKale\.vim\plugged\YouCompleteMe\third_party\ycmd\ycmd\watchdog_plugin.py", line 104, in wrapper
        return callback( *args, **kwargs )
      File "c:\Users\MoHKale\.vim\plugged\YouCompleteMe\third_party\ycmd\ycmd\hmac_plugin.py", line 68, in wrapper
        body = callback( *args, **kwargs )
      File "c:\Users\MoHKale\.vim\plugged\YouCompleteMe\third_party\ycmd\ycmd\handlers.py", line 82, in RunCompleterCommand
        request_data ) )
      File "c:\Users\MoHKale\.vim\plugged\YouCompleteMe\third_party\ycmd\ycmd\completers\completer.py", line 348, in OnUserCommand
        raise ValueError( self.UserCommandsHelpMessage() )
    ValueError: Supported commands are:
    ClearCompilationFlagCache
    FixIt
    GetDoc
    GetDocImprecise
    GetParent
    GetType
    GetTypeImprecise
    GoTo
    GoToDeclaration
    GoToDefinition
    GoToImprecise
    GoToInclude
    

    I'm not very familliar with the ycmd codebade, but I've tracked down the file in question and it doesn't have RestartServer as a command. using rg, I've found that clangd does have it as a command, don't know if that'll help very much.

    opened by mohkale 1
Releases(1.2)
Owner
Austin Bingham
Programmer. Co-founder and Technical Director of Sixty North.
Austin Bingham
call-me-maybe is a small CLI tool to notify you of the completion of a command

call-me-maybe call-me-maybe is a small CLI tool to notify you of the completion of a command By default, the tools consumes stdin for a message's cont

Samuel Yvon 4 Sep 16, 2022
Nushell "extern" definitions for tab completion generated from Fish's

Nushell completions pack This is a system for generating extern defs (tab-completion) in nu. Background The fish shell project has a long, complicated

Scott Boggs 7 Feb 28, 2023
AskBend: SQL-based Knowledge Base Search and Completion using Databend

AskBend: SQL-based Knowledge Base Search and Completion using Databend AskBend is a Rust project that utilizes the power of Databend and OpenAI to cre

Databend Labs 87 Apr 7, 2023
rust cli project.el clone for those leaving emacs

R-Ject I was a longtime Emacs user and really miss the project management that came with projectile.el and project.el at the same time I was looking f

Cade Michael Lueker 7 Mar 15, 2023
First project in rust which will be to make an accounts system & Leaderboard/Score system

rust-backend this is my first project in rust which will be to make a backend for compsci project it will include: Accounts, Player Achievements (if I

NaughtyDog6000 2 Jul 13, 2023
Provides a mock Ambi client that emulates real sensor hardware such as an Edge client

ambi_mock_client Provides a mock Ambi client that emulates real sensor hardware such as an Edge client. Usage You must have Rust installed to build am

Rust Never Sleeps 2 Apr 1, 2022
Sysexits-rs (sysexits) is a library that provides the system exit code constants

sysexits-rs sysexits-rs (sysexits) is a library that provides the system exit code constants as defined by <sysexits.h>. This library implements the T

Shun Sakai 7 Dec 15, 2022
Raw C Shell: interact with your operating system using raw C code, because why not?

rcsh Raw C Shell is a minimalist shell with no built in commands. You write entirely in C code and use return; to execute your code. Unlike that silly

null 4 Feb 7, 2023
A library that allows for the arbitrary inspection and manipulation of the memory and code of a process on a Linux system.

raminspect raminspect is a crate that allows for the inspection and manipulation of the memory and code of a running process on a Linux system. It pro

Liam Germain 24 Sep 26, 2023
languagetool-code-comments integrates the LanguageTool API to parse, spell check, and correct the grammar of your code comments!

languagetool-code-comments integrates the LanguageTool API to parse, spell check, and correct the grammar of your code comments! Overview Install MacO

Dustin Blackman 17 Dec 25, 2022
ChatGPT-Code-Review is a Rust application that uses the OpenAI GPT-3.5 language model to review code

ChatGPT-Code-Review is a Rust application that uses the OpenAI GPT-3.5 language model to review code. It accepts a local path to a folder containing code, and generates a review for each file in the folder and its subdirectories.

Greg P. 15 Apr 22, 2023
Code-shape is a tool for extracting definitions from source code files

Code-shape Code-shape is a tool that uses Tree-sitter to extract a shape of code definitions from a source code file. The tool uses the same language

Andrew Hlynskyi 3 Apr 21, 2023
rehype plugin to use tree-sitter to highlight code in pre code blocks

rehype-tree-sitter rehype plugin to use tree-sitter to highlight code in <pre><code> blocks Contents What is this? When should I use this? Install Use

null 5 Jul 25, 2023
Pure-Rust rewrite of the Linux fontconfig library (no system dependencies) - using ttf-parser and allsorts

rust-fontconfig Pure-Rust rewrite of the Linux fontconfig library (no system dependencies) - using allsorts as a font parser in order to parse .woff,

Felix Schütt 28 Oct 29, 2022
A cross-platform graphical process/system monitor with a customizable interface and a multitude of features

A cross-platform graphical process/system monitor with a customizable interface and a multitude of features. Supports Linux, macOS, and Windows. Inspired by both gtop and gotop.

Clement Tsang 5.8k Jan 8, 2023
Another TUI based system monitor, this time in Rust!

Another TUI based system monitor, this time in Rust!

Caleb Bassi 2.1k Jan 3, 2023
A system clipboard command line tools which inspired by pbcopy & pbpaste but better to use.

rclip A command line tool which supports copy a file contents to the system clipboard or copy the contents of the system clipboard to a file. Install

yahaa 3 May 30, 2022
Simple system monitoring app that runs on terminal. Made purely with Rust.

What is it? RCTOP is a simple WIP system monitoring app that runs purely on terminal and doesn't feature GUI. One can compare it to htop, but more str

Niko Huuskonen 7 Oct 14, 2022
Self-contained template system with Handlebars and inline shell scripts

Handlematters Self-contained template system with Handlebars and inline shell scripts Introduction Handlematters is a template system that combines Ha

Keita Urashima 3 Sep 9, 2022