这是indexloc提供的服务,不要输入任何密码
Skip to content

Lindydancer/unifdef

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

unifdef - Delete code guarded by processor directives

Author: Anders Lindgren
Version: 0.0.2
URL: https://github.com/Lindydancer/unifdef

unifdef is a package that can delete code guarded by C-style preprocessor directives.

Examples

Take this relatively simple code:

#ifdef USELONGLONG
long long x;
#else
long x;
#endif

M-x unifdef-current-buffer RET USELONGLONG RET will transform this into:

long long x;

A (somewhat) more complex piece of code:

#if ALPHA
  Alpha();
#elif BETA
  Beta();
#elif GAMMA
  Gamma();
#else
  Delta();
#endif

M-x unifdef-current-buffer RET BETA RET will transform this into:

#if ALPHA
  Alpha();
#else
  Beta();
#endif

What is converted

This package can convert code that test if a symbol is defined or if a symbol is true. For example:

#ifdef SYMBOL

#if defined SYMBOL

#if defined(SYMBOL)

#if SYMBOL

Or if the symbol is undefined or false:

#ifndef SYMBOL

#if !defined SYMBOL

#if !defined(SYMBOL)

#if !SYMBOL

And likewise for elif.

What is not converted

This package does not handle complex expressions involving symbols. For example:

#if ALPHA && BETA

#if ALPHA == 1234

#if (ALPHA ^ BETA) == 0x1234

#if defined(ALPHA) && defined(BETA)

Commands

  • unifdef-current-buffer -- Convert all occurrences in the current buffer.
  • unifdef-convert-block -- Convert the next preprocessor block. (Note, in some cases, this command might need to be applied repeatedly.)

When prefixed with C-u the command is inverted, i.e. it assumes that the supplied symbol is undefined or false. In the example above, the line long x; would be retained.

Warning

The command provided by this package can perform massive changes to your source files. Make sure that they are backed up, e.g. by using a version control system. As for all tools that automatically transform source code, it is advisable to manually inspect the end result.


Converted from unifdef.el by el2markdown.

About

Delete code guarded by processor directives

Resources

License

Stars

Watchers

Forks

Packages

No packages published