sublime-enhanced

sublime Text 의 플러그인들의 모음입니다.

2016/08/02 Editor’s choice

shagabutdinov/sublime-enhanced
_sublime-enhanced - Set of plugins for beloved sublime text editor_github.com

gh-ost 를 리뷰할 생각이었으나 gh-ost는 앞으로 며칠간 수위권을 장식할 예정이라 간단하게 플러그인들의 모음을 모아 놓은 사이트만 공유합니다.

3가지의 목표를 가지고 만든 프로젝트입니다.

  1. Mouseless usage of sublime
  2. Navigation (in code and files) improvement
  3. Common micro-tasks automation

마우스 없이 쓰고 코드와 파일간을 쉽게 컨트롤 하고 공통적으로 행해지는 작업들을 자동화 한다는 군요.

데모로 보이는 페이지에는 method를 작성하면 기본적으로 skeleton 코드를 만들어 주는

shagabutdinov/sublime-method
_sublime-method - Sublime plugin that allows to manipulate methods in file_github.com

프로젝트로 시작해 아래와 같이 많은 프로젝트들을 기본 세팅해서 사용할 수 있습니다.

git clone git@github.com:shagabutdinov/sublime-align-cursors.git AlignCursors;  
git clone git@github.com:shagabutdinov/sublime-align-hash-table.git AlignHashTable;  
git clone git@github.com:shagabutdinov/sublime-append-selection.git AppendSelection;  
git clone git@github.com:shagabutdinov/sublime-autocompletion.git Autocompletion;  
git clone git@github.com:shagabutdinov/sublime-clone-file.git CloneFile;  
git clone git@github.com:shagabutdinov/sublime-close-other.git CloseOther;  
git clone git@github.com:shagabutdinov/sublime-context.git Context;  
git clone git@github.com:shagabutdinov/sublime-devastate-mini.git DevastateMini;  
git clone git@github.com:shagabutdinov/sublime-duplicate-lines-enhanced.git DuplicateLinesEnhanced;  
git clone git@github.com:shagabutdinov/sublime-eval-selection.git EvalSelection;  
git clone git@github.com:shagabutdinov/sublime-delayed-save-all.git DelayedSaveAll;  
git clone git@github.com:shagabutdinov/sublime-expression.git Expression;  
git clone git@github.com:shagabutdinov/sublime-file-dialog.git FileDialog;  
git clone git@github.com:shagabutdinov/sublime-file-list.git FileList;  
git clone git@github.com:shagabutdinov/sublime-file-util.git FileUtil;  
git clone git@github.com:shagabutdinov/sublime-folder-files.git FolderFiles;  
git clone git@github.com:shagabutdinov/sublime-full-undo.git FullUndo;  
git clone git@github.com:shagabutdinov/sublime-goto-anything-enhanced.git GotoAnythingEnhanced;  
git clone git@github.com:shagabutdinov/sublime-goto-character.git GotoCharacter;  
git clone git@github.com:shagabutdinov/sublime-goto-definition-enhanced.git GotoDefinitionEnhanced;  
git clone git@github.com:shagabutdinov/sublime-goto-last-edit-enhanced.git GotoLastEditEnhanced;  
git clone git@github.com:shagabutdinov/sublime-goto-line-enhanced.git GotoLineEnhanced;  
git clone git@github.com:shagabutdinov/sublime-indentation-navigation.git IndentationNavigation;  
git clone git@github.com:shagabutdinov/sublime-join-assignment.git JoinAssignment;  
git clone git@github.com:shagabutdinov/sublime-join-chain-call.git JoinChainCall;  
git clone git@github.com:shagabutdinov/sublime-join-lines-enhanced.git JoinLinesEnhanced;  
git clone git@github.com:shagabutdinov/sublime-join-statement.git JoinStatement;  
git clone git@github.com:shagabutdinov/sublime-keymap-enhanced.git KeymapEnhanced;  
git clone git@github.com:shagabutdinov/sublime-keyword.git Keyword;  
git clone git@github.com:shagabutdinov/sublime-local-variable.git LocalVariable;  
git clone git@github.com:shagabutdinov/sublime-method.git Method;  
git clone git@github.com:shagabutdinov/sublime-named-mark.git NamedMark;  
git clone git@github.com:shagabutdinov/sublime-nested-snippet.git NestedSnippet;  
git clone git@github.com:shagabutdinov/sublime-nesting-snippet.git NestingSnippet;  
git clone git@github.com:shagabutdinov/sublime-open-path.git OpenPath;  
git clone git@github.com:shagabutdinov/sublime-project-files.git ProjectFiles;  
git clone git@github.com:shagabutdinov/sublime-quick-search-enhanced.git QuickSearchEnhanced;  
git clone git@github.com:shagabutdinov/sublime-remove-selection.git RemoveSelection;  
git clone git@github.com:shagabutdinov/sublime-repeat-command.git RepeatCommand;  
git clone git@github.com:shagabutdinov/sublime-scope-context.git ScopeContext;  
git clone git@github.com:shagabutdinov/sublime-scroll-enhanced.git ScrollEnhanced;  
git clone git@github.com:shagabutdinov/sublime-search-panel-enhanced.git SearchPanelEnhanced;  
git clone git@github.com:shagabutdinov/sublime-semicolon.git Semicolon;  
git clone git@github.com:shagabutdinov/sublime-shell-status.git ShellStatus;  
git clone git@github.com:shagabutdinov/sublime-snippet-caller.git SnippetCaller;  
git clone git@github.com:shagabutdinov/sublime-snippet-manager.git SnippetManager;  
git clone git@github.com:shagabutdinov/sublime-statement.git Statement;  
git clone git@github.com:shagabutdinov/sublime-status-message.git StatusMessage;  
git clone git@github.com:shagabutdinov/sublime-enhanced.git SublimeEnhanced;  
git clone git@github.com:shagabutdinov/sublime-terminal-project-folder.git TerminalProjectFolder;  
git clone git@github.com:shagabutdinov/sublime-toggle-wrap.git ToggleWrap;  
git clone git@github.com:shagabutdinov/sublime-utilities.git Utilities;  
git clone git@github.com:shagabutdinov/sublime-wrap-statement.git WrapStatement

By Keen Dev on August 2, 2016.

Exported from Medium on May 31, 2017.

lumen

Back To The Mac을 쓰는 기분이네요. 이런 프로젝트를 소개할 때는 말이죠.

화면의 밝기를 조절해 주는 Mac용 앱 프로젝트 입니다.

“자동으로 밝기 조절” 옵션을 disable 해 줘야 제대로 작동합니다.

2016/08/01 Today’s Best

anishathalye/lumen
_lumen - Magic auto brightness based on screen contents :bulb:_github.com

설치

기본적으로 binary를 제공합니다.

공식사이트에서

Lumen: Magic Auto Brightness Based on Screen Contents
_I do most of my software development in my terminal, with my trusty tmux / zsh / vim setup. When coding, I frequently…_www.anishathalye.com

다운로드 받아서 설치할 수 있습니다.

실행

실행하면 바로 MacOS의 status Bar에 해당 어플리케이션이 설치되고 Main Display 의 화면을 분석해서 색깔을 조절합니다.


소스 보기

anishathalye/lumen
_lumen - Magic auto brightness based on screen contents :bulb:_github.com

BrightnessController.m 파일이 대부분의 기능을 담당하고 있습니다.

AppDelegate.m 파일의 applicationDidFinishLaunching 을 살펴보면

- (void)applicationDidFinishLaunching:(NSNotification \*)aNotification {

self.statusItem = \[\[NSStatusBar systemStatusBar\] statusItemWithLength:NSVariableStatusItemLength\];

\[self.statusItem setMenu:self.statusMenu\];

\[self.statusItem setTitle:MENU\_SYMBOL\];

\[self.statusItem setHighlightMode:YES\];

self.brightnessController = \[\[BrightnessController alloc\] init\];

\[self.brightnessController start\];

\[self.toggle setTitle:STOP\];

}

brightnessController start

함수를 콜 하게 됩니다.

이 함수는 타이머를 실행시키는데 이 대부분이 링크 BrightnessController.m 파일에 작성되어 있죠.

타이머가 콜하는 tick은

(void)tick:(NSTimer \*)timer {

// 스크린의 밝기를 얻고

CGImageRef contents = \[self getScreenContents\];

if (!contents) {

return;

}

double lightness = \[self computeLightness:contents\];

CFRelease(contents);

// 백라이트가 수동으로 설정되었는지 확인한 후에

static bool noticed = false;

static float lastNoticed = 0;

float setPoint = \[self getBrightness\];

if (noticed || fabsf(self.lastSet --- setPoint) \> CHANGE\_NOTICE) {

if (!noticed) {

noticed = true;

lastNoticed = setPoint;

return; // 계속 바뀌는 치 체크

}

if (fabsf(setPoint --- lastNoticed) \> CHANGE\_NOTICE) {

lastNoticed = setPoint;

return; // it's still changing

} else {

\[self.model observeOutput:setPoint forInput:lightness\];

noticed = false;

// don't return, fall through and evaluate model here

}

}

float brightness = \[self.model predictFromInput:lightness\];

\[self setBrightness:brightness\];

}

마지막으로 계산된 값으로 밝기를 셋팅합니다.

관련된 계산식은 computeLightness 에 작성되어 있습니다.

double brightness = 0;

const unsigned int kSkip = 16; // uniformly sample screen pixels

// find RMS brightness value

if (data) {

for (size\_t y = 0; y < height; y += kSkip) {

for (size\_t x = 0; x < width; x += kSkip) {

const unsigned char \*dptr = &data\[(width \* y + x) \* 4\];

double l = srgb\_to\_brightness(dptr\[0\], dptr\[1\], dptr\[2\]);

brightness += l \* l;

}

}

}

**brightness = sqrt(brightness / (width \* height / (kSkip \* kSkip)));**

오늘은 왠일로 소스 분석까지 해 버렸네요. 아이쿵.

이런 코드 너무 좋아요~

By Keen Dev on August 1, 2016.

Exported from Medium on May 31, 2017.